Skip to main content
Glama

Server Details

Sample shop MCP server: paginated search, idempotent orders, guarded cancellation. Four languages.

If you are the author of this connector, you can claim ownership by verifying the domain or GitHub account it belongs to. Claimed connector authors can inspect health checks, view analytics, and manage their listing.
Status
Healthy
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL
Repository
apitoagents/mcp-examples
GitHub Stars
0

TDQS

A4.5/5.0

Scored across 4 tools

Disambiguation5/5

Each tool targets a distinct resource+action: order creation, order cancellation, single-product lookup, and catalogue search. Descriptions explicitly delimit boundaries (search_products notes it does not place orders; get_product points to search_products for name-based lookups), leaving no room for misselection.

Naming Consistency5/5

All four tools follow a strict verb_noun snake_case pattern (create_order, cancel_order, get_product, search_products). The convention is uniform with no deviations in style or casing.

Tool Count4/5

Four tools is on the low end for a shop domain but still within a reasonable, well-scoped range for a sample server. Each tool earns its place, though the surface is slightly thin given the domain's potential breadth.

Completeness3/5

Order creation and cancellation exist, but there is no way to retrieve or list existing orders (no get_order/list_orders), which is a notable lifecycle gap. Product coverage (get + search) is adequate for browsing, but the order side leaves agents without a way to check status after creation.

Available Tools

4 tools
cancel_orderCancel an orderA
DestructiveIdempotent
Inspect

Cancel an order that has not shipped. This cannot be undone. Call it first with confirm=false to get the order details, show them to the user, and only after the user explicitly agrees call again with confirm=true.

ParametersJSON Schema
NameRequiredDescriptionDefault
confirmNoSet true only after the user has explicitly confirmed the cancellation.
orderIdYesThe order id, for example o-5001.

TDQS

A4.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true and non-readOnly, and the description reinforces this with 'This cannot be undone.' Beyond that, it discloses the confirm-gated two-call workflow, which is behavioral context the annotations cannot express and is essential to avoid an accidental irreversible cancellation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two front-loaded sentences: the capability and its irreversibility come first, the safe invocation sequence second. Every clause earns its place with no redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a two-parameter destructive tool with no output schema, the description supplies the precondition, the irreversibility warning, and the mandatory confirmation sequence. There is no output schema to explain, and an agent has everything needed to call it safely.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3, but the description actively adds meaning for 'confirm' by prescribing the staging call (confirm=false) and the exact moment to pass true. That extra protocol guidance lifts it above the schema alone.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific action and resource ('Cancel an order') plus a hard precondition ('that has not shipped'), which immediately separates it from the create/read-oriented siblings (create_order, get_product, search_products). An agent can identify the tool's job without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives an explicit precondition (only pre-ship orders), an explicit two-step protocol (call with confirm=false, present details, then call with confirm=true only after user agreement), and an implicit exclusion (shipped orders cannot be cancelled). Nothing about when to invoke is left to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_orderCreate an orderA
Idempotent
Inspect

Place an order for one product. Generate one random idempotencyKey per user request and reuse the same key if you retry after an error or timeout; the shop returns the original order instead of creating a duplicate. Confirm product and quantity with the user before calling. Returns the order with its id, status and total.

ParametersJSON Schema
NameRequiredDescriptionDefault
quantityYesUnits to order, 1 to 10.
productIdYesProduct id from search_products or get_product.
idempotencyKeyYesA unique key you generate for this order attempt and reuse on retry.

TDQS

A4.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare idempotentHint=true and destructiveHint=false, but the description adds the concrete mechanism: the shop returns the original order rather than creating a duplicate on retry. It also documents the user-confirmation prerequisite and the return shape (id, status, total), which the annotations cannot convey.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three tight sentences: the action, then the retry/idempotency rule, then the confirmation prerequisite and return values. No filler, and the core purpose is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 3-parameter mutation with no output schema, the description covers the required inputs' operational context (idempotency retry behavior, user confirmation) and states the return fields, so an agent has everything needed to invoke it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description goes further by explaining the consequence of reusing idempotencyKey (original order returned) and the human-confirmation requirement tied to productId/quantity. It adds meaning beyond the field-level schema text rather than merely restating it.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Place an order for one product') and scopes it to a single product, which cleanly separates it from cancel_order, get_product, and search_products. An agent can identify the operation without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly says to confirm product and quantity with the user before calling, and gives the retry condition for reusing the idempotency key instead of generating a new one. The when-to-use and retry-alternative conditions are both stated rather than implied.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_productGet product detailsA
Read-only
Inspect

