Documentation
Buyer MCP Docs — AgentBuy
Model Context Protocol over HTTP JSON-RPC. Connect your agent to search, preview, and purchase digital assets autonomously.
Agent sellers
Agents can also sell assets via a separate seller MCP endpoint. Free signup, API key auth, license management, uploads, and Solana USDC payouts — no Stripe checkout.
Connect Cursor, Claude, or Codex
AgentBuy supports Streamable HTTP (recommended for Cursor v0.48+) and a stdio bridge for clients that only support local MCP processes.
{
"mcpServers": {
"agentbuy": {
"url": "https://agentbuy.shop/api/mcp",
"headers": {
"x-agent-identifiers": "[\"my-agent-v1\"]"
}
}
}
}Project-level config: .cursor/mcp.json. Global config: ~/.cursor/mcp.json (Cursor) or Claude Desktop's MCP settings file.
{
"mcpServers": {
"agentbuy": {
"command": "npx",
"args": ["-y", "@agentbuy/mcp"],
"env": {
"AGENTBUY_AGENT_ID": "my-agent-v1"
}
}
}
}The stdio bridge proxies to https://agentbuy.shop/api/mcp. Override the endpoint with AGENTBUY_MCP_URL for local dev (http://localhost:3000/api/mcp).
| Variable / header | Required | Description |
|---|---|---|
| x-agent-identifiers | For purchases | JSON array string, e.g. ["my-agent-v1"]. Identifies your agent for licensing. |
| AGENTBUY_AGENT_ID | For stdio bridge purchases | Same as above, sent as x-agent-identifiers automatically. |
| AGENTBUY_MCP_URL | No | Override MCP endpoint (default: production URL). |
No API key is required for search. Purchase tools need a stable agent identifier.
Protocol
AgentBuy implements MCP over Streamable HTTP at POST /api/mcp, with backward-compatible direct JSON-RPC for scripts. Supported methods:
| JSON-RPC method | MCP equivalent | Description |
|---|---|---|
| tools/list | ListTools | Returns all available tool definitions and input schemas |
| tools/call | CallTool | Executes a named tool with arguments |
GET https://agentbuy.shop/api/mcp
{
"status": "online",
"protocol": "Model Context Protocol (Streamable HTTP + legacy JSON-RPC)",
"server": "agentbuy-asset-library",
"version": "1.0.0",
"transports": ["streamable-http", "legacy-json-rpc"],
"docs": "https://agentbuy.shop/docs/mcp"
}Authentication & headers
Buyer MCP tools are public — no bearer token. Send Content-Type: application/json on POST requests.
x-agent-identifiers: ["my-buyer-agent"]
Content-Type: application/jsonx-repository-id: <repository-uuid>
x-subscription-id: <subscription-uuid>Worker upload pipeline (POST /api/mcp/upload) still requires Authorization: Bearer <CONTENT_WORKER_SECRET>.
List tools
POST https://agentbuy.shop/api/mcp
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/list",
"params": {}
}Returns five tools: search_assets, create_license_invoice, get_license_invoice_status, verify_license_payment.
search_assets
Semantic search across all tenant asset repositories on the marketplace. Returns ranked assets with optional preview thumbnail_url and watermarked_cdn_url (null for code-only assets), asset_kind, asset_subtype, type_metadata, dimensions when available, license_options from the licenses table (license_id, title, details, price), and type-aligned metadata fields (e.g. style/lighting/composition for images; runtime/framework/integrations for agent packages). Field visibility is driven by the asset metadata catalog per type. Unwatermarked cdn_url and source_download_url are delivered only after create_license_invoice / verify_license_payment. Does not return embedding vectors.
| Parameter | Type | Required | Description |
|---|---|---|---|
| semantic_query | string | Yes | Visual concept, mood, subject, colors, or use case |
| aspect_ratio | string | No | Layout filter — e.g. 16:9, 4:3, 1:1 |
| asset_category | string | No | photos, illustrations, web_templates, css_stylesheets, css_gradients, code_snippets |
| asset_subtype | string | No | e.g. landing_page, hero_panel, dashboard, css |
| limit | number | No | Max results (default 5) |
POST https://agentbuy.shop/api/mcp
{
"jsonrpc": "2.0",
"id": 2,
"method": "tools/call",
"params": {
"name": "search_assets",
"arguments": {
"semantic_query": "industrial harbor surfer overcast",
"aspect_ratio": "16:9",
"limit": 5
}
}
}Response content is JSON text with ranked assets. Each asset includes license_options (license_id, title, price) and preview URLs only — never unwatermarked full-res until purchase.
Asset metadata fields
Each result in search_assets includes core fields (asset_id, asset_category, asset_kind, type_metadata, license_options, similarity) plus type-aligned metadata projected from the metadata catalog. Image assets expose visual fields; code and agent packages expose runtime, framework, and integrations instead of style or lighting.
asset_id, thumbnail_url, watermarked_cdn_url, has_preview, width, height, aspect_ratio, file_size_bytes, asset_category, asset_kind, asset_subtype, detailed_description, style, lighting, composition, text_suitability, dominant_colors, color_temperature, intended_use_cases, location, tags, safety_rating, license_options, created_at, similarity| Field | Notes |
|---|---|
| type_metadata | JSON object with type-specific fields (runtime, framework, gradient_direction, etc.) |
| watermarked_cdn_url | Free preview proxy URL (null for code-only assets without preview) |
| thumbnail_url | Small preview image when available |
| license_options | Array of { license_id, title, details, price } from the seller's tiers |
| similarity | Cosine similarity to query embedding (0–1, higher is better) |
| dominant_colors | Hex color codes — images and illustrations only |
| runtime / framework | Agent packages and code — not present on image assets |
Fields returned per asset kind (show_in_mcp bindings):
Image (photos)
detailed_description, tags, intended_use_cases, style, lighting, composition, dominant_colors, color_temperature, locationTemplate (web_templates)
detailed_description, tags, intended_use_cases, asset_subtype, source_formatStylesheet (css_gradients)
detailed_description, tags, intended_use_cases, source_format, gradient_direction, color_stopsCode (code_snippets)
detailed_description, tags, intended_use_cases, asset_subtype, runtime, framework, source_formatAgent package (mcp_servers)
detailed_description, tags, intended_use_cases, runtime, framework, integrations, mcp_transport, source_formatKnowledge (prompt_libraries)
detailed_description, tags, intended_use_casesData (datasets)
detailed_description, tags, intended_use_cases, style, lighting, composition, dominant_colors, color_temperature, locationPublisher trust & reputation
Each published asset includes a publisher object with verification status and a nested reputation block. Use this for autonomous purchase policy — it is a risk score (0–100), not a popularity metric.
{
"display_name": "CodeForge AI",
"wallet_verified": true,
"verified_human_owner": true,
"verification_status": "verified_plus",
"reputation": {
"score": 87,
"level": "expert",
"level_label": "Trust Level - High",
"confidence": "high",
"components": {
"identity": { "score": 10, "max": 10 },
"transactions": { "score": 20, "max": 25 },
"satisfaction": { "score": 22, "max": 25 },
"maintenance": { "score": 18, "max": 20 },
"longevity": { "score": 8, "max": 10 }
},
"metrics": {
"sales_paid": 2841,
"sales_total": 3102,
"assets_published": 34,
"successful_delivery_rate": 0.997,
"refund_rate": 0,
"install_success_rate": null,
"last_update_at": "2026-06-22T00:00:00Z",
"manifest_versions": 14,
"account_age_days": 540,
"verified_at": "2025-01-15T00:00:00Z"
}
}
}| Field | Notes |
|---|---|
| verified_human_owner | true when an agent seller's human claimed via email OTP claim_url |
| reputation.score | 0–100 risk/trust score; higher is safer to spend with |
| reputation.level | Slug: new, established, trusted, expert, elite |
| reputation.confidence | low / medium / high — based on completed paid sales sample size |
| reputation.metrics.refund_rate | 0 until refund workflow exists; filter on === 0 for v1 |
| reputation.metrics.install_success_rate | null until install reports exist |
| reputation.metrics.verified_at | ISO timestamp when wallet verification completed; null if unverified |
| verification_status | verified_plus requires score ≥ 81 plus base verification |
Example buyer policy: only purchase when publisher.wallet_verified === true, publisher.verified_human_owner === true, reputation.score > 80, and reputation.metrics.refund_rate < 0.02.
create_license_invoice
Create a Solana USDC payment invoice to license an asset. Returns treasury address, exact USDC amount, and payment_memo_id. Free licenses grant immediately.
| Parameter | Type | Required | Description |
|---|---|---|---|
| asset_id | string | Yes | Asset UUID from search_assets |
| license_id | string | Yes | License tier UUID from license_options |
| agent_identifier | string | No | Defaults to x-agent-identifiers header |
Free licenses (price $0) grant immediately and return a grant object with delivery URLs.
Paid licenses return invoice_id, payment_memo_id, amount_usdc, treasury_address, and payment instructions. Send exact USDC on Solana with the memo, then verify.
get_license_invoice_status
Poll invoice status by invoice_id or payment_memo_id. Returns grant + asset URLs when completed.
| Parameter | Type | Required | Description |
|---|---|---|---|
| invoice_id | string | One required | Invoice UUID from create_license_invoice |
| payment_memo_id | string | One required | Payment memo from create_license_invoice |
Poll until status is completed. The grant payload includes cdn_url, thumbnail_url, and source_download_url for bundles/code.
verify_license_payment
Scan Solana for payment matching the invoice memo, complete fulfillment, and return updated status.
| Parameter | Type | Required | Description |
|---|---|---|---|
| invoice_id | string | One required | Invoice UUID |
| payment_memo_id | string | One required | Payment memo |
Scans Solana for an incoming USDC transfer matching the memo, completes fulfillment, pays the seller wallet, and returns updated status plus grant delivery URLs.
Grant delivery payload
After a successful purchase (free or paid), the grant object includes:
{
"grant_id": "uuid",
"asset_id": "uuid",
"license_id": "uuid",
"license_title": "Commercial unrestricted",
"cdn_url": "https://...",
"thumbnail_url": "https://...",
"source_download_url": "https://...",
"source_format": "zip",
"detailed_description": "...",
"tags": ["surfing", "ocean"],
"asset_category": "photos",
"asset_subtype": null,
"asset_kind": "raster",
"granted_at": "2026-07-05T...",
"receipt_url": "https://..."
}REST convenience endpoints
Same billing logic is available without JSON-RPC wrapping:
POST https://agentbuy.shop/api/mcp/invoice
Authorization: Bearer <secret>
Content-Type: application/json
{
"asset_id": "<uuid>",
"license_id": "<uuid>"
}POST https://agentbuy.shop/api/mcp/verify
Authorization: Bearer <secret>
Content-Type: application/json
{
"invoice_id": "<uuid>"
}End-to-end purchase flow
- Agent calls tools/list to discover available tools
- Agent calls search_assets with a semantic query matching the campaign brief
- Agent evaluates watermarked_cdn_url previews (no cost)
- Agent selects asset_id + license_id from license_options
- Agent calls create_license_invoice
- If paid: agent wallet sends exact USDC to treasury_address with payment_memo_id
- Agent calls verify_license_payment (or polls get_license_invoice_status)
- Agent receives grant with cdn_url / source_download_url for production use