Skip to main content
Glama

Server Details

Spacecraft component specs from vendor datasheets: search, digests, facts, gaps, budgets, bus design

Ownership verified
Status
Healthy
Uptime
99.7% over 40 days
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL
Repository
newspacemarket-com/mrd
GitHub Stars
1
Server Listing
NewSpace Market MRD

TDQS

A4.1/5.0

Scored across 14 tools

Disambiguation4/5

The descriptions are exceptionally detailed and explicitly state when to use each tool, which makes most tools clearly distinct. However, a few pairs are conceptual near-neighbors that could cause misselection: ask_datasheet vs search_datasheet_facts (both scan datasheets across a category) and ask_console vs design_stack (both accept plain-language engineering queries). The strong usage guidance mitigates most confusion.

Naming Consistency4/5

13 of 14 tools follow a consistent verb_noun snake_case pattern (ask_, find_, get_, match_, search_, explain_, build_, check_, design_). The verbs are semantically grouped (find_alternatives/find_data_gaps/find_suppliers, get_component_specs/get_datasheet_digest), which aids recognition. selection_guide breaks the convention as a noun_noun name, a minor deviation.

Tool Count5/5

14 tools is within the well-scoped 3-15 range, and each tool earns its place for the spacecraft component selection domain. The count reflects the genuine breadth of operations needed: discovery (match/find/search), retrieval (get/ask), analysis (build_budget, check_fit, design_stack), and learning (explain_properties, selection_guide). No tool feels redundant.

Completeness5/5

The tool surface covers the full selection lifecycle for spacecraft components: learning about properties (explain_properties, selection_guide), discovery (match_components, find_suppliers, find_alternatives, search_datasheet_facts), detailed retrieval (get_component_specs, get_datasheet_digest, ask_datasheet), engineering verification (build_budget, check_fit, design_stack), and gap analysis (find_data_gaps). As a read-only catalog server, there are no dead ends or obvious missing operations.

Available Tools

14 tools
ask_consoleA
Read-onlyIdempotent
Inspect

Plain-language engineering question over the whole platform, answered by platform rules without any external model: selection by requirements, values of a property across a class, companies by capability and country, launch windows, term definitions. Returns a short answer plus data blocks (candidates A/B/C, values, companies, launches). Use when the question does not map cleanly onto one structured tool.

ParametersJSON Schema
NameRequiredDescriptionDefault
qYesthe question in English or Russian, e.g. "star tracker better than 10 arcsec under 1 kg", "who makes batteries in Germany", "what is TRL"

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint, covering the safety profile. The description adds valuable behavioral context: 'answered by platform rules without any external model' indicates determinism and no external calls, and 'Returns a short answer plus data blocks' discloses the output structure. No contradiction with 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 sentences, front-loaded with the main purpose, followed by concrete examples and a usage note. Every sentence earns its place, with no fluff or repetition of schema information. It is highly efficient and well-structured.

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 flexible question-answering tool with a single parameter and no output schema, the description covers its scope, behavior, and output format. It also provides usage guidance. It does not enumerate limitations, but for a general tool that would be impractical. Annotations cover safety, so nothing critical 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 parameter description includes examples. The description adds semantic context about the scope and type of questions ('selection by requirements, values of a property across a class, companies by capability and country...'), which enriches understanding but does not add syntax or format details beyond the schema. With high coverage, a baseline of 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 states a clear purpose: 'Plain-language engineering question over the whole platform' and lists specific question types (selection by requirements, values across a class, etc.). It also explicitly distinguishes itself from structured tools by noting it is used when the question does not map cleanly onto one structured tool, which differentiates it from its siblings.

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 provides explicit when-to-use guidance: 'Use when the question does not map cleanly onto one structured tool.' This clearly signals when not to use it, though it does not name specific alternative tools or provide a list of when-not cases. The criterion is clear enough for an agent to decide.

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

ask_datasheetA
Read-onlyIdempotent
Inspect

Ask a product datasheet a question and get the closest excerpts with page numbers (pre-indexed text), or scan ALL datasheets of a category for an exact term (term + category) and get the exact list of products mentioning it with an excerpt each.

ParametersJSON Schema
NameRequiredDescriptionDefault
qNoquestion to one datasheet
termNoexact word/phrase for the category scan, e.g. SpaceWire, ITAR
categoryNo
product_idNo

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already establish that the tool is read-only, idempotent, and non-destructive. The description adds meaningful behavior beyond that: pre-indexed text, page numbers, exact product matches, and one excerpt per product. No contradiction is present.

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?

One dense sentence covers both modes, their inputs, and their outputs without wasted words. The primary 'ask a datasheet' behavior is front-loaded and the alternative is clearly separated.

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?

The two modes and their output content are described, which is helpful since there is no output schema. However, the required parameter groupings are not stated explicitly — for example, whether the single-datasheet mode needs both q and product_id, while the scan mode needs term and category.

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?

q and term already have schema descriptions, and the description reinforces the term + category relationship for the scan mode. However, product_id is undocumented in the schema and the description never explains how it selects the target datasheet, leaving some parameter semantics implicit.

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 two distinct behaviors: asking a single product datasheet a question and getting closest excerpts with page numbers, or scanning all datasheets in a category for an exact term. It is specific about the verb and resource, but it does not explicitly position itself against sibling tools like search_datasheet_facts.

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 context for when to use each mode: a question about one datasheet versus an exact-term scan across a category. It does not name alternatives or exclusions, but the two-mode structure makes the usage conditions reasonably clear.

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

build_budgetA
Read-onlyIdempotent
Inspect

Engineering budget for a component stack: pass product ids (from the other tools) and your bus voltage, get total mass, total steady-state power, per-item data interfaces, voltage-compatibility verdicts and an honest list of what could NOT be counted because the vendor does not publish it. Use it to assemble and sanity-check a subsystem, e.g. 3-4 reaction wheels for an ADCS.

ParametersJSON Schema
NameRequiredDescriptionDefault
bus_vNopower bus voltage, V — each item is checked against its supply range
itemsYescomponents of the stack

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already establish read-only, idempotent, and non-destructive behavior. The description adds meaningful behavioral detail beyond that: it performs voltage-compatibility checking and transparently reports items that could not be counted due to missing vendor data. This gives the agent an honest picture of what the tool will and won't provide.

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 primary function, enumerates specific outputs, adds the important limitation about unpublished vendor data, and closes with a concrete usage example. Every sentence earns its place.

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 tool with no output schema, the description enumerates the return values well: total mass, total steady-state power, per-item data interfaces, voltage-compatibility verdicts, and excluded items. It explains the integration with sibling tools and provides a realistic usage scenario. The parameter schema is complete, so no critical information 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 input schema already documents both parameters fully, including the bus voltage supply-range check and the items array with id and qty. The description adds value by clarifying that product ids come from other tools and that bus voltage is 'your' power bus voltage, tying the parameters to the intended workflow. This goes slightly beyond the schema's plain definitions.

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 identifies the tool's purpose: building an engineering budget for a component stack. It specifies the inputs (product ids, bus voltage) and outputs (mass, power, data interfaces, voltage verdicts, excluded items), and distinguishes itself from sibling tools by focusing on budget assembly rather than component lookup or matching.

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 guidance on when to use the tool: 'assemble and sanity-check a subsystem' with a concrete example (3-4 reaction wheels for ADCS). It also implies the ids come from other tools, which routes the agent to the correct workflow. It does not explicitly list exclusions or name sibling alternatives, but the usage context is clear.

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

