MCP reference
Docs
Every tool the Kelp Market MCP server exposes — parameters, return values, and whether a key is
required. Browsing published datasets and estimating a set are public; everything else needs an API key
with the licensing:purchase permission. For client setup, see Get started.
Public tier
no key required list_datasets
Browse published, curated training datasets — the finished products, not raw assets.
- slug
- string (1–96 chars) Without slug: the full catalog. With slug: one dataset’s detail plus the first 12 preview assets.
- tag
- string (1–48 chars) Catalog filter — one tag.
- free
- boolean Catalog filter — free datasets only.
- sort
- "newest" | "price-asc" | "price-desc" | "size" Catalog ordering.
→ Catalog rows (slug, name, description, tags, assetCount, priceUsd, discountPct, free, licenseId, coverAssetId, createdAt, url); with slug, the detail row plus coverUrl.
Previewing happens on the web — every row carries its public dataset page URL (/datasets/<slug>); the detail adds the cover image URL.
estimate_training_set
Price a training set: match assets by keyword, type, license, and verification tier, and get a binding quote.
- keyword
- string Match keyword, e.g. "Windsurfing".
- type
- "image" | "video" | "audio" | "document" Asset type filter.
- license
- string[] License types to restrict to.
- includeAiGenerated
- boolean Include AI-generated assets.
- minResolution
- number Minimum asset resolution.
- minConfidence
- confidence tier enum Minimum verification tier.
- quantity
- number (1–1,000,000, default 20) How many assets to match.
- budgetCapUsd
- number > 0 Reject quotes above this total.
- clauseIds
- string[] Custom license clauses to include.
- promoCode
- string (1–64 chars) Promotional pricing code.
→ jobQuoteId, matched assets, per-asset and total pricing.
Priced per component — compose mixes by running one estimate per component and summing. Quotes expire in ~1 hour — confirm before the deadline.
Key required
licensing:purchase buy_dataset
Buy a published, curated dataset by slug — the same flow as the website’s buy button, keyed by API-key identity.
- slug required
- string (1–96 chars) Dataset slug as returned by list_datasets.
→ jobQuoteId, jobId, statusStreamUrl (SSE), datasetName, totalUsd, paymentStatus ("paid" | "pending-payment"), paymentUrl (the /api/sets/<jobQuoteId>/pay deep-link → Stripe Checkout) when unpaid.
Free sets settle immediately — fetch the bundle with get_training_set once the packaging job finishes. Paid sets return the market pay deep-link (/api/sets/<jobQuoteId>/pay), which 302s to Stripe Checkout and can be re-fetched via get_training_set_payment.
confirm_training_set
Accept a quote and queue the packaging job. Issues the Stripe Checkout paymentUrl when the quote carries an account email.
- jobQuoteId required
- string (UUID) Quote from estimate_training_set.
- paymentRef
- string External payment reference, if paying outside Stripe.
- clauseIds
- string[] Override or extend the quoted license clauses.
→ jobId, status "queued", statusStreamUrl (SSE), paymentUrl when applicable.
The buyer email is taken from the API key’s account. Job progress streams over SSE; also accepts ?api_key= on the stream URL.
get_training_set_payment
Check settlement state of a confirmed job.
- jobQuoteId required
- string (UUID) The confirmed quote id.
→ paymentStatus ("pending-payment" | "paid"), paymentUrl if still unpaid.
get_training_set
Download the packaged dataset once payment has settled.
- jobQuoteId required
- string (UUID) The confirmed quote id.
→ bundleKey, downloadUrl (presigned, 1-hour validity), expiresAt.
Bundle is a .tar.gz containing LICENSE.md, a signed manifest.json, and per-asset signed manifests with SEAL records.
request_license
License a single asset directly — grants a signed license for one file.
- assetId required
- string (≤64 chars) Asset record id (CID) as returned by estimate_training_set.
- useCase required
- string (1–256 chars) Declared training use case.
- agentId required
- string (1–64 chars) Identifier of the requesting agent.
→ licenseGrantId, status "granted", manifestUrl, expiresAt, priceUsd.