Return the full details of one product by its id (for example p-1001). Use search_products first if you only know a name.

ParametersJSON Schema
NameRequiredDescriptionDefault
productIdYesThe product id from search_products.

TDQS

A4.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=false, so the safety/scope profile is covered structurally. The description adds the example id format (p-1001) and the sequencing hint, but says nothing about pagination, not-found behavior, or response shape. Adequate but not rich given annotations carry the safety burden.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences, front-loaded with the primary action, with the alternative-routing sentence second. No filler, every clause earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Complete for a single-param read tool with annotations covering the safety profile and no output schema required. The only mild gap is not-found or empty-result behavior, but that is minor for a lookup like this.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the parameter itself is simple, so the baseline is 4 (single, well-documented parameter). The description adds an example id ('p-1001') and reiterates the provenance ('from search_products'), slightly reinforcing the schema without contradicting it.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Specific verb (Return) + resource (full details of one product) + identifier (by its id). It implicitly distinguishes itself from the lookup sibling search_products by describing itself as the detail-retrieval step after search.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly states when to use the alternative: 'Use search_products first if you only know a name.' This routes the agent correctly between discovery and detail retrieval, which is exactly the routing ambiguity in this sibling set.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_productsSearch productsA
Read-only
Inspect

Search the shop catalogue by phrase and optional category. Returns one page of up to limit products and a nextCursor; when nextCursor is not null, more results exist and you must say so rather than claiming the list is complete. Use get_product for full details of one item. This tool does not place orders.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoPage size.
queryNoWords to match against product names and descriptions.
cursorNoOpaque token from a previous page's nextCursor. Never invent one.
categoryNoRestrict results to one category.

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=false, and the description adds a substantive behavioral contract: results are paged, nextCursor signals more results, and the caller must not claim list completeness when it is non-null. That is real agent-relevant context beyond the annotations, though nothing is said about rate limits or result ordering.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three tight sentences: purpose first, then the pagination/completeness rule, then sibling routing and the order boundary. No filler; every sentence carries a distinct instruction.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description supplies the missing return-shape information (one page of up to limit products plus nextCursor) and the honesty constraint on reporting completeness. Nothing needed to invoke or interpret the result correctly is absent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description goes further by tying limit to the page size and cursor to the previous page's nextCursor, establishing the pagination contract the schema only hints at. It adds meaning beyond the per-field descriptions rather than restating them.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Search the shop catalogue') plus the scope (phrase and optional category). It explicitly distinguishes itself from get_product ('for full details of one item'), so an agent can route correctly without opening either schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Names the sibling tool to use when full details of one item are needed and states the boundary 'does not place orders', which implicitly routes ordering to create_order. It stops short of an explicit when-not-to-search condition, but the alternative and boundary are clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 4 tool updates
    • First observedcancel_order
    • First observedcreate_order
    • First observedget_product
    • First observedsearch_products

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    C
    maintenance
    MCP server for a demo Nintendo Switch game shop. Enables agents to list/search games, manage the cart, and perform demo checkout while sharing state with the web UI.
    -
  • F
    license
    A
    quality
    B
    maintenance
    An MCP server that enables natural language catalog search, cart management, and checkout workflows against the Fake Store API, with strict schemas and session-persistent carts.
    8
    -
  • F
    license
    Not graded
    quality
    C
    maintenance
    MCP server for operating a fictional restaurant, providing tools to consult the menu, manage active orders, view shift summaries, update dish availability, and advance order statuses. Includes a playground that teaches JSON-RPC by showing live protocol interactions.
    1
    -
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.