check_fitA
Read-onlyIdempotent
Inspect

Check whether a set of products docks together, by the interface template of each product type: deployer and CubeSat structure form factor and satellite mass, separation system and spacecraft mass, solar panel size and EPS solar input (Voc/Vmp, power), battery and EPS, EPS output rails or the unregulated bus against each unit supply range, EPS charge current against the battery limit, satellite envelope against the deployer envelope for its form factor, on-board computer against unit data interfaces, board stack format, free volume, radio against antenna and ground station (frequency, band, connector, protocol and modulation), antenna against ground station polarization, GNSS receiver signals against the GNSS antenna band, magnetorquer coil current against the driver channel, PPU output power against the electric thruster, array drive against panel power, propulsion propellant against tank media, steady power budget. Verdicts fits / conflict / check / unknown, plus ask_vendor: exactly which values are missing to decide.

ParametersJSON Schema
NameRequiredDescriptionDefault
itemsYesproducts of the spacecraft, deployer or ground segment (ids from match_components)

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false. The description adds useful behavioral detail beyond that by specifying the verdict categories (fits / conflict / check / unknown) and the ask_vendor behavior that reports exactly which values are missing to decide.

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

Conciseness2/5

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

This is one very long, run-on sentence that compresses dozens of interface checks into a single block. The content is informative, but the lack of bullet points or paragraph separation makes it difficult to parse. It is front-loaded with the core purpose, yet the enormous checklist hurts readability.

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 complex compatibility-checking tool with no output schema, the description does a good job of explaining what is checked and what verdicts are returned, including the ask_vendor fallback. It is missing only minor details such as how quantities affect the fit check or the exact structure of the returned verdicts.

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 covers 100% of the single parameter's semantics: items is described as products of the spacecraft, deployer or ground segment, and each item has an id and optional qty. The description does not add parameter-level detail, but the baseline of 3 applies because the schema already carries the load.

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: 'Check whether a set of products docks together,' followed by an exhaustive enumeration of the interface checks performed. This makes the tool's purpose unmistakable and distinguishes it from match_components, which is about finding compatible parts rather than verifying a given set.

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 intended use is implied by the purpose: call this after a set of products has been identified, likely following match_components. However, the description never explicitly says when to use this tool versus siblings, nor does it state when not to use it or suggest an alternative.

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

design_stackA
Read-only
Inspect

Assemble a whole spacecraft bus from a plain-language task: the service plans the subsystems, matches every item deterministically against the stated requirements, computes the mass/power budget and writes an evidence-bound rationale. Pass fixed = product ids you have already chosen (from match_components or get_datasheet_digest): they stay in their subsystems, are checked against the requirements (selected.fixed, fixed_verdict, fixed_fails) and the rest is assembled around them. LLM-backed and rate-limited (6/min, 30/h anonymous).

ParametersJSON Schema
NameRequiredDescriptionDefault
qYesthe task, e.g. "6U CubeSat bus on 12 V with S-band radio and GNSS, star tracker better than 10 arcsec"
fixedNoproduct ids to keep (locked parts)

TDQS

A4.6/5.0
Behavior5/5

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

Annotations cover only the safety profile (readOnly, non-destructive, openWorld=false), and the description goes well beyond them: LLM-backed execution, anonymized rate limits (6/min, 30/h), deterministic matching, and specific result fields (selected.fixed, fixed_verdict, fixed_fails). This is exactly the extra behavioral context an agent needs and cannot get from 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?

Two sentences, front-loaded with the primary action and the fallback/`fixed` path, with no filler. The parenthetical output-field list is dense but earns its place since no output schema exists.

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?

No output schema exists, yet the description names the returned evidence fields, documents the rate limit, and explains determinism and the role of `fixed`. For a 2-parameter LLM-backed assembly tool, nothing an agent needs to invoke 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?

Schema coverage is 100%, so baseline is 3, but the description adds real meaning: `fixed` ids stay in their subsystems, are validated against stated requirements, and surface as selected.fixed/fixed_verdict/fixed_fails. The example task for `q` also clarifies its acceptable syntax beyond the schema's generic 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?

States a specific verb+resource ('Assemble a whole spacecraft bus') and the full pipeline: planning, deterministic matching, budget computation, rationale. It also names the sibling tools (match_components, get_datasheet_digest) whose output feeds it, so an agent can place it in the workflow without opening a schema.

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

Usage Guidelines4/5

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

Explains the key usage pattern: pass `fixed` with product ids you have already chosen from match_components or get_datasheet_digest, and the rest is assembled around them. That is clear context for the main branch of use, but there is no explicit statement of when NOT to use it (e.g., when to prefer build_budget or find_data_gaps instead).

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

explain_propertiesAInspect

What every property of a product category means: definition, how it is measured and what goes into the measurement condition, how to use it when selecting, what it is commonly confused with, typical range and related properties. Call this before interpreting specs of an unfamiliar category.

ParametersJSON Schema
NameRequiredDescriptionDefault
subtypeNooptional subtype slug, e.g. cmg, heatpipe, sequencer
categoryYescategory slug, e.g. reaction-wheels, deployers, thermal

TDQS

A3.6/5.0
Behavior3/5

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

With no annotations, the description carries the behavioral transparency burden. It describes what the output contains and positions the tool as a reference lookup, but it does not explicitly state read-only behavior, output format, or potential limitations/errors. It is adequate but not fully transparent.

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?

The description is a single dense sentence that front-loads the purpose and then lists concrete content areas. Every clause contributes value, and there is no filler.

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 enumerates the return content and gives an explicit call-timing recommendation. Given that there is no output schema, this is sufficient for an agent to understand what it will receive and when to invoke the tool. It stops short of detailing exact response formatting or edge cases.

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 covers both parameters with descriptive examples (category slug, subtype slug). The description does not add parameter-level meaning, but because schema coverage is 100%, the baseline of 3 is appropriate.

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 that this tool explains property definitions, measurement, usage, confusions, ranges, and related properties for a product category. It frames its role as a pre-spec reference, though it does not explicitly distinguish itself from sibling tools by name.

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 explicit usage guidance: 'Call this before interpreting specs of an unfamiliar category.' It names the context clearly but does not provide exclusions or explicitly compare against alternatives like search_datasheet_facts or get_component_specs.

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

find_alternativesA
Read-onlyIdempotent
Inspect

