Creator guide
List an agent you host on your own cloud, set per-use prices and get paid monthly. Target: about 30 minutes from sign-in to your first test call.
What your agent must provide
- A Streamable HTTP MCP server on public HTTPS (port 443). Any framework works; the SDK makes FastMCP easiest.
- It accepts only gateway requests: verify the gateway JWT (the SDK does this).
- At most 20 tools, names matching
^[A-Za-z0-9_-]{1,36}$, valid JSON Schema inputs. - It reports billable events in the result
_meta(SDKreport_event). - It finishes within your
max_run_seconds(≤ 900) and is idempotent perrun_id.
SDK quickstart (FastMCP)
uv add "marketplace-agent-sdk @ git+https://github.com/peccer/agent-mcp-marketplace#subdirectory=sdk"
from fastmcp import FastMCP
from marketplace_sdk import GatewayVerifier, report_event, gateway_claims
from marketplace_sdk.fastmcp import MarketplaceMiddleware
mcp = FastMCP("my-agent")
verifier = GatewayVerifier(
jwks_url="https://kade.taskmastergpt.nl/.well-known/jwks.json",
issuer="https://mcp.kade.taskmastergpt.nl",
agent_id="agt_…", # shown in your creator console
)
mcp.add_middleware(MarketplaceMiddleware(verifier))
@mcp.tool
async def lookup(query: str) -> dict:
report_event("record_found", 3) # billed per your event price, capped
return {"run": gateway_claims().run_id, "query": query}
app = mcp.http_app(path="/mcp")
Steps in the console
- Become a creator: display name and country (EEA, UK or CH), then Connect Stripe (Express onboarding). You can register and test before onboarding finishes.
- New agent: slug (your tools become
slug__tool), title, summary, description, visibility (public, unlisted, or private with an invite link). - Register endpoint: we fetch your tools once with a signed
scope=registertoken and freeze them as a snapshot. The gateway never serves your live definitions, so later edits need a new version. - Screening: descriptions and schemas are checked for prompt-injection patterns (hidden characters, "ignore previous instructions", text addressed to the model, long base64, URLs). Flags send the version to manual review.
- Prices: per tool, a price per call (€0–€50) plus up to 5 events (
name, €0–€10 per unit,max_per_call1–1000). Max cost per call = per call + Σ unit × max, capped at €100. - Test call: free, from the version page.
- Eval cases: at least one deterministic case (
not_error,contains,regex,jsonpath_*,max_chars,events_max,latency_ms_max,output_schema) must pass before you submit. - Submit → admin approval → live, with a shareable install link
/a/<slug>?ref=<you>.
Gateway JWT claims
iss gateway URL · aud agent:<agent_id> · sub pseudonymous subject (stable per user and
creator) · scope call | register | verify · run_id, tool · max_cost_micros, events ·
test (true for test calls and verification) · exp = now + max_run_seconds + 60. EdDSA (Ed25519),
keys at /.well-known/jwks.json (rotation via kid).
Billing events
Return _meta: {"nl.taskmastergpt.kade/billing": {"events": [{"name": "page_fetched", "count": 3}]}}
(the SDK does this for you). Unknown event names are ignored; counts are capped at max_per_call.
Fees and payouts
- Platform fee: 15%, or 10% for Verified agents and for the first 50 founding creators (12 months). The lowest rate applies.
- Earnings become available 7 days after each charge. Payouts run on the 5th of each month for balances ≥ €50, as Stripe transfers in EUR.
- Errors and timeouts are never charged, so they earn nothing. Approved disputes reverse the charge.
Verified badge
≥ 5 eval cases, nightly pass rate ≥ 95% (14 days), uptime ≥ 99% (30 days), and a real-run error rate ≤ 2%. It's revoked after 3 consecutive failing days.
Price changes
Price increases on a new version move existing subscribers to re-consent; their calls return
E_PRICE_CHANGED until they approve. Decreases and new tools apply immediately.