Skip to main content
Glama

databazaar-mcp

MCP server for DataBazaar — the data marketplace where AI agents discover, preview, purchase, and sell datasets.

DataBazaar is a marketplace, not a payment network. All paid transactions are processed by Stripe (Stripe Connect for seller payouts; Stripe Billing for subscriptions). Funds move from the buyer's card to a registered seller's Stripe-Connected bank account, with DataBazaar collecting a 3% platform fee. No cryptocurrency, no peer-to-peer asset transfers, no money-transmission — the legal structure is the same as eBay or Etsy: an online marketplace where the marketplace operator does not hold or move user funds outside the regulated payments processor.

Quick Start (Claude.ai — remote connector)

For public discovery, connect to https://api.databazaar.io/mcp/public using Streamable HTTP with no authentication. It exposes search_datasets, get_dataset, preview_sample. Full downloads (including free data), purchases, private history, and writes require the authenticated endpoint.

Run a public search → sample preview example with Python 3 (no packages):

curl -fsS --max-time 20 https://databazaar.io/examples/first-retrieval.py -o first-retrieval.py
python3 first-retrieval.py --mcp

Expected: success: true, scope: sample_only, sample rows, and elapsed seconds. This does not measure a full retrieval. Without --mcp, the same example uses REST. See the guide.

For full datasets (even free ones) and account operations, DataBazaar runs an authenticated remote MCP server at https://api.databazaar.io/mcp. Claude.ai discovers OAuth via the standard RFC 8414 metadata document and self-registers as a client via RFC 7591 Dynamic Client Registration — no manual setup beyond clicking "Authorize" in the popup.

After signing up and authorizing the agent, call get_download_url with dataset_id. For the Python full-data check, set DATABAZAAR_API_KEY in the environment and run python3 first-retrieval.py --download (add --mcp for the authenticated transport). It validates all 11 rows and times retrieval. Account setup is required first and sample timings must not be reported as end-to-end onboarding success.

Related MCP server: listbee-mcp

Quick Start (stdio — Claude Desktop / Cursor)

npx databazaar-mcp

Search and samples work without credentials. To download full data, run npx -y databazaar-mcp auth login or use an account API key from databazaar.io/operator/keys.

Quick Start (Docker — stdio)

For a local stdio container, build from this repository and run with stdin open:

docker build -t databazaar-mcp .
docker run --rm -i databazaar-mcp

No credentials are needed to start the server, inspect its tools, search, or preview samples. For account operations, pass your own key at runtime with docker run --rm -i -e DATABAZAAR_API_KEY databazaar-mcp after setting the environment variable locally. Do not put credentials in the Dockerfile.

The container runs the stdio entry point. CI checks initialization and tool/resource discovery with network access disabled; it does not perform marketplace actions.

Quick Start (Hosted HTTP — long-lived service)

npx --package databazaar-mcp databazaar-mcp-http
# Listens on port 8788 by default
# MCP endpoint: POST http://localhost:8788/mcp
# Health check: GET  http://localhost:8788/health

Configuration

Set these environment variables before running:

Variable

Required

Description

DATABAZAAR_API_KEY

For full downloads/account tools

Your API key (dbz_live_...)

DATABAZAAR_API_URL

No

Override API endpoint (default: https://api.databazaar.io)

DATABAZAAR_BUDGET_LIMIT_USD

No

Budget hint for the client; configure enforced purchase limits on your account API key

DATABAZAAR_MCP_PORT

No

HTTP transport port (default: 8788)

Claude Desktop / Cursor Setup (stdio)

Add to your MCP config (~/Library/Application Support/Claude/claude_desktop_config.json on macOS):

{
  "mcpServers": {
    "databazaar": {
      "command": "npx",
      "args": ["-y", "databazaar-mcp"]
    }
  }
}

Hosted HTTP Transport Setup

Run databazaar-mcp-http as a long-lived process. Each HTTP caller supplies its own Bearer account credential; the server never lends an environment credential to callers. For managed account authorization, use https://api.databazaar.io/mcp.

# Start the HTTP MCP server
DATABAZAAR_MCP_PORT=8788 npx --package databazaar-mcp databazaar-mcp-http

# Configure your agent framework to connect via HTTP:
# URL: http://your-host:8788/mcp
# Method: POST (Streamable HTTP transport per MCP spec)

Available Tools

Search & Discovery

  • find_data_for_task — Task-based dataset recommendation with why_relevant explanations

  • search_datasets — Keyword + faceted search across the marketplace

  • check_coverage — Look up whether a known public source is already listed

  • get_dataset — Full metadata including checkout_url and human_pitch

  • preview_sample — Sample rows + optional synthesized answer (no purchase required)

  • get_related_datasets — Similar datasets by tag overlap in the same category

  • log_data_gap — Record an unmet data need; optionally auto-creates a bounty

Purchase

  • buy_now — Purchase a dataset immediately (free datasets need no payment method)

After Purchase

  • get_download_url — Get a signed 1-hour download URL (free datasets: no purchase needed)

  • list_purchases — List all purchases for this API key

  • get_purchase_receipt — Cost-benefit receipt showing time saved vs. money spent; forward human_summary to your operator

  • share_finding — Share an analysis finding derived from a purchased dataset; returns a shareable URL

Listing & Selling

  • suggest_listing — Propose a dataset you produced for listing on DataBazaar; returns a one-click approval URL

  • create_listing — Create a new draft dataset listing

  • get_upload_urls — Get signed URLs to upload sample and full dataset files

  • confirm_upload — Confirm file upload and trigger sample generation

  • get_listing_status — Check listing status (poll for sample generation)

  • update_listing — Update metadata on a draft or active listing

  • set_schema — Set the data schema describing columns/fields

  • publish_listing — Publish a draft listing to the marketplace

Communication

  • contact_seller — Send a message to a dataset seller before committing to a purchase

Tool safety classification

Every tool below carries an MCP annotations block declaring readOnlyHint or destructiveHint so connector hosts can surface the correct user prompt. Tools that move money are marked destructiveHint and require interactive operator consent on first use.

Category

Read-only

Destructive

Discovery

search_datasets, get_dataset, preview_sample, find_data_for_task, check_coverage, get_related_datasets

log_data_gap

Purchase

—

buy_now

Delivery

get_download_url, list_purchases, get_purchase_receipt

share_finding, suggest_listing

Selling

get_listing_status

create_listing, get_upload_urls, confirm_upload, update_listing, set_schema, publish_listing

Messaging

—

contact_seller

Query

query_dataset

—

Payments and money handling

buy_now is the only tool that initiates a charge. It:

  1. Authorize a Stripe charge against an operator-registered card or saved payment method — no funds are held by DataBazaar at any point.

  2. Settle through Stripe Connect to a seller's verified bank account, with DataBazaar deducting a 3% platform fee from the gross sale.

  3. Are subject to a 24-hour escrow window before payout (a Stripe-held timer, not a DataBazaar-held custody account) so disputes can be raised.

  4. Cannot transfer cryptocurrency, securities, gift cards, or any other asset class. The marketplace lists only data files; the payments rail is regulated card payments via Stripe.

This MCP server therefore does not fall under the Connectors Directory's "money/cryptocurrency/financial asset transfers" disqualifier — it is a marketplace integration, structurally identical to a Shopify/eBay/Etsy connector that lets an agent place an order on a third-party storefront.

Privacy and data handling

  • Privacy policy: databazaar.io/legal/privacy

  • Terms of service: databazaar.io/legal/terms

  • The MCP server stores OAuth tokens locally at ~/.config/databazaar/token.json (mode 0600). No conversation contents, prompts, or chat history are ever sent to the DataBazaar API — only the explicit tool arguments shown in each tool's inputSchema.

  • DataBazaar collects only operational data needed for the marketplace (account email, purchases, listings, messages between buyer and seller).

  • Stripe receives card details directly from the buyer's browser via Stripe Elements / Checkout — DataBazaar never touches PAN, CVC, or expiration.

Support

DataBazaar's mail domain is databazaar.com (Google Workspace). The legal pages above are the source of truth for current contact addresses.

Resources

  • databazaar://categories — All available dataset categories

  • databazaar://recipes — Worked example flows: find→buy→download, post bounty when missing, check coverage before scraping, etc.

  • databazaar://onboarding — Plain-English explanation of DataBazaar for your operator; includes a paste-ready pitch paragraph

  • databazaar://agent/identity — Your agent identity and config

  • databazaar://agent/spending — Spending summary and purchase history

Example Workflows

Buying:

1. find_data_for_task("train rent prediction model for SF 2024")
2. preview_sample(dataset_id, question="average rent by neighborhood")
3. buy_now(dataset_id)
4. get_download_url(purchase_id)
5. get_purchase_receipt(purchase_id)  → forward human_summary to operator

Selling:

1. create_listing(title, description, category, pricing_type)
2. get_upload_urls(dataset_id)
3. (PUT file bytes to the returned signed URL)
4. confirm_upload(dataset_id, full_data_path)
5. get_listing_status(dataset_id)  → poll until sample ready
6. publish_listing(dataset_id, tos_confirmed=true, listing_terms_version="2026-10-09")

Releasing a new version

The package is published to two places: npm (the artifact) and the official MCP Registry at registry.modelcontextprotocol.io (the metadata entry). Both need to be updated for a release to be fully propagated.

Prerequisites (one-time):

  • npm login as shagarwal (the package owner)

  • 2FA is enabled; have an authenticator handy for --otp

Release loop:

# 1. Bump the version in BOTH files (keep them in sync)
#    - packages/mcp/package.json       : "version"
#    - packages/mcp/server.json        : "version" AND "packages[0].version"

# 2. Build and publish to npm
cd packages/mcp
pnpm build
npm publish --access public --otp=XXXXXX

# 3. Verify npm has the new version
curl -s https://registry.npmjs.org/databazaar-mcp | \
  python3 -c "import json,sys; d=json.load(sys.stdin); print('latest:', d['dist-tags']['latest'])"

# 4. Commit + push the version bumps
git add packages/mcp/package.json packages/mcp/server.json
git commit -m "chore(mcp): release x.y.z"
git push origin main

# 5. Update the MCP Registry entry
#    Trigger the "Publish to MCP Registry" GitHub Actions workflow:
gh workflow run "Publish to MCP Registry" --ref main
gh run watch   # optional: follow the run

# 6. Verify the registry reflects the new version
curl -s "https://registry.modelcontextprotocol.io/v0/servers?search=databazaar" | \
  python3 -m json.tool | head -30

The workflow (.github/workflows/publish-mcp-registry.yml) uses GitHub Actions OIDC for auth — no secrets required, and it sidesteps the mcp-publisher device- flow rate limits you hit running it locally. See that file if the auth or publish step ever needs adjusting.

Invariants to preserve on every release:

  • package.json must keep mcpName: "io.github.shagarwal/databazaar" — this is how the registry validates npm ownership. Remove it and the registry publish will fail.

  • server.json description is capped at 100 characters — the registry rejects longer. Long copy belongs in this README, llms.txt, and the homepage; server.json is the short blurb only.

  • bin values in package.json must NOT have a ./ prefix — npm 11 silently strips the prefix and then rejects the result, removing the bin entries from the published tarball. Use dist/index.js, not ./dist/index.js.

Tested workflows and integrations

min_quality_score uses 0–100 in this release. It measures sample structure, not customer ratings or factual accuracy. See the published rubric.

Full downloads always require a signed-in account, including free data. Public discovery is available through the local server without a token or the hosted /mcp/public endpoint.

Source and issues: https://github.com/shagarwal/databazaar-mcp. Marketplace feedback: https://databazaar.io/feedback.

Listing source and reuse terms

Before publishing, provide documentation.source_name through create_listing or update_listing. Name the original source or creator; a source URL is optional. Coverage dates may use documentation.coverage_status: "not_applicable". documentation.update_frequency optionally describes whether this is a fixed snapshot or receives updates, and whether later versions are included.

license and documentation.license_url are optional custom reuse terms. If both are blank, accepting the listing terms grants commercial use, modification, redistribution, and model training without attribution under DataBazaar Open Use. Access charges still apply. Only confirm tos_confirmed: true and listing_terms_version: "2026-10-09" with the supplier's authorization. The same acceptance is required when changing live reuse terms. Older listings without recorded acceptance remain unspecified, not automatically open.

Build and test this public client

npm install
npm test
npm run build
node dist/index.js

This repository mirrors the released MCP client. The marketplace API and web app are developed separately. Search and samples work without signing in; account credentials are required for full retrieval and account operations. The published npm package is the supported installation route: npx -y databazaar-mcp.

The registry record advertises both authenticated /mcp and keyless /mcp/public transports. The public endpoint exposes search, metadata, and samples; full data still requires account authentication. Historical registry versions may reference the private development repository; use this public repository for the client source and issue tracker.

Available Tools

27 tools
accept_bounty_submissionA
Destructive
Inspect

Explicitly authorize the displayed reward for ONE submission. Multiple winners are allowed unless an optional cap is configured. Seller setup or payment authentication may be required; accepted is true only after funding succeeds. Resume the same submission to continue an existing purchase; never assume selection means payment completed.

ParametersJSON Schema
NameRequiredDescriptionDefault
versionYes
amount_centsYes
submission_idYes

TDQS

A3.7/5.0
Behavior4/5

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

Annotations supply only destructiveHint=true and a title, so the description carries most of the burden and does it well: it discloses that seller setup or payment authentication may be required, that 'accepted is true only after funding succeeds', and that multiple winners are allowed unless a cap is configured. It stops short of stating irreversibility or refund behavior for what is effectively a monetary commitment.

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?

Four compact sentences, front-loaded with the authorization action and each sentence carrying distinct information (scope, cap behavior, auth/funding, resume semantics). No filler, though the density makes it read as a checklist rather than prose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description usefully surfaces the key return signal ('accepted is true only after funding succeeds') and the funding/auth prerequisites for a mutation tool. The unexplained version parameter and the absence of any reversibility statement leave minor gaps.

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 0% with three required parameters, so the description must compensate. 'The displayed reward' implies amount_cents must match the shown amount and 'the same submission' clarifies submission_id reuse on resume, but the version parameter (presumably a concurrency/optimistic-lock token) is never addressed in either the schema or the description.

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 and resource: 'Explicitly authorize the displayed reward for ONE submission', and clarifies single-submission scope versus the multi-winner cap behavior. It is distinguishable from read-oriented siblings (get_bounty_submission, preview_bounty_submission, review_bounty_submission), though it never names an alternative explicitly.

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?

Offers real context ('Resume the same submission to continue an existing purchase') and a caution ('never assume selection means payment completed'), but gives no routing guidance against siblings such as review_bounty_submission or preview_bounty_submission, and no explicit when-not-to-use condition.

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

buy_nowA
Destructive
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
dataset_idYesThe dataset ID to purchase
payment_method_idNoStripe payment method ID (pm_...). Not needed for free ($0) datasets. Optional for paid datasets if a default card is saved for this operator.

TDQS

A4.1/5.0
Behavior4/5

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

Annotations supply destructiveHint=true and a title, so the safety profile is partly covered; the description goes further by disclosing the payment rail (Stripe Checkout), fund flow (Stripe Connect) and the 3% platform fee, plus that free datasets are instantly accessible. Irreversibility of a purchase is only implied by destructiveHint rather than stated, and refund/dispute behavior is absent, so it is not quite a 5.

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-loaded with the core action and front-loads the free-vs-paid split immediately after; the prerequisite call comes last, which is the right ordering for an agent. The Stripe Connect / 3% fee sentence is mildly tangential but defensible as financial disclosure.

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?

Covers the decision inputs an agent needs (cost model, payment requirement, prerequisite verification) for a two-parameter mutation tool, and no output schema means returns need not be explained. It could say more about what the operator gets back on success (access vs. download URL vs. receipt), which is the remaining small gap.

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

Parameters3/5

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

Schema description coverage is 100%, so both parameters are already documented; the description's note that payment_method_id is unneeded for free datasets and optional when a default card exists largely restates the schema. Baseline 3 is appropriate since it adds no new syntax or format detail.

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 and resource ('Authorize a one-time purchase of a dataset') with clear scope, and contrasts itself against the read-only sibling preview_sample. An agent can distinguish it from get_dataset, query_dataset, or list_purchases without opening any 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?

Gives concrete conditional guidance: free ($0) datasets need no payment method, paid datasets charge via Stripe Checkout using a saved card or payment_method_id, and it names preview_sample as a pre-step. It does not state outright when *not* to buy (e.g. already-purchased datasets, or using get_purchase_receipt instead), so it stops short of the top band.

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

check_coverageA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
source_urlNoFull URL of the data source (e.g. "https://noaa.gov") — will be normalized
source_nameNoShort name of the data source (e.g. "noaa", "census", "data.gov")

TDQS

A4/5.0
Behavior4/5

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

Annotations already establish readOnlyHint=true, and the description goes beyond them by disclosing the response shape ('Returns covered=true and matching datasets') despite there being no output schema. It adds no auth, rate-limit, or normalization caveats, but the returned-context disclosure is genuine added value.

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?

Two sentences, both front-loaded: the check is stated first, the fallback path second. No filler, no repetition of the schema, and the alternative tool is named in the same breath as the failure condition.

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 lookup with no output schema, the description covers purpose, return shape, and the follow-up action, which is close to complete. The one gap is that both parameters are optional and the description never says whether one, either, or both are needed to perform the check.

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 both parameters are already documented, and the description's examples ('noaa', 'data.gov', 'census.gov') merely echo the schema's own examples. The description does not explain the relationship between source_url and source_name or whether one of them suffices, adding nothing beyond the structured fields.

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+resource ('check whether a known public data source ... is already on DataBazaar') and names the platform, so the agent knows exactly what question this tool answers. It does not, however, distinguish itself from other discovery siblings such as find_data_for_task or search_datasets, leaving some ambiguity about which lookup to prefer.

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 routes the negative case to an alternative tool ('otherwise log_data_gap can record demand'), which is real when-to-use guidance. It gives no guidance on when to prefer this over search_datasets/find_data_for_task, so the routing is only half complete.

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

confirm_uploadA
Destructive
Inspect

Confirm a file has been uploaded to its signed URL and trigger automatic sample generation (drafts only). Pass the full_data_path returned by get_upload_urls and the file format — use format "zip" for archives so the preview is generated from the archive contents. Poll get_listing_status until the sample is ready before publishing.

ParametersJSON Schema
NameRequiredDescriptionDefault
formatNoFormat of the uploaded file. Strongly recommended — the upload path has no extension.
dataset_idYesThe draft dataset ID
full_data_pathYesThe storage path from get_upload_urls (e.g. "{ownerId}/{datasetId}/full")

TDQS

A4.6/5.0
Behavior4/5

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

Beyond the destructiveHint annotation, the description discloses the 'drafts only' scope, the automatic sample-generation side effect, and the required follow-up polling. It does not explain what the destructive hint refers to (e.g. overwriting an existing upload), which is the one remaining behavioral gap.

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?

Three dense sentences, front-loaded with the action, then parameter guidance, then the next step. No filler; each clause carries operational information.

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?

No output schema exists, and the description compensates by describing the side effect and the polling step needed to know when the sample is ready. It omits failure/error behavior, but for a 3-param confirmation tool this is close to complete.

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 parameters are already documented; the description adds real value by tying full_data_path to get_upload_urls and explaining the non-obvious format choice ('use format "zip" for archives so the preview is generated from the archive contents'), which the enum alone cannot convey.

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 ('Confirm a file has been uploaded to its signed URL') and adds the side effect ('trigger automatic sample generation (drafts only)'). An agent can distinguish it from get_upload_urls and get_listing_status, which it names as the surrounding steps.

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

Usage Guidelines5/5

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

Gives explicit workflow routing: call after get_upload_urls, pass full_data_path, then 'Poll get_listing_status until the sample is ready before publishing.' The 'drafts only' scope plus the zip special-case cover when and how to use it.

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

contact_sellerA
Destructive
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
messageYesThe question for the seller — be specific about what you need to know
subjectYesBrief subject line, e.g. "Question about SF Rent 2024 dataset"
seller_idYesThe seller user ID — found in the seller field of any dataset response
dataset_idNoThe dataset being asked about — helps the seller answer in context

TDQS

A4.2/5.0
Behavior4/5

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

Beyond the sparse annotation (destructiveHint=true), the description adds meaningful operating facts: messaging is free, no prior purchase is needed, and sellers typically respond within 24 hours. One gap: it never addresses why a mere message would carry destructiveHint=true or what side effects (e.g., creating a conversation thread) occur.

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?

Three tightly written sentences, front-loaded with the action and followed by the two most decision-relevant facts (cost/prerequisites and expected latency). No sentence is 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?

With no output schema, the description covers what an agent needs to decide and call: purpose, cost, prerequisite waiver, question scope, and turnaround time. It is slightly thin on the outcome of a successful send and does not reconcile the destructiveHint annotation.

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%, so all four parameters (including the optional dataset_id) are already documented in the schema. The description's mention of freshness/schema/coverage/update-frequency only loosely maps to message content and adds no syntax or format detail beyond the schema, so the baseline of 3 applies.

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 + resource ('Send a message to a dataset seller') and enumerates the concrete question types it supports. It is unmistakably distinct from siblings like get_dataset, buy_now, or query_dataset, so an agent can route to it without inspecting the 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?

It states the operative context clearly: use this to ask questions before purchasing, and note that no prior purchase is required. However, it never names an alternative tool or an explicit when-not-to-use condition, so usage is well-contextualized but not fully disambiguated.

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

create_listingA
Destructive
Inspect

Create a new draft dataset listing on DataBazaar and return its dataset_id. Set price (USD) or price_cents for a paid listing — omitting both creates a FREE listing. After creating, use get_upload_urls to upload files, then publish_listing to go live.

ParametersJSON Schema
NameRequiredDescriptionDefault
tagsNoKeyword tags for discoverability
priceNoPrice in USD (e.g. 19). Mutually exclusive with price_cents.
titleYesDataset title
schemaNoData schema describing columns/fields. Set { "format": "zip" } when uploading an archive.
licenseNoOptional custom reuse terms/license name. If this and license_url are blank, accepted listing terms grant Open Use.
categoryNoCategory: geographic, pricing, sensor, images, text, financial, scientific, social, retail, other
descriptionYesDataset description
price_centsNoPrice in integer cents (e.g. 1900 = $19.00). Mutually exclusive with price.
pricing_typeNoPricing model. Inferred as buy_it_now when a positive price is given; defaults to free only when no price is supplied.
documentationNo
auction_configNoRequired for auction or hybrid pricing

TDQS

A4.4/5.0
Behavior4/5

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

Annotations only declare destructiveHint=true and a title, so the description does the real work: it discloses that the result is an unpublished draft, the dataset_id return value, and the follow-up publish step needed to go live. It does not cover auth/permission requirements or that draft fields can be amended later, keeping it short of a 5.

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?

Three tight sentences with zero filler; the core action and return value are front-loaded, and the pricing rule and lifecycle follow-ups are each stated once.

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 an 11-parameter tool with nested objects and no output schema, the description covers the essential what, the return value, the pricing decision, and the lifecycle chain. It omits guidance on auction_config/hybrid pricing and documentation requirements (e.g. source_name before publishing), which a caller would need for non-default listing types.

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 91%, so the baseline is 3, but the description adds genuine cross-parameter meaning: price vs price_cents mutual exclusivity and the default-to-free behavior when both are omitted. It says nothing about auction_config or schema/format options, which remain schema-only.

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?

Specific verb+resource+scope: 'Create a new draft dataset listing on DataBazaar' and it names the return value (dataset_id). The word 'draft' immediately distinguishes it from publish_listing and update_listing, so an agent can place it in the lifecycle 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?

Explicit sequencing guidance: create, then get_upload_urls to upload files, then publish_listing to go live, plus the rule that omitting both price fields creates a free listing. It lacks an explicit 'when not to use this' exclusion (e.g. vs suggest_listing or update_listing), but the workflow context is clear.

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

find_data_for_taskA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
budget_usdNoMaximum budget in USD — omit to include all price ranges
task_descriptionYesDescribe the goal — e.g. "train a model to predict apartment rent in SF using 2024 listings"

TDQS

A4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, so the safe-read profile is covered. The description adds useful output context (each result carries a why_relevant explanation tuned to the task), but says nothing about ranking method, result count, pagination, or budget interplay beyond the schema.

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?

Two tight sentences with no filler. The core behavior comes first and the differentiator against search_datasets follows immediately, so it is well front-loaded.

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 partially compensates by noting the why_relevant field in results. For a simple two-parameter read-only lookup with full schema coverage, that is nearly enough, though ranking volume or result limits remain unspecified.

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 both parameters (task_description, budget_usd) are already documented with examples. The description only reinforces that the input is free-text; it adds no syntax or semantic detail beyond the schema, matching the 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?

States a specific verb and resource ('return DataBazaar datasets ranked by relevance') and explicitly contrasts itself with the sibling search_datasets. An agent can tell from the description alone that this is task-driven ranked recommendation rather than keyword search.

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 trigger condition is clear: use when you have a free-text research or analysis task, and it is positioned as 'more targeted than search_datasets.' It names the alternative but does not spell out an explicit either/or rule or exclusions, so it stops short of a 5.

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

get_bounty_submissionA
Read-only
Inspect

Read an authorized submission, its review version, requirements, feedback, and settlement timeline. Does not expose full unpaid files.

ParametersJSON Schema
NameRequiredDescriptionDefault
submission_idYes

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, so safety is covered. The description adds a meaningful behavioral constraint beyond that: 'Does not expose full unpaid files,' which discloses an access/visibility limitation the agent would not otherwise know. It stops short of stating what 'authorized' concretely requires.

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?

Two tight sentences, zero filler. The core purpose and the enumeration of contents are front-loaded, and the access limitation is a compact second sentence that earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description pre-emptively lists the return content (review version, requirements, feedback, settlement timeline), which is exactly what an agent needs. It is nearly complete; only the concrete meaning of 'authorized' remains unspecified.

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 0% for the single submission_id parameter, so the description must carry the load. It implies the id identifies a submission but adds no format, sourcing, or validity detail. The parameter is self-explanatory (uuid), so a baseline 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?

States a specific verb ('Read') and resource ('submission') and enumerates the payload: review version, requirements, feedback, settlement timeline. This is far richer than a name restatement, though it never names sibling tools like preview_bounty_submission or review_bounty_submission to differentiate scope.

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 word 'authorized' implies an access prerequisite, giving implied usage context. However, there is no explicit when-to-use versus preview_bounty_submission, list_bounty_reviews, or review_bounty_submission, so the agent must infer the routing.

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

get_datasetA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
dataset_idYesThe dataset ID to retrieve

TDQS

A3.8/5.0
Behavior3/5

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

Annotations declare readOnlyHint=true, so safety is covered. The description adds useful behavioral context: checkout_url enables one-click purchase and human_pitch aids operator messaging, which is not obvious from the name alone. However, it doesn't state permissions needed, whether the dataset must exist, or error behavior.

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

Conciseness5/5

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

Two concise sentences. The first enumerates the returned metadata fields, front-loading the primary value. The second adds distinguishing attributes (checkout_url, human_pitch). No waste.

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?

No output schema exists, so the description carries the burden of explaining returns and does so thoroughly (schema, counts, score, pricing, pitch, URL). An agent has enough to call correctly. Slight gap remains on when-not-to-use vs siblings, but the core is complete.

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% with only one parameter (dataset_id) fully described. The description adds no syntax or format hints beyond what the schema provides. Baseline 3 is appropriate when the schema does the heavy lifting.

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 (Get) and resource (dataset metadata) and enumerates exactly what the response contains: schema, column counts, quality score, price anchoring, checkout_url, human_pitch. An agent knows precisely what this returns, distinguishing it from preview_sample (data rows) and search_datasets (discovery).

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 description implies usage by mentioning a dataset_id, but doesn't state when to use this tool vs preview_sample or search_datasets. No exclusions or alternative selection guidance is provided. A reasonable agent can infer it's a detail-fetch, but the description doesn't make it explicit.

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

get_download_urlA
Read-only
Inspect

Get a signed, time-limited (1 hour) download URL for a dataset the agent already has access to. All full downloads require account authentication. 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. When retrieval_url is provided, prefer it for observed delivery and include the same account bearer token only on the DataBazaar API host. A manifest requires choosing files; one file need not be the whole dataset.

ParametersJSON Schema
NameRequiredDescriptionDefault
dataset_idNoDataset ID — use this for free ($0) datasets. Account authentication required; no purchase needed.
purchase_idNoPurchase ID from buy_now — use this for paid datasets.

TDQS

A4.5/5.0
Behavior5/5

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

Annotations only carry readOnlyHint=true, but the description adds substantial behavior beyond them: the URL is signed and expires in one hour, all full downloads require account authentication, and the bearer token should only be sent on the DataBazaar API host even when a retrieval_url is provided. These are exactly the constraints an agent needs to act safely.

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-loaded with the core purpose and expiry, then conditions. The 'When retrieval_url is provided...' sentence is dense and references an entity that is not a parameter or sibling, adding mild ambiguity rather than clean guidance.

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 two-parameter read-only tool with no output schema, the description covers auth, expiry, routing, and manifest expectations well. It stops short of describing what the call returns (e.g. a URL string) and leaves the retrieval_url sentence contextually unexplained.

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

Parameters3/5

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

Schema description coverage is 100% and the schema already states the free-vs-paid routing for both parameters, so the description largely repeats structured data. The conditional logic adds a little reinforcement but no new syntax or edge cases beyond what the schema documents.

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 and resource ('get a signed, time-limited download URL for a dataset') and immediately scopes it to a dataset the agent already has access to, which cleanly separates it from get_upload_urls and get_dataset.

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

Usage Guidelines5/5

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

Explicitly routes the agent: dataset_id for free ($0) datasets, purchase_id from a completed buy_now for paid ones, with authentication called out. It also states the expiry fallback ('call again for a fresh one') and the manifest caveat, leaving little to inference.

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

get_listing_statusA
Read-only
Inspect

Get the current status of a listing or draft. Used to poll for sample-generation completion (check sample_file_path or data_profile.auto_sample_status) before publishing.

ParametersJSON Schema
NameRequiredDescriptionDefault
dataset_idYesThe dataset ID

TDQS

A4/5.0
Behavior4/5

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

readOnlyHint=true already establishes the safety profile, so the description's added value is the polling semantics and the specific fields to inspect (sample_file_path, data_profile.auto_sample_status). It does not describe failure states or how often to poll, but for a read-only status check this is solid added context.

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?

Two tight sentences with the core action front-loaded and the polling scenario immediately following. 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?

There is no output schema, so the description has to hint at return content, and it does by naming the two result fields that signal completion. It could say more about the overall status object shape, but it covers what the agent needs to poll correctly.

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% with a single documented dataset_id parameter, so the schema carries the burden. The description adds no additional meaning about the identifier beyond what the schema provides — baseline 3.

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 and resource ('Get the current status of a listing or draft'), and the phrase 'before publishing' implicitly connects it to publish_listing. It does not explicitly name a sibling tool, so it stops short of a 5.

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?

Gives a clear usage context: poll for sample-generation completion before publishing. This tells the agent when to reach for this tool, but no exclusions or explicit alternative tools are named.

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

get_purchase_receiptA
Read-only
Inspect

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

ParametersJSON Schema
NameRequiredDescriptionDefault
purchase_idYesThe purchase ID to generate a receipt for

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, so the safety profile is covered. Beyond that, the description adds real value by disclosing what the receipt contains and describing the human_summary field, which matters because no output schema exists. It does not cover behavior on a nonexistent or unauthorized purchase_id.

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 front-loaded sentences with no filler; the purpose comes first and the output detail second. The second sentence earns its place by describing a return field that has no output schema to document it.

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 one-parameter read-only tool with annotations covering safety, the description is nearly sufficient, and it usefully compensates for the missing output schema by naming key return fields. Minor gaps remain around error/empty-result behavior.

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% with a single parameter fully documented (UUID format, required, clear meaning), so the schema does the heavy lifting. The description adds no syntax or format detail beyond it, making the baseline 3 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 states a specific verb ('Get') and a distinct resource ('cost-benefit receipt for a purchase'), and enumerates the returned contents (price paid, hours saved, labor cost). This separates it from siblings like list_purchases or buy_now, though it never names an alternative explicitly.

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 no explicit when-to-use or when-not-to-use guidance, no prerequisites, and no mention of alternatives. The only usage hint is implicit, that human_summary is 'suitable for forwarding to the operator', which describes downstream use rather than tool selection.

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

get_upload_urlsA
Destructive
Inspect

Provision signed upload URLs for a draft listing. Returns URLs for the sample and full dataset files. PUT file bytes directly to the returned upload_url, then call confirm_upload with the returned path.

ParametersJSON Schema
NameRequiredDescriptionDefault
dataset_idYesThe draft dataset ID

TDQS

A4.2/5.0
Behavior4/5

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

With only destructiveHint=true supplied, the description carries most of the behavioral burden and does well: it discloses the return shape (a sample URL and a full-dataset URL), the required client-side action (direct PUT of bytes), and the mandatory follow-up call to confirm_upload. It does not mention URL expiry, size limits, or authentication requirements for the signed URLs.

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?

Three short sentences, zero filler, and the sequence of actions is front-loaded so the agent learns the output and the next step immediately.

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?

No output schema exists, so the description must describe the return value — and it does, naming both URLs and the returned path. Remaining gaps are URL lifetime and any preconditions on the draft listing, which are minor for a single-parameter provisioning call.

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% with a single well-documented parameter (dataset_id, draft dataset UUID), so the baseline is 3. The description reinforces that this is a draft listing context but adds no format or constraint detail beyond the schema.

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 and resource: 'Provision signed upload URLs for a draft listing,' and immediately clarifies the payload ('URLs for the sample and full dataset files'). This distinguishes it from sibling tools like get_download_url and confirm_upload, which an agent would otherwise confuse it with.

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 workflow context: PUT the file bytes to the returned upload_url, then call confirm_upload with the returned path — effectively stating when this tool is used and what comes next. It stops short of explicit exclusions or stating prerequisites (e.g., that the listing must already exist in draft state).

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

list_bounty_reviewsB
Read-only
Inspect

List submissions the current verified agent is authorized to review, oldest first, with due dates and payment next actions.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
filterNo
offsetNo
updated_sinceNo

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and supply the title, so the safety profile is covered. The description adds real context beyond that: result ordering (oldest first), the authorization constraint on which submissions appear, and the inclusion of due dates and payment next actions. It does not, however, disclose pagination behavior 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.

Conciseness4/5

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

A single front-loaded sentence with no filler; the scope constraint and ordering come before the payload description. Dense but every clause carries information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description helpfully sketches the return payload (due dates, payment next actions), and annotations cover read-only safety. However, for a 4-parameter tool with 0% schema coverage, the absence of filter semantics and pagination behavior leaves meaningful gaps.

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

Parameters2/5

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

Schema description coverage is 0% and the description explains none of the four parameters. The five-value filter enum (needs_review, changes_requested, payment_action, completed, all) is only obliquely hinted at by 'payment next actions', and limit, offset, and updated_since are entirely undocumented in both places.

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 (List) and a precisely scoped resource: submissions the current verified agent is authorized to review. The authorization scoping and 'oldest first' ordering distinguish it from sibling read tools like get_bounty_submission, though it does not name an alternative directly.

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 phrase 'the current verified agent is authorized to review' implies the applicable context, but there is no explicit when-to-use vs when-not guidance and no mention of the filter modes or how they select records. Usage is implied rather than stated.

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

list_purchasesA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
statusNoFilter by purchase status — omit to see all

TDQS

A4/5.0
Behavior3/5

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

readOnlyHint=true already establishes the safety profile, so the bar is lower. The description adds useful context — the record scope is 'this agent' and what each row exposes — but says nothing about pagination or result-size behavior even though a limit parameter exists.

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?

Two sentences, zero filler, and the what-it-returns statement is front-loaded before the usage hints.

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 correctly enumerates the meaningful return fields, so an agent knows what it gets back. The only gap is pagination/result-window behavior tied to limit, which is not addressed anywhere.

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%: status is documented in the schema ('omit to see all') while limit has no description at all. The description mentions status only as a returned field, not as a filter, so it adds marginal value over the schema and does not compensate for the undocumented limit.

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?

Names a specific verb and resource (list purchased datasets) and adds scope ('by this agent') plus the fields returned (status, prices, download availability). It also implicitly separates itself from the single-purchase sibling by routing the agent to buy_now as a downstream step.

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?

Gives three concrete use cases (spending audits, dedupe before buy_now, operator summary) and explicitly frames the buy_now sequencing. No when-not-to-use guidance or contrast with get_purchase_receipt, so it stops short of a 5.

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

log_data_gapA
Destructive
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesThe search query or data need that returned no results
descriptionYesDetailed description of the data needed — format, time range, geography, etc.
suggested_price_usdNoSuggested bounty price in USD (default $25 if not provided)

TDQS

A3.9/5.0
Behavior4/5

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

Annotations only give destructiveHint=true and a title; the description adds the important side effect (a seller-visible bounty listing is created) and the return shape (message_for_user string with bounty URL). It does not explain the destructiveHint or whether the gap log can be removed, so it is strong but not exhaustive.

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?

Three tight sentences, front-loaded with the primary action and ending with the return value. No filler, though the bounty clause and return clause could be marginally tighter.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description usefully covers the return string and the bounty side effect, and the input schema fully documents parameters. The only gap is the unexplained destructiveHint, which an agent might want clarified for a write operation.

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

Parameters3/5

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

Schema description coverage is 100%, so all three parameters and the $25 default are already documented. The description only restates the conditional nature of suggested_price_usd, adding little beyond the schema; baseline 3 applies.

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?

Specific verb+resource ('Record an unmet data need on DataBazaar') plus the secondary effect (creates a bounty listing when a price is supplied). An agent can distinguish this from create_listing or suggest_listing because the trigger is a failed search/data need, not a deliberate listing action.

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 stated: the schema says the query is one 'that returned no results,' but the description never says 'call this after a search returns nothing' or names alternatives. The conditional bounty behavior is described, but that is behavior, not when-to-use guidance.

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

preview_bounty_submissionB
Read-only
Inspect

Get a temporary URL for the safe submission sample. Review the requirements and sample before authorizing a purchase.

ParametersJSON Schema
NameRequiredDescriptionDefault
bounty_idYes
submission_idYes

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, so the safety profile is covered structurally. The description adds genuinely useful context by calling the URL "temporary" and the sample "safe," implying expiry and a non-mutating preview, but it says nothing about authorization requirements, lifetime of the URL, or what the preview contains.

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

Conciseness4/5

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

Two short, front-loaded sentences with no filler; the purpose leads and the guidance follows. Efficient, though the second sentence is advisory rather than informational.

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?

For a simple read-only preview with no output schema and only two parameters, the description covers the core action and the workflow context. It leaves the parameter meanings and URL expiry behavior unexplained, which is a real gap for an agent invoking it with two UUIDs.

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

Parameters2/5

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

Schema description coverage is 0% and both required UUID parameters (bounty_id, submission_id) are undocumented in the schema. The description provides no explanation of what either identifier refers to or their relationship, so it fails to compensate for the coverage gap.

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 and resource (get a temporary URL for the submission sample), which is more concrete than a tautology. It is distinguishable from generic get_download_url or preview_sample, but it never explicitly contrasts itself with those siblings, so it stops short of a 5.

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?

"Review the requirements and sample before authorizing a purchase" gives a clear precondition and ties the tool to the purchase flow. It does not name the alternative tools (buy_now, accept_bounty_submission) or state exclusions, so it is clear context without explicit routing.

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

preview_sampleA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
questionNoOptional natural-language question to answer from the sample (e.g. "average rent in SF", "count of records per state"). Returns a synthesized_answer field with deterministic aggregates if the question matches a simple pattern.
dataset_idYesThe dataset ID to preview

TDQS

A3.8/5.0
Behavior4/5

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

Annotations only declare readOnlyHint=true and a title, so the description carries most of the behavioral load and does so well: it discloses the exact return payload (signed download URL, ~50 rows, schema), the optional synthesized-answer behavior, and that no purchase is required. It stops short of covering auth/permission needs or URL expiry.

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?

Three tight sentences: purpose first, then return shape, then the optional question behavior with a concrete example. No filler, and the most decision-relevant information is front-loaded.

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 steps in to describe the return shape well (download URL, row count, schema, synthesized_answer field). For a simple two-parameter read tool this is nearly sufficient; only minor operational details like URL lifetime or size limits are absent.

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 both parameters are already fully documented in the schema, establishing the baseline of 3. The description reinforces the optional 'question' parameter and its synthesized_answer outcome, but adds no syntax or format detail beyond what the schema already provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource (preview sample rows of a dataset) plus the concrete return (signed download URL for ~50 rows and the schema). It implies a distinction from full dataset access via 'no purchase required,' but never names the siblings get_dataset or search_datasets, so an agent must infer the boundary itself.

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

Usage Guidelines3/5

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

Gives a clear purpose-driven context — use it to verify columns, format, and quality — which implies the when-to-use case. However, it never states when to prefer get_dataset or search_datasets instead, nor any prerequisites or exclusions, leaving the routing decision to inference.

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

publish_listingA
Destructive
Inspect

Publish a draft listing to the marketplace. Requires: full dataset uploaded (get_upload_urls + confirm_upload), sample generation complete (poll get_listing_status), and owner verification. Requires documentation.source_name and explicit acceptance of the current listing terms: https://databazaar.io/legal/terms#dataset-reuse. Without custom terms, Open Use allows commercial use, modification, redistribution, and model training without attribution. The listing then goes through a content scan before becoming publicly visible.

ParametersJSON Schema
NameRequiredDescriptionDefault
dataset_idYesThe draft dataset ID to publish
tos_confirmedYesConfirm authorization to accept https://databazaar.io/legal/terms#dataset-reuse: absent custom reuse terms, permit commercial use, modification, redistribution and model training without attribution.
listing_terms_versionYesVersion of listing terms explicitly accepted by the supplier

TDQS

A4.3/5.0
Behavior4/5

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

Annotations declare destructiveHint=true; the description aligns by framing this as a state-changing publication and adds real context: the listing becomes publicly visible only after a content scan, and acceptance of Open Use terms grants commercial use, modification, redistribution and model training without attribution. It does not address reversibility or unpublishing, which is the main remaining gap for a destructive action.

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-loaded with the action and then the prerequisite chain; every sentence carries a fact. It is dense and slightly long, but none of the content is filler, so it stops short of a 5 only on tightness.

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 three-parameter mutation with no output schema, the description covers prerequisites, required legal acceptance, licensing implications and the post-publish scan. It omits what happens on failure or how long the scan takes, but nothing essential for a correct invocation 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 schema already documents dataset_id, tos_confirmed and listing_terms_version in detail. The description echoes the terms-acceptance semantics and adds a non-parameter requirement (documentation.source_name), but contributes little beyond what the parameter descriptions state, so baseline 3 applies.

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 and resource ('Publish a draft listing to the marketplace') and names the prerequisite siblings that must have run first (get_upload_urls, confirm_upload, get_listing_status), so it is distinguishable from create_listing and update_listing without opening any schema.

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

Usage Guidelines5/5

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

Explicit preconditions are enumerated: full dataset uploaded, sample generation complete, owner verification, and documentation.source_name present. It also states the required acceptance of listing terms and the alternative licensing case ('without custom terms, Open Use allows...'), which is exactly the when/when-not detail an agent needs.

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

query_datasetA
Read-only
Inspect

Run a structured filter query against a queryable dataset and return matching rows. Useful for extracting a subset without downloading the full dataset. Returns rows as a JSON array (max 10,000 per call).

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum rows to return (capped at 10,000).
whereNoFilter clauses combined with AND. Maximum 16 clauses per query.
selectNoColumns to return. Omit to return all columns.
dataset_idYesThe dataset ID to query

TDQS

A3.7/5.0
Behavior4/5

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

With readOnlyHint already declaring a safe read, the description still adds value by disclosing the return format (JSON array) and the 10,000-row per-call cap, neither of which appears in the annotations. It does not cover ordering, pagination, or error behavior.

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

Conciseness4/5

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

Three short sentences, front-loaded with purpose before the use case and return format. The middle sentence is mildly redundant with the first but not wasteful enough to penalize heavily.

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 and no output-format annotations, the description usefully supplies the return shape and row cap. Given the rich two-level schema for filters, the definition is nearly complete, lacking only result ordering or pagination notes.

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

Parameters3/5

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

Schema description coverage is 100%, so every parameter (limit, where, select, dataset_id) is already documented in the schema, including operators and value rules. The description adds no parameter-level detail beyond the schema, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (query) plus resource (queryable dataset) and the outcome (return matching rows). It distinguishes itself somewhat from download-oriented siblings by noting it avoids downloading the full dataset, though it does not name a sibling directly.

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 phrase 'useful for extracting a subset without downloading the full dataset' implies a use case but gives no explicit when-to-use guidance or named alternatives (e.g. preview_sample, get_dataset, search_datasets). Usage is inferable rather than stated.

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

review_bounty_submissionA
Destructive
Inspect

Start review, request changes, decline, or extend once. Requires the current review version; a stale version returns a conflict. This tool does not authorize payment.

ParametersJSON Schema
NameRequiredDescriptionDefault
actionYes
reasonNo
versionYes
submission_idYes

TDQS

A3.9/5.0
Behavior4/5

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

Beyond the destructiveHint annotation, the description adds genuinely useful behavior: a stale version produces a conflict (concurrency/optimistic-locking semantics), and the tool never triggers payment. It also implies the actions are one-shot/terminal for extension ("extend once"). It does not state permissions or reversibility, keeping it out of 5 territory.

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?

Three short sentences, front-loaded with the action set, then the precondition, then the boundary constraint. No filler and every clause carries decision-relevant information.

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?

For a destructive, multi-action mutation tool with zero schema documentation and no output schema, the description covers version handling and payment scope but omits the meaning/requirements of 'reason', any hint about what a review-state change affects, and permission requirements. Adequate but with clear holes.

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 0%, so the description carries the burden. It explains the 'version' parameter's semantics well (must be current, stale returns conflict) and the enum values are self-describing, but 'reason' is never mentioned despite its 3-4000 char constraint, and the description doesn't say which actions require it.

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 enumerates the four concrete actions (start review, request changes/decline, extend) the tool performs, which nails the verb side, and the closing clause carves out a boundary against payment-authorizing siblings. The resource itself (bounty submission) is only implicit from the tool name rather than stated in the description, which slightly weakens the identification.

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 a real precondition ("Requires the current review version") and a usage exclusion ("does not authorize payment"), which steers an agent away from treating it as an approval tool. It stops short of naming accept_bounty_submission as the alternative for actually accepting/paying, so routing is clear but not explicit.

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

search_datasetsA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
queryYesNatural language search query describing the data needed
categoryNoFilter by category: geographic, pricing, sensor, images, text, financial, scientific, social, retail, other
max_priceNoMaximum price in USD — omit to include all prices
pricing_typeNo
min_quality_scoreNoMinimum assessed sample structure score (0-100); unassessed listings are excluded. See https://databazaar.io/quality for the rubric and limitations.

TDQS

A4/5.0
Behavior4/5

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

Annotations already carry readOnlyHint=true, so the safety profile is covered. The description adds meaningful behavior beyond that: it discloses the return shape (ranked listings with prices, quality scores, checkout URLs) and the empty-result path. Rate limits and auth requirements are not mentioned, but the safety-relevant context is adequate.

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?

Three tight sentences, front-loaded with the core purpose and filters, followed by return shape and the empty-result fallback. Every sentence earns its place with no redundancy.

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 describing the return values (ranked listings, prices, quality scores, checkout URLs) and the empty-result behavior. It is nearly complete for a 6-param search tool, missing only pagination/limit semantics now that limit is not referenced.

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 67%, and the description conceptually groups the filters (category, price, quality score, pricing type) but adds no syntax, format, or edge-case detail beyond the schema. With the schema doing most of the heavy lifting and one filter (limit) unmentioned, this is a baseline-adequate 3.

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?

Names a specific verb (search) and resource (datasets) within a named marketplace (DataBazaar), and enumerates the filter dimensions, so the tool's job is unambiguous. However, it does not explicitly distinguish itself from siblings get_dataset and preview_sample, leaving the agent to infer that this is the discovery step.

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?

Gives clear context for the tool's role (natural-language discovery over the marketplace) and adds a useful fallback: when results are empty, log_data_gap can signal demand. It stops short of explicitly stating when to prefer this over get_dataset or preview_sample, so no full when-not guidance.

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

set_schemaA
Destructive
Inspect

Set or update the data schema for a draft or active listing. Define the columns, types, and descriptions so buyers know what fields the dataset contains.

ParametersJSON Schema
NameRequiredDescriptionDefault
schemaYesSchema object describing columns/fields. Example: { "columns": [{ "name": "id", "type": "integer" }, { "name": "email", "type": "string" }] }
dataset_idYesThe dataset ID

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare destructiveHint=true, so the agent knows this mutates state. The description adds the state constraint (draft or active listing) but never says the existing schema is replaced/overwritten or what happens to prior columns, which is the key behavioral detail for a destructive set operation.

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?

Two sentences, no filler, and the core action plus its buyer-facing rationale are front-loaded. Every clause earns its place.

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?

For a two-parameter destructive mutation with no output schema, the description covers purpose and target state but omits overwrite semantics, permissions, and whether the schema is validated. Adequate but with a clear gap given the destructive hint.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents dataset_id and the nested schema object with a worked example. The description reinforces what the schema contains (columns, types, descriptions) but adds no syntax or constraint beyond it; baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (set/update) and resource (the data schema for a listing), and clarifies the payload intent: columns, types, descriptions so buyers understand the dataset. It is clearly distinct from listing-level tools like update_listing, though it never names a sibling to route against.

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 phrase 'for a draft or active listing' implies the applicable states and context, which is useful implied guidance. However, there is no explicit when-not condition, no prerequisite (e.g. must own the listing), and no named alternative among siblings.

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

share_findingA
Destructive
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
publicNoWhether to make the finding publicly discoverable (default true)
summaryYes1-3 sentence summary of what was discovered
dataset_idYesThe dataset used to generate this finding

TDQS

A3.7/5.0
Behavior3/5

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

Annotations already flag destructiveHint=true, so the write nature is covered by structured data. The description usefully adds that it returns a share_url and that public findings help others discover the dataset (implying visibility side effects), but it does not address permissions or the destructive implications of the write.

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?

Three short sentences, front-loaded with the core action and resource, then the return value and a secondary benefit. Efficient with little waste, though the third sentence is the most skippable.

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 3-parameter mutation tool with no output schema, the description covers the action, the return value (share_url), and the visibility consequence of going public. Only prerequisite/permission context is missing, keeping it shy of full completeness.

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%, so the schema already documents public, summary, and dataset_id. The mention that 'public findings also help others discover the underlying dataset' loosely reinforces the public parameter but adds no format or syntax details beyond the schema, matching the 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?

States a specific verb (Create) and a precise resource (shareable finding record derived from a DataBazaar dataset). No sibling tool produces findings, so there is no ambiguity to resolve, and the object acted upon is unambiguous.

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 phrase 'derived from analysis of a DataBazaar dataset' implies context of use, but the description never states when to call this versus alternatives or any prerequisites (e.g., must the dataset be analyzed first?). Usage is only implied, not spelled out.

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

suggest_listingA
Destructive
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
titleYesDataset title — clear, searchable, e.g. "NYC Parking Violations 2024 (CSV)"
categoryYesCategory: geographic, pricing, sensor, images, text, financial, scientific, social, retail, other
descriptionYesWhat the dataset contains, its source, format, and time range
sample_dataYesFirst ~20 rows of the dataset as a string (CSV or JSON)
suggested_price_usdNoSuggested listing price in USD — omit to let the operator decide

TDQS

A4/5.0
Behavior4/5

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

Annotations only give destructiveHint=true, whereas the description discloses the draft/approval workflow, the returned approval URL, and the contents of message_for_user (approval link and suggested price) — meaningful behavior beyond the annotation. It stops short of covering permissions, failure modes, or the draft's lifecycle.

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?

Three tightly packed sentences, front-loaded with the action and immediately followed by the outcome and the returned artifact. No filler or repetition of schema content.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description usefully explains the return surface (approval URL, message_for_user with link and price), which is exactly what an agent needs after a mutation. It omits failure/error behavior and what the created draft's status looks like, leaving a small gap.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already carries all five input parameters with examples and the category enum values. The description adds no syntax or format detail for the inputs, so the baseline 3 applies; its message_for_user note describes an output field, not an input.

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 (propose) and resource (dataset for listing on DataBazaar) and scopes it to research byproducts. The draft-pending-approval outcome distinguishes it behaviorally from sibling tools like create_listing and publish_listing, so an agent can tell what this does without opening the schema.

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 'e.g. produced as a research byproduct' framing implies when to reach for it, but there is no explicit when/when-not guidance and no sibling (create_listing, publish_listing) is named as an alternative. Usage is inferable but not stated.

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

update_listingA
Destructive
Inspect

Update metadata or pricing on a draft OR active listing. The correct API route is chosen from the listing's current status. To change the price of a live listing pass price (USD) or price_cents.

ParametersJSON Schema
NameRequiredDescriptionDefault
tagsNoNew tags
priceNoPrice in USD (e.g. 19). Mutually exclusive with price_cents.
titleNoNew title
schemaNoUpdated data schema
licenseNoOptional custom reuse terms/license name. If this and license_url are blank, accepted listing terms grant Open Use.
categoryNoNew category
dataset_idYesThe dataset ID to update
descriptionNoNew description
price_centsNoPrice in integer cents (e.g. 1900 = $19.00). Mutually exclusive with price.
pricing_typeNoPricing model. Inferred as buy_it_now when a positive price is given; defaults to free only when no price is supplied.
documentationNo
tos_confirmedNoConfirm authorization to accept https://databazaar.io/legal/terms#dataset-reuse: absent custom reuse terms, permit commercial use, modification, redistribution and model training without attribution.
listing_terms_versionNoVersion of listing terms explicitly accepted by the supplier

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare destructiveHint=true, so the safety profile is partially covered. The description adds genuinely useful behavior — the API route is derived from the listing's current status, and price units are stated — but it never explains what the update overwrites or that changing metadata on a live listing is the destructive aspect flagged in 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?

Three short sentences, front-loaded with the core action and scope before the pricing detail; no filler or repetition. It is efficient, though the routing note and the pricing note could be merged into a single clause without loss.

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?

For a 13-parameter, nested-object mutation tool with no output schema, the description omits meaningful preconditions: only draft/active listings are mentioned with no handling for other statuses, and nothing notes the listing-terms acceptance (tos_confirmed, listing_terms_version) or the source_name requirement before publishing. High schema coverage compensates for most parameter gaps, but behavioral coverage of the mutation is thin.

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 92%, so the schema already carries nearly all parameter meaning, including the price/price_cents mutual exclusivity and pricing_type inference rules. The description only restates price/price_cents for live listings, adding no format or edge-case detail beyond the schema, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Update metadata or pricing on a draft OR active listing'), and narrows scope by listing status, which separates it from create_listing and publish_listing by implication. It stops short of naming a sibling explicitly, so an agent must infer the boundary rather than being told it.

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?

Gives clear context for when the tool applies ('draft OR active listing') and a condition for the pricing path ('To change the price of a live listing pass price (USD) or price_cents'). No explicit exclusions (e.g. what to do for published/archived listings) or named alternative tools such as publish_listing.

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. 27 tool updatesv1.5.1
    • First observedaccept_bounty_submission
    • First observedbuy_now
    • First observedcheck_coverage
    • First observedconfirm_upload
    • First observedcontact_seller
    • First observedcreate_listing
    • First observedfind_data_for_task
    • First observedget_bounty_submission
    • First observedget_dataset
    • First observedget_download_url
    • First observedget_listing_status
    • First observedget_purchase_receipt
    • First observedget_related_datasets
    • First observedget_upload_urls
    • First observedlist_bounty_reviews
    • First observedlist_purchases
    • First observedlog_data_gap
    • First observedpreview_bounty_submission
    • First observedpreview_sample
    • First observedpublish_listing
    • First observedquery_dataset
    • First observedreview_bounty_submission
    • First observedsearch_datasets
    • First observedset_schema
    • First observedshare_finding
    • First observedsuggest_listing
    • First observedupdate_listing

TDQS

A3.6/5.0

Scored across 27 tools

Disambiguation4/5

Most tools target distinct actions/resources across buyer, seller, and bounty workflows, and descriptions cross-reference each other to guide selection. A few pairs overlap (e.g. search_datasets vs find_data_for_task, create_listing vs suggest_listing), but use-case guidance keeps confusion limited.

Naming Consistency4/5

All names use snake_case and start with a verb, with predictable noun phrases like get_dataset, create_listing, and list_purchases. Minor deviations such as buy_now and find_data_for_task are still readable and consistent in overall style.

Tool Count3/5

27 tools is high and exceeds the typical well-scoped range, though it is partly justified by distinct buyer, seller, bounty, and review subdomains. Several discovery and social tools could likely be consolidated without losing capability.

Completeness3/5

Core buy, sell, search, preview, upload, publish, and bounty-review workflows are covered. Notable gaps remain: no delete/unpublish for listings, no list-own-listings, and no purchase cancellation/refund, which can create dead ends for agents.

Maintenance

ActivityMaintained
ResponsivenessUnresponsive

Related MCP Connectors

Related MCP Servers