DataBazaar MCP Server — AI agent access to the data marketplace. Search, preview, purchase, and sell datasets via the Model Context Protocol.
DataBazaar MCP demonstrates solid tool design with 14 well-named, verb-prefixed tools covering a coherent marketplace domain. All tools have descriptions (avg 180 chars, within 10-1024 baseline) and explicit Zod schemas converted to JSON Schema. Tool annotations (readOnlyHint/destructiveHint) are properly implemented via buildAnnotations(). However, several tools lack output schema documentation in code, parameter descriptions are sometimes generic, and error handling guidance is minimal. The server correctly uses tool-helpers.ts to enforce consistent metadata, but does not document what fields agents should expect from responses.
Authorize a one-time purchase of a dataset on the DataBazaar marketplace. Free datasets ($0) require no payment method and are immediately accessible. Paid datasets are charged via Stripe Checkout against the operator's saved card or a payment_method_id. DataBazaar is a marketplace; funds move through Stripe Connect to the seller and the platform fee is 3%. Call preview_sample first to verify the dataset matches the operator's need.
Check whether a known public data source (e.g. "noaa", "data.gov", "census.gov") is already on DataBazaar. Returns covered=true and matching datasets when the source is available; otherwise log_data_gap can record demand.
Send a message to a dataset seller to ask questions before purchasing — about freshness, schema details, geographic coverage, or update frequency. Messaging is free and does not require a prior purchase. Sellers typically respond within 24 hours.
Given a free-text research or analysis task, return DataBazaar datasets ranked by relevance. More targeted than search_datasets — each result includes a why_relevant explanation tailored to the task description.
Get full metadata for a specific dataset — schema, column counts, quality score, price anchoring, and a forwardable purchase pitch. Includes a checkout_url for one-click human purchase and a human_pitch field for operator messaging.
Output schemas not documented in code. Tools return complex objects (e.g., search_datasets returns 'ranked listings with prices, quality scores, checkout URLs') but no JSON Schema or TypeScript interface visible for response structure. LLMs cannot plan downstream tool calls without knowing what fields to extract.
Error handling lacks recovery guidance. No evidence in source that tools return actionable error messages (e.g., 'Dataset not found. Try search_datasets() with a different query'). Agents will not know what to do on failure.
Destructive operations (buy_now, log_data_gap, share_finding, suggest_listing) lack confirmation or dry-run support. Agents can trigger irreversible purchases or publish findings without a safety gate. No evidence of confirmation_before_execute pattern.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 63 | 2026-07-28+ | v2 |
Get a signed, time-limited (1 hour) download URL for a dataset the agent already has access to. For free ($0) datasets, pass dataset_id; for paid datasets, pass purchase_id from a completed buy_now. URLs expire after 1 hour — call again for a fresh one.
Get a cost-benefit receipt for a purchase: price paid, estimated scraping hours saved, and equivalent human-labor cost. The human_summary field is a one-liner suitable for forwarding to the operator (e.g. "$9 spent, ~6h scraping saved").
Given a dataset ID, return similar datasets in the same category ranked by tag overlap. Useful for cross-referencing data, finding alternative sources, or enriching an analysis.
List datasets purchased by this agent with status, prices, and download availability. Useful for spending audits, deduplicating before buy_now, or building a purchase summary for the operator.
Record an unmet data need on DataBazaar. When a suggested price is provided, this also creates a bounty listing visible to sellers. Returns a message_for_user string suitable for forwarding to the operator, including the bounty URL.
Preview sample rows of a dataset to verify it contains the expected columns, format, and quality. Returns a signed download URL for ~50 rows plus the schema. Pass an optional question to get a synthesized answer from the sample (e.g. "average price in 2024") — no purchase required.
Search the DataBazaar marketplace for datasets matching a natural-language query, with optional filters for category, price, quality score, and pricing type. Returns ranked listings with prices, quality scores, and checkout URLs. When results are empty, log_data_gap can post a bounty to signal demand to sellers.
Create a shareable finding record derived from analysis of a DataBazaar dataset. Returns a share_url the operator can send to their team. Public findings also help others discover the underlying dataset.
Propose a dataset (e.g. produced as a research byproduct) for listing on DataBazaar. Creates a draft pending approval and returns an approval URL the operator can click to publish. The message_for_user field includes the approval link and suggested price.
Parameter descriptions sometimes generic or incomplete. E.g., check_coverage 'source_url' description says 'Full URL of the data source' but does not explain what 'normalized' means or what formats are accepted. Agents cannot infer valid input.
No pagination guidance in tool descriptions. search_datasets accepts 'limit' (max 50) but does not document how to fetch next page (offset, cursor, or none). Large result sets risk context window exhaustion.