Alternatives / second sources / replacements for ONE product: requirements are derived from its own published values (key fields of its class — higher-is-better at least 80 %, lower-is-better at most 120 %, same interface, band or type) and its class is searched without it. Returns the derived requirements, fields not compared, and groups A (meets all), B (fails one), C (data missing). Use when a part has a long lead time, is discontinued or export-restricted. Equal figures do not make a drop-in replacement — interfaces must be confirmed with the manufacturer.

ParametersJSON Schema
NameRequiredDescriptionDefault
countryNooptional manufacturer country or region
productNoproduct name (e.g. "RW210", "ST200 star tracker")
product_idNoproduct id, instead of the name
tolerance_pctNoallowed deviation from the original, % (default 20, 5–50)

TDQS

A4.5/5.0
Behavior5/5

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

Annotations already mark the operation read-only and idempotent; the description adds substantial behavioral detail beyond that: derivation thresholds (80%/120%), same-interface/band/type constraints, the exclusion of the source product from the search, and the A/B/C grouping. It also warns that equal figures do not make a drop-in replacement and that interfaces must be confirmed with the manufacturer.

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 dense but well organized: core purpose and method first, then returns, then when to use, then a safety caveat. Every sentence carries distinct information and none is filler.

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 complex tool with no output schema, the description explains what is returned (derived requirements, non-compared fields, groups A/B/C), when to use it, and the critical interface caveat. The schema covers all parameters, so nothing an agent needs to invoke it 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 description coverage is 100%, so the baseline is 3. The description adds general context around deriving requirements from a product's published values and searching its class, but it does not add parameter-specific meaning beyond the schema's already complete descriptions.

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 ('Alternatives / second sources / replacements') and a precise scope ('for ONE product'), then explains the derivation method and output groups. This clearly separates it from sibling tools such as find_suppliers or match_components without needing to open their schemas.

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 an explicit trigger: 'Use when a part has a long lead time, is discontinued or export-restricted.' It does not name alternative tools or state exclusions, so it falls just short of full 5-level routing guidance.

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

find_data_gapsA
Read-onlyIdempotent
Inspect

What is missing for a product, a company or a category and where to get it: in_digest (already read from the datasheet — value, page), in_datasheet_text (the datasheet mentions it — page, excerpt), not_in_datasheet (ask the vendor), no_datasheet (ask the vendor for a datasheet). For vendors: what to publish; for buyers: what to ask.

ParametersJSON Schema
NameRequiredDescriptionDefault
statusNo
categoryNo
company_idNo
product_idNo

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already establish read-only, idempotent, non-destructive behavior. The description adds useful behavioral context by defining what each status means, including whether the user should go to the datasheet or ask the vendor, and what fields like page/excerpt can be expected.

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 compact and information-dense: a front-loaded purpose statement followed by a concise status legend and an audience takeaway. Every clause contributes meaning; there is no filler or repetition of the schema.

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 carries the burden of explaining return semantics, which it does by defining the statuses and indicating what source or action each corresponds to. It could be more explicit about response shape and how the optional filters interact, but it is sufficient for a straightforward read-only gap lookup.

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?

With 0% schema description coverage, the description must compensate. It explains the meaning of the status enum values and maps the tool to product, company, or category. It does not elaborate on the integer id parameters or how filters combine, but the parameter names and enums are fairly self-explanatory.

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 answers 'what is missing for a product, a company or a category and where to get it,' then enumerates the specific gap statuses. This makes its role distinct from content-query siblings like get_datasheet_digest or search_datasheet_facts.

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 context for the intended audience: 'For vendors: what to publish; for buyers: what to ask.' It does not explicitly name alternative tools or state when not to use this one, so it stops short of full when/when-not guidance.

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

find_suppliersA
Read-onlyIdempotent
Inspect

Companies whose PRODUCTS meet engineering requirements in one category — "who makes platforms for GEO", "Chinese companies making star trackers better than 10 arcsec", "suppliers of flight-proven reaction wheels". Pass category, optional country and any requirement parameter of match_components (same names and units). Returns companies with their matching products, and how many more companies may fit because the decisive value is not published.

ParametersJSON Schema
NameRequiredDescriptionDefault
bus_vNobus voltage the unit must accept, V
orbitNoplatforms: LEO | SSO | MEO | GEO | lunar
exportNoITAR-free | EAR99 | ITAR
countryNoEnglish country or region (China, Germany, Europe)
data_ifNodata interface: CAN, RS-422, SpaceWire…
categoryYescomponent class, e.g. platforms, star-trackers, reaction-wheels (see match_components)
mass_maxNomax unit mass, g
prop_typeNoplatforms: electric | chemical | any; propulsion: electric | chemical | cold-gas | water
accuracy_maxNostar trackers: cross-boresight accuracy, arcsec
momentum_minNoreaction wheels: momentum, N·m·s
flight_provenNoonly flight-proven products
paymass_min_gNoplatforms: payload mass that must fit, g
paypower_min_wNoplatforms: orbit-average power for the payload, W
exclude_companyNomanufacturer names to EXCLUDE, comma-separated
exclude_countryNocountries or a region to EXCLUDE (China, Asia)

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, so the safety profile is covered. The description adds behavioral value by disclosing that it returns 'how many more companies may fit because the decisive value is not published' – a non-obvious behavior that helps the agent interpret results. It also implies a fuzzy matching approach ('meet engineering requirements') without promising exact matches. No contradiction with 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?

The description is three sentences and front-loads the core purpose with examples, followed by calling instructions and return behavior. It is efficient and avoids repetition of schema details. The only minor inefficiency is that the second sentence lists both parameters and the return value in one line, but it remains clear and scannable.

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 search tool with 15 parameters (1 required) and no output schema, the description adequately covers how to invoke it (category required, others optional), the parameter alignment with match_components, and what the result looks like (companies, matching products, and a count of additional potential matches). It does not mention pagination, result limits, or ordering, but given the annotations and the fact that it's a read-only search, these are minor gaps. It is sufficiently complete for an agent to use it correctly.

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

Parameters4/5

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

Schema description coverage is 100%, so all parameters are individually documented. The description adds cross-referencing value by noting that requirement parameters are 'same names and units' as match_components, which aids consistency and reduces ambiguity. It also gives usage examples that illustrate how to combine parameters (e.g., 'Chinese companies making star trackers better than 10 arcsec'). This goes beyond what the schema provides, earning a 4 rather than a baseline 3.

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 ('find'), a resource ('suppliers'), and a clear purpose: companies whose products meet engineering requirements in a category. It gives concrete examples ('who makes platforms for GEO') that distinguish it from sibling tools like match_components (which matches components, not companies) and find_alternatives. The purpose is unambiguous and distinct.

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 explicitly instructs to pass 'category, optional country and any requirement parameter of match_components (same names and units)', telling the agent exactly how to call it. It also explains the return value (companies with matching products and an estimate of additional companies). It does not explicitly state when not to use it or name alternative tools, but the reference to match_components implies its role in the selection flow. Clear context, though a direct comparison to siblings would be stronger.

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

get_component_specsA
Read-onlyIdempotent
Inspect

The typed layer of a category, 10 products per call (page with offset, narrow with ids and keys) — every item with every value (number, canonical unit, bound, measurement condition, datasheet source page, confidence L0/L1) plus the property dictionary grouped by interface port (perf/power/data/mech/thermal/env/supply) — for arbitrary comparison, budgeting or trade studies on your side.

ParametersJSON Schema
NameRequiredDescriptionDefault
idsNoonly these product ids (from match_components)
keysNoonly these properties (prop_key values from properties), e.g. ["mass_g","momentum_nms"]
limitNoproducts per call (default 10, max 60)
offsetNocontinue from paging.next_offset
categoryNocomponent class — ONE per call; for several classes call once per class (default reaction-wheels)
confidenceNopass L1 to get only human-verified rows

TDQS

A3.7/5.0
Behavior4/5

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

Beyond the readOnly/idempotent annotations, the description discloses return granularity: per-value units, bounds, measurement conditions, datasheet source page, confidence, and a property dictionary grouped by interface port. It also states paging ('10 products per call') and narrowing via ids/keys. No behavioral claims contradict 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.

Conciseness3/5

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

The content is information-dense, but it is delivered as a single long em-dash sentence that is hard to parse, and the opening 'typed layer' phrase is vague. There is no wasted information, but the structure could be clearer.

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 compensates by enumerating the fields returned and the grouping of the property dictionary. It covers pagination, filtering, and purpose, though the meaning of 'typed layer' is left implicit and no example is provided. Overall it is adequate for a read-only spec-retrieval call.

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

Parameters4/5

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

Schema description coverage is 100%, so the schema carries the parameter documentation. The description adds useful operational meaning by tying 'page with offset' to limit/offset and 'narrow with ids and keys' to the id/key filters, and it gives a concrete default page size.

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 is built around a noun phrase, 'the typed layer of a category,' rather than an explicit action like 'retrieve component specifications.' The paging/filtering details and output enumeration make the resource somewhat clear, but the opening jargon and absence of any sibling distinction keep it from being fully transparent.

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 names concrete use cases ('arbitrary comparison, budgeting or trade studies'), which tells an agent when this raw spec retrieval fits. It does not state when to prefer a sibling like get_datasheet_digest or match_components, so there are no exclusions.

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

get_datasheet_digestA
Read-onlyIdempotent
Inspect

Facts machine-read from a product datasheet, by section (identity, performance, electrical, interfaces, mechanical, thermal, environmental, qualification, lifetime, options, compliance, commercial). Each fact carries unit, condition, the page and a verbatim quote it was verified against (confidence L0) plus a link into the PDF. Use it for what the typed layer does not hold: connectors, protocols, survival temperature, vibration, radiation, heritage, options, export control, lead time. Pass product_id from match_components or a product name.

ParametersJSON Schema
NameRequiredDescriptionDefault
qNoproduct name if no id
product_idNo

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already establish readOnly, idempotent, non-destructive, non-open-world, so the safety profile is covered. The description adds useful behavioral context (confidence L0, verbatim quote verification, PDF link per fact), but doesn't state result limits, pagination, or what happens when a section is absent.

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?

Front-loads what the tool returns and its section taxonomy, then verification semantics, then usage and param routing. The section list is long but each item is informative; only slight trimming possible.

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 does the work of describing the returned fact shape (unit, condition, page, verbatim quote, confidence, PDF link), which is valuable. It also names where product_id comes from. The main gap is not distinguishing itself from sibling tools like get_component_specs.

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 50% (only the 'q' param is described in schema). The description adds meaning by saying product_id can come from match_components or a product name, which compensates for the undocumented product_id. Baseline 3 given the mixed coverage.

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 verb+resource ('Facts machine-read from a product datasheet, by section') and enumerates the sections covered, so an agent knows this retrieves structured datasheet extractions. It doesn't explicitly contrast with the sibling get_component_specs or search_datasheet_facts, which is the missing sibling differentiation.

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?

There is partial usage guidance: 'Use it for what the typed layer does not hold' and 'Pass product_id from match_components', which implies a workflow. But it never states when to prefer this over ask_datasheet or get_component_specs, nor 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.

match_componentsA
Read-onlyIdempotent
Inspect

Reverse search over a typed spec layer: pass a category and engineering requirements, get every catalogued item grouped as A (meets all stated requirements), B (fails a named requirement, both figures quoted) or C (could fit, data missing). Verdicts cite the datasheet page. Omit parameters you do not care about. Categories: reaction-wheels, star-trackers, obc-computers, batteries, radios, solar-panels, propulsion, sun-sensors, magnetometers, magnetorquers, imus-gyros, gnss-receivers, eps, deployers, thermal, antennas, sdr-modems, cameras, structures, platforms, ground-stations, sadm, tanks-valves, separation-systems, pointing-mechanisms, test-facilities (environmental test labs — items are companies: test, shaker_min_kn, tvac_min_m, specimen_min_kg, emc_min_m). The answer is compact: group A in full (up to 25), groups B and C — the first 10 with the reason, plus counts and the fields most often unpublished in C; page with group and offset.

