datapoint.market_ ALPHA v0.0.1

Reference: Management MCP

The control plane for providers, spoken as MCP over JSON-RPC 2.0.

  • Endpoint: POST /mcp
  • Protocol version: 2025-06-18
  • Transport: JSON-RPC 2.0 (one request object per call)

This is not a paid relay. It creates and manages endpoints. The paid MCP wrapper for buyers lives at /m/{provider}/{server} (see Concepts).

Methods

MethodAuthPurpose
pingnoneliveness
notifications/*noneaccepted, no response
initializerequiredhandshake; returns capabilities + instructions
tools/listrequiredthe tool catalog (below)
tools/callrequiredinvoke a tool

The whole protected resource (everything except ping/notifications) challenges unauthenticated requests with 401 + WWW-Authenticate — that’s what makes an MCP client (Claude) start the OAuth login flow at connect time.

Authentication

Sell / custodial tools/call require a bearer token — either:

  • an OAuth access token (emoauth_…) from connecting in Claude (guide), or
  • an automation key (empk_…).

Send it as Authorization: Bearer <token>. When one of those tools is called without it, /mcp returns HTTP 401 with a WWW-Authenticate: Bearer resource_metadata="…" header that points an MCP client at the OAuth discovery metadata. Browse/buy tools need no bearer (see below).

Auth is per-capability. initialize, tools/list, and the browse/buy tools (search_marketplace, get_endpoint_sample, quote_endpoint, call_endpoint, call_mcp_tool) work with no account — buying is authorized by the payment credential in the args (signed X-PAYMENT / buy-job spk_). The sell and custodial wallet/budget tools require a verified-email account; calling one without it returns the 401 OAuth challenge. Email is set only by completing the magic link, so a non-null email is, by construction, verified.

Tools

ToolArgsDescription
get_profileYour public profile (/u/<handle>): name, profile_type, bio, avatar_url, website_url, social_links, verified, + completeness meter.
update_profileany of: slug, name, profile_type (individual|team|company), bio, avatar_url, website_url, social_linksEdit your public profile; only provided fields change. slug is your handle (the /u/<slug> page + /r/<slug>/… call URLs; lowercase [a-z0-9-], 2–39 chars, unique, not reserved) — changing it breaks call URLs buyers saved, so claim a good one early. social_links (when sent) replaces the whole map; empty string clears a field. Verified is team-granted, not settable here.
list_endpointsAll your endpoints (relays + wrappers) with status + relay URLs. Excludes deleted.
create_api_relayname, slug, origin_url, method, price_usd, networks, pay_to, free?, description?, public_listing?, join_card?, origin-auth?, sample/trust?Create a paid API relay over an HTTP origin. Set free:true (then price_usd/pay_to aren’t needed) to give it away — buyers call it with no payment, no settlement, no fee. join_card (strongly advised) declares the join handles — see Join cards.
create_mcp_wrappername, slug, origin_url, networks, pay_to, tools[], public_listing?, join_card?, origin-auth?, sample/trust?Wrap an upstream MCP server, pricing each tool. join_card with accepts/returns makes the tools composable in agents’ fusion plans.
create_datasetname, slug, download_url, price_usd, networks, pay_to, sample_rows?, columns_schema?, format?, license?, description?, public_listing?, join_card?, synthetic?, synthetic_method?, synthetic_source?, synthetic_fidelity?, synthetic_privacy?List a downloadable dataset (an API relay whose origin returns a download link); sample_rows become the free preview. format ∈ csv|parquet|jsonl|json|zip|…. join_card (strongly advised) declares which columns buyers can join on — see Join cards. For synthetic data set synthetic=true + provenance (method/source required). See Selling datasets.
publish_endpointendpoint_idPublish (status → active); with public_listing adds to the marketplace. For a trial_safe API relay this also runs the origin probe → builds the sample.
update_endpointendpoint_id + any of: name, description, origin_url, method, price_usd, networks, pay_to, free, join_card, auth_type/auth_value/auth_header_name, sample/trust fieldsEdit an endpoint; only provided fields change. auth_type:"none" clears origin auth. free:true clears pricing (makes it free); free:false + price_usd + networks + pay_to makes a free endpoint paid again. join_card={…} sets/replaces the join card; join_card={} clears it.
pause_endpointendpoint_idPause (status → disabled): off the relay + marketplace.
resume_endpointendpoint_idResume (status → active).
delete_endpointendpoint_idSoft-delete: hidden, offline, slug freed; payment history kept.
list_automation_keysYour keys (prefix + lifecycle only; secret never returned).
revoke_automation_keykey_idRevoke a key so it can no longer authenticate.

Buyer tools (discover + buy data)

ToolArgsDescription
whoamiWho you’re authenticated as: slug, email, email_verified, can_sell. authenticated:false when browsing anonymously. Open (no auth) — use it to confirm which account/email the connector is acting as.
search_marketplacequery?, type?, joinable_on?, limit?Find endpoints to buy; each result carries price + the free sample + join_card/fusion_ready/joins_with. type = api|mcp|dataset (download link) |synthetic (data labeled synthetic, with provenance). joinable_on (e.g. "domain") returns only listings whose join card offers a matching handle — how an agent finds data that fuses with data it already holds (full flow: Data fusion). No payment.
get_endpoint_sampleprovider, endpointOne endpoint’s full sample (schema + synthetic example + axes + the join_card — plan a fusion before paying; per-tool schemas for MCP). No payment.
get_walletYour managed wallet(s): chain, deposit address, on-chain USDC balance.
create_walletchainCreate a managed wallet (base|solana|stellar); returns a one-time mnemonic/key.
create_buy_jobchain, label?, budget_usd?, max_per_call_usd?, ttl?Advanced/optional — mints a capped, disposable spk_ to delegate bounded spend to a separate agent. Most buyers just fund a wallet + confirmed=true.
list_buy_jobs / close_buy_jobchain [, key_id]List jobs (budget/spent/remaining) / revoke one.
get_buy_policy / set_buy_policymax_per_call_usd?, confirm_above_usd?, clear?Read/set standing account guardrails: calls over the cap are refused; calls over the confirm threshold need confirmed:true.
quote_endpointprovider, endpoint, tool?Get the x402 accepts (price, network, payTo, nonce) to sign yourself (BYO wallet). No spend.
call_endpointprovider, endpoint, params?, body?, confirmed?, signed_payment?, spending_key?Buy one API-relay call (spends USDC). Simple way: funded managed wallet + confirmed=true → pays from your wallet (no job). Or signed_payment (BYO), or a buy-job spending_key (delegated). With no payment + no confirm it forwards a free trial if offered, else a price quote (needs_payment) — never spends.
call_mcp_toolprovider, server, tool, args?, spending_key?|signed_payment?, confirmed?Buy one MCP-wrapper tool call (per-tool priced). Returns the tool result + receipt.

Full agent buy flow: Buying with the connector.

Origin-auth fields (shared by create/update): auth_typebearer | api_key | basic | custom (+ none on update to clear), auth_value, auth_header_name (required for api_key/custom).

Sample / trust fields (shared by create/update; all optional with safe defaults — see Publishing):

FieldDefaultMeaning
protectionsyntheticwhat the buyer-facing example contains: synthetic | redacted | real
trial_safefalseprovider asserts the call has no side effects — required to probe (build the sample from a live call) and to offer free trials
sample_requestbody/params used to probe the origin (and shown as the example input)
exampledeclared sample {input, output} — paste one real output and we infer the schema, no probe needed
output_schemaadvanced: declare the response JSON Schema directly
free_trial_calls0unpaid live calls a buyer may make to see real data (0–20; needs trial_safe)
free_trial_daily_capper-endpoint/day ceiling bounding your origin cost for trials
deliveryinlinedownload marks the endpoint a dataset (origin returns a download link) — see Selling datasets
dataset_format / dataset_licensedataset listing metadata (e.g. csv, CC-BY-4.0)
dataset_synthetic / dataset_provenancefalse / —mark any endpoint (live API or dataset) as synthetic; provenance {method, source_modeled, fidelity, privacy} is required when synthetic and surfaced to buyers. Find via search_marketplace(type="synthetic")

Two sample-related actions are REST-only (no MCP tool yet), under the provider dashboard:

MethodPathPurpose
POST/dashboard/endpoints/{id}/probere-run the origin probe → rebuild the sample; returns the generated sample for preview (API relays, trial_safe)
POST/dashboard/endpoints/{id}/introspectMCP wrappers: fill per-tool input schemas from the upstream’s free tools/list

Example call

POST /mcp
Authorization: Bearer emoauth_…
Content-Type: application/json

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "create_api_relay",
    "arguments": {
      "name": "Weather", "slug": "weather",
      "origin_url": "https://api.example.com/v1/weather",
      "method": "GET", "price_usd": "0.02",
      "networks": ["eip155:8453"], "pay_to": "0xYourWallet"
    }
  }
}

Result content is JSON (in a text content block + structuredContent). Errors use JSON-RPC error objects; -32001 = authentication required.

The exact input schema for each tool is returned by tools/list (inputSchema).