MCP HeartbeatTHE MCP OBSERVATORY
Public workspace

Explore

Evidence for your next connection.

Independent measurements of remote MCP servers. Every observation has a timestamp.

Read-only probes

MCP server · Code & DevOps

Simple Inventory Management

Read and update live small-business inventory, suppliers, reorder suggestions and purchase orders.

Checks passed
10 / 22

4 failed · 8 not measured

Median response
703 ms

Median of successful probes over 7 days

30-day uptime
Not measured

Share of countable probes over 30 days, including daily rollups. Auth challenges are excluded.

Discovered tools
31

Tool definitions returned by this server

Independent monitoring

Health & checks

Status history

Responded

The server completed its last measured handshake. This is an observation, not a guarantee.

Last checked
Check summary by test group
Test areaPassedFailedUnmeasured
ConnectionCan a client connect and discover tools?
500
Reliability & speedDoes it respond consistently and quickly?
004
Access & authenticationWhat is required to use this server?
102
Tool qualityAre the tool definitions usable by an agent?
220
Publisher identityCan the publisher be traced to its source?
222

Unmeasured means there is not enough evidence to decide. How these checks work

Inspect individual checks 22 recorded

Core

  • Pass
    Reachable

    Latest probe returned HTTP 200 in 703 ms.

  • Pass
    Valid handshake

    protocolVersion 2025-11-25, serverInfo.name SimpleInventoryManagement.

  • Pass
    Lists tools

    tools/list returned 31 tools.

  • Pass
    Current protocol

    Negotiated 2025-11-25. The bar is 2025-06-18 or newer.

  • Pass
    HTTPS

    The endpoint URL is https.

Performance

  • Not measured
    Fast (p50)

    Median latency 703 ms over 1 samples in 7 days. The bar is 1000 ms. Need at least 5 samples.

  • Not measured
    Consistent (p95)

    95th percentile 703 ms over 1 samples in 7 days. The bar is 3000 ms. Need at least 20 samples.

  • Not measured
    Reliable (uptime)

    1 of 1 attempts returned a tool list in 30 days (100%). The bar is 99%. Need at least 30 samples.

  • Not measured
    Stable tool list

    Fewer than two successful probes in 30 days, so tool-list stability is not measured.

Access

  • Pass
    Open access

    tools/list succeeded with no credential, and the record declares none.

  • Not measured
    Standard auth

    Auth is not required, so the OAuth metadata check does not apply.

  • Not measured
    Free tier cited

    No publisher quote has been checked.

Tools

  • Pass
    Tools described

    Every tool description is at least 20 characters.

  • Pass
    Valid input schemas

    Every inputSchema is a JSON Schema object.

  • Fail
    Parameters documented

    9 of 70 parameters have a description (13%). The bar is 80%.

  • Fail
    Safety hints

    31 tools set neither readOnlyHint nor destructiveHint.

Publisher

  • Pass
    Verified namespace

    Listed in the Official MCP Registry.

  • Not measured
    Website matches publisher

    This namespace is not a reverse domain, so the website comparison does not apply.

  • Fail
    Source repo linked

    No repository URL is on file.

  • Fail
    Repo owner matches

    The GitHub repository owner does not match the namespace login.

  • Pass
    Recently updated

    Updated 2026-11-07T23:47:36.926426Z, within 180 days.

  • Not measured
    Open-source licence

    No GitHub repository to ask about a licence.

Start using Simple Inventory Management

Connect to this server

Choose your client, copy the configuration, then enable the server in your client’s MCP settings.

Run this command in your terminal, then restart Claude Code.

Claude Code

claude mcp add --transport http simple-inventory-management https://simpleinventorymanagement.com/mcp

Capabilities

Tools 31

add_inventory_unit

Adds a stock line to an inventory item. Provide inventory item id, name, optional identifier (serial, lot code, or other label), quantity (default 1), and status (InStock, Ordered, Outbound, Damaged). Use quantity greater than 1 for fungible groups (e.g. 5 of the same lot). An item can track at most 500 stock lines. Returns the created line.

Discovered
create_new_inventory_item

Create a new inventory item by name, and return the object with the id of the new inventory item. Pass an optional unit of measure (e.g. "kg", "lb", "g", "ml", "L") for items tracked by weight or volume; leave it null for items counted in pieces.

Discovered
create_order

Create a new order for the company. Use Type "Inbound" to restock items from a supplier (the default) or "Outbound" to ship items out. Supply a name and the line items to order (each line is an inventory item plus a count). Identify each line's item by inventoryItemId (from get_inventory) or by itemName. Items not listed are still added to the order with a count of zero, just like creating an order in the app. Setting a count increases the item's on-order amount (Inbound) or outbound amount (Outbound); finishing the delivery is done separately when the order is completed.

Discovered
create_supplier

Create a supplier for the company by name (other contact details optional). Returns the new supplier id.

Discovered
delete_inventory_item

Delete a given inventory item by Id. Returns true if success.

Discovered
edit_inventory_item

Edit an existing inventory item. If field is not to be changed then leave null. Id field is required. Counts are absolute new values in the item unit of measure (decimals allowed, e.g. 2.5 for 2.5 kg). Set unit to change the unit label (e.g. "kg"); it does not convert existing quantities.

Discovered
edit_inventory_item_name

Edit the name of an existing inventory item by Id

Discovered
find_item_by_barcode

Find an inventory item by its barcode (UPC, EAN, or Code 128 / SKU value) within the user's company. Returns the matching item or an error if none matches.

Discovered
find_units_by_custom_field

Finds stock lines across the company where a unit custom field matches a value (case-insensitive contains). Use for lot recalls: fieldName "Lot #" and value "abc123". Returns item name, unit id, quantity, status, and the field value.

Discovered
generate_purchase_orders

Create draft inbound purchase orders for every item at or below its reorder point, grouped by preferred supplier. Returns how many orders and lines were created. The orders are drafts; complete them in the app when the stock arrives.

Discovered
get_image_upload_link

Creates a one-time upload link for an inventory item's photo or the company logo, valid for 15 minutes and for one upload. Best for full-size photos. Two ways to use it: (1) if you can run code and your sandbox can reach this server, POST the image file to the link as multipart/form-data with the field name "file" (for example: requests.post(link, files={"file": open(path, "rb")})); the response is JSON saying whether it worked. (2) Otherwise give the link to the user: opening it on a phone shows a page to take or choose a photo. If a POST fails with a network or proxy error, your sandbox is blocked from this domain, so fall back to giving the user the link (or to set_image_from_base64).

Discovered
get_inventory

Gets all items in inventory that belong to the users company. Inventory items have a name, id, value (cost), stock, and other parameters. Quantities are decimals. When an item has a unit (e.g. "kg", "lb", "ml") every quantity on it (inventoryCount, onOrderCount, damagedCount, toShipCount) is measured in that unit; when unit is null the item is counted in discrete pieces.

Discovered
get_inventory_item_custom_fields

Gets the custom field values set on a given inventory item by its id. Returns each field's name, value, and whether it is shown as a column in the inventory table.

Discovered
get_reorder_suggestions

List inventory items that are at or below their reorder point, with the suggested quantity to order (in the item unit of measure when it has one) and the preferred supplier.

Discovered
list_custom_fields

Lists the reusable custom field definitions for the user's company. Custom fields hold extra per-item details such as lot number, expiry date, serial number, color or bin location. Call this before setting a field so you reuse an existing field name instead of creating a near-duplicate.

Discovered
list_deleted_inventory_items

Lists the inventory items that were deleted in the user's company, newest first, with when and by whom. Deleted items keep their history and can be brought back with restore_inventory_item.

Discovered
list_inventory_units

Lists the stock lines of an inventory item by its id. Each line has a name, optional identifier (serial), quantity, status (InStock, Ordered, Outbound, Damaged), and may hold unit custom fields such as lot number. Item totals are the sum of line quantities by status.

Discovered
list_suppliers

List the company's suppliers (id, name, email, phone, lead time in days).

Discovered
list_unit_custom_fields