ParametersJSON Schema
NameRequiredDescriptionDefault
bandNoradio: frequency band UHF|VHF|S|X|L|C|Ku|Ka
testNotest-facilities: kinds of test the lab must ALL offer, comma-separated — vibration, shock, thermal-vacuum, thermal, emc, radiation, acoustic, magnetic, rf-antenna, mass-properties, outgassing, optical
bus_vNoyour power bus voltage, V — the unit must accept it
groupNopage through one group only — use with offset from paging.next
limitNoitems of groups B and C to return (default 10, max 50); group A comes in full up to 25
mediaNotank/valve: propellant/media, e.g. xenon, hydrazine
orbitNoplatforms: orbit the bus is designed for — LEO | SSO | VLEO | MEO | GEO | HEO | lunar | deep space (LEO, SSO and VLEO pass each other)
exportNorequired export status: ITAR-free | EAR99 | ITAR
form_uNostructures / platforms: CubeSat size, U (exact match)
offsetNostart position inside the group (paging.next.offset of the previous answer)
acq_maxNostar trackers: max lost-in-space acquisition time, s
arw_maxNoIMU: worst angle random walk, deg per sqrt hour
data_ifNorequired data interface: CAN, RS-422, RS-485, SpaceWire, I2C, SPI, UART, MIL-STD-1553
mpx_minNocamera: min sensor resolution, Mpx
ram_minNoOBC: min RAM, MB
tid_minNoany category: min radiation tolerance TID, krad
categoryNowhich component class to search — ONE per call; for several classes call once per class (default reaction-wheels)
lead_maxNomax lead time, months
mass_maxNomax unit mass, grams
mass_minNomin unit mass, grams (rare: "heavier than")
materialNostructure: alloy, e.g. Al 7075
ttff_maxNoGNSS: worst cold TTFF, s
bands_minNocamera: min spectral bands
clock_minNoOBC: min CPU clock, MHz
dv_min_msNoplatforms / propulsion: min delta-v, m/s
emc_min_mNotest-facilities: min test-article size the EMC / anechoic chamber takes, m
gsd_max_mNocamera: worst ground sample distance, m
isp_min_sNopropulsion: min specific impulse, s
link_bandNoplatforms: radio band of the bus — UHF | VHF | L | S | X | Ku | Ka | optical
power_maxNomax steady-state power, W (peak/regenerative not counted)
prop_typeNopropulsion: electric | chemical | cold-gas | water; platforms: electric | chemical | any (the bus carries propulsion)
cycles_minNobattery: min cycle life
dish_min_mNoground station: min antenna diameter, m
gt_min_dbkNoground station: min G/T, dB/K
life_min_yNoany category: min design life in orbit, years
sunacc_maxNosun sensor: worst acceptable accuracy, deg
torque_minNowheels: min torque, mN*m
tvac_min_mNotest-facilities: min usable inner size (diameter or smallest side) of the thermal-vacuum chamber, m
update_minNostar trackers: min update rate, Hz
fov_min_degNosun sensors / star trackers / cameras: min field of view, deg
mag_res_maxNomagnetometer: worst resolution, nT
pos_acc_maxNoGNSS: worst position accuracy, m
res_max_degNopointing: max angular resolution, deg
shock_max_gNoseparation: max release shock, g
slip_min_chNoSADM: min slip-ring channels
storage_minNoOBC: min storage, GB
txpow_min_wNoradio: min TX RF power, W
accuracy_maxNostar trackers: worst acceptable cross-boresight accuracy, arcsec
beam_max_degNoantenna: max beamwidth, deg
channels_minNoGNSS: min channels
eirp_min_dbwNoground station: min EIRP, dBW
gain_min_dbiNoantenna: min gain, dBi
meop_min_barNotank/valve: min operating pressure, bar
momentum_minNowheels: min angular momentum storage, N*m*s
outpow_min_wNoEPS: min total output power, W
payvol_min_lNoplatforms: min volume for the payload, litres
payvol_min_uNoplatforms: min volume for the payload, U
polarizationNoantenna: RHCP|LHCP|linear|circular
ptrans_min_wNoSADM: min power transfer, W
range_min_utNomagnetometer: min field range, uT
sun_excl_maxNostar trackers: max acceptable sun exclusion angle, deg
swath_min_kmNocamera: min swath width, km
volume_min_lNotank/valve: min volume, L
bias_max_deghNoIMU: worst bias instability, deg/h
constellationNoGNSS: required constellation GPS|Galileo|GLONASS|BeiDou
flight_provenNoany category: true = only products with stated flight heritage (missions flown, heritage text or TRL 9)
paymass_min_gNoplatforms / deployers / separation systems: payload or satellite mass that must fit, grams
price_max_eurNomax indicative price, EUR (few vendors publish it — expect group C)
range_min_degNopointing: min travel range, deg
rate_min_kbpsNoradio: min data rate, kbps
shaker_min_knNotest-facilities: min shaker force, kN
thrust_max_mnNopropulsion: max thrust, mN
thrust_min_mnNopropulsion: min thrust, mN
battery_min_whNoplatforms: min battery capacity, Wh
buspower_min_wNoplatforms: min orbit-average power generation, W
capacity_min_uNodeployer: min capacity, U (your satellite size)
dipole_min_am2Nomagnetorquer: min dipole moment, A*m2
impulse_min_nsNopropulsion: min total impulse, N*s
paypower_min_wNoplatforms: min orbit-average power available to the payload, W
preload_min_knNoseparation: min preload/holding force, kN
reltime_max_msNoseparation: max release time, ms
capacity_max_whNobatteries: max capacity, Wh
capacity_min_whNobattery: min capacity, Wh
exclude_companyNomanufacturer names to EXCLUDE, comma-separated (for "not from Sodern")
exclude_countryNocountries or a region to EXCLUDE — "China", "Russia, Belarus", "Asia" (for "not Chinese", "non-US")
specimen_min_kgNotest-facilities: mass of your test article the lab must take, kg
pointacc_max_degNoplatforms / pointing mechanisms / ground stations: worst acceptable pointing accuracy, deg (30 arcsec = 0.0083)
panel_power_min_wNosolar panel: min BOL output, W
conductance_min_wkNothermal strap: min conductance, W/K
gyro_range_min_dpsNoIMU: min gyro range, deg/s

TDQS

A4/5.0
Behavior5/5

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

The description adds substantial behavior beyond the read-only/idempotent annotations: exact A/B/C group semantics, limits on returned items, paging via group and offset, datasheet page citations, and the note that group C lists the most often unpublished fields. It also communicates the compact response shape and how truncation behaves.

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?

The description is dense and front-loaded with the main search concept, then covers output semantics and paging efficiently. The full category list is somewhat redundant with the schema enum, but it aids quick scanning and includes useful context for test-facilities.

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?

Given a 90-parameter tool with no output schema, the description is remarkably complete: it defines grouping, truncation rules, paging via group and offset, counts, missing-data reporting, and verdict citations. An agent has enough context to call the tool and interpret its response.

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% across 90 parameters, so the schema already defines each parameter. The description adds general guidance like 'Omit parameters you do not care about' and clarifies one category's special meaning (test-facilities items are companies), but it does not add per-parameter meaning beyond the schema.

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 gives a specific verb and resource: 'Reverse search over a typed spec layer' that returns items grouped as A, B, or C. This makes the tool's core function clearly recognizable. It does not explicitly name sibling tools to differentiate itself, though the A/B/C grouping and category list make the purpose fairly distinctive.

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?

Usage is implied rather than explicit: 'pass a category and engineering requirements' and 'Omit parameters you do not care about' indicate when to use the tool. However, it does not state when not to use it or point to an alternative tool such as selection_guide or find_alternatives, so an agent must infer the decision boundary.

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

search_datasheet_factsA
Read-onlyIdempotent
Inspect

One fact key across a whole category: which products state it in their datasheets and what value — e.g. connector, data_interface, protocol, survival_temperature, tid_tolerance, flight_heritage, trl, export_control, lead_time, price, design_life. One row per product with page and quote. Reports coverage (how many products of the category have a digested datasheet).

ParametersJSON Schema
NameRequiredDescriptionDefault
keyYes
categoryYes
containsNokeep only values containing this text

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and idempotentHint=true, covering the safety profile. The description adds useful behavioral detail: one row per product, including page and quote, plus a coverage count of digested datasheets. This goes beyond annotations by describing the shape and limitations of results.

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?

The description is compact and front-loaded: the main purpose appears first, followed by the output shape and coverage. The long list of example keys is somewhat dense but useful for disambiguating the key parameter. No wasted sentences.

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 the absence of an output schema, the description sufficiently explains return behavior: rows with product, page, quote, and coverage. It does not detail invalid-key handling or pagination, but for a read-only search tool with safety annotations, those omissions are minor and not blocking.

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?

