Assay Systems procurement register
Server Details
Public procurement register, 75 countries: suppliers, buyers, contracts, single-bid awards
- Status
- Healthy
- Uptime
- 100.0% over 20 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-06-18
- URL
- ChatGPT
- –
- Claude
- –
TDQS
Scored across 10 tools
Each tool targets a distinct entity (contract, supplier, line, country) or a distinct view (ending, solo, status, search), so most choices are clear. The main friction is the summary-vs-rows pairs (assay_line vs assay_line_contracts, assay_supplier vs assay_supplier_contracts), which an agent could easily swap, and assay_search overlaps assay_supplier.
All ten tools share the assay_ prefix and snake_case entity-based naming, so the set reads as one coherent surface. The convention is noun-oriented rather than verb_noun, and a few names (assay_ending, assay_solo) describe a view rather than a resource, but style is consistent throughout.
Ten tools is well within a comfortable range and each appears to earn its place: entity lookups, two scoped contract listings, discovery, freshness, and two analytical views. No obvious filler or duplicated capability.
Core procurement entities are covered for contracts, suppliers and lines, plus country and source-status lookups. However, buyers are referenced inside line/supplier tools but never exposed as a first-class tool, and there is no general contract listing or keyword search by buyer/date/value beyond 'ending soon', leaving real dead ends. Four tools also gated behind an Enterprise key narrow the usable surface for non-key holders.
Available Tools
10 toolsassay_contractContract recordCRead-onlyIdempotentInspect
One contract or award record from the register.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Record id as given by assay_search (the part after the country in the endpoint). | |
| country | Yes | Two-letter country code in lower case, e.g. ca, us, gb, ua. assay_countries lists them. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and openWorldHint=false, so the safety profile is covered. The description adds only 'from the register' as source context and says nothing about lookup failures, missing records, or payload size, so it contributes little beyond the structured metadata.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence with no filler, and the resource and scope are front-loaded. It is efficient, though its brevity borders on under-specification rather than true economy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and no explanation of what fields the returned record contains, the description leaves the agent guessing about the response shape. For a data-retrieval tool, that is a meaningful gap, even though parameters are well covered by the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the schema already explains that id comes from assay_search and that country is a lowercase two-letter code listed by assay_countries. The description adds no parameter meaning beyond that, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description identifies the resource ('one contract or award record') and its source ('the register'), and the singular phrasing implies single-record retrieval. However, it is a noun phrase with no verb, and it does not differentiate from siblings such as assay_line_contracts, assay_supplier_contracts, or assay_search, which all touch contract records.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no prerequisite stated (e.g., that the id comes from a prior search), and no alternatives named. The id parameter's schema hints at a dependency on assay_search, but the description itself offers nothing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
assay_countriesCountries in the registerARead-onlyIdempotentInspect
Countries covered by the Assay Systems procurement register, with the number of suppliers indexed in each.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, and closed-world behavior, so the safety profile is covered. The description adds the useful detail that results are aggregated with a per-country supplier count, but says nothing about ordering, pagination, or coverage limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence that states scope and return content with 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.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a parameterless read-only listing with no output schema, the description supplies enough to call it correctly and anticipate the shape of the result. Only minor gaps remain around ordering and result size.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is nothing for the description to disambiguate; baseline 4 applies. The description correctly implies an unfiltered full-register listing.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names the resource (countries in the Assay Systems procurement register) and the payload (supplier count per country), so an agent knows exactly what this returns. It does not, however, differentiate itself from the many assay_* siblings that also read the same register.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to call this versus assay_search, assay_supplier, or the other siblings. There are no prerequisites or exclusions stated, leaving the agent to infer usage entirely from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
assay_endingContracts ending soonARead-onlyIdempotentInspect
Contracts of one line that are still running, soonest end first: the next tenders to come. Needs an Enterprise Data key: X-API-Key header on the MCP request (https://assay-systems.com/api-key/#data).
| Name | Required | Description | Default |
|---|---|---|---|
| line | Yes | Line id from assay_line or assay_search. | |
| page | No | Page of the result list (default 1). | |
| before | No | YYYY-MM-DD: only contracts ending before this day. | |
| country | Yes | Two-letter country code in lower case, e.g. ca, us, gb, ua. assay_countries lists them. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent and closed-world, so the safety profile is covered. The description adds value the annotations cannot: a mandatory Enterprise Data key sent as an X-API-Key header, plus the ordering guarantee (soonest end first). It stops short of saying what happens when paging past the end of the list.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the semantics and the ordering rule, then the auth requirement with a reference link. Nothing is redundant, though the auth URL is dropped in rather abruptly and slightly interrupts the flow.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a four-parameter read tool with no output schema and full schema coverage, this covers the essentials: what is returned, in what order, and what credentials are needed. Missing only minor operational detail such as pagination limits and what 'still running' means in terms of contract status.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so line, country, before and page are already fully documented in the schema. The description only gestures at the line scoping and the 'still running' filter; it adds no format or edge-case detail beyond what the schema provides, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific resource and scope: contracts of one line that are still running, returned in soonest-end order. The 'still running' filter and the 'next tenders to come' framing distinguish it from a plain contract list, though the sibling it contrasts with (assay_line_contracts) is never named.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implies the use case (upcoming tender opportunities, renewals upcoming) but gives no explicit when-to-use or when-not guidance versus assay_line_contracts or assay_contract. The agent has to infer the choice from the phrase 'still running, soonest end first'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
assay_lineLine of businessCRead-onlyIdempotentInspect
A line of business (what is bought) in one country: buyers, suppliers and totals.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Record id as given by assay_search (the part after the country in the endpoint). | |
| country | Yes | Two-letter country code in lower case, e.g. ca, us, gb, ua. assay_countries lists them. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and openWorldHint=false, so the safety and replay profile is covered. The description adds the useful fact that the payload contains buyers, suppliers and totals, which partially compensates for the absent output schema. It adds nothing about freshness, aggregation semantics, or error behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler; the parenthetical '(what is bought)' efficiently defines the domain term. It is not padded, though brevity here shades into under-specification rather than crisp economy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description is the only source on return contents and it names them, which is adequate minimum coverage. It stops short of explaining what the totals represent or the shape of buyer/supplier entries, so a consumer still faces ambiguity about the payload.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%: the id parameter explains it is the part after the country in the endpoint and points to assay_search, and country points to assay_countries. The description itself contributes no parameter meaning, so the baseline of 3 is correct when the schema carries the full load.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description identifies the resource (a line of business in one country) and enumerates the returned content (buyers, suppliers and totals), which is more than a tautology. However, it uses no verb and gives no explicit differentiation from nearby siblings like assay_line_contracts or assay_contract, so an agent must infer the boundary. Purpose is discernible but not sharp.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to use this tool versus the ten sibling lookups, and no prerequisites or exclusions. The only routing hints (id comes from assay_search, country from assay_countries) live in the input schema descriptions, not the tool description. An agent gets no guidance on choosing this over assay_line_contracts.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
assay_line_contractsContract rows of a lineARead-onlyIdempotentInspect
All contract rows of one line of business with the buying office's contact, end dates and amounts. Needs an Enterprise Data key: X-API-Key header on the MCP request (https://assay-systems.com/api-key/#data).
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Record id as given by assay_search (the part after the country in the endpoint). | |
| page | No | Page of the result list (default 1). | |
| buyer | No | Words of the buyer's name. | |
| country | Yes | Two-letter country code in lower case, e.g. ca, us, gb, ua. assay_countries lists them. | |
| ends_before | No | YYYY-MM-DD: only contracts ending before this day. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare this as a read-only, idempotent, non-open-world operation. The description adds a meaningful behavioral prerequisite: access requires an Enterprise Data key passed via the X-API-Key header, with a documentation link. It does not discuss pagination behavior or error cases, but the auth disclosure is valuable beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two tight sentences. The purpose is front-loaded, and the authentication requirement follows without wasted prose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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 complete schema documentation and clear annotations, the description is largely complete: it states scope, key return fields, and an auth prerequisite. It could explicitly mention pagination or how results are ordered, but the schema already exposes the page parameter.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all five parameters are already documented in the input schema. The description adds scope context around a line of business and the returned fields, but it does not clarify parameter semantics beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the resource and scope: all contract rows for one line of business, including contact, end dates, and amounts. It is specific enough to understand the operation, but it does not differentiate itself from close siblings such as assay_supplier_contracts or assay_contract.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not say when to use this tool versus alternatives such as assay_contract, assay_line, or assay_supplier_contracts. It only states an authentication prerequisite, leaving the agent to infer the selection context from the sibling names.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
assay_searchSearch suppliersARead-onlyIdempotentInspect
Search the register for a supplier (firm) by name or line of business. Returns names, countries, ids and endpoints.
| Name | Required | Description | Default |
|---|---|---|---|
| q | Yes | Name or words, two letters or more. | |
| limit | No | Maximum results, 1 to 200. | |
| country | No | Two-letter country code in lower case, e.g. ca, us, gb, ua. assay_countries lists them. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, closed-world behavior, so the description's main added value is the return payload: "names, countries, ids and endpoints." That is genuinely useful given there is no output schema. It does not discuss match behavior (exact vs partial) or empty-result handling, which keeps it below 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, zero filler, with the action and scope front-loaded and the return shape second. Nothing repeats the schema or annotations.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
A simple read-only search with fully documented parameters and a stated return shape covers nearly everything an agent needs. Only minor gaps remain: result ordering/pagination semantics and what an empty match set looks like.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so q, limit and country are fully documented in the schema, establishing the baseline of 3. The description adds only the marginal detail that q can target line of business, not just name; it says nothing about limit or country beyond what the schema already covers.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
"Search the register for a supplier (firm) by name or line of business" gives a specific verb (search), resource (supplier register) and match fields. It is clear enough to separate from lookup siblings like assay_supplier, though it never names them explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The match fields (name or line of business) imply this is the discovery step before fetching a specific supplier via a sibling, but no when-to-use or when-not-to-use guidance is stated. The agent must infer the search-then-fetch workflow from the sibling names.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
assay_soloAwards won without a rivalBRead-onlyIdempotentInspect
Buyer × supplier pairs where the supplier won without a rival, locks and buyer shares; without country — the list of countries. Needs an Enterprise Data key: X-API-Key header on the MCP request (https://assay-systems.com/api-key/#data).
| Name | Required | Description | Default |
|---|---|---|---|
| kind | No | pairs: buyer × supplier pairs; locks: suppliers a buyer keeps coming back to; buyers: each buyer's share of no-rival awards. | |
| page | No | Page of the result list (default 1). | |
| buyer | No | Words of the buyer's name. | |
| country | No | Two-letter country code in lower case, e.g. ca, us, gb, ua. assay_countries lists them. | |
| supplier | No | Words of the supplier's name. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the read-only, idempotent, closed-world safety profile, so the bar is lower. The description adds genuinely non-obvious operational context: an Enterprise Data key is required, supplied as an X-API-Key header on the MCP request, with a URL for obtaining it. That is exactly the kind of auth prerequisite annotations cannot express. It stops short of disclosing pagination or result-size behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is short, but not front-loaded: it opens with a bare noun phrase rather than a verb and result, then packs three result shapes, a country caveat, and the auth requirement into two dense sentences. The 'without country — the list of countries' fragment spends words without conveying a determinate meaning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 5 optional parameters, no output schema, and a multi-shape result controlled by `kind`, the description should make the result shapes and pagination behavior unambiguous. It identifies the three shapes and the auth requirement, but leaves return structure to the schema-only `kind` descriptions and says nothing about pagination limits or result size.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 `kind`, `page`, `buyer`, `country`, and `supplier` in detail. The description's only added semantic is a fallback/scope hint about omitting `country`, but that hint is phrased so ambiguously ('without country — the list of countries') that it is unclear whether it means a country list is returned or that results aggregate across countries. Baseline 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names the domain concept (buyer × supplier pairs where the supplier won without a rival) plus two alternate result shapes (locks, buyer shares), matching the `kind` enum. However it is written as a fragmentary noun phrase with no verb, and the trailing clause 'without country — the list of countries' is genuinely ambiguous. No sibling tool is named or contrasted, so an agent cannot tell from the description alone how assay_solo differs from assay_line or assay_contract beyond guessing from the name.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit statement of when to use this tool versus the nine siblings, and no prerequisites or exclusions beyond the auth note. The only usage-adjacent content is the cryptic 'without country' remark and an external link. The agent must infer from the tool name and the `kind` enum which of assay_* to call.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
assay_statusRegister freshnessCRead-onlyIdempotentInspect
When each source of the register was last read and built.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true and openWorldHint=false, so the safety profile is covered. The description adds essentially nothing behavioral beyond that — no explanation of what 'built' means, no freshness thresholds, no indication of whether results are cached or live.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence with no filler, and the key content (per-source last read/built) is front-loaded. It is arguably too terse to be maximally useful, but nothing is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the burden of explaining return content; it gestures at per-source timestamps but never defines 'register' or 'source', and gives no sense of the shape or granularity of the response. Adequate but with clear gaps for a zero-param status tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is no parameter semantics for the description to carry; the baseline of 4 applies. Schema coverage is 100% by definition for an empty object.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description says what the tool returns (per-source last-read and last-built times) but has no verb and no resource framing beyond the vague word 'register'. It does not distinguish itself from any of the ten sibling assay_* tools, several of which are also register queries.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no indication of when to call this versus alternatives such as assay_search or assay_line, and no mention of prerequisites or context. The agent must infer freshness-checking intent entirely on its own.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
assay_supplierSupplier recordBRead-onlyIdempotentInspect
One supplier's record: contracts won, buyers, totals, exclusions and grants, with the source and licence.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Record id as given by assay_search (the part after the country in the endpoint). | |
| country | Yes | Two-letter country code in lower case, e.g. ca, us, gb, ua. assay_countries lists them. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true and openWorldHint=false, so the safety profile is covered. The description adds value by disclosing the record's payload contents, but says nothing about auth, rate limits, or whether a missing id/country errors versus returns empty. Adequate but not rich beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded noun phrase that lists the returned fields without padding; every word earns its place. It is slightly terse as a fragment with no verb, but nothing is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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 usefully compensates by enumerating the record's contents. For a read-only, two-parameter lookup whose safety profile is fully carried by annotations, this is nearly complete; the only gap is how it relates to assay_supplier_contracts and other supplier-oriented siblings.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%: both id and country are fully documented in the schema, including the 'id as given by assay_search' provenance and the country-code format. The description adds no parameter-level meaning, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
It states a specific resource and scope ('One supplier's record') and enumerates the record contents (contracts won, buyers, totals, exclusions, grants, source, licence), which tells an agent exactly what it gets back. It does not distinguish itself from close siblings such as assay_supplier_contracts or assay_contract, so the agent must infer the boundary.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no when-to-use guidance, no prerequisites, and names no alternative. The only routing hint ('the part after the country in the endpoint') lives in the schema, not the description, and no sibling is contrasted.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
assay_supplier_contractsSupplier's contract rowsARead-onlyIdempotentInspect
All contract rows of one supplier with the buying office's contact, end dates and amounts. Needs an Enterprise Data key: X-API-Key header on the MCP request (https://assay-systems.com/api-key/#data).
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Record id as given by assay_search (the part after the country in the endpoint). | |
| page | No | Page of the result list (default 1). | |
| buyer | No | Words of the buyer's name. | |
| country | Yes | Two-letter country code in lower case, e.g. ca, us, gb, ua. assay_countries lists them. | |
| ends_before | No | YYYY-MM-DD: only contracts ending before this day. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent and closed-world, so the safety profile is covered. The description adds genuinely useful context beyond them: an Enterprise Data key is required, passed as an X-API-Key header, with a documentation link — an auth gate an agent would otherwise only discover on failure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, both load-bearing, with the data scope front-loaded ahead of the auth prerequisite. Minor redundancy in the parenthetical URL fragment, but no filler prose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description usefully previews the returned fields, and it flags the auth requirement — the two things an agent most needs. Pagination and ordering behavior go unmentioned, though the `page` parameter in the schema mitigates that gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so every parameter, including the derived `id` and the `ends_before` pattern, is already documented in the schema. The description restates the returned fields but contributes no additional parameter meaning, which is the baseline-3 case.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific resource retrieval: all contract rows of one supplier, naming the fields carried (buyer contact, end dates, amounts). It is clear what the tool returns, but it never names or contrasts the many overlapping siblings (assay_contract, assay_line_contracts, assay_ending), so an agent must infer the boundary itself.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use or when-not-to-use guidance and no alternative named, despite a dense sibling set of contract-related tools. The only conditional statement is a hard prerequisite (Enterprise Data key), which is access guidance rather than selection guidance.
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.
5 tool updates
- Changed
assay_ending1 field changed- added
Input schema / properties / before / patternAdded value: +"^\\d{4}-\\d{2}-\\d{2}$"
- Changed
assay_line_contracts1 field changed- added
Input schema / properties / ends_before / patternAdded value: +"^\\d{4}-\\d{2}-\\d{2}$"
- Changed
assay_search2 fields changed- added
Input schema / properties / limit / descriptionAdded value: +"Maximum results, 1 to 200." - added
Input schema / properties / q / minLengthAdded value: +2
- Changed
assay_solo1 field changed- added
Input schema / properties / kind / descriptionAdded value: +"pairs: buyer × supplier pairs; locks: suppliers a buyer keeps coming back to; buyers: each buyer's share of no-rival awards."
- Changed
assay_supplier_contracts1 field changed- added
Input schema / properties / ends_before / patternAdded value: +"^\\d{4}-\\d{2}-\\d{2}$"
1 tool update
- Removed
assay_uncontested
11 tool updates
- First observed
assay_contract - First observed
assay_countries - First observed
assay_ending - First observed
assay_line - First observed
assay_line_contracts - First observed
assay_search - First observed
assay_solo - First observed
assay_status - First observed
assay_supplier - First observed
assay_supplier_contracts - First observed
assay_uncontested
Related MCP Connectors
Government tenders, contract awards, buyers and suppliers from official sources in 60+ countries.
Open Contracting MCP — international public procurement: government tenders and contract awards…
Find government contracts, tenders and RFPs you can still bid on, in 193 countries. Free, no key.
Public tenders and contract awards from EU TED and UK Find a Tender, with buyer, value and deadline.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables search and analysis of European public procurement tenders, including EU above-threshold (TED) and below-threshold from 11 national sources, with hybrid search and filtering.MIT
- AlicenseNot gradedqualityBmaintenanceEnables querying international public procurement data, including government tenders, through the Open Contracting standard.627 npmMIT
- FlicenseNot gradedqualityBmaintenanceEnables searching government tenders and public procurement opportunities with structured, anti-bot-handled results.-

oro-intel-mcpofficial
AlicenseNot gradedqualityDmaintenanceUK public procurement data for AI agents. Tenders, contracts, buyer and supplier profiles over MCP and REST. 250 free credits.MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.