TradeDataHub
Server Details
Contractor dataset discovery, masked previews, pricing, and production API plans from $39/month.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP
- URL
TDQS
Scored across 7 tools
Tools mostly have distinct outputs: coverage aggregates, list_* browse dimensions, search_datasets filters purchasable datasets, get_dataset_price retrieves one product, and preview_dataset returns masked availability. However search_datasets overlaps conceptually with list_states/list_cities/list_trades since all involve dataset discovery, which could cause occasional misselection.
All tools use snake_case with a leading verb (get_, list_, preview_, search_) and clear noun objects. get_dataset_price is slightly longer but still follows the same verb_noun convention.
Seven tools are well-scoped for a dataset marketplace discovery API; each tool has a distinct role and no unnecessary endpoints.
The surface covers aggregate coverage, state/city/trade listings, search, pricing, and preview, which is solid for read-only discovery. Minor gaps include no explicit product-type enumeration and no acquisition/purchase flow, though the latter may be intentionally out of scope.
Available Tools
7 toolsget_coverageARead-onlyIdempotentInspect
Get aggregate TradeDataHub marketplace coverage and record counts.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare this as a read-only, idempotent, non-destructive, closed-world operation. The description adds useful context that it returns aggregate coverage and record counts rather than detailed records, but does not describe limitations, freshness, or output shape.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that states the core purpose without any wasted words. It is appropriately sized for a simple no-parameter tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description conveys the high-level return content (aggregate coverage and record counts). For a simple read-only aggregate tool, this is largely sufficient, though additional detail about the aggregation dimensions could improve completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so there are no parameter semantics to document. The schema is empty and fully described, making the baseline score of 4 appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a clear verb ('Get') and names the specific resource ('aggregate TradeDataHub marketplace coverage and record counts'). It distinguishes the tool's aggregate purpose from dataset-specific siblings, but does not explicitly contrast with alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus sibling tools like search_datasets or list_trades. The aggregate coverage focus implies a statistical overview use case, but this is left for the agent to infer.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_dataset_priceBRead-onlyIdempotentInspect
Get the current price and public metadata for one dataset product ID.
| Name | Required | Description | Default |
|---|---|---|---|
| product_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, non-destructive, and closed-world, so the safety profile is fully covered. The description adds only that pricing is 'current' and that metadata is 'public', which is modest added context but no rate limits, auth needs, or return detail.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler; the target object and the returned data are established immediately.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only lookup with no output schema, the description adequately signals what comes back ('current price and public metadata') and that it operates on a single ID. Only the ID format and usage relative to siblings are left unaddressed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
One parameter with 0% schema description coverage, so the description must carry weight. It confirms the input is exactly one dataset product ID, but adds nothing about the required prefix pattern (city-trade|state-trade|state|mega-pack) that the schema encodes, leaving the format to the schema alone.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Get the current price and public metadata for one dataset product ID'), which distinguishes it from list_* and search_datasets siblings. It does not name any sibling explicitly, but the singular 'one dataset product ID' scoping makes the operation unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this versus search_datasets, preview_dataset, or get_coverage. The context (you must already have a product ID) is implied only by the phrasing, with no stated prerequisites or alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_citiesBRead-onlyIdempotentInspect
List city coverage, optionally filtered by state.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| state | No | ||
| offset | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish readOnlyHint, idempotentHint and destructiveHint=false, so the safety profile is covered. The description adds only that results are 'city coverage'; it says nothing about pagination behavior or the return shape despite limit/offset existing.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler. It is efficient, though arguably a touch too spare given the undocumented pagination parameters.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
A simple read-only list tool with no output schema, so the bar is low, but 'coverage' is left undefined and pagination is never addressed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must carry the load, yet it only accounts for the 'state' parameter. 'limit' and 'offset' are entirely unmentioned, leaving half the parameters undocumented in both places.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('List city coverage') and adds the optional state filter. It is reasonably distinguishable from the sibling list_states, though it never names that sibling explicitly the way a 5 would.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'optionally filtered by state' implies when the filter applies, but there is no guidance on when to reach for this versus list_states or get_coverage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_statesARead-onlyIdempotentInspect
List purchasable state datasets with aggregate counts and prices.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and closed-world, so the safety profile is covered. The description adds that results carry aggregate counts and prices, which is real value, but says nothing about ordering, filtering, or pagination behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no wasted words; the verb and scope lead, and the payload detail follows immediately.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no parameters, safety covered by annotations, and no output schema, the description compensates by naming the return contents (counts, prices). Only minor gaps remain — ordering/pagination and the distinction from search_datasets.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes no parameters, so the schema imposes nothing to document; baseline 4 applies. The description correctly implies no input is needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (List) and resource (purchasable state datasets) plus the payload contents (aggregate counts and prices). The 'state datasets' scope naturally distinguishes it from siblings like list_cities and list_trades, though no sibling is named.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied — browse available purchasable states — but there is no explicit when-to-use vs search_datasets or preview_dataset guidance. For a zero-parameter list tool the intent is largely self-evident, so this is adequate but not helpful routing advice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_tradesARead-onlyIdempotentInspect
List contractor trades with aggregate record and dataset counts.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, non-destructive and closed-world, so safety is covered. The description adds that results include aggregate record and dataset counts, which is useful extra context, but does not describe pagination, ordering, or volume.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler. Every clause earns its place by naming the resource and the returned aggregates.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter read-only listing with annotations covering safety and no output schema, the description is nearly sufficient. It could be improved by noting ordering or that the list is unfiltered/complete, but nothing essential to invocation is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Zero parameters, so no parameter semantics are required; baseline 4 applies. The description's note about aggregate counts is output-oriented, not parameter-oriented, but nothing is missing on the input side.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (List) and resource (contractor trades) and adds scope detail (with aggregate record and dataset counts). This distinguishes it from sibling listing tools like list_cities/list_states primarily by resource, though no sibling is named to rule out overlap.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance, no conditions, and no reference to any sibling. The agent must infer that this is the entry point for enumerating trades, but nothing states when this is preferred over search_datasets or get_coverage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
preview_datasetBRead-onlyIdempotentInspect
Return a masked availability preview for a city/trade or state/trade dataset. Business identities and contact values remain hidden.
| Name | Required | Description | Default |
|---|---|---|---|
| product_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive, so the safety profile is covered. The description adds genuinely useful context beyond that: the output is a 'preview' and is 'masked', with business identities and contact values hidden — a privacy trait the annotations do not convey. It stops short of describing what the preview actually contains or any limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the core action and followed immediately by the masking constraint. No filler, nothing to trim.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter, no-output-schema tool this is close to adequate, and the masking note is helpful. But the product_id format is undocumented and the description does not clarify what a 'preview' returns or how it differs from get_coverage, leaving a real gap an agent must guess around.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% for the single required product_id, so the description must carry the burden and does not. It names only two of the four prefixes the pattern allows ('city-trade', 'state-trade') and omits 'state' and 'mega-pack', leaving the agent to reverse-engineer the format from the regex.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (return) and resource (masked availability preview of a dataset), and the scope ('city/trade or state/trade') narrows it meaningfully. It distinguishes itself reasonably from list_* and search_datasets siblings, but never contrasts directly with get_coverage or get_dataset_price, which could also sound like dataset-inspection tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to use this instead of get_coverage, get_dataset_price, or search_datasets. The reader can infer it is a lightweight inspection step before purchase, but the description offers no explicit condition or exclusion.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_datasetsARead-onlyIdempotentInspect
Search purchasable TradeDataHub datasets by state, city, trade, or product type. Returns metadata only, never paid rows.
| Name | Required | Description | Default |
|---|---|---|---|
| city | No | ||
| type | No | ||
| limit | No | ||
| state | No | ||
| trade | No | ||
| offset | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive and closed-world behavior, so the safety profile is covered. The description adds real value beyond them by disclosing the output boundary: metadata only, never paid data rows. It still says nothing about pagination behavior despite limit/offset parameters.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, zero filler, with the core purpose front-loaded and the key output constraint second. Nothing to trim.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and six undocumented parameters, the description should say more about what metadata comes back and how limit/offset page through results. It correctly fences off paid rows but leaves return shape and pagination to guesswork.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must carry the load. It maps state, city, trade and product type to filters (the latter presumably the 'type' enum), but the limit and offset parameters plus the enum's four values (city_trade, state_trade, state, mega_pack) are unexplained, leaving real gaps.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Search purchasable TradeDataHub datasets') plus the filter dimensions it supports. The 'Returns metadata only, never paid rows' clause implicitly separates it from preview_dataset, but no sibling is named, so differentiation is left partly to inference.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied: search catalog entries when you already know a state/city/trade/product filter. There is no explicit when-to-use or when-not-to-use guidance, and no routing to siblings like list_states or preview_dataset for enumerating values or fetching rows.
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.
7 tool updates
- First observed
get_coverage - First observed
get_dataset_price - First observed
list_cities - First observed
list_states - First observed
list_trades - First observed
preview_dataset - First observed
search_datasets
Related MCP Connectors
Verified US licensed-contractor data: 879k+ state-board records, metered per record, free discovery.
Pay-per-call US government data: carrier safety, visa sponsors, contracts, employer risk.
Search licensed US contractors by trade or location, fetch profiles and reviews, and submit leads.
US federal contracting data: open solicitations, buying agencies, contractors, price history.
Related MCP Servers
- AlicenseNot gradedqualityBmaintenanceProvides access to US state and local government contracts and spending data, normalized across jurisdictions, without requiring an API key.18MIT

oro-intel-mcpofficial
AlicenseNot gradedqualityBmaintenanceUK public procurement data for AI agents. Tenders, contracts, buyer and supplier profiles over MCP and REST. 250 free credits.MIT- AlicenseBqualityCmaintenanceQuery 20 structured datasets from AI agents — healthcare providers (9M NPI records), SEC EDGAR filings, PACER federal courts, USPTO patents and trademarks, OFAC sanctions screening, crypto whale wallets, DeFi liquidation signals, Polymarket smart money, economic indicators (FRED/BLS), federal contracts, NOAA weather, and OTC shell risk scoring. Pay per query, no subscriptions751MIT
- AlicenseAqualityDmaintenanceReal-time contractor license verification across 45 US states. Verifies license status, expiration, and disciplinary history directly against state licensing board portals.461MIT