With only 33% schema description coverage, the description partially compensates by explaining key as a fact key and providing concrete examples. It does not elaborate on category beyond the enum, and contains remains only documented in the schema. The added examples help, but some parameter meaning still relies on the schema or inference.

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 that the tool searches one fact key across an entire category and reports which products state it and with which value. This gives a specific resource and scope, and the examples (connector, trl, lead_time) reinforce intent. It does not explicitly compare itself to sibling tools, but the category-wide, keyed scope is distinguishable by itself.

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?

Usage is implied: use this tool when you need a fact key across a whole category, as opposed to a single product or open-ended question. However, it does not name alternatives such as get_datasheet_digest or ask_datasheet, nor does it state when not to use this tool. The guidance is adequate but not explicit.

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

selection_guideA
Read-onlyIdempotent
Inspect

How to choose a product of one category, from the catalogue data only: the decisive parameters with real ranges (middle half and full range), which side is better, how many products publish each, what to ask the vendor, and ready match queries. category = "cubesat" gives the list of subsystems a CubeSat is built from with catalogue counts.

ParametersJSON Schema
NameRequiredDescriptionDefault
categoryYescomponent class (reaction-wheels, star-trackers, platforms, antennas…) or "cubesat"

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds value by detailing what the output contains (parameter ranges, side preference, counts, vendor questions, match queries) and notes the 'catalogue data only' constraint. It does not contradict annotations, and the added context is meaningful 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?

