Skip to main content
Glama
theluckystrike

mcp-supplier-list

mcp-supplier-list

MCP server for a supplier directory that does not rot: contacts, payment terms, lead times and review stamps. A supplier directory that does not rot: contacts, terms, lead times, and when each record was last reviewed.

Works with Claude Desktop, Claude Code, Cursor and any Model Context Protocol client. Runs on your own machine, or hosted with no install.

Install

Hosted, nothing to install. Get a token from https://mcp.zovo.one/mcp/connect (the connect page) or https://mcp.zovo.one/mcp/token (the same token as JSON); a free anonymous one is issued on the spot and a Pro key works the same way. Then point an MCP client at https://mcp.zovo.one/mcp/supplier-list over streamable-http and send the token as Authorization: Bearer <token>.

If your client cannot set headers, put the token in the path instead: https://mcp.zovo.one/mcp/supplier-list/t/<token>. Both forms work. The bare URL with no token answers 401 on tools/call, so the token is not optional.

Claude Desktop, one click. Download supplier-list.mcpb from the latest release and double-click it.

From source. The mirror is self-contained: every @theluckystrike/* dependency is vendored, so a fresh clone builds with no extra setup.

git clone https://github.com/theluckystrike/mcp-supplier-list.git
cd mcp-supplier-list
npm install && npm run build

Then point your client at the built entry point:

{
  "mcpServers": {
    "supplier-list": {
      "command": "node",
      "args": ["/absolute/path/to/mcp-supplier-list/dist/index.js"]
    }
  }
}

@theluckystrike/mcp-supplier-list is not published on npm yet, so an npx -y @theluckystrike/mcp-supplier-list command will fail. The three paths above are the working ones and each is exercised by CI.

Read-only mirror of mcp-servers/servers/supplier-list. See MIRROR.md.

In the official MCP Registry (io.github.theluckystrike/supplier-list). This is the mcp supplier list server: a supplier directory inside your MCP client that does not rot the way the spreadsheet does. Add each supplier once -- what they supply, who to contact and how, the payment terms, the lead time in days, and notes -- and every record carries the date it was last reviewed, so "which of these records have gone stale?" is a question the directory answers instead of a chore you forget. Ask for a supplier by name, list the directory by category, and export the whole thing to CSV or Markdown when someone else needs it. Everything stays on this machine; there is no account and no network call.

Built by theluckystrike.

npm publish for @theluckystrike/mcp-supplier-list is pending, so npx -y @theluckystrike/mcp-supplier-list returns 404 today. Until then, a clone+build is the working path.

Related MCP server: Supply Chain MCP Server

Why not a spreadsheet

A spreadsheet of suppliers rots because nothing in it tells you it is stale: the phone number changed eight months ago and you find out when the order bounces. An mcp supplier list lives where the purchasing conversations already happen, and the review stamp on every record turns "is this still true?" into a report instead of a memory test.

Install

Claude Desktop

macOS ~/Library/Application Support/Claude/claude_desktop_config.json, Windows %APPDATA%\Claude\claude_desktop_config.json:

{
  "mcpServers": {
    "supplier-list": {
      "command": "npx",
      "args": ["-y", "@theluckystrike/mcp-supplier-list"]
    }
  }
}

Claude Code

claude mcp add supplier-list -- npx -y @theluckystrike/mcp-supplier-list

Cursor

~/.cursor/mcp.json (global) or .cursor/mcp.json (project), same entry as Claude Desktop.

Tools

tool

what it does

supplier_add

Add a supplier: name, category, contact fields, payment terms, lead time in days, notes. Returns SUP-YYYY-NNNN

supplier_list

List the directory A to Z with contact, terms, lead time and review age; filter by category and free text

supplier_get

Read one supplier record in full by SUP number or name

supplier_update

Change any fields on a record; only what you pass changes

supplier_remove

Remove a supplier, returning the record as it stood. The number is never reissued

supplier_mark_reviewed

Stamp a record as reviewed on a date, today by default

supplier_due_review

The due-review report: records not reviewed in N days (default 90), most overdue first. Pro

supplier_export

Export the directory as CSV (free) or a Markdown table (Pro), with optional category and text filters

license_status / license_activate

Free or Pro, and the key

Free vs Pro

Free

Pro

Suppliers in the directory

10

Unlimited

Add, list, get, update, remove

Yes

Yes

Review stamps

Yes

Yes

CSV export

Yes

Yes

Markdown export

No

Yes

Due-review report

No

Yes

The directory itself is never metered. Ten suppliers is a real working list for a freelancer, and reading, changing, searching and CSV-exporting the suppliers you have stays free for good. What Pro lifts is how many suppliers the directory holds, Markdown export, and the due-review report that keeps a bigger directory honest.

Get Pro: https://mcp.zovo.one/buy/supplier-list -- $19 one-time for this server, or $39 for the bundle.

Privacy

All data stays local, in ${XDG_DATA_HOME:-~/.local/share}/mcp-servers/supplier-list/. Two files: suppliers.json, counter.json. Nothing is sent anywhere, there is no account, no API key and no network call in this server at all. License keys are verified offline.

Built by theluckystrike. https://github.com/theluckystrike

Available Tools

10 tools
license_activateActivate licenseA

Activate a Pro key (MCPL1.xxx.yyy) from checkout: verified offline against a built-in public key, saved to your config file. A wrong, malformed or expired key is refused, unsaved. license_status reads it back.

ParametersJSON Schema
NameRequiredDescriptionDefault
keyYesLicense key from the checkout confirmation page

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations provided, the description carries the full behavioral burden. It discloses that verification happens offline against a built-in public key, that the key is persisted to the config file, and that invalid keys are refused and left unsaved. This is substantial transparency for an activation tool, though it could mention overwriting an existing key or the exact return behavior.

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?

The description is two sentences with no filler. The first sentence front-loads the main action, source, verification method, and persistence. The second sentence efficiently covers error handling and points to the related read-back tool. Every clause adds value.

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?

Given a single-parameter tool with no output schema and no annotations, the description covers activation behavior, verification mechanism, persistence, error outcomes, and how to read the result later. The only minor gap is an explicit statement of what the function returns upon success or failure, but the phrase 'refused, unsaved' implies a feedback mechanism. Overall, it is sufficiently complete for an agent to call 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?

The schema already documents the 'key' parameter at 100% coverage, so the baseline is 3. The description adds meaningful semantics by giving the concrete key format ('MCPL1.xxx.yyy'), confirming the key comes from the checkout page, and explaining that malformed or expired keys will be rejected. This goes beyond the schema's one-line description.

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?

The description states a specific action ('Activate a Pro key'), the exact key format ('MCPL1.xxx.yyy'), the source ('from checkout'), and the core mechanism ('verified offline against a built-in public key'). It also differentiates itself from the sibling license_status by noting that license_status reads the activation back, so there is no ambiguity about which tool does what.

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?

The description gives clear context: use this when you have a Pro key from checkout that needs to be activated. It also points to license_status as the read-back tool, which implies when to use a related sibling. It does not explicitly spell out 'do not use for checking status' or list other alternatives, but the context is strong enough to avoid misuse.

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

license_statusLicense statusA

Report this server's licence state: product, tier free or pro, licence id, expiry, the key source and the upgrade URL. No arguments, no network. Explains a free-tier refusal; license_activate installs a key.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.7/5.0
Behavior4/5

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

Annotations are absent, so the description carries the full burden of behavioral disclosure. It discloses that the call is local ('no network') and argument-free, and it mentions a specific explanatory behavior. The word 'Report' implies read-only, though it does not explicitly state non-destructive or permission requirements; this is adequate for a status command.

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 sentences with no filler. The first sentence lists the output fields; the second adds constraints and the sibling pointer. Every clause contributes meaningful information.

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 zero-parameter status tool with no output schema, the description lists the expected output fields, behavioral constraints, and the relevant alternative tool. Nothing an agent needs to call it correctly is missing.

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?

The schema has zero parameters and the description reinforces this with 'No arguments'. It adds value by listing the reported fields, helping an agent understand what the empty input will yield. The baseline for zero-parameter tools is high, and the description meets 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?

The description states a specific verb ('Report'), a clear resource ('this server's licence state'), and enumerates the exact fields returned. It also names the sibling 'license_activate' as the tool that does something different, so an agent can distinguish them immediately.

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?

The description gives explicit usage constraints: no arguments, no network, and explains a free-tier refusal. It also directs the agent to license_activate when the task is to install a key, serving as an explicit pointer to the relevant alternative.

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

supplier_addAdd a supplierA

Add a supplier to the directory and return its SUP-YYYY-NNNN number: the name, what they supply, who to contact and how, the payment terms, the lead time in days, and notes. Free tier: 10 suppliers; removing one you no longer use frees its slot.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesWho you buy from, e.g. Shenzhen Box Co, or Acme Fasteners
emailNoOrders or accounts email
notesNoAnything worth remembering: minimum orders, who to escalate to, why you dropped them last time
phoneNoPhone number as you would dial it
addressNoPostal or visiting address
websiteNoWebsite or storefront URL
categoryYesWhat they supply, e.g. Packaging, Raw materials, Print. Free-form; supplier_list filters on it
contact_nameNoYour person there, e.g. Maria Chen
payment_termsNoThe terms you buy on, e.g. Net 30, 50% upfront, Due on receipt
lead_time_daysNoTypical days from order to delivery, e.g. 14

TDQS

A3.8/5.0
Behavior3/5

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

With no annotations, the description carries the burden. It discloses the capacity limit (10 suppliers, removal frees a slot) and the return format. However, it does not mention failure modes, idempotency, validation behavior, or side effects beyond creation. It is partial disclosure for a mutation tool.

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?

The description is two sentences: the first states purpose and fields, the second gives the free tier constraint. No filler, front-loaded with the core action and return value.

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?

The description covers the essential context for calling the tool: what it does, what it returns, and a key capacity constraint. It does not mention error handling or explicitly note that only name and category are required, but the schema provides that. For a 10-parameter creation tool, it is reasonably complete.

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

Parameters3/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. The tool description summarizes the fields (name, supply, contact, payment terms, lead time, notes) but adds little beyond the schema's individual parameter descriptions. It groups them conceptually but does not provide new semantic detail.

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?

The description clearly states the action ('Add a supplier'), the resource (directory), and the expected output (SUP-YYYY-NNNN number). It enumerates the fields captured, distinguishing it from siblings like supplier_update or supplier_remove without ambiguity.

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

Usage Guidelines3/5

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

The description does not explicitly guide when to use this tool versus alternatives (e.g., 'use this for new suppliers, not existing ones'). It mentions the free tier limit and freeing slots, which is context but not direct routing. The purpose implies creation, but no explicit exclusions or alternatives are given.

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

supplier_due_reviewWhich supplier records have gone staleA

The due-review report: every supplier whose record has not been reviewed in the last N days -- 90 unless you say otherwise -- most overdue first. A record never reviewed is always due, whatever its age. This is the report that keeps the directory from rotting. Pro feature.

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNoA record is due when its last review is older than this many days. Default 90

TDQS

A4/5.0
Behavior3/5

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

No annotations are provided, so the description carries the burden. It discloses the sorting behavior (most overdue first), the default threshold, and the special rule for never-reviewed records. However, it does not disclose whether this is a read-only operation, whether it requires any special permissions, or what the output format looks like. The 'Pro feature' note hints at access restrictions but is vague.

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?

The description is concise and front-loaded: it states the core purpose in the first sentence, then adds the default behavior, sorting, and edge case rule. The 'Pro feature' note is a minor extra but not wasteful. Every sentence 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?

For a simple report tool with one optional parameter and no output schema, the description covers the key behavioral aspects: default threshold, sorting, and the never-reviewed edge case. It doesn't describe the output format, but with no output schema, that might be a minor gap. The 'Pro feature' hint is vague but not critical. Overall, it's fairly complete for its complexity.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents the 'days' parameter well. The description adds the default value (90) and the semantic meaning of the parameter (a record is due when last review is older than this many days), which aligns with the schema. It doesn't add much beyond the schema, but the default value is useful context. Baseline 3 is appropriate.

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?

The description clearly states the tool's purpose: it generates a report of suppliers whose records have not been reviewed within a specified number of days, sorted by most overdue first. It uses a specific verb ('due-review report') and resource ('supplier records'), and distinguishes itself from sibling tools like supplier_list or supplier_get by focusing on review staleness.

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?

The description explains the default behavior (90 days unless specified) and the rule that never-reviewed records are always due. It implies when to use this tool (when you need to identify stale supplier records for review), but it does not explicitly state when not to use it or mention alternatives like supplier_list for general listing. This is clear context but lacks explicit exclusions.

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

supplier_exportExport the directoryA

Export the supplier directory as CSV or a Markdown table: every field, one row per supplier, A to Z by name. CSV opens in any spreadsheet; Markdown drops into a doc, a wiki or a README. Filter by category and free text first if you only want part of it. CSV is free; Markdown is Pro.

ParametersJSON Schema
NameRequiredDescriptionDefault
qNoOnly suppliers whose fields contain this text, case-insensitive
formatNocsv (default) or markdown
categoryNoOnly suppliers in exactly this category, case-insensitive

TDQS

A4.3/5.0
Behavior4/5

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

With no annotations, the description carries the behavioral disclosure burden. It clearly explains output shape (full directory, one row per supplier, sorted A-Z), format consumption (spreadsheet vs doc/wiki/README), and the Pro/free gating on Markdown. It does not mention rate limits or auth, but it covers the essential behavior of the export.

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?

Four short sentences, each earning its place: scope and formats, consumer-friendly explanation, filtering guidance, and licensing condition. The core action is front-loaded with no redundant wording.

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?

There is no output schema, so the description must explain what the caller gets back. It does: complete fields, row granularity, sort order, both formats, filtering behavior, and a licensing caveat. For a simple export tool this is complete enough to call correctly.

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

Parameters3/5

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

The input schema already documents all three parameters with 100% coverage, so the baseline is 3. The description adds modest context by mentioning filtering by category and free text, and by noting the CSV/Markdown output difference, but it does not add significant meaning beyond the schema.

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?

The description names a specific verb ('Export'), a specific resource ('the supplier directory'), and the exact output forms ('CSV or a Markdown table'). It further characterizes scope ('every field, one row per supplier, A to Z by name'), which clearly distinguishes it from related tools like supplier_list or supplier_get.

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?

The description gives clear usage context: filter by category and free text if you only want part of the directory, and notes that Markdown output requires Pro while CSV is free. It does not explicitly name sibling alternatives to avoid, so it stops short of a full 5.

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

supplier_getRead one supplierA

Read one supplier record in full by SUP number or name: every contact field, the payment terms, the lead time, the notes, and when the record was last reviewed. Reads only.

ParametersJSON Schema
NameRequiredDescriptionDefault
supplierYesThe supplier id, e.g. SUP-2026-0003, or the name when only one supplier has it

TDQS

A4.5/5.0
Behavior5/5

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

With no annotations provided, the description carries the full behavioral burden. It explicitly states 'Reads only.' (read-only) and specifies the returned content, which gives an agent a clear picture of side effects (none) and response scope. It also discloses the lookup method (by SUP number or name), adding transparency beyond the title.

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 tight sentences that front-load the action and return scope, with no filler. 'Reads only.' is an efficient safety signal.

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 simple one-parameter read with no output schema, the description covers the input (SUP or name), the returned field set, and the read-only nature. Its only omission, behavior for ambiguous names, is already handled by the schema description, so nothing an agent needs is missing.

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

Parameters3/5

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

The schema already describes the supplier parameter at 100% coverage, so the baseline is 3. The description's phrase 'by SUP number or name' restates the schema's id/name disambiguation without adding new constraints, formats, or detailed semantics. Therefore it adds no meaningful parameter information beyond the schema.

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?

The description states a clear verb and resource ('Read one supplier record in full') and enumerates the content scope (contact fields, payment terms, lead time, notes, last reviewed). This differentiates it from sibling tools like supplier_list (reads many) or supplier_update (mutates). Title reinforces the single-record read.

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?

The description implies usage for retrieving a complete single supplier record by identifier, and the 'Reads only.' line signals it is not for updates. However, it does not explicitly name alternatives such as supplier_list or supplier_due_review or state conditions for when not to use it, leaving some inference required.

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

supplier_listList suppliersA

List the supplier directory A to Z by name: contact, payment terms, lead time, when each record was last reviewed and how many days ago that was. Filter by category and by free text across every field. Reads only.

ParametersJSON Schema
NameRequiredDescriptionDefault
qNoOnly suppliers whose name, category, contact, terms or notes contain this text, case-insensitive
categoryNoOnly suppliers in exactly this category, case-insensitive

TDQS

A4.5/5.0
Behavior5/5

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

With no annotations, the description carries the full burden, and it does so well: it explicitly states 'Reads only' to signal safety, discloses the sort order (A–Z by name), and lists every returned field including the recency metric. No hidden side effects are implied.

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 tight sentences: the first names the output plus ordering, the second names the filters and read-only nature. Everything earns its place and key facts are 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 read-only list tool with no output schema, the description covers the returned fields, sort order, filtering behavior, and safety profile. Nothing an agent needs to make the call correctly is missing.

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

Parameters3/5

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

Schema coverage is 100%, and the schema already documents q and category precisely, including case-insensitivity. The description's 'Filter by category and by free text across every field' only summarizes those parameters rather than adding new meaning, so it earns the baseline.

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?

The description opens with a specific verb and resource—'List the supplier directory'—and spells out exactly what is returned: contact, payment terms, lead time, and review recency. It is unambiguous about being a list/read operation, so it cannot be confused with supplier_add, supplier_update, or supplier_get.

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?

The description establishes clear use context: use when you need the supplier directory A–Z, optionally filtered by category or free text. It does not name alternatives or state when not to use it, but 'Reads only' plus the list framing makes the appropriate situation evident.

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

supplier_mark_reviewedStamp a supplier as reviewedA

Stamp a supplier's record as reviewed on a date, today by default: you have checked the contact, the terms and the lead time are still true. This is the stamp supplier_due_review reads, so a reviewed record stops being flagged as stale.

ParametersJSON Schema
NameRequiredDescriptionDefault
dateNoThe date you reviewed the record, YYYY-MM-DD. Default today
supplierYesThe supplier id, e.g. SUP-2026-0003, or the name when only one supplier has it

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations, the description carries the behavioral burden. It discloses that this is a state-changing stamp, defaults to today, and that it is the exact marker supplier_due_review reads so the record is no longer flagged stale. It could mention overwrite/idempotency behavior, but the core side effect is clear.

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 tightly written sentences with no filler. The core action and default date come first, and the second sentence justifies the tool's role in the review workflow, earning 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?

For a simple two-parameter mutation with a fully documented schema, the description covers purpose, when to use it, and downstream effect. It omits explicit return-value information, but no output schema exists and the behavioral context is otherwise sufficient.

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

Parameters3/5

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

Schema description coverage is 100%, so the parameters are already fully documented. The description adds no new parameter-level detail beyond restating the default-today behavior already in the schema. Baseline 3 is appropriate.

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?

The description uses a specific verb ('Stamp') with a clear resource ('a supplier's record') and the exact state change ('as reviewed on a date'). It distinguishes this from sibling tools like supplier_update and supplier_due_review by framing it as the action that clears the stale flag.

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?

The description gives clear conditions for use: after checking contact, terms, and lead time are still true. It also explains the downstream effect on supplier_due_review, making the intended workflow clear, though it does not explicitly list when not to use it.

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

supplier_removeRemove a supplierA

Remove a supplier from the directory by SUP number or name, returning the record as it stood so nothing is lost silently. The SUP number is never reissued. On the free tier the slot is freed for another supplier.

ParametersJSON Schema
NameRequiredDescriptionDefault
supplierYesThe supplier id, e.g. SUP-2026-0003, or the name when only one supplier has it

TDQS

A4/5.0
Behavior4/5

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

With no annotations provided, the description carries the full behavioral burden. It discloses that the record is returned as it stood (so nothing is lost silently), that the SUP number is never reissued (implying permanence), and the free-tier slot behavior. It does not explicitly warn about irreversibility beyond that, but covers key behavioral aspects.

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?

The description is two sentences with no filler. It front-loads the core action and then adds important behavioral details. Every sentence adds value.

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?

For a single-parameter destructive tool with no output schema or annotations, the description covers purpose, lookup methods, return behavior, and policy implications. It does not mention error handling or idempotency, but for this low complexity it is largely sufficient.

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

Parameters3/5

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

The schema already provides a clear description of the 'supplier' parameter, including example format and uniqueness condition. The description adds a redundant phrase ('by SUP number or name') but does not add significant new meaning beyond the schema. Baseline 3 is appropriate given 100% schema coverage.

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?

The description clearly states the action ('Remove a supplier from the directory') and the resource (supplier), and specifies the two lookup methods (SUP number or name). It distinguishes itself from sibling tools like supplier_get or supplier_update by the explicit removal action and the return of the prior record.

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

Usage Guidelines3/5

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

The description implies this tool is for removing a supplier, but it does not explicitly state when to use it versus alternatives or when not to use it. It provides context about the free tier and SUP reissuance but lacks direct comparison with sibling tools.

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

supplier_updateChange a supplier recordA

Change any of a supplier's fields by SUP number or name: name, category, the contact fields, payment terms, lead time, notes. Only the fields you pass change; pass at least one. The SUP number and the review stamp are not writable here -- supplier_mark_reviewed does the stamp.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoRename the supplier
emailNoOrders or accounts email
notesNoAnything worth remembering: minimum orders, who to escalate to, why you dropped them last time
phoneNoPhone number as you would dial it
addressNoPostal or visiting address
websiteNoWebsite or storefront URL
categoryNoWhat they supply, e.g. Packaging, Raw materials, Print. Free-form; supplier_list filters on it
supplierYesThe supplier id, e.g. SUP-2026-0003, or the name when only one supplier has it
contact_nameNoYour person there, e.g. Maria Chen
payment_termsNoThe terms you buy on, e.g. Net 30, 50% upfront, Due on receipt
lead_time_daysNoTypical days from order to delivery, e.g. 14

TDQS

A4.4/5.0
Behavior4/5

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

No annotations are provided, so the description carries the behavioral burden. It discloses that updates are partial, that at least one field must be passed, and that the SUP number and review stamp are not writable here. It does not describe failure behavior or return value, but the central mutation semantics are transparent.

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 front-load the action and then add only the essential behavioral caveats. Every sentence earns its place, and the description is easy to scan.

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?

With 11 parameters, all fully documented in the schema, and no output schema or annotations, the description covers the important operational context: partial updates, at-least-one requirement, and non-writable fields. It leaves minor gaps such as return value and not-found behavior, but the tool remains callable correctly from this definition.

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 each parameter already has a detailed description, so the baseline is 3. The description adds meaning beyond the schema by explaining the partial-update contract, requiring at least one field, and clarifying that the supplier identifier can be a SUP number or name and that the SUP/stamp fields are excluded.

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?

The description uses a specific verb and resource: 'Change any of a supplier's fields', then enumerates the field groups. It clearly distinguishes itself from siblings like supplier_add, supplier_remove, supplier_get, and supplier_mark_reviewed by stating what this tool updates and what it does not.

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?

It gives clear partial-update usage guidance: 'Only the fields you pass change; pass at least one.' It also names an explicit alternative for the excluded review-stamp behavior: 'supplier_mark_reviewed does the stamp.' It does not explicitly contrast with supplier_add or supplier_get, so it stops short of full when/when-not coverage.

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. 10 tool updatesv0.22.0
    • First observedlicense_activate
    • First observedlicense_status
    • First observedsupplier_add
    • First observedsupplier_due_review
    • First observedsupplier_export
    • First observedsupplier_get
    • First observedsupplier_list
    • First observedsupplier_mark_reviewed
    • First observedsupplier_remove
    • First observedsupplier_update

TDQS

A4.4/5.0

Scored across 10 tools

Disambiguation5/5

Each tool has a clearly distinct purpose: add, get, list, update, remove, review, export, and license management. There is no overlap; even list vs export are differentiated by output format and purpose. Agents can reliably select the correct tool.

Naming Consistency5/5

All tool names follow a consistent snake_case verb_noun pattern with a domain prefix (supplier_ or license_). Actions like add, get, list, update, remove, mark_reviewed, due_review, export, activate, and status are clear and predictable.

Tool Count5/5

With 10 tools, the server covers the full supplier lifecycle, review workflow, export, and licensing without redundancy. The count is well-scoped for a domain-specific directory server, neither sparse nor bloated.

Completeness5/5

The tool surface is complete for the domain: full CRUD for suppliers (add, get, update, remove), a review cycle (mark_reviewed, due_review), export/list capabilities with filters, and license management (activate, status). No obvious gaps like missing search or bulk operations exist within the stated scope.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers