Skip to main content
Glama

Assay Systems procurement register

Server Details

Public procurement register, 75 countries: suppliers, buyers, contracts, single-bid awards

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
Uptime
100.0% over 20 days
Last Tested
Transport
Streamable HTTP · MCP 2025-06-18
URL
ChatGPT
–
Claude
–

TDQS

B3.3/5.0

Scored across 10 tools

Disambiguation4/5

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.

Naming Consistency4/5

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.

Tool Count5/5

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.

Completeness3/5

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 tools
assay_contractContract recordC
Read-onlyIdempotent
Inspect

One contract or award record from the register.

NameRequiredDescriptionDefault
idYesRecord id as given by assay_search (the part after the country in the endpoint).
countryYesTwo-letter country code in lower case, e.g. ca, us, gb, ua. assay_countries lists them.

TDQS

C2.6/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose3/5

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.

Usage Guidelines2/5

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 registerA
Read-onlyIdempotent
Inspect

Countries covered by the Assay Systems procurement register, with the number of suppliers indexed in each.

NameRequiredDescriptionDefault

No parameters

TDQS

A3.5/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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 soonA
Read-onlyIdempotent
Inspect

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).

NameRequiredDescriptionDefault
lineYesLine id from assay_line or assay_search.
pageNoPage of the result list (default 1).
beforeNoYYYY-MM-DD: only contracts ending before this day.
countryYesTwo-letter country code in lower case, e.g. ca, us, gb, ua. assay_countries lists them.

TDQS

A3.7/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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 businessC
Read-onlyIdempotent
Inspect

A line of business (what is bought) in one country: buyers, suppliers and totals.

NameRequiredDescriptionDefault
idYesRecord id as given by assay_search (the part after the country in the endpoint).
countryYesTwo-letter country code in lower case, e.g. ca, us, gb, ua. assay_countries lists them.

TDQS

C2.9/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness3/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 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.

Parameters3/5

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.

Purpose3/5

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.

Usage Guidelines2/5

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 lineA
Read-onlyIdempotent
Inspect

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).

NameRequiredDescriptionDefault
idYesRecord id as given by assay_search (the part after the country in the endpoint).
pageNoPage of the result list (default 1).
buyerNoWords of the buyer's name.
countryYesTwo-letter country code in lower case, e.g. ca, us, gb, ua. assay_countries lists them.
ends_beforeNoYYYY-MM-DD: only contracts ending before this day.

TDQS

A3.6/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/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 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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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_soloAwards won without a rivalB
Read-onlyIdempotent
Inspect

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).

NameRequiredDescriptionDefault
kindNopairs: buyer × supplier pairs; locks: suppliers a buyer keeps coming back to; buyers: each buyer's share of no-rival awards.
pageNoPage of the result list (default 1).
buyerNoWords of the buyer's name.
countryNoTwo-letter country code in lower case, e.g. ca, us, gb, ua. assay_countries lists them.
supplierNoWords of the supplier's name.

TDQS

B3/5.0
Behavior4/5

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.

Conciseness3/5

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.

Completeness3/5

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.

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 `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.

Purpose3/5

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.

Usage Guidelines2/5

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 freshnessC
Read-onlyIdempotent
Inspect

When each source of the register was last read and built.

NameRequiredDescriptionDefault

No parameters

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness3/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 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.

Parameters4/5

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.

Purpose3/5

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.

Usage Guidelines2/5

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 recordB
Read-onlyIdempotent
Inspect

One supplier's record: contracts won, buyers, totals, exclusions and grants, with the source and licence.

NameRequiredDescriptionDefault
idYesRecord id as given by assay_search (the part after the country in the endpoint).
countryYesTwo-letter country code in lower case, e.g. ca, us, gb, ua. assay_countries lists them.

TDQS

B3.2/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness4/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 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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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 rowsA
Read-onlyIdempotent
Inspect

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).

NameRequiredDescriptionDefault
idYesRecord id as given by assay_search (the part after the country in the endpoint).
pageNoPage of the result list (default 1).
buyerNoWords of the buyer's name.
countryYesTwo-letter country code in lower case, e.g. ca, us, gb, ua. assay_countries lists them.
ends_beforeNoYYYY-MM-DD: only contracts ending before this day.

TDQS

A3.5/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/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 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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

  1. 5 tool updates
    • Changedassay_ending1 field changed
      • addedInput schema / properties / before / pattern
        Added value: +"^\\d{4}-\\d{2}-\\d{2}$"
    • Changedassay_line_contracts1 field changed
      • addedInput schema / properties / ends_before / pattern
        Added value: +"^\\d{4}-\\d{2}-\\d{2}$"
    • Changedassay_search2 fields changed
      • addedInput schema / properties / limit / description
        Added value: +"Maximum results, 1 to 200."
      • addedInput schema / properties / q / minLength
        Added value: +2
    • Changedassay_solo1 field changed
      • addedInput schema / properties / kind / description
        Added value: +"pairs: buyer × supplier pairs; locks: suppliers a buyer keeps coming back to; buyers: each buyer's share of no-rival awards."
    • Changedassay_supplier_contracts1 field changed
      • addedInput schema / properties / ends_before / pattern
        Added value: +"^\\d{4}-\\d{2}-\\d{2}$"
  2. 1 tool update
    • Removedassay_uncontested
  3. 11 tool updates
    • First observedassay_contract
    • First observedassay_countries
    • First observedassay_ending
    • First observedassay_line
    • First observedassay_line_contracts
    • First observedassay_search
    • First observedassay_solo
    • First observedassay_status
    • First observedassay_supplier
    • First observedassay_supplier_contracts
    • First observedassay_uncontested

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables 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
  • A
    license
    Not graded
    quality
    D
    maintenance
    UK public procurement data for AI agents. Tenders, contracts, buyer and supplier profiles over MCP and REST. 250 free credits.
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources