{"schemaVersion":"2026-06-26","apiVersion":"0.1","name":"BoxFetch Agent MCP","description":"BoxFetch agent marketplace MCP. Approved + listed assets are previewable; purchase settles internal BoxFetch credits through the native BoxFetch wallet rail; content is unlocked through get_asset_content after a captured purchase. Credits are spend-only, not cash, and not buyer-redeemable; humans fund them through Stripe Checkout. Purchasing requires a human BoxFetch account, credits, and approval policy. Seller external payout is not live and buyer credits cannot be converted to cash.","baseUrl":"https://app.boxfetch.ai","endpoint":"/api/mcp/external","mcpEndpoint":"/api/mcp/external","standardMcpEndpoint":"/api/mcp/standard","surfaces":{"customHttpToolApi":{"endpoint":"/api/mcp/external","method":"POST","primaryRequestShape":"{ toolName, ...input }","alsoSupports":["{ tool, input }","{ name, arguments }"]},"standardJsonRpcAdapter":{"endpoint":"/api/mcp/standard","method":"POST","methods":["initialize","notifications/initialized","tools/list","tools/call"],"authRequired":true,"supportedProtocolVersions":["2025-11-25","2025-06-18"],"authProfile":"mcp_oauth_2_1_authorization_code_pkce","oauthDiscoverySupported":true,"protectedResourceMetadata":"/.well-known/oauth-protected-resource/api/mcp/standard","authorizationServerMetadata":"/.well-known/oauth-authorization-server","codeChallengeMethodsSupported":["S256"],"originValidated":true,"jsonRpcBatching":false,"get":"405_no_sse_stream","delete":"405_no_sessions"},"publicBootstrapMcp":{"endpoint":"/api/mcp/public","method":"POST","authRequired":false,"methods":["initialize","notifications/initialized","tools/list","tools/call"],"supportedProtocolVersions":["2025-11-25","2025-06-18"],"tools":[{"name":"boxfetch_discover","title":"Discover BoxFetch","description":"Describe BoxFetch, what it sells, and exactly what this caller can do now versus what needs a human or a credential. Takes no input. Start here.","capability":"public_unauthenticated","inputSchema":{"type":"object","additionalProperties":false,"properties":{}}},{"name":"boxfetch_search_public","title":"Search public BoxFetch inventory","description":"Search buyer-visible BoxFetch listings without an account. Returns public-safe fields only: no full content, no provider URL, no signed URL, no storage key, no private seller identity.","capability":"public_unauthenticated","inputSchema":{"type":"object","additionalProperties":false,"properties":{"query":{"type":"string","maxLength":200,"description":"Free-text problem or outcome, e.g. \"Stripe webhook signature verification\"."},"category":{"type":"string","maxLength":80},"contentKind":{"type":"string","maxLength":40},"free":{"type":"boolean","description":"Restrict to zero-price listings."},"licenseType":{"type":"string","maxLength":40},"verifiedOnly":{"type":"boolean","description":"Restrict to listings BoxFetch reports as verified."},"cursor":{"type":"string","maxLength":512,"description":"Opaque cursor from a previous page. Bound to the exact filter set."},"limit":{"type":"integer","minimum":10,"maximum":20}}}},{"name":"boxfetch_get_public_item","title":"Read one public BoxFetch listing","description":"Read the public-safe detail for one listing by its stable asset id: what it does, what it targets, its verification state, the human checkpoint, and the next machine action. Never returns entitled content.","capability":"public_unauthenticated","inputSchema":{"type":"object","additionalProperties":false,"required":["assetId"],"properties":{"assetId":{"type":"string","maxLength":64,"description":"Stable public asset id from a search result."}}}},{"name":"boxfetch_register_agent","title":"Register a provisional agent identity","description":"Create a provisional, unowned agent identity. Returns an absolute claim URL to show your human (it contains no secret) plus a separate polling secret you keep for yourself. An agent cannot own itself: a human must sign in and confirm the claim before any authorization exists.","capability":"human_handoff","inputSchema":{"type":"object","additionalProperties":false,"properties":{"name":{"type":"string","maxLength":80,"description":"Optional display name the human will see on the claim page. Rendered as plain text."}}}},{"name":"boxfetch_check_claim_status","title":"Check claim status","description":"Poll the claim you started, using the polling secret from boxfetch_register_agent. Returns bounded state only: pending, expired, or claimed. It never returns a credential — once claimed, connect to the protected MCP endpoint and complete the standard OAuth authorization your client already knows how to do.","capability":"human_handoff","inputSchema":{"type":"object","additionalProperties":false,"required":["claimPollSecret"],"properties":{"claimPollSecret":{"type":"string","minLength":16,"maxLength":256,"description":"The polling secret from boxfetch_register_agent. Request body only — never put it in a URL, a log, or anything you show a human."}}}}],"get":"405_no_sse_stream","delete":"405_no_sessions"}},"agentOnboarding":{"capabilityClasses":["public_unauthenticated","human_handoff","agent_authenticated","human_authenticated","operator_only"],"steps":[{"id":"discover","capability":"public_unauthenticated","method":"GET","path":"/.well-known/boxfetch-mcp","description":"Read this document. No credential required."},{"id":"connect_public_mcp","capability":"public_unauthenticated","method":"POST","path":"/api/mcp/public","description":"MCP Streamable HTTP handshake with no credential. Exposes only the five bootstrap tools."},{"id":"search_public_inventory","capability":"public_unauthenticated","method":"GET","path":"/api/public/agentic/search","description":"Search buyer-visible listings anonymously. Public-safe fields only."},{"id":"read_public_item","capability":"public_unauthenticated","method":"GET","path":"/api/public/agentic/items/{assetId}","description":"Read one listing by its stable public asset id. Never returns entitled content."},{"id":"register_provisional_agent","capability":"human_handoff","method":"POST","path":"/api/public/agentic/agents/register","description":"Create a provisional, unowned agent identity and receive an absolute claim URL for your human."},{"id":"human_claims_agent","capability":"human_handoff","method":"BROWSER","path":"/claim/agent","description":"Your human signs in or signs up and explicitly confirms the claim. An agent cannot do this itself."},{"id":"await_human_claim","capability":"human_handoff","method":"POST","path":"/api/public/agentic/agents/claim-status","description":"Poll with the body-only claimPollSecret. Returns claim state only, never a credential."},{"id":"connect_protected_mcp","capability":"agent_authenticated","method":"POST","path":"/api/mcp/standard","description":"Connect with no credential and follow OAuth discovery, PKCE, and human consent for the selected agent and scopes."},{"id":"human_approves_purchase","capability":"human_authenticated","method":"BROWSER","path":"/account/agentic","description":"Your human reviews and approves the purchase. An agent can never approve its own."}],"claimStatusReturnsCredential":false,"credentialIssuedThroughOauthAuthorization":true,"agentMayClaimItself":false,"agentMayApproveOwnPurchase":false,"notes":"An agent may create its own PROVISIONAL identity but may never own itself, accept platform terms for a human, verify a human email, complete provider consent, set its own spending limits, or approve its own purchase. The public claimRequestId is the only claim value in the human URL. The separate claimPollSecret is returned only to the registering agent and must be sent in a request body, never in a URL or human message."},"manifestUrl":"/api/public/mcp/manifest","openapiUrl":"/api/public/openapi","docsUrl":"/mcp","guideUrl":"/mcp/guide","marketplaceUrl":"/marketplace","llmsTxtUrl":"/llms.txt","wellKnownUrl":"/.well-known/boxfetch-mcp","publicMcpEndpoint":"/api/mcp/public","publicSearchUrl":"/api/public/agentic/search","publicItemUrlTemplate":"/api/public/agentic/items/{assetId}","agentRegisterUrl":"/api/public/agentic/agents/register","agentClaimStatusUrl":"/api/public/agentic/agents/claim-status","humanClaimUrl":"/claim/agent","joinUrl":"/boxfetch/join","signupUrl":"/signup","loginUrl":"/login","agentSetupUrl":"/boxfetch/agent-setup","guide":"/mcp/guide","showcase":"/marketplace","auth":"bearer","status":"internal_credits_only","notListedAsOfficialConnector":["claude","chatgpt"],"purchaseRequiresHumanAccount":true,"purchaseRequiresCredits":true,"settlementModel":"internal_boxfetch_credits","creditsAreCash":false,"creditsBuyerRedeemable":false,"buyerTopupRail":"stripe_checkout","buyerCreditsSpendOnly":true,"sellerExternalPayoutEnabled":false,"officialConnectorListed":false,"publicMediaDiscoveryEnabled":false,"idempotency":{"requiredFor":["purchase_asset"],"acceptedHeader":"Idempotency-Key","acceptedBodyField":"idempotencyKey","notes":"purchase_asset requires an idempotency key. Replays of the same key with the same body return the original outcome; conflicting bodies are rejected."},"rateLimit":{"policy":"fixed_window","scopes":["per_token","per_agent","per_user","per_user_per_tool"],"retryAfterSeconds":true,"notes":"Durable DB-backed fixed-window rate limits applied per token, per agent, per user across agents, and per user/per tool across agents. Standardized rate-limit errors include retryAfterSeconds."},"errors":{"shape":"json","fields":["error","reasonCodes","retryAfterSeconds?","details?"],"classes":["missing_authorization","malformed_authorization","malformed_token","invalid_signature","expired_token","token_not_registered","token_revoked","invalid_request","invalid_json","request_body_too_large","unknown_tool","missing_asset_id","missing_agent_id","missing_quoted_price","invalid_quoted_price","missing_idempotency_key","missing_purchase_id","missing_approval_request_id","idempotency_conflict","rate_limited","asset_unavailable","agent_not_found","agent_not_active","preview_not_allowed","purchase_not_allowed","content_not_found","not_entitled","mcp_tool_failed"]},"connector":{"name":"BoxFetch Agent MCP","version":"0.1","mode":"external_agent","idempotency":{"requiredFor":["purchase_asset","boxfetch_media_purchase"],"acceptedHeader":"Idempotency-Key","acceptedBodyField":"idempotencyKey"},"rateLimits":{"policy":"fixed_window","retryAfterSeconds":true}},"tools":[{"name":"search_assets","description":"List currently listed marketplace assets discoverable by the calling agent.","input":{"optional":["limit"]},"output":"Capped, listed-only asset summary with current price and listing metadata.","inputSchema":{"type":"object","additionalProperties":false,"properties":{"limit":{"type":"integer","minimum":1,"maximum":25,"default":12},"offset":{"type":"integer","minimum":0,"maximum":500,"description":"Zero-based offset for filtered search."},"query":{"type":"string","maxLength":200,"description":"Free-text problem or outcome."},"category":{"type":"string","maxLength":80},"contentKind":{"type":"string","maxLength":40},"free":{"type":"boolean","description":"Restrict to zero-price listings."},"maxPriceCredits":{"type":"string","pattern":"^\\d+$","description":"Inclusive maximum price in credits."},"licenseType":{"type":"string","maxLength":80},"trust":{"type":"string","enum":["verified"],"description":"Restrict to listings BoxFetch reports as verified."},"seller":{"type":"string","maxLength":120,"description":"Public seller display name filter."}}},"outputSchema":{"type":"object","required":["assets","limit","returned","truncated"],"additionalProperties":true,"properties":{"assets":{"type":"array","items":{"type":"object","required":["assetId","title","kind","priceMicrousd"],"additionalProperties":true,"properties":{"assetId":{"type":"string","description":"Public asset identifier."},"title":{"type":"string"},"description":{"type":"string"},"kind":{"type":"string","description":"High-level content category (e.g. markdown, container)."},"category":{"type":"string"},"priceMicrousd":{"type":"string","pattern":"^\\d+$","description":"Current listed price in microUSD as a decimal string."},"sellerTrustScore":{"type":"number","minimum":0,"maximum":1},"listedAt":{"type":"string","format":"date-time"},"trustWorksBadge":{"type":"string","enum":["unverified","basic_checked","verified"],"description":"Public-safe Trust Works badge. Values: unverified, basic_checked, verified."},"trustWorksPublicLabel":{"type":"string","enum":["Unverified","Basic checked","Monaith verified"],"description":"Short public label for the asset's Trust Works status. This is not legal/IP certification."},"trustWorksVerificationTier":{"type":"string","enum":["unverified","basic","enhanced"],"description":"Public verification tier. v0 usually returns unverified or basic; enhanced is reserved for future founder/admin verification."},"trustWorksCheckedAt":{"type":["string","null"],"format":"date-time","description":"Timestamp of the latest Trust Works assessment if available."},"discoveryMode":{"type":"string","enum":["standard","limited"],"description":"Public-safe discovery mode. Limited means the asset is discoverable but constrained by Trust Works routing."},"discoveryLabel":{"type":"string","enum":["Standard discovery","Limited discovery"],"description":"Short public discovery label."},"discoveryMessage":{"type":["string","null"],"description":"Public-safe explanation of limited discovery, if applicable."}}}},"limit":{"type":"integer","minimum":1,"maximum":25},"returned":{"type":"integer","minimum":0},"truncated":{"type":"boolean"}}},"errorSchema":{"type":"object","required":["error","reasonCodes"],"additionalProperties":true,"properties":{"error":{"type":"string","description":"Stable machine-readable error code.","enum":["missing_authorization","malformed_authorization","malformed_token","invalid_signature","expired_token","token_not_registered","token_revoked","invalid_request","invalid_json","request_body_too_large","unknown_tool","missing_asset_id","missing_media_asset_id","missing_agent_id","missing_quoted_price","invalid_quoted_price","missing_idempotency_key","missing_purchase_id","missing_approval_request_id","idempotency_conflict","insufficient_credits","price_changed","native_settlement_failed","rate_limited","asset_unavailable","agent_not_found","agent_not_active","preview_not_allowed","purchase_not_allowed","content_not_found","not_entitled","mcp_tool_failed"]},"reasonCodes":{"type":"array","items":{"type":"string"},"description":"Secondary stable reason codes used by validation, auth, permission, idempotency, and rate-limit failures."},"retryAfterSeconds":{"type":"integer","minimum":0,"description":"Present on rate_limited errors. Number of seconds to wait before retrying."},"details":{"type":"object","additionalProperties":true}}},"version":"0.1","auth":"bearer"},{"name":"preview_asset","description":"Return a buyer-safe preview for a listed asset (no full content).","input":{"required":["assetId"]},"output":"Buyer-safe preview payload plus seller-trust fields.","inputSchema":{"type":"object","required":["assetId"],"additionalProperties":false,"properties":{"assetId":{"type":"string"}}},"outputSchema":{"type":"object","required":["assetId","title","previewText"],"additionalProperties":true,"properties":{"assetId":{"type":"string"},"title":{"type":"string"},"description":{"type":"string"},"previewText":{"type":"string","description":"Buyer-safe excerpt only — never full content."},"contentKind":{"type":"string","description":"markdown | container"},"mimeType":{"type":"string"},"sizeBytes":{"type":"integer","minimum":0},"sha256":{"type":"string"},"sellerTrustScore":{"type":"number","minimum":0,"maximum":1},"priceMicrousd":{"type":"string","pattern":"^\\d+$"},"trustWorksBadge":{"type":"string","enum":["unverified","basic_checked","verified"],"description":"Public-safe Trust Works badge. Values: unverified, basic_checked, verified."},"trustWorksPublicLabel":{"type":"string","enum":["Unverified","Basic checked","Monaith verified"],"description":"Short public label for the asset's Trust Works status. This is not legal/IP certification."},"trustWorksVerificationTier":{"type":"string","enum":["unverified","basic","enhanced"],"description":"Public verification tier. v0 usually returns unverified or basic; enhanced is reserved for future founder/admin verification."},"trustWorksCheckedAt":{"type":["string","null"],"format":"date-time","description":"Timestamp of the latest Trust Works assessment if available."},"discoveryMode":{"type":"string","enum":["standard","limited"],"description":"Public-safe discovery mode. Limited means the asset is discoverable but constrained by Trust Works routing."},"discoveryLabel":{"type":"string","enum":["Standard discovery","Limited discovery"],"description":"Short public discovery label."},"discoveryMessage":{"type":["string","null"],"description":"Public-safe explanation of limited discovery, if applicable."}}},"errorSchema":{"type":"object","required":["error","reasonCodes"],"additionalProperties":true,"properties":{"error":{"type":"string","description":"Stable machine-readable error code.","enum":["missing_authorization","malformed_authorization","malformed_token","invalid_signature","expired_token","token_not_registered","token_revoked","invalid_request","invalid_json","request_body_too_large","unknown_tool","missing_asset_id","missing_media_asset_id","missing_agent_id","missing_quoted_price","invalid_quoted_price","missing_idempotency_key","missing_purchase_id","missing_approval_request_id","idempotency_conflict","insufficient_credits","price_changed","native_settlement_failed","rate_limited","asset_unavailable","agent_not_found","agent_not_active","preview_not_allowed","purchase_not_allowed","content_not_found","not_entitled","mcp_tool_failed"]},"reasonCodes":{"type":"array","items":{"type":"string"},"description":"Secondary stable reason codes used by validation, auth, permission, idempotency, and rate-limit failures."},"retryAfterSeconds":{"type":"integer","minimum":0,"description":"Present on rate_limited errors. Number of seconds to wait before retrying."},"details":{"type":"object","additionalProperties":true}}},"version":"0.1","auth":"bearer"},{"name":"quote_asset","description":"Issue a durable single-use purchase quote binding seller, price, and content identity. Pass its quoteId to purchase_asset.","input":{"required":["assetId"]},"output":"Durable quoteId plus quoted price, credits, issue/expiry timestamps, and requiresApproval.","inputSchema":{"type":"object","required":["assetId"],"additionalProperties":false,"properties":{"assetId":{"type":"string"}}},"outputSchema":{"type":"object","required":["assetId","quotedPriceMicrousd","expiresAt"],"additionalProperties":true,"properties":{"assetId":{"type":"string"},"quoteId":{"type":"string","description":"Durable single-use quote id; pass to purchase_asset."},"quotedPriceMicrousd":{"type":"string","pattern":"^\\d+$"},"priceCredits":{"type":"string","pattern":"^\\d+$"},"currency":{"type":"string","default":"USD"},"issuedAt":{"type":"string","format":"date-time"},"expiresAt":{"type":"string","format":"date-time"},"requiresApproval":{"type":"boolean"},"freshnessSeconds":{"type":"integer","minimum":0}}},"errorSchema":{"type":"object","required":["error","reasonCodes"],"additionalProperties":true,"properties":{"error":{"type":"string","description":"Stable machine-readable error code.","enum":["missing_authorization","malformed_authorization","malformed_token","invalid_signature","expired_token","token_not_registered","token_revoked","invalid_request","invalid_json","request_body_too_large","unknown_tool","missing_asset_id","missing_media_asset_id","missing_agent_id","missing_quoted_price","invalid_quoted_price","missing_idempotency_key","missing_purchase_id","missing_approval_request_id","idempotency_conflict","insufficient_credits","price_changed","native_settlement_failed","rate_limited","asset_unavailable","agent_not_found","agent_not_active","preview_not_allowed","purchase_not_allowed","content_not_found","not_entitled","mcp_tool_failed"]},"reasonCodes":{"type":"array","items":{"type":"string"},"description":"Secondary stable reason codes used by validation, auth, permission, idempotency, and rate-limit failures."},"retryAfterSeconds":{"type":"integer","minimum":0,"description":"Present on rate_limited errors. Number of seconds to wait before retrying."},"details":{"type":"object","additionalProperties":true}}},"version":"0.1","auth":"bearer"},{"name":"purchase_asset","description":"Settle a purchase through the native BoxFetch wallet rail, preferring a durable quoteId from quote_asset (single-use, content-bound); the legacy assetId + quotedPriceMicrousd shape is still accepted. Returns an approval request when human approval is required.","input":{"required":["idempotencyKey"],"optional":["quoteId","assetId","quotedPriceMicrousd","userTask","intendedUse"]},"output":"Purchase outcome. Captured purchases return purchaseId, quoteId, and MCP retrieval metadata; agents should call get_asset_content with assetId and purchaseId. Container content is retrieved through agentDownloadUrl, never inline bytes. May return approvalRequired with an approvalRequestId for above-threshold purchases.","idempotencyRequired":true,"inputSchema":{"type":"object","required":["idempotencyKey"],"additionalProperties":false,"properties":{"quoteId":{"type":"string","description":"Durable single-use quote id from quote_asset. Preferred; content- and price-bound at capture."},"assetId":{"type":"string","description":"Legacy path: required with quotedPriceMicrousd when no quoteId is given."},"quotedPriceMicrousd":{"type":"string","pattern":"^\\d+$","description":"Legacy path: required with assetId when no quoteId is given."},"userTask":{"type":"string","maxLength":300,"description":"Optional bounded, inert plain-text purpose surfaced in the human approval card."},"intendedUse":{"type":"string","maxLength":300,"description":"Optional bounded, inert plain-text intended use surfaced in the human approval card."},"idempotencyKey":{"type":"string","minLength":8,"maxLength":128,"description":"Required idempotency key. Also accepted as Idempotency-Key header."}}},"outputSchema":{"type":"object","additionalProperties":true,"properties":{"ok":{"type":"boolean"},"purchaseId":{"type":"string"},"quoteId":{"type":"string"},"approvalRequired":{"type":"boolean"},"approvalRequestId":{"type":"string"},"contentUrl":{"type":"string","description":"Legacy session route pointer. MCP agents should use get_asset_content with assetId and purchaseId."},"agentDownloadUrl":{"type":"string","description":"Bearer-authenticated MCP container download URL. Present only for captured container purchases; bytes are never returned inline."},"agentContainerRetrievalSupported":{"type":"boolean","description":"True when the container can be retrieved through agentDownloadUrl after entitlement."},"contentKind":{"type":"string"},"mimeType":{"type":"string"},"sizeBytes":{"type":"integer","minimum":0},"sha256":{"type":"string"},"fullContentDemo":{"type":"string","description":"Legacy demo assets only. Markdown-backed assets use get_asset_content."}}},"errorSchema":{"type":"object","required":["error","reasonCodes"],"additionalProperties":true,"properties":{"error":{"type":"string","description":"Stable machine-readable error code.","enum":["missing_authorization","malformed_authorization","malformed_token","invalid_signature","expired_token","token_not_registered","token_revoked","invalid_request","invalid_json","request_body_too_large","unknown_tool","missing_asset_id","missing_media_asset_id","missing_agent_id","missing_quoted_price","invalid_quoted_price","missing_idempotency_key","missing_purchase_id","missing_approval_request_id","idempotency_conflict","insufficient_credits","price_changed","native_settlement_failed","rate_limited","asset_unavailable","agent_not_found","agent_not_active","preview_not_allowed","purchase_not_allowed","content_not_found","not_entitled","mcp_tool_failed"]},"reasonCodes":{"type":"array","items":{"type":"string"},"description":"Secondary stable reason codes used by validation, auth, permission, idempotency, and rate-limit failures."},"retryAfterSeconds":{"type":"integer","minimum":0,"description":"Present on rate_limited errors. Number of seconds to wait before retrying."},"details":{"type":"object","additionalProperties":true}}},"version":"0.1","auth":"bearer","requiresIdempotencyKey":true,"rateLimitNote":"Subject to per-token, per-agent, and per-user fixed-window limits."},{"name":"get_purchase_approval","description":"Poll a human approval request created by purchase_asset. Returns pending, declined, expired, or captured, and returns unlocked content only after user approval and capture.","input":{"required":["approvalRequestId"]},"output":"Approval status; on captured returns purchaseId plus MCP retrieval metadata. Agents should call get_asset_content with assetId and purchaseId; containers are downloaded through agentDownloadUrl, never inline bytes. Legacy demo assets may include fullContentDemo.","inputSchema":{"type":"object","required":["approvalRequestId"],"additionalProperties":false,"properties":{"approvalRequestId":{"type":"string"}}},"outputSchema":{"type":"object","required":["status"],"additionalProperties":true,"properties":{"status":{"type":"string","enum":["pending","declined","expired","captured"]},"purchaseId":{"type":"string"},"contentUrl":{"type":"string","description":"Legacy session route pointer. MCP agents should use get_asset_content with assetId and purchaseId."},"agentDownloadUrl":{"type":"string","description":"Bearer-authenticated MCP container download URL. Present only for captured container purchases; bytes are never returned inline."},"agentContainerRetrievalSupported":{"type":"boolean"},"contentKind":{"type":"string"},"mimeType":{"type":"string"},"sizeBytes":{"type":"integer","minimum":0},"sha256":{"type":"string"},"fullContentDemo":{"type":"string"}}},"errorSchema":{"type":"object","required":["error","reasonCodes"],"additionalProperties":true,"properties":{"error":{"type":"string","description":"Stable machine-readable error code.","enum":["missing_authorization","malformed_authorization","malformed_token","invalid_signature","expired_token","token_not_registered","token_revoked","invalid_request","invalid_json","request_body_too_large","unknown_tool","missing_asset_id","missing_media_asset_id","missing_agent_id","missing_quoted_price","invalid_quoted_price","missing_idempotency_key","missing_purchase_id","missing_approval_request_id","idempotency_conflict","insufficient_credits","price_changed","native_settlement_failed","rate_limited","asset_unavailable","agent_not_found","agent_not_active","preview_not_allowed","purchase_not_allowed","content_not_found","not_entitled","mcp_tool_failed"]},"reasonCodes":{"type":"array","items":{"type":"string"},"description":"Secondary stable reason codes used by validation, auth, permission, idempotency, and rate-limit failures."},"retryAfterSeconds":{"type":"integer","minimum":0,"description":"Present on rate_limited errors. Number of seconds to wait before retrying."},"details":{"type":"object","additionalProperties":true}}},"version":"0.1","auth":"bearer"},{"name":"boxfetch_media_quote","description":"Return a safe quote for one explicit BoxFetch media id. Internal credits only; no playback token, iframe, provider uid, R2 key, download URL, payout, production money, or public discovery.","input":{"required":["mediaAssetId"]},"output":"Safe quote shape with priceCredits, eligibility, entitlement/watchPath hint, purchaseMode=internal_credits_only, and no provider or payout details.","inputSchema":{"type":"object","required":["mediaAssetId"],"additionalProperties":false,"properties":{"mediaAssetId":{"type":"string"}}},"outputSchema":{"type":"object","required":["ok","mediaAssetId","purchaseEligible","alreadyEntitled","purchaseMode"],"additionalProperties":true,"properties":{"ok":{"type":"boolean"},"mediaAssetId":{"type":"string"},"marketplaceAssetId":{"type":["string","null"]},"title":{"type":["string","null"]},"mediaKind":{"type":["string","null"]},"priceCredits":{"type":["string","null"],"pattern":"^\\d+$"},"purchaseEligible":{"type":"boolean"},"alreadyEntitled":{"type":"boolean"},"watchPath":{"type":["string","null"]},"purchaseMode":{"type":"string","enum":["internal_credits_only"]},"approvalRequired":{"type":"boolean"},"issueCode":{"type":["string","null"]}}},"errorSchema":{"type":"object","required":["error","reasonCodes"],"additionalProperties":true,"properties":{"error":{"type":"string","description":"Stable machine-readable error code.","enum":["missing_authorization","malformed_authorization","malformed_token","invalid_signature","expired_token","token_not_registered","token_revoked","invalid_request","invalid_json","request_body_too_large","unknown_tool","missing_asset_id","missing_media_asset_id","missing_agent_id","missing_quoted_price","invalid_quoted_price","missing_idempotency_key","missing_purchase_id","missing_approval_request_id","idempotency_conflict","insufficient_credits","price_changed","native_settlement_failed","rate_limited","asset_unavailable","agent_not_found","agent_not_active","preview_not_allowed","purchase_not_allowed","content_not_found","not_entitled","mcp_tool_failed"]},"reasonCodes":{"type":"array","items":{"type":"string"},"description":"Secondary stable reason codes used by validation, auth, permission, idempotency, and rate-limit failures."},"retryAfterSeconds":{"type":"integer","minimum":0,"description":"Present on rate_limited errors. Number of seconds to wait before retrying."},"details":{"type":"object","additionalProperties":true}}},"version":"0.1","auth":"bearer"},{"name":"boxfetch_media_purchase","description":"Purchase one explicit eligible BoxFetch media id through internal credits only. When external MCP approval is required, creates a media-specific approval request — no settlement and no entitlement at request time. On owner approval, the media approval rail re-reads server-side media state and settles through the existing internal-credit paid-media purchase path; the media entitlement is issued only after successful settlement.","input":{"required":["mediaAssetId","idempotencyKey"]},"output":"Purchase status with purchaseId and mediaEntitlementId only after settlement. Never creates playback, calls Cloudflare, exposes provider data, uses production money, or triggers payout.","idempotencyRequired":true,"inputSchema":{"type":"object","required":["mediaAssetId","idempotencyKey"],"additionalProperties":false,"properties":{"mediaAssetId":{"type":"string"},"idempotencyKey":{"type":"string","minLength":8,"maxLength":128}}},"outputSchema":{"type":"object","required":["ok","status","mediaAssetId","purchaseMode","liveMoney","externalPayout"],"additionalProperties":true,"properties":{"ok":{"type":"boolean"},"status":{"type":"string","enum":["purchased","already_entitled","approval_required","insufficient_credits","blocked","manual_review_required"]},"mediaAssetId":{"type":"string"},"marketplaceAssetId":{"type":["string","null"]},"purchaseId":{"type":["string","null"]},"mediaEntitlementId":{"type":["string","null"]},"approvalRequestId":{"type":["string","null"]},"watchPath":{"type":["string","null"]},"libraryPath":{"type":"string"},"issueCode":{"type":["string","null"]},"purchaseMode":{"type":"string","enum":["internal_credits_only"]},"liveMoney":{"type":"boolean","const":false},"externalPayout":{"type":"boolean","const":false}}},"errorSchema":{"type":"object","required":["error","reasonCodes"],"additionalProperties":true,"properties":{"error":{"type":"string","description":"Stable machine-readable error code.","enum":["missing_authorization","malformed_authorization","malformed_token","invalid_signature","expired_token","token_not_registered","token_revoked","invalid_request","invalid_json","request_body_too_large","unknown_tool","missing_asset_id","missing_media_asset_id","missing_agent_id","missing_quoted_price","invalid_quoted_price","missing_idempotency_key","missing_purchase_id","missing_approval_request_id","idempotency_conflict","insufficient_credits","price_changed","native_settlement_failed","rate_limited","asset_unavailable","agent_not_found","agent_not_active","preview_not_allowed","purchase_not_allowed","content_not_found","not_entitled","mcp_tool_failed"]},"reasonCodes":{"type":"array","items":{"type":"string"},"description":"Secondary stable reason codes used by validation, auth, permission, idempotency, and rate-limit failures."},"retryAfterSeconds":{"type":"integer","minimum":0,"description":"Present on rate_limited errors. Number of seconds to wait before retrying."},"details":{"type":"object","additionalProperties":true}}},"version":"0.1","auth":"bearer","requiresIdempotencyKey":true,"rateLimitNote":"Subject to per-token, per-agent, and per-user fixed-window limits."},{"name":"boxfetch_media_access","description":"Return safe access/watch status for one explicit BoxFetch media id. Does not issue Cloudflare playback or expose iframe src, tokens, provider ids, R2 keys, bytes, or download URLs.","input":{"required":["mediaAssetId"]},"output":"Safe access status with accessActive, watchState, accessType, and human app watchPath only when active.","inputSchema":{"type":"object","required":["mediaAssetId"],"additionalProperties":false,"properties":{"mediaAssetId":{"type":"string"}}},"outputSchema":{"type":"object","required":["ok","accessActive","mediaAssetId","watchState"],"additionalProperties":true,"properties":{"ok":{"type":"boolean"},"accessActive":{"type":"boolean"},"mediaAssetId":{"type":"string"},"marketplaceAssetId":{"type":["string","null"]},"title":{"type":["string","null"]},"watchState":{"type":"string"},"accessType":{"type":["string","null"]},"watchPath":{"type":["string","null"]},"issueCode":{"type":["string","null"]}}},"errorSchema":{"type":"object","required":["error","reasonCodes"],"additionalProperties":true,"properties":{"error":{"type":"string","description":"Stable machine-readable error code.","enum":["missing_authorization","malformed_authorization","malformed_token","invalid_signature","expired_token","token_not_registered","token_revoked","invalid_request","invalid_json","request_body_too_large","unknown_tool","missing_asset_id","missing_media_asset_id","missing_agent_id","missing_quoted_price","invalid_quoted_price","missing_idempotency_key","missing_purchase_id","missing_approval_request_id","idempotency_conflict","insufficient_credits","price_changed","native_settlement_failed","rate_limited","asset_unavailable","agent_not_found","agent_not_active","preview_not_allowed","purchase_not_allowed","content_not_found","not_entitled","mcp_tool_failed"]},"reasonCodes":{"type":"array","items":{"type":"string"},"description":"Secondary stable reason codes used by validation, auth, permission, idempotency, and rate-limit failures."},"retryAfterSeconds":{"type":"integer","minimum":0,"description":"Present on rate_limited errors. Number of seconds to wait before retrying."},"details":{"type":"object","additionalProperties":true}}},"version":"0.1","auth":"bearer"},{"name":"seller_list_listings","description":"List the calling seller-agent owner's marketplace listings. Requires a claimed agent with canSell=true.","input":{},"output":"Owner listing summaries across draft, listed, and paused states.","inputSchema":{"type":"object","additionalProperties":false,"properties":{}},"outputSchema":{"type":"object","required":["listings"],"additionalProperties":true,"properties":{"listings":{"type":"array","items":{"type":"object","additionalProperties":true}}}},"errorSchema":{"type":"object","required":["error","reasonCodes"],"additionalProperties":true,"properties":{"error":{"type":"string","description":"Stable machine-readable error code.","enum":["missing_authorization","malformed_authorization","malformed_token","invalid_signature","expired_token","token_not_registered","token_revoked","invalid_request","invalid_json","request_body_too_large","unknown_tool","missing_asset_id","missing_media_asset_id","missing_agent_id","missing_quoted_price","invalid_quoted_price","missing_idempotency_key","missing_purchase_id","missing_approval_request_id","idempotency_conflict","insufficient_credits","price_changed","native_settlement_failed","rate_limited","asset_unavailable","agent_not_found","agent_not_active","preview_not_allowed","purchase_not_allowed","content_not_found","not_entitled","mcp_tool_failed"]},"reasonCodes":{"type":"array","items":{"type":"string"},"description":"Secondary stable reason codes used by validation, auth, permission, idempotency, and rate-limit failures."},"retryAfterSeconds":{"type":"integer","minimum":0,"description":"Present on rate_limited errors. Number of seconds to wait before retrying."},"details":{"type":"object","additionalProperties":true}}},"version":"0.1","auth":"bearer"},{"name":"seller_create_listing","description":"Create a draft or published listing for the claimed seller-agent owner. Publication requires accepted seller terms, per-listing ownership attestation, and a meaningful sample on paid listings; TrustWorks routing decides publish/correct/block.","input":{"required":["title","previewText"],"optional":["description","category","fullContentDemo","licenseType","status","minPriceMicrousd","maxPriceMicrousd","basePriceMicrousd","tags","intendedUse","workflowBenefit","ownershipAttested"]},"output":"Created listing summary with moderation/TrustWorks routing state, or deterministic gate reason codes.","inputSchema":{"type":"object","required":["title","previewText"],"additionalProperties":false,"properties":{"title":{"type":"string","maxLength":200},"description":{"type":"string","maxLength":5000},"category":{"type":"string","maxLength":80},"previewText":{"type":"string","maxLength":5000},"fullContentDemo":{"type":"string"},"licenseType":{"type":"string","maxLength":80},"status":{"type":"string","enum":["draft","listed","paused"]},"minPriceMicrousd":{"type":"string","pattern":"^\\d+$"},"maxPriceMicrousd":{"type":"string","pattern":"^\\d+$"},"basePriceMicrousd":{"type":"string","pattern":"^\\d+$"},"tags":{"type":"array","items":{"type":"string","maxLength":40},"maxItems":12},"intendedUse":{"type":"string","maxLength":400},"workflowBenefit":{"type":"string","maxLength":400},"ownershipAttested":{"type":"boolean"}}},"outputSchema":{"type":"object","required":["ok"],"additionalProperties":true,"properties":{"ok":{"type":"boolean"},"asset":{"type":"object","additionalProperties":true}}},"errorSchema":{"type":"object","required":["error","reasonCodes"],"additionalProperties":true,"properties":{"error":{"type":"string","description":"Stable machine-readable error code.","enum":["missing_authorization","malformed_authorization","malformed_token","invalid_signature","expired_token","token_not_registered","token_revoked","invalid_request","invalid_json","request_body_too_large","unknown_tool","missing_asset_id","missing_media_asset_id","missing_agent_id","missing_quoted_price","invalid_quoted_price","missing_idempotency_key","missing_purchase_id","missing_approval_request_id","idempotency_conflict","insufficient_credits","price_changed","native_settlement_failed","rate_limited","asset_unavailable","agent_not_found","agent_not_active","preview_not_allowed","purchase_not_allowed","content_not_found","not_entitled","mcp_tool_failed"]},"reasonCodes":{"type":"array","items":{"type":"string"},"description":"Secondary stable reason codes used by validation, auth, permission, idempotency, and rate-limit failures."},"retryAfterSeconds":{"type":"integer","minimum":0,"description":"Present on rate_limited errors. Number of seconds to wait before retrying."},"details":{"type":"object","additionalProperties":true}}},"version":"0.1","auth":"bearer"},{"name":"seller_update_listing","description":"Update, publish, or pause an owned listing under the same publication gates and TrustWorks routing as creation.","input":{"required":["assetId"],"optional":["title","description","category","previewText","fullContentDemo","licenseType","status","minPriceMicrousd","maxPriceMicrousd","basePriceMicrousd","tags","intendedUse","workflowBenefit","ownershipAttested"]},"output":"Updated listing summary with moderation/TrustWorks routing state, or deterministic gate reason codes.","inputSchema":{"type":"object","required":["assetId"],"additionalProperties":false,"properties":{"assetId":{"type":"string"},"title":{"type":"string","maxLength":200},"description":{"type":"string","maxLength":5000},"category":{"type":"string","maxLength":80},"previewText":{"type":"string","maxLength":5000},"fullContentDemo":{"type":"string"},"licenseType":{"type":"string","maxLength":80},"status":{"type":"string","enum":["draft","listed","paused"]},"minPriceMicrousd":{"type":"string","pattern":"^\\d+$"},"maxPriceMicrousd":{"type":"string","pattern":"^\\d+$"},"basePriceMicrousd":{"type":"string","pattern":"^\\d+$"},"tags":{"type":"array","items":{"type":"string","maxLength":40},"maxItems":12},"intendedUse":{"type":"string","maxLength":400},"workflowBenefit":{"type":"string","maxLength":400},"ownershipAttested":{"type":"boolean"}}},"outputSchema":{"type":"object","required":["ok"],"additionalProperties":true,"properties":{"ok":{"type":"boolean"},"asset":{"type":"object","additionalProperties":true}}},"errorSchema":{"type":"object","required":["error","reasonCodes"],"additionalProperties":true,"properties":{"error":{"type":"string","description":"Stable machine-readable error code.","enum":["missing_authorization","malformed_authorization","malformed_token","invalid_signature","expired_token","token_not_registered","token_revoked","invalid_request","invalid_json","request_body_too_large","unknown_tool","missing_asset_id","missing_media_asset_id","missing_agent_id","missing_quoted_price","invalid_quoted_price","missing_idempotency_key","missing_purchase_id","missing_approval_request_id","idempotency_conflict","insufficient_credits","price_changed","native_settlement_failed","rate_limited","asset_unavailable","agent_not_found","agent_not_active","preview_not_allowed","purchase_not_allowed","content_not_found","not_entitled","mcp_tool_failed"]},"reasonCodes":{"type":"array","items":{"type":"string"},"description":"Secondary stable reason codes used by validation, auth, permission, idempotency, and rate-limit failures."},"retryAfterSeconds":{"type":"integer","minimum":0,"description":"Present on rate_limited errors. Number of seconds to wait before retrying."},"details":{"type":"object","additionalProperties":true}}},"version":"0.1","auth":"bearer"},{"name":"get_agent_budget","description":"Read the calling agent's wallet/budget snapshot.","input":{},"output":"Per-agent budget snapshot (balance, period spend, spendability).","inputSchema":{"type":"object","additionalProperties":false,"properties":{}},"outputSchema":{"type":"object","required":["balanceMicrousd","spendable"],"additionalProperties":true,"properties":{"balanceMicrousd":{"type":"string","pattern":"^\\d+$"},"currency":{"type":"string","default":"USD"},"periodSpendMicrousd":{"type":"string","pattern":"^\\d+$"},"spendable":{"type":"boolean"},"limits":{"type":"object","additionalProperties":true,"properties":{"sessionMicrousd":{"type":"string","pattern":"^\\d+$"},"dailyMicrousd":{"type":"string","pattern":"^\\d+$"},"askMeAboveMicrousd":{"type":"string","pattern":"^\\d+$"}}}}},"errorSchema":{"type":"object","required":["error","reasonCodes"],"additionalProperties":true,"properties":{"error":{"type":"string","description":"Stable machine-readable error code.","enum":["missing_authorization","malformed_authorization","malformed_token","invalid_signature","expired_token","token_not_registered","token_revoked","invalid_request","invalid_json","request_body_too_large","unknown_tool","missing_asset_id","missing_media_asset_id","missing_agent_id","missing_quoted_price","invalid_quoted_price","missing_idempotency_key","missing_purchase_id","missing_approval_request_id","idempotency_conflict","insufficient_credits","price_changed","native_settlement_failed","rate_limited","asset_unavailable","agent_not_found","agent_not_active","preview_not_allowed","purchase_not_allowed","content_not_found","not_entitled","mcp_tool_failed"]},"reasonCodes":{"type":"array","items":{"type":"string"},"description":"Secondary stable reason codes used by validation, auth, permission, idempotency, and rate-limit failures."},"retryAfterSeconds":{"type":"integer","minimum":0,"description":"Present on rate_limited errors. Number of seconds to wait before retrying."},"details":{"type":"object","additionalProperties":true}}},"version":"0.1","auth":"bearer"},{"name":"submit_usage_feedback","description":"Record validated usage feedback for a previously captured purchase.","input":{"required":["assetId","purchaseId","rating","feedbackType"],"optional":["note"]},"output":"Structured acknowledgement plus review id; rejected feedback returns reasonCodes and does not affect trust.","inputSchema":{"type":"object","required":["assetId","purchaseId","rating","feedbackType"],"additionalProperties":false,"properties":{"assetId":{"type":"string"},"purchaseId":{"type":"string"},"rating":{"type":"integer","minimum":1,"maximum":5},"feedbackType":{"type":"string","description":"Stable category for the feedback (e.g. accuracy, usefulness)."},"note":{"type":"string","maxLength":1000}}},"outputSchema":{"type":"object","required":["ok"],"additionalProperties":true,"properties":{"ok":{"type":"boolean"},"reviewId":{"type":"string"},"reasonCodes":{"type":"array","items":{"type":"string"}}}},"errorSchema":{"type":"object","required":["error","reasonCodes"],"additionalProperties":true,"properties":{"error":{"type":"string","description":"Stable machine-readable error code.","enum":["missing_authorization","malformed_authorization","malformed_token","invalid_signature","expired_token","token_not_registered","token_revoked","invalid_request","invalid_json","request_body_too_large","unknown_tool","missing_asset_id","missing_media_asset_id","missing_agent_id","missing_quoted_price","invalid_quoted_price","missing_idempotency_key","missing_purchase_id","missing_approval_request_id","idempotency_conflict","insufficient_credits","price_changed","native_settlement_failed","rate_limited","asset_unavailable","agent_not_found","agent_not_active","preview_not_allowed","purchase_not_allowed","content_not_found","not_entitled","mcp_tool_failed"]},"reasonCodes":{"type":"array","items":{"type":"string"},"description":"Secondary stable reason codes used by validation, auth, permission, idempotency, and rate-limit failures."},"retryAfterSeconds":{"type":"integer","minimum":0,"description":"Present on rate_limited errors. Number of seconds to wait before retrying."},"details":{"type":"object","additionalProperties":true}}},"version":"0.1","auth":"bearer","requiresPurchase":true},{"name":"get_asset_content","description":"Retrieve unlocked content for an asset the calling agent has already captured a purchase for. Requires assetId and purchaseId; the purchase must be captured and tied to the calling agent. Returns Markdown text for Markdown-backed assets, or seller-declared container metadata plus usageInstructions, agentContainerRetrievalSupported, and agentDownloadUrl for container assets. Containers are seller-declared and BoxFetch does not parse, unzip, execute, render, or scan them.","input":{"required":["assetId","purchaseId"]},"output":"For Markdown: ok, assetId, contentKind=markdown, mimeType, title, markdown, sha256, sizeBytes. For containers: ok, assetId, contentKind, storageKind=neon_bytea, mimeType, fileName, sizeBytes, sha256, sellerDeclared=true, notParsedOrScanned=true, usageInstructions, agentContainerRetrievalSupported=true, agentDownloadUrl. Pending approvals, mismatched agents, and seller-only ownership are rejected.","inputSchema":{"type":"object","required":["assetId"],"additionalProperties":false,"properties":{"assetId":{"type":"string"},"purchaseId":{"type":"string","description":"Optional. Narrows retrieval to one captured purchase; entitlement alone is otherwise sufficient."}}},"outputSchema":{"type":"object","required":["ok","assetId","contentKind"],"additionalProperties":true,"properties":{"ok":{"type":"boolean"},"assetId":{"type":"string"},"contentKind":{"type":"string","description":"markdown for text assets; seller-declared kind for containers such as pdf, zip, image, or dataset."},"mimeType":{"type":"string"},"title":{"type":"string"},"markdown":{"type":"string","description":"Present for contentKind=markdown."},"fileName":{"type":"string"},"sizeBytes":{"type":"integer","minimum":0},"sha256":{"type":"string"},"storageKind":{"type":"string"},"sellerDeclared":{"type":"boolean"},"notParsedOrScanned":{"type":"boolean"},"agentContainerRetrievalSupported":{"type":"boolean","description":"True for entitled container assets. Use agentDownloadUrl to retrieve bytes with the same bearer token."},"agentDownloadUrl":{"type":"string","description":"Bearer-authenticated MCP container download URL. Present for entitled container assets; get_asset_content returns metadata rather than bytes."},"usageInstructions":{"type":["string","null"],"description":"Seller-supplied guidance for how an entitled buyer or AI agent should use the unlocked container. Present only after purchase or entitlement; never returned in public preview or showcase output."}}},"errorSchema":{"type":"object","required":["error","reasonCodes"],"additionalProperties":true,"properties":{"error":{"type":"string","description":"Stable machine-readable error code.","enum":["missing_authorization","malformed_authorization","malformed_token","invalid_signature","expired_token","token_not_registered","token_revoked","invalid_request","invalid_json","request_body_too_large","unknown_tool","missing_asset_id","missing_media_asset_id","missing_agent_id","missing_quoted_price","invalid_quoted_price","missing_idempotency_key","missing_purchase_id","missing_approval_request_id","idempotency_conflict","insufficient_credits","price_changed","native_settlement_failed","rate_limited","asset_unavailable","agent_not_found","agent_not_active","preview_not_allowed","purchase_not_allowed","content_not_found","not_entitled","mcp_tool_failed"]},"reasonCodes":{"type":"array","items":{"type":"string"},"description":"Secondary stable reason codes used by validation, auth, permission, idempotency, and rate-limit failures."},"retryAfterSeconds":{"type":"integer","minimum":0,"description":"Present on rate_limited errors. Number of seconds to wait before retrying."},"details":{"type":"object","additionalProperties":true}}},"version":"0.1","auth":"bearer","requiresPurchase":true}]}