The description is front-loaded with the core purpose ('How to choose a product of one category') and then lists the specific output components. It is a single, somewhat long sentence but each clause delivers necessary information. It could be broken into bullets for readability, but it is not verbose or redundant. This earns a 4.

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 tool with no output schema, the description thoroughly explains what the agent will receive: decisive parameters with ranges, which side is better, counts per parameter, vendor questions, and ready match queries. It also covers the special 'cubesat' case. Nothing essential for calling the tool is missing; the description is complete for its purpose.

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 input schema covers the single parameter fully (100% coverage), so the baseline is 3. The description enriches the parameter semantics by providing a concrete example (category = 'cubesat' returns a list of subsystems) and explaining that category is a component class with examples. This goes beyond the schema's generic description, warranting a 4.

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: choosing a product of a category from catalogue data. It specifies the resource (catalogue) and the action (guide selection), and the content is distinct from sibling tools like match_components or find_suppliers, which focus on different operations. The mention of 'decisive parameters', 'which side is better', and 'ready match queries' gives a precise scope.

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 product selection guidance but does not explicitly name alternatives or conditions when not to use it. It provides clear context (from catalogue data only) but lacks exclusionary guidance or references to sibling tools. This is a 'clear context, no exclusions' scenario, matching a score of 4.

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. 2 tool updates
    • Changedfind_suppliers2 fields changed
      • addedInput schema / properties / exclude_company
        Added value: +{
        +  "description": "manufacturer names to EXCLUDE, comma-separated",
        +  "type": "string"
        +}
      • addedInput schema / properties / exclude_country
        Added value: +{
        +  "description": "countries or a region to EXCLUDE (China, Asia)",
        +  "type": "string"
        +}
    • Changedmatch_components2 fields changed
      • addedInput schema / properties / exclude_company
        Added value: +{
        +  "description": "manufacturer names to EXCLUDE, comma-separated (for \"not from Sodern\")",
        +  "type": "string"
        +}
      • addedInput schema / properties / exclude_country
        Added value: +{
        +  "description": "countries or a region to EXCLUDE — \"China\", \"Russia, Belarus\", \"Asia\" (for \"not Chinese\", \"non-US\")",
        +  "type": "string"
        +}
  2. 2 tool updates
    • Changedget_component_specs1 field changed
      • changedInput schema / properties / category / enum
        Previous value: -[
        -  "reaction-wheels",
        -  "star-trackers",
        -  "obc-computers",
        -  "batteries",
        -  "radios",
        -  "solar-panels",
        -  "propulsion",
        -  "sun-sensors",
        -  "magnetometers",
        -  "magnetorquers",
        -  "imus-gyros",
        -  "gnss-receivers",
        -  "eps",
        -  "deployers",
        -  "thermal",
        -  "antennas",
        -  "sdr-modems",
        -  "cameras",
        -  "structures",
        -  "platforms",
        -  "ground-stations",
        -  "sadm",
        -  "tanks-valves",
        -  "separation-systems",
        -  "pointing-mechanisms"
        -]New value: +[
        +  "reaction-wheels",
        +  "star-trackers",
        +  "obc-computers",
        +  "batteries",
        +  "radios",
        +  "solar-panels",
        +  "propulsion",
        +  "sun-sensors",
        +  "magnetometers",
        +  "magnetorquers",
        +  "imus-gyros",
        +  "gnss-receivers",
        +  "eps",
        +  "deployers",
        +  "thermal",
        +  "antennas",
        +  "sdr-modems",
        +  "cameras",
        +  "structures",
        +  "platforms",
        +  "ground-stations",
        +  "sadm",
        +  "tanks-valves",
        +  "separation-systems",
        +  "pointing-mechanisms",
        +  "test-facilities"
        +]
    • Changedmatch_components6 fields changed
      • changedInput schema / properties / category / enum
        Previous value: -[
        -  "reaction-wheels",
        -  "star-trackers",
        -  "obc-computers",
        -  "batteries",
        -  "radios",
        -  "solar-panels",
        -  "propulsion",
        -  "sun-sensors",
        -  "magnetometers",
        -  "magnetorquers",
        -  "imus-gyros",
        -  "gnss-receivers",
        -  "eps",
        -  "deployers",
        -  "thermal",
        -  "antennas",
        -  "sdr-modems",
        -  "cameras",
        -  "structures",
        -  "platforms",
        -  "ground-stations",
        -  "sadm",
        -  "tanks-valves",
        -  "separation-systems",
        -  "pointing-mechanisms"
        -]New value: +[
        +  "reaction-wheels",
        +  "star-trackers",
        +  "obc-computers",
        +  "batteries",
        +  "radios",
        +  "solar-panels",
        +  "propulsion",
        +  "sun-sensors",
        +  "magnetometers",
        +  "magnetorquers",
        +  "imus-gyros",
        +  "gnss-receivers",
        +  "eps",
        +  "deployers",
        +  "thermal",
        +  "antennas",
        +  "sdr-modems",
        +  "cameras",
        +  "structures",
        +  "platforms",
        +  "ground-stations",
        +  "sadm",
        +  "tanks-valves",
        +  "separation-systems",
        +  "pointing-mechanisms",
        +  "test-facilities"
        +]
      • addedInput schema / properties / emc_min_m
        Added value: +{
        +  "description": "test-facilities: min test-article size the EMC / anechoic chamber takes, m",
        +  "type": "number"
        +}
      • addedInput schema / properties / shaker_min_kn
        Added value: +{
        +  "description": "test-facilities: min shaker force, kN",
        +  "type": "number"
        +}
      • addedInput schema / properties / specimen_min_kg
        Added value: +{
        +  "description": "test-facilities: mass of your test article the lab must take, kg",
        +  "type": "number"
        +}
      • addedInput schema / properties / test
        Added value: +{
        +  "description": "test-facilities: kinds of test the lab must ALL offer, comma-separated — vibration, shock, thermal-vacuum, thermal, emc, radiation, acoustic, magnetic, rf-antenna, mass-properties, outgassing, optical",
        +  "type": "string"
        +}
      • addedInput schema / properties / tvac_min_m
        Added value: +{
        +  "description": "test-facilities: min usable inner size (diameter or smallest side) of the thermal-vacuum chamber, m",
        +  "type": "number"
        +}
  3. 1 tool update
    • Addedfind_alternatives
  4. 4 tool updates
    • Addedfind_suppliers
    • Changedget_component_specs4 fields changed
      • addedInput schema / properties / ids
        Added value: +{
        +  "description": "only these product ids (from match_components)",
        +  "items": {
        +    "type": "integer"
        +  },
        +  "type": "array"
        +}
      • addedInput schema / properties / keys
        Added value: +{
        +  "description": "only these properties (prop_key values from properties), e.g. [\"mass_g\",\"momentum_nms\"]",
        +  "items": {
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
      • addedInput schema / properties / limit
        Added value: +{
        +  "description": "products per call (default 10, max 60)",
        +  "type": "integer"
        +}
      • addedInput schema / properties / offset
        Added value: +{
        +  "description": "continue from paging.next_offset",
        +  "type": "integer"
        +}
    • Changedmatch_components4 fields changed
      • addedInput schema / properties / flight_proven
        Added value: +{
        +  "description": "any category: true = only products with stated flight heritage (missions flown, heritage text or TRL 9)",
        +  "type": "boolean"
        +}
      • addedInput schema / properties / group
        Added value: +{
        +  "description": "page through one group only — use with offset from paging.next",
        +  "enum": [
        +    "A",
        +    "B",
        +    "C"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / properties / limit
        Added value: +{
        +  "description": "items of groups B and C to return (default 10, max 50); group A comes in full up to 25",
        +  "type": "integer"
        +}
      • addedInput schema / properties / offset
        Added value: +{
        +  "description": "start position inside the group (paging.next.offset of the previous answer)",
        +  "type": "integer"
        +}
    • Addedselection_guide
  5. 1 tool update
    • Changedmatch_components3 fields changed
      • addedInput schema / properties / link_band
        Added value: +{
        +  "description": "platforms: radio band of the bus — UHF | VHF | L | S | X | Ku | Ka | optical",
        +  "type": "string"
        +}
      • addedInput schema / properties / orbit
        Added value: +{
        +  "description": "platforms: orbit the bus is designed for — LEO | SSO | VLEO | MEO | GEO | HEO | lunar | deep space (LEO, SSO and VLEO pass each other)",
        +  "type": "string"
        +}
      • changedInput schema / properties / prop_type / description
        Previous value: -"propulsion: electric | chemical | cold-gas | water"New value: +"propulsion: electric | chemical | cold-gas | water; platforms: electric | chemical | any (the bus carries propulsion)"
  6. 5 tool updates
    • Changedask_datasheet1 field changed
      • changedInput schema / properties / category / enum
        Previous value: -[
        -  "reaction-wheels",
        -  "star-trackers",
        -  "obc-computers",
        -  "batteries",
        -  "radios",
        -  "solar-panels",
        -  "propulsion",
        -  "sun-sensors",
        -  "magnetometers",
        -  "magnetorquers",
        -  "imus-gyros",
        -  "gnss-receivers",
        -  "eps",
        -  "deployers",
        -  "thermal",
        -  "antennas",
        -  "sdr-modems",
        -  "cameras",
        -  "structures",
        -  "ground-stations",
        -  "sadm",
        -  "tanks-valves",
        -  "separation-systems",
        -  "pointing-mechanisms"
        -]New value: +[
        +  "reaction-wheels",
        +  "star-trackers",
        +  "obc-computers",
        +  "batteries",
        +  "radios",
        +  "solar-panels",
        +  "propulsion",
        +  "sun-sensors",
        +  "magnetometers",
        +  "magnetorquers",
        +  "imus-gyros",
        +  "gnss-receivers",
        +  "eps",
        +  "deployers",
        +  "thermal",
        +  "antennas",
        +  "sdr-modems",
        +  "cameras",
        +  "structures",
        +  "platforms",
        +  "ground-stations",
        +  "sadm",
        +  "tanks-valves",
        +  "separation-systems",
        +  "pointing-mechanisms"
        +]
    • Changedfind_data_gaps1 field changed
      • changedInput schema / properties / category / enum
        Previous value: -[
        -  "reaction-wheels",
        -  "star-trackers",
        -  "obc-computers",
        -  "batteries",
        -  "radios",
        -  "solar-panels",
        -  "propulsion",
        -  "sun-sensors",
        -  "magnetometers",
        -  "magnetorquers",
        -  "imus-gyros",
        -  "gnss-receivers",
        -  "eps",
        -  "deployers",
        -  "thermal",
        -  "antennas",
        -  "sdr-modems",
        -  "cameras",
        -  "structures",
        -  "ground-stations",
        -  "sadm",
        -  "tanks-valves",
        -  "separation-systems",
        -  "pointing-mechanisms"
        -]New value: +[
        +  "reaction-wheels",
        +  "star-trackers",
        +  "obc-computers",
        +  "batteries",
        +  "radios",
        +  "solar-panels",
        +  "propulsion",
        +  "sun-sensors",
        +  "magnetometers",
        +  "magnetorquers",
        +  "imus-gyros",
        +  "gnss-receivers",
        +  "eps",
        +  "deployers",
        +  "thermal",
        +  "antennas",
        +  "sdr-modems",
        +  "cameras",
        +  "structures",
        +  "platforms",
        +  "ground-stations",
        +  "sadm",
        +  "tanks-valves",
        +  "separation-systems",
        +  "pointing-mechanisms"
        +]
    • Changedget_component_specs1 field changed
      • changedInput schema / properties / category / enum
        Previous value: -[
        -  "reaction-wheels",
        -  "star-trackers",
        -  "obc-computers",
        -  "batteries",
        -  "radios",
        -  "solar-panels",
        -  "propulsion",
        -  "sun-sensors",
        -  "magnetometers",
        -  "magnetorquers",
        -  "imus-gyros",
        -  "gnss-receivers",
        -  "eps",
        -  "deployers",
        -  "thermal",
        -  "antennas",
        -  "sdr-modems",
        -  "cameras",
        -  "structures",
        -  "ground-stations",
        -  "sadm",
        -  "tanks-valves",
        -  "separation-systems",
        -  "pointing-mechanisms"
        -]New value: +[
        +  "reaction-wheels",
        +  "star-trackers",
        +  "obc-computers",
        +  "batteries",
        +  "radios",
        +  "solar-panels",
        +  "propulsion",
        +  "sun-sensors",
        +  "magnetometers",
        +  "magnetorquers",
        +  "imus-gyros",
        +  "gnss-receivers",
        +  "eps",
        +  "deployers",
        +  "thermal",
        +  "antennas",
        +  "sdr-modems",
        +  "cameras",
        +  "structures",
        +  "platforms",
        +  "ground-stations",
        +  "sadm",
        +  "tanks-valves",
        +  "separation-systems",
        +  "pointing-mechanisms"
        +]
    • Changedmatch_components11 fields changed
      • addedInput schema / properties / battery_min_wh
        Added value: +{
        +  "description": "platforms: min battery capacity, Wh",
        +  "type": "number"
        +}
      • addedInput schema / properties / buspower_min_w
        Added value: +{
        +  "description": "platforms: min orbit-average power generation, W",
        +  "type": "number"
        +}
      • changedInput schema / properties / category / enum
        Previous value: -[
        -  "reaction-wheels",
        -  "star-trackers",
        -  "obc-computers",
        -  "batteries",
        -  "radios",
        -  "solar-panels",
        -  "propulsion",
        -  "sun-sensors",
        -  "magnetometers",
        -  "magnetorquers",
        -  "imus-gyros",
        -  "gnss-receivers",
        -  "eps",
        -  "deployers",
        -  "thermal",
        -  "antennas",
        -  "sdr-modems",
        -  "cameras",
        -  "structures",
        -  "ground-stations",
        -  "sadm",
        -  "tanks-valves",
        -  "separation-systems",
        -  "pointing-mechanisms"
        -]New value: +[
        +  "reaction-wheels",
        +  "star-trackers",
        +  "obc-computers",
        +  "batteries",
        +  "radios",
        +  "solar-panels",
        +  "propulsion",
        +  "sun-sensors",
        +  "magnetometers",
        +  "magnetorquers",
        +  "imus-gyros",
        +  "gnss-receivers",
        +  "eps",
        +  "deployers",
        +  "thermal",
        +  "antennas",
        +  "sdr-modems",
        +  "cameras",
        +  "structures",
        +  "platforms",
        +  "ground-stations",
        +  "sadm",
        +  "tanks-valves",
        +  "separation-systems",
        +  "pointing-mechanisms"
        +]
      • addedInput schema / properties / dv_min_ms
        Added value: +{
        +  "description": "platforms / propulsion: min delta-v, m/s",
        +  "type": "number"
        +}
      • changedInput schema / properties / form_u / description
        Previous value: -"structure: CubeSat form factor, U"New value: +"structures / platforms: CubeSat size, U (exact match)"
      • addedInput schema / properties / life_min_y
        Added value: +{
        +  "description": "any category: min design life in orbit, years",
        +  "type": "number"
        +}
      • changedInput schema / properties / paymass_min_g / description
        Previous value: -"deployer: min payload mass capability, g"New value: +"platforms / deployers / separation systems: payload or satellite mass that must fit, grams"
      • addedInput schema / properties / paypower_min_w
        Added value: +{
        +  "description": "platforms: min orbit-average power available to the payload, W",
        +  "type": "number"
        +}
      • addedInput schema / properties / payvol_min_l
        Added value: +{
        +  "description": "platforms: min volume for the payload, litres",
        +  "type": "number"
        +}
      • addedInput schema / properties / payvol_min_u
        Added value: +{
        +  "description": "platforms: min volume for the payload, U",
        +  "type": "number"
        +}
      • addedInput schema / properties / pointacc_max_deg
        Added value: +{
        +  "description": "platforms / pointing mechanisms / ground stations: worst acceptable pointing accuracy, deg (30 arcsec = 0.0083)",
        +  "type": "number"
        +}
    • Changedsearch_datasheet_facts1 field changed
      • changedInput schema / properties / category / enum
        Previous value: -[
        -  "reaction-wheels",
        -  "star-trackers",
        -  "obc-computers",
        -  "batteries",
        -  "radios",
        -  "solar-panels",
        -  "propulsion",
        -  "sun-sensors",
        -  "magnetometers",
        -  "magnetorquers",
        -  "imus-gyros",
        -  "gnss-receivers",
        -  "eps",
        -  "deployers",
        -  "thermal",
        -  "antennas",
        -  "sdr-modems",
        -  "cameras",
        -  "structures",
        -  "ground-stations",
        -  "sadm",
        -  "tanks-valves",
        -  "separation-systems",
        -  "pointing-mechanisms"
        -]New value: +[
        +  "reaction-wheels",
        +  "star-trackers",
        +  "obc-computers",
        +  "batteries",
        +  "radios",
        +  "solar-panels",
        +  "propulsion",
        +  "sun-sensors",
        +  "magnetometers",
        +  "magnetorquers",
        +  "imus-gyros",
        +  "gnss-receivers",
        +  "eps",
        +  "deployers",
        +  "thermal",
        +  "antennas",
        +  "sdr-modems",
        +  "cameras",
        +  "structures",
        +  "platforms",
        +  "ground-stations",
        +  "sadm",
        +  "tanks-valves",
        +  "separation-systems",
        +  "pointing-mechanisms"
        +]
  7. 2 tool updates
    • Addedask_console
    • Changedmatch_components4 fields changed
      • addedInput schema / properties / capacity_max_wh
        Added value: +{
        +  "description": "batteries: max capacity, Wh",
        +  "type": "number"
        +}
      • addedInput schema / properties / fov_min_deg
        Added value: +{
        +  "description": "sun sensors / star trackers / cameras: min field of view, deg",
        +  "type": "number"
        +}
      • addedInput schema / properties / mass_min
        Added value: +{
        +  "description": "min unit mass, grams (rare: \"heavier than\")",
        +  "type": "number"
        +}
      • addedInput schema / properties / thrust_max_mn
        Added value: +{
        +  "description": "propulsion: max thrust, mN",
        +  "type": "number"
        +}
  8. 2 tool updates
    • Changedget_component_specs1 field changed
      • changedInput schema / properties / category / description
        Previous value: -"component class (default reaction-wheels)"New value: +"component class — ONE per call; for several classes call once per class (default reaction-wheels)"
    • Changedmatch_components1 field changed
      • changedInput schema / properties / category / description
        Previous value: -"which component class to search (default reaction-wheels)"New value: +"which component class to search — ONE per call; for several classes call once per class (default reaction-wheels)"
  9. 1 tool update
    • Addedexplain_properties
  10. 1 tool update
    • Addedcheck_fit
  11. 1 tool update
    • Addeddesign_stack
  12. 5 tool updates
    • Addedask_datasheet
    • Addedfind_data_gaps
    • Addedget_datasheet_digest
    • Changedmatch_components2 fields changed
      • addedInput schema / properties / export
        Added value: +{
        +  "description": "required export status: ITAR-free | EAR99 | ITAR",
        +  "type": "string"
        +}
      • addedInput schema / properties / price_max_eur
        Added value: +{
        +  "description": "max indicative price, EUR (few vendors publish it — expect group C)",
        +  "type": "number"
        +}
    • Addedsearch_datasheet_facts
  13. 3 tool updates
    • First observedbuild_budget
    • First observedget_component_specs
    • First observedmatch_components

Related MCP Connectors

Related MCP Servers

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.