Lists custom field values on a stock line (inventory unit) by unit id. Use for lot number, expiry, and other per-line attributes.

Discovered
move_inventory_unit_quantity

Moves a quantity from a stock line to another status. If quantity is less than the line's quantity, the line is split (lot/custom fields are copied onto the new line). Use this for partial ship/receive of a lot line. Status accepts InStock, Ordered, Outbound or Damaged. Returns the line that holds the moved quantity.

Discovered
remove_inventory_item_custom_field

Removes a custom field value from an inventory item by item id and field name. The reusable field definition itself is left in place for other items. Returns true if a value was removed.

Discovered
remove_inventory_unit

Removes a stock line by its unit id. The parent item's stock totals are recomputed from remaining lines. Returns true if a line was removed.

Discovered
restore_inventory_item

Restores a deleted inventory item by Id (see list_deleted_inventory_items), with its counts, units, custom field values and history. Order lines and assembly parts removed by the delete are not restored. Returns the restored item.

Discovered
set_image_from_base64

Sets an inventory item's photo or the company logo from a small image sent inline as base64. Use this for a photo the user pasted into the chat when you can run code on the file but your sandbox can't reach this server (otherwise prefer get_image_upload_link, which keeps the full-size photo). Shrink the image first: the decoded image must be 150 KB or less. In Python: from PIL import Image; import io, base64, hashlib; im = Image.open(path); im.thumbnail((512, 512)); buf = io.BytesIO(); im.convert("RGB").save(buf, "JPEG", quality=80); data = buf.getvalue(); print(hashlib.sha256(data).hexdigest()); print(base64.b64encode(data).decode()). Copy the base64 exactly and pass the SHA-256 too, so a copying slip is caught instead of saving a broken image.

Discovered
set_image_from_url

Sets an inventory item's photo or the company logo from an image on the web (for example a manufacturer's product photo). The server downloads the image itself, so nothing large passes through the conversation. Only public https:// addresses that return a JPEG, PNG, WebP, GIF or BMP image (up to 15 MB) work. For a photo the user pasted into the chat, use set_image_from_base64 or get_image_upload_link instead.

Discovered
set_inventory_item_custom_field

Sets (creates or updates) a custom field value on an inventory item. Provide the inventory item id, the field name (an existing field with that name is reused, otherwise a new field is created for the company), and the value. showInTable is a per-field, company-wide setting: true shows the field as a column in the inventory table for every item, false hides it. Returns the saved field.

Discovered
set_inventory_item_custom_field_by_name

Sets (creates or updates) a custom field on an inventory item referenced by its name instead of its id, so you can act on a request like "set the roast level for regular beans to Dark" in one step. Provide the item name (matched within the user's company), the field name (an existing field with that name is reused, otherwise created), and the value. showInTable is a per-field, company-wide setting: true shows the field as a column for every item. If the name matches no item or more than one, the result explains what happened and lists candidates so you can confirm with the user.

Discovered
set_inventory_unit_identifier

Sets (or changes) the identifier of a stock line by its unit id. The identifier is a free-form label: serial number, asset tag, lot code, or similar. Pass an empty value to clear it. Does not change quantity. Returns the updated unit.

Discovered
set_inventory_unit_status

Sets the status of an entire stock line by unit id (moves the full quantity). Status accepts InStock, Ordered, Outbound or Damaged. For moving only part of a line's quantity, use move_inventory_unit_quantity instead. Returns the updated line.

Discovered
set_unit_custom_field

Sets (creates or updates) a custom field on a stock line by unit id. Field names are reused company-wide; new names are created with Unit scope. showInTable shows the field as a column on unit lists. Returns the saved field.

Discovered
take_inventory_snapshot

Take a reconciliation snapshot of the company's current inventory. This captures the current count, on-order, damaged, in-use, and value of every inventory item at this moment in time so it can be reviewed or compared later. Provide a name (for example a date or audit label) and optional notes.

Discovered

Recent measurements

Probe history

View status
Latest stored probes. Raw probe rows are kept for 14 days.
CheckedResultResponseTools
Connected703 ms31