{"$schema":"https://wellknown.network/schemas/agent-record-v1.json","schemaVersion":"1","id":"ag_re8etz2vzdjy","handle":"agentic-commerce","url":"https://wellknown.network/agents/agentic-commerce","links":{"self":"https://wellknown.network/agents/agentic-commerce/record.json","html":"https://wellknown.network/agents/agentic-commerce","markdown":"https://wellknown.network/agents/agentic-commerce/record.md","api":"https://wellknown.network/api/v1/agents/agentic-commerce","status":"https://wellknown.network/api/v1/agents/agentic-commerce/status","claim":"https://wellknown.network/agents/agentic-commerce/claim","claimApi":"https://wellknown.network/api/v1/claims","claimDescriptor":"https://wellknown.network/agents/agentic-commerce/claim.json","badge":"https://wellknown.network/agents/agentic-commerce/badge.svg","openapi":"https://wellknown.network/openapi.json","history":"https://wellknown.network/api/v1/agents/agentic-commerce/history","tools":"https://wellknown.network/api/v1/agents/agentic-commerce/tools"},"ard":{"identifier":"urn:air:mcp.bosonprotocol.io:server:agentic-commerce","type":"application/mcp-server-card+json"},"kind":"mcp_server","declared":{"name":"agentic-commerce","summary":"MCP server for Boson Protocol — on-chain agentic commerce for physical & digital goods.","description":"MCP server for Boson Protocol — on-chain agentic commerce for physical & digital goods.","publisher":{"name":"io.bosonprotocol","url":null},"homepage":"https://docs.bosonprotocol.io/mcp","repository":null,"version":"1.0.0","license":null,"protocols":["mcp"],"tags":[],"pricing":null,"endpoints":[{"url":"https://mcp.bosonprotocol.io/mcp","type":"mcp_streamable_http","auth":null,"probeable":true}],"skills":null,"tools":null,"extra":{"updatedAt":"2026-07-15T14:34:33.688794Z","publishedAt":"2026-07-15T14:34:33.688794Z","registryName":"io.bosonprotocol/agentic-commerce"},"attribution":{"kind":"mcp_registry","name":"mcp_registry","summary":"mcp_registry","version":"mcp_registry","description":"mcp_registry","homepageUrl":"mcp_registry","publisherName":"mcp_registry"}},"derived":{"capabilities":[{"slug":"documents.contracts","name":"Contracts & Legal","confidence":1,"provenance":"derived"},{"slug":"commerce.payments","name":"Payments","confidence":1,"provenance":"derived"},{"slug":"commerce.ecommerce","name":"E-commerce Operations","confidence":1,"provenance":"derived"},{"slug":"finance.markets","name":"Markets & Trading","confidence":1,"provenance":"derived"},{"slug":"security.identity","name":"Identity & Access","confidence":1,"provenance":"derived"},{"slug":"dev.ci-cd","name":"CI/CD & Deploy","confidence":0.554,"provenance":"derived"},{"slug":"content.seo","name":"SEO","confidence":0.525,"provenance":"derived"},{"slug":"knowledge.knowledge-graph","name":"Knowledge Graphs","confidence":0.525,"provenance":"derived"}],"categories":["commerce","content","dev","documents","finance","knowledge","security"],"language":"en"},"observed":{"status":"live","statusReason":"Responded 4h ago.","lastOkAt":"2026-10-10T06:27:04.208Z","lastProbedAt":"2026-10-10T06:27:04.208Z","statusComputedAt":"2026-10-10T06:28:45.491Z","reliability30d":{"probes":110,"successRate":1,"p50Ms":42,"basis":"service","measures":{"availability":"availability","latency":"response time","tools":"tool surface observed","summary":"Checks reached the service itself."},"checks":{"total":109,"ok":109,"authBoundaryOk":0,"serviceOk":109,"note":"Counted from the observation rows for the window, checks of the server only (HTTP, A2A card, MCP initialize). ok = authBoundaryOk + serviceOk. `probes` is the sum of daily rollups and includes registry checks, so it can differ from `total`."}},"latestObservations":[{"at":"2026-10-10T06:27:04.208Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":60,"error":null,"detail":{"tools":[{"name":"get_config_ids","description":"Returns all valid configId values for this server. Call first to discover which network/deployment to use. No auth required."},{"name":"get_funds","description":"Reads treasury fund balances for sellers and buyers from the Boson subgraph. Supports pagination/ordering/filtering. Read-only — signerAddress not required. Ret"},{"name":"get_disputes","description":"Reads dispute records from the Boson subgraph. Supports pagination, ordering, and filtering by buyer/seller/state. Read-only. Returns: array of dispute entities"},{"name":"get_dispute_by_id","description":"Reads a single dispute by its ID (equals the exchangeId). Read-only. Returns: dispute entity with state, timeout, buyerPercent. Use get_disputes to search first"},{"name":"get_exchanges","description":"Reads exchange records (offer commitments) from the Boson subgraph. Filter by buyer/seller/state. Read-only. Returns: array of exchanges with offerId, state (Co"},{"name":"get_offers","description":"Reads offer listings from the Boson subgraph. Supports pagination, ordering, and filtering (e.g. by sellerId). Read-only. Returns: array of offers with price, d"},{"name":"get_sellers","description":"Reads seller account entities from the Boson subgraph. Optionally includes related offers, exchanges, funds, and logs. Read-only. Returns: array of seller entit"},{"name":"get_dispute_resolvers","description":"Reads registered dispute resolver entities. Use this to find a valid disputeResolverId for create_offer. Read-only. Returns: array of resolvers with ID, fees, e"},{"name":"create_offer","description":"Creates a product offer. Caller must have a seller account (create_seller first). Prerequisite: store metadata first with store_product_v1_metadata or store_bas"},{"name":"create_offer_with_condition","description":"Creates an offer gated by token-ownership (e.g. hold an ERC-721 to commit). Same prerequisites as create_offer plus a condition object specifying the gate token"},{"name":"create_buyer","description":"Creates a buyer account for signerAddress. Required before a buyer can commit to seller-initiated offers for the first time. No prerequisites. Returns unsigned "},{"name":"sign_full_offer","description":"Generates EIP-712 typed data for a non-listed (private) offer that the offer creator must sign. Call before create_offer_and_commit or void_non_listed_offer. Re"},{"name":"create_offer_and_commit","description":"Atomically creates a private offer and commits a specific buyer in one transaction. Prerequisite: call sign_full_offer, sign the returned typed data locally wit"},{"name":"create_offer_commit_and_redeem","description":"Atomically creates a private offer, commits a specific buyer, and immediately redeems the voucher in a single transaction via the OrchestrationHandler. Same pre"},{"name":"void_offer","description":"Voids a listed offer so it can no longer be committed to. Caller must be the seller assistant. Existing exchanges are unaffected. Returns unsigned transaction d"},{"name":"void_non_listed_offer","description":"Voids a private (non-listed) offer before it is fulfilled. Prerequisite: call sign_full_offer and sign the returned typed data locally with your wallet (EIP-712"},{"name":"void_non_listed_offer_batch","description":"Voids multiple private offers atomically. Same prerequisite as void_non_listed_offer, but for an array of full offer objects. Returns unsigned transaction data."},{"name":"create_seller","description":"Creates a seller account on Boson Protocol. Required before creating any offers. signerAddress is automatically set as admin, assistant, and treasury. Provide s"},{"name":"update_seller","description":"Updates an existing seller account. Caller must be the current seller admin (signerAddress). Use get_sellers_by_address to retrieve the seller id first. Returns"},{"name":"send_signed_transaction","description":"Broadcasts a signed raw Ethereum transaction to the network. signedTransaction must be 0x-prefixed RLP-encoded hex obtained from local wallet signing (e.g. ethe"},{"name":"send_meta_transaction","description":"Relays a pre-signed meta-transaction via Biconomy so the user pays no gas. Requires sigR/sigS/sigV from a locally-signed EIP-712 payload. Use when the target op"},{"name":"send_native_meta_transaction","description":"Relays a native meta-transaction (EIP-712 signed function call) via Biconomy. Requires ABI-encoded function signature and sigR/sigS/sigV from a locally-signed E"},{"name":"send_forwarded_meta_transaction","description":"Relays a Biconomy forwarded meta-transaction (ERC-20 gas payment). Requires a complete ERC20ForwardRequest and domain separator signature. Returns: relay transa"},{"name":"withdraw_funds","description":"Withdraws funds from an entity's protocol treasury to the entity's treasury address. Sellers withdraw proceeds; buyers withdraw refunds. Caller must control the"},{"name":"deposit_funds","description":"Deposits ERC-20 or native tokens into an entity's protocol treasury (e.g. seller deposit). For ERC-20, call approve_exchange_token first. In metaTx mode, you ca"},{"name":"extend_dispute_timeout","description":"Extends the deadline of an active dispute. Dispute must be in 'Resolving' state. Either party can call this. Returns unsigned transaction data."},{"name":"expire_dispute","description":"Marks a dispute as expired after its resolution period passes. Permissionless — anyone can call. Exchange must be in 'Disputed' state past its timeout. Returns "},{"name":"expire_dispute_batch","description":"Marks multiple expired disputes in one transaction. All exchanges must be in 'Disputed' state past their respective timeouts. Permissionless. Returns unsigned t"},{"name":"resolve_dispute","description":"Resolves a dispute by mutual agreement. Workflow: (1) create_dispute_resolution_proposal generates typed data, (2) both parties sign the typed data locally with"},{"name":"raise_dispute","description":"Raises a dispute on a redeemed exchange. Caller must be the buyer. Must be called within disputePeriodDurationInMS after redemption. Returns unsigned transactio"},{"name":"retract_dispute","description":"Retracts a raised dispute, releasing seller deposit and restoring completion flow. Caller must be the buyer who raised it. Returns unsigned transaction data."},{"name":"escalate_dispute","description":"Escalates a stale dispute to the third-party dispute resolver. Caller must be the buyer. Resolver's escalation fee must be covered. Returns unsigned transaction"},{"name":"decide_dispute","description":"Decides an escalated dispute. Caller must be the dispute resolver assigned to the offer's disputeResolverId. Specify buyerPercent in basis points (0=all to sell"},{"name":"refuse_escalated_dispute","description":"Dispute resolver refuses to decide an escalated dispute. Returns the escalation fee to the buyer and resets dispute to 'Resolving' state. Returns unsigned trans"},{"name":"expire_escalated_dispute","description":"Expires an escalated dispute once the resolver's response period passes without a decision. Permissionless — anyone can call. Returns unsigned transaction data."},{"name":"create_dispute_resolution_proposal","description":"Generates EIP-712 typed data for a mutual dispute resolution proposal. Both buyer and seller must sign the same buyerPercentBasisPoints value locally with their"},{"name":"revoke_voucher","description":"Revokes a committed (not yet redeemed) voucher on behalf of the seller, returning funds to the buyer. Caller must be the seller assistant. Returns unsigned tran"},{"name":"approve_exchange_token","description":"Grants ERC-20 allowance to the Boson Protocol contract. Must be called before commit_to_offer or deposit_funds when using non-native exchange tokens, unless you"},{"name":"sign_receive_with_erc3009_authorization","description":"Generates EIP-712 typed data for an ERC-3009 ReceiveWithAuthorization (e.g. USDC). Authorizes the spender (default: protocol diamond) to pull `value` from signe"},{"name":"sign_receive_with_erc2612_permit","description":"Generates EIP-712 typed data for an EIP-2612 Permit. Authorizes the spender (default: protocol diamond) to pull `value` from signerAddress until `deadline`. Sig"},{"name":"sign_receive_with_permit2","description":"Generates EIP-712 typed data for a Uniswap Permit2 PermitTransferFrom. Authorizes the spender (default: protocol diamond) to pull `value` from signerAddress unt"},{"name":"sign_receive_with_dai_permit","description":"Generates EIP-712 typed data for a DAI-style Permit. Authorizes the spender (default: protocol diamond) to pull DAI-style tokens from signerAddress until `expir"},{"name":"commit_to_offer","description":"Commits to an offer, creating an exchange and minting a voucher NFT. Caller is the buyer (signerAddress) unless 'buyer' param is set. For ERC-20 offers, call ap"},{"name":"commit_to_conditional_offer","description":"Commits to a token-gated (conditional) offer using a specific gating tokenId. Caller (signerAddress) must hold the gating token specified by the offer's conditi"},{"name":"commit_to_offer_and_redeem_voucher","description":"Atomically commits to an offer and immediately redeems the voucher in a single transaction via the OrchestrationHandler. Buyer (signerAddress) must already hold"},{"name":"commit_to_conditional_offer_and_redeem_voucher","description":"Atomically commits to a token-gated (conditional) offer using a specific gating tokenId and immediately redeems the voucher in a single transaction. Buyer must "},{"name":"commit_to_buyer_offer","description":"Fulfils a buyer-initiated offer (creator='BUYER') by the seller. Caller must be the seller. Provide matching collateral. Returns unsigned transaction data."},{"name":"cancel_voucher","description":"Cancels a committed voucher. Caller must be the buyer (voucher holder). Buyer forfeits buyerCancellationPenalty; remainder is refunded. Returns unsigned transac"},{"name":"redeem_voucher","description":"Redeems a voucher, signalling physical receipt of goods and starting the dispute period clock. Caller must be the buyer. After redemption, buyer has disputePeri"},{"name":"complete_exchange","description":"Completes an exchange after the dispute period expires, releasing funds to the seller. Can be called by seller after dispute period or by buyer at any time post"},{"name":"get_sellers_by_address","description":"Reads seller entities associated with a specific Ethereum address. Use this to check if signerAddress already has a seller account before calling create_seller."},{"name":"get_all_products_with_not_voided_variants","description":"Reads product groupings with at least one non-voided variant from the Boson subgraph. Useful for storefront displays. Supports pagination and ordering. Read-onl"},{"name":"search_products","description":"Searches products in the Boson subgraph by keywords matched against title, description, brand, category, and tags. Supports pagination, ordering, filtering, and"},{"name":"validate_metadata","description":"Validates a metadata object against the Boson Protocol schema (PRODUCT_V1, BUNDLE, BASE, etc.) without storing it. Use before store_*_metadata to catch errors e"},{"name":"store_product_v1_metadata","description":"Stores a ProductV1 metadata object to IPFS. Call before create_offer to get metadataUri and metadataHash. Returns: { metadataUri: 'ipfs://...', metadataHash: '0"},{"name":"store_bundle_metadata","description":"Stores a Bundle metadata object to IPFS. Prerequisite: call store_bundle_item_product_v1_metadata and/or store_bundle_item_nft_metadata first; include their ret"},{"name":"store_base_metadata","description":"Stores a Base metadata object to IPFS. Use for simple offers that don't require ProductV1 or Bundle structure. Returns: { metadataUri, metadataHash } for use in"},{"name":"render_contractual_agreement","description":"Renders the legal contractual agreement text/HTML for an offer using its offer data and metadata. Use to preview or store the agreement. Returns: rendered agree"},{"name":"store_bundle_item_product_v1_metadata","description":"Stores a single ProductV1 bundle item's metadata to IPFS. Call once per physical product in a bundle before store_bundle_metadata. Returns: { url: 'ipfs://...' "},{"name":"store_bundle_item_nft_metadata","description":"Stores a single NFT bundle item's metadata to IPFS. Call once per NFT component in a bundle before store_bundle_metadata. Returns: { url: 'ipfs://...' } to incl"},{"name":"register_agent","description":"Registers a dACP agent with this MCP server instance, associating its Ethereum identities and roles. The signature proves control of each signerAddress. Server-"},{"name":"get_registered_agents","description":"Returns all dACP agents registered with this MCP server instance, with their associated protocol entities and roles. No auth required."},{"name":"get_supported_tokens","description":"Returns ERC-20 tokens accepted as exchange tokens on the given configId deployment. Use returned addresses in exchangeTokenAddress fields of create_offer. Read-"}],"toolCount":63,"toolsHash":"efaae4ec9832e94d93b789d7904ce5f258e2e951cc2031d43c2cf4159f298534","serverName":"boson-protocol-server","capabilities":["tools","resources","completions","prompts"],"serverVersion":"1.2.11","protocolVersion":"2025-06-18"}},{"at":"2026-10-09T23:30:23.831Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":35,"error":null,"detail":{"tools":[{"name":"get_config_ids","description":"Returns all valid configId values for this server. Call first to discover which network/deployment to use. No auth required."},{"name":"get_funds","description":"Reads treasury fund balances for sellers and buyers from the Boson subgraph. Supports pagination/ordering/filtering. Read-only — signerAddress not required. Ret"},{"name":"get_disputes","description":"Reads dispute records from the Boson subgraph. Supports pagination, ordering, and filtering by buyer/seller/state. Read-only. Returns: array of dispute entities"},{"name":"get_dispute_by_id","description":"Reads a single dispute by its ID (equals the exchangeId). Read-only. Returns: dispute entity with state, timeout, buyerPercent. Use get_disputes to search first"},{"name":"get_exchanges","description":"Reads exchange records (offer commitments) from the Boson subgraph. Filter by buyer/seller/state. Read-only. Returns: array of exchanges with offerId, state (Co"},{"name":"get_offers","description":"Reads offer listings from the Boson subgraph. Supports pagination, ordering, and filtering (e.g. by sellerId). Read-only. Returns: array of offers with price, d"},{"name":"get_sellers","description":"Reads seller account entities from the Boson subgraph. Optionally includes related offers, exchanges, funds, and logs. Read-only. Returns: array of seller entit"},{"name":"get_dispute_resolvers","description":"Reads registered dispute resolver entities. Use this to find a valid disputeResolverId for create_offer. Read-only. Returns: array of resolvers with ID, fees, e"},{"name":"create_offer","description":"Creates a product offer. Caller must have a seller account (create_seller first). Prerequisite: store metadata first with store_product_v1_metadata or store_bas"},{"name":"create_offer_with_condition","description":"Creates an offer gated by token-ownership (e.g. hold an ERC-721 to commit). Same prerequisites as create_offer plus a condition object specifying the gate token"},{"name":"create_buyer","description":"Creates a buyer account for signerAddress. Required before a buyer can commit to seller-initiated offers for the first time. No prerequisites. Returns unsigned "},{"name":"sign_full_offer","description":"Generates EIP-712 typed data for a non-listed (private) offer that the offer creator must sign. Call before create_offer_and_commit or void_non_listed_offer. Re"},{"name":"create_offer_and_commit","description":"Atomically creates a private offer and commits a specific buyer in one transaction. Prerequisite: call sign_full_offer, sign the returned typed data locally wit"},{"name":"create_offer_commit_and_redeem","description":"Atomically creates a private offer, commits a specific buyer, and immediately redeems the voucher in a single transaction via the OrchestrationHandler. Same pre"},{"name":"void_offer","description":"Voids a listed offer so it can no longer be committed to. Caller must be the seller assistant. Existing exchanges are unaffected. Returns unsigned transaction d"},{"name":"void_non_listed_offer","description":"Voids a private (non-listed) offer before it is fulfilled. Prerequisite: call sign_full_offer and sign the returned typed data locally with your wallet (EIP-712"},{"name":"void_non_listed_offer_batch","description":"Voids multiple private offers atomically. Same prerequisite as void_non_listed_offer, but for an array of full offer objects. Returns unsigned transaction data."},{"name":"create_seller","description":"Creates a seller account on Boson Protocol. Required before creating any offers. signerAddress is automatically set as admin, assistant, and treasury. Provide s"},{"name":"update_seller","description":"Updates an existing seller account. Caller must be the current seller admin (signerAddress). Use get_sellers_by_address to retrieve the seller id first. Returns"},{"name":"send_signed_transaction","description":"Broadcasts a signed raw Ethereum transaction to the network. signedTransaction must be 0x-prefixed RLP-encoded hex obtained from local wallet signing (e.g. ethe"},{"name":"send_meta_transaction","description":"Relays a pre-signed meta-transaction via Biconomy so the user pays no gas. Requires sigR/sigS/sigV from a locally-signed EIP-712 payload. Use when the target op"},{"name":"send_native_meta_transaction","description":"Relays a native meta-transaction (EIP-712 signed function call) via Biconomy. Requires ABI-encoded function signature and sigR/sigS/sigV from a locally-signed E"},{"name":"send_forwarded_meta_transaction","description":"Relays a Biconomy forwarded meta-transaction (ERC-20 gas payment). Requires a complete ERC20ForwardRequest and domain separator signature. Returns: relay transa"},{"name":"withdraw_funds","description":"Withdraws funds from an entity's protocol treasury to the entity's treasury address. Sellers withdraw proceeds; buyers withdraw refunds. Caller must control the"},{"name":"deposit_funds","description":"Deposits ERC-20 or native tokens into an entity's protocol treasury (e.g. seller deposit). For ERC-20, call approve_exchange_token first. In metaTx mode, you ca"},{"name":"extend_dispute_timeout","description":"Extends the deadline of an active dispute. Dispute must be in 'Resolving' state. Either party can call this. Returns unsigned transaction data."},{"name":"expire_dispute","description":"Marks a dispute as expired after its resolution period passes. Permissionless — anyone can call. Exchange must be in 'Disputed' state past its timeout. Returns "},{"name":"expire_dispute_batch","description":"Marks multiple expired disputes in one transaction. All exchanges must be in 'Disputed' state past their respective timeouts. Permissionless. Returns unsigned t"},{"name":"resolve_dispute","description":"Resolves a dispute by mutual agreement. Workflow: (1) create_dispute_resolution_proposal generates typed data, (2) both parties sign the typed data locally with"},{"name":"raise_dispute","description":"Raises a dispute on a redeemed exchange. Caller must be the buyer. Must be called within disputePeriodDurationInMS after redemption. Returns unsigned transactio"},{"name":"retract_dispute","description":"Retracts a raised dispute, releasing seller deposit and restoring completion flow. Caller must be the buyer who raised it. Returns unsigned transaction data."},{"name":"escalate_dispute","description":"Escalates a stale dispute to the third-party dispute resolver. Caller must be the buyer. Resolver's escalation fee must be covered. Returns unsigned transaction"},{"name":"decide_dispute","description":"Decides an escalated dispute. Caller must be the dispute resolver assigned to the offer's disputeResolverId. Specify buyerPercent in basis points (0=all to sell"},{"name":"refuse_escalated_dispute","description":"Dispute resolver refuses to decide an escalated dispute. Returns the escalation fee to the buyer and resets dispute to 'Resolving' state. Returns unsigned trans"},{"name":"expire_escalated_dispute","description":"Expires an escalated dispute once the resolver's response period passes without a decision. Permissionless — anyone can call. Returns unsigned transaction data."},{"name":"create_dispute_resolution_proposal","description":"Generates EIP-712 typed data for a mutual dispute resolution proposal. Both buyer and seller must sign the same buyerPercentBasisPoints value locally with their"},{"name":"revoke_voucher","description":"Revokes a committed (not yet redeemed) voucher on behalf of the seller, returning funds to the buyer. Caller must be the seller assistant. Returns unsigned tran"},{"name":"approve_exchange_token","description":"Grants ERC-20 allowance to the Boson Protocol contract. Must be called before commit_to_offer or deposit_funds when using non-native exchange tokens, unless you"},{"name":"sign_receive_with_erc3009_authorization","description":"Generates EIP-712 typed data for an ERC-3009 ReceiveWithAuthorization (e.g. USDC). Authorizes the spender (default: protocol diamond) to pull `value` from signe"},{"name":"sign_receive_with_erc2612_permit","description":"Generates EIP-712 typed data for an EIP-2612 Permit. Authorizes the spender (default: protocol diamond) to pull `value` from signerAddress until `deadline`. Sig"},{"name":"sign_receive_with_permit2","description":"Generates EIP-712 typed data for a Uniswap Permit2 PermitTransferFrom. Authorizes the spender (default: protocol diamond) to pull `value` from signerAddress unt"},{"name":"sign_receive_with_dai_permit","description":"Generates EIP-712 typed data for a DAI-style Permit. Authorizes the spender (default: protocol diamond) to pull DAI-style tokens from signerAddress until `expir"},{"name":"commit_to_offer","description":"Commits to an offer, creating an exchange and minting a voucher NFT. Caller is the buyer (signerAddress) unless 'buyer' param is set. For ERC-20 offers, call ap"},{"name":"commit_to_conditional_offer","description":"Commits to a token-gated (conditional) offer using a specific gating tokenId. Caller (signerAddress) must hold the gating token specified by the offer's conditi"},{"name":"commit_to_offer_and_redeem_voucher","description":"Atomically commits to an offer and immediately redeems the voucher in a single transaction via the OrchestrationHandler. Buyer (signerAddress) must already hold"},{"name":"commit_to_conditional_offer_and_redeem_voucher","description":"Atomically commits to a token-gated (conditional) offer using a specific gating tokenId and immediately redeems the voucher in a single transaction. Buyer must "},{"name":"commit_to_buyer_offer","description":"Fulfils a buyer-initiated offer (creator='BUYER') by the seller. Caller must be the seller. Provide matching collateral. Returns unsigned transaction data."},{"name":"cancel_voucher","description":"Cancels a committed voucher. Caller must be the buyer (voucher holder). Buyer forfeits buyerCancellationPenalty; remainder is refunded. Returns unsigned transac"},{"name":"redeem_voucher","description":"Redeems a voucher, signalling physical receipt of goods and starting the dispute period clock. Caller must be the buyer. After redemption, buyer has disputePeri"},{"name":"complete_exchange","description":"Completes an exchange after the dispute period expires, releasing funds to the seller. Can be called by seller after dispute period or by buyer at any time post"},{"name":"get_sellers_by_address","description":"Reads seller entities associated with a specific Ethereum address. Use this to check if signerAddress already has a seller account before calling create_seller."},{"name":"get_all_products_with_not_voided_variants","description":"Reads product groupings with at least one non-voided variant from the Boson subgraph. Useful for storefront displays. Supports pagination and ordering. Read-onl"},{"name":"search_products","description":"Searches products in the Boson subgraph by keywords matched against title, description, brand, category, and tags. Supports pagination, ordering, filtering, and"},{"name":"validate_metadata","description":"Validates a metadata object against the Boson Protocol schema (PRODUCT_V1, BUNDLE, BASE, etc.) without storing it. Use before store_*_metadata to catch errors e"},{"name":"store_product_v1_metadata","description":"Stores a ProductV1 metadata object to IPFS. Call before create_offer to get metadataUri and metadataHash. Returns: { metadataUri: 'ipfs://...', metadataHash: '0"},{"name":"store_bundle_metadata","description":"Stores a Bundle metadata object to IPFS. Prerequisite: call store_bundle_item_product_v1_metadata and/or store_bundle_item_nft_metadata first; include their ret"},{"name":"store_base_metadata","description":"Stores a Base metadata object to IPFS. Use for simple offers that don't require ProductV1 or Bundle structure. Returns: { metadataUri, metadataHash } for use in"},{"name":"render_contractual_agreement","description":"Renders the legal contractual agreement text/HTML for an offer using its offer data and metadata. Use to preview or store the agreement. Returns: rendered agree"},{"name":"store_bundle_item_product_v1_metadata","description":"Stores a single ProductV1 bundle item's metadata to IPFS. Call once per physical product in a bundle before store_bundle_metadata. Returns: { url: 'ipfs://...' "},{"name":"store_bundle_item_nft_metadata","description":"Stores a single NFT bundle item's metadata to IPFS. Call once per NFT component in a bundle before store_bundle_metadata. Returns: { url: 'ipfs://...' } to incl"},{"name":"register_agent","description":"Registers a dACP agent with this MCP server instance, associating its Ethereum identities and roles. The signature proves control of each signerAddress. Server-"},{"name":"get_registered_agents","description":"Returns all dACP agents registered with this MCP server instance, with their associated protocol entities and roles. No auth required."},{"name":"get_supported_tokens","description":"Returns ERC-20 tokens accepted as exchange tokens on the given configId deployment. Use returned addresses in exchangeTokenAddress fields of create_offer. Read-"}],"toolCount":63,"toolsHash":"efaae4ec9832e94d93b789d7904ce5f258e2e951cc2031d43c2cf4159f298534","serverName":"boson-protocol-server","capabilities":["tools","resources","completions","prompts"],"serverVersion":"1.2.11","protocolVersion":"2025-06-18"}},{"at":"2026-10-09T17:28:14.276Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":34,"error":null,"detail":{"tools":[{"name":"get_config_ids","description":"Returns all valid configId values for this server. Call first to discover which network/deployment to use. No auth required."},{"name":"get_funds","description":"Reads treasury fund balances for sellers and buyers from the Boson subgraph. Supports pagination/ordering/filtering. Read-only — signerAddress not required. Ret"},{"name":"get_disputes","description":"Reads dispute records from the Boson subgraph. Supports pagination, ordering, and filtering by buyer/seller/state. Read-only. Returns: array of dispute entities"},{"name":"get_dispute_by_id","description":"Reads a single dispute by its ID (equals the exchangeId). Read-only. Returns: dispute entity with state, timeout, buyerPercent. Use get_disputes to search first"},{"name":"get_exchanges","description":"Reads exchange records (offer commitments) from the Boson subgraph. Filter by buyer/seller/state. Read-only. Returns: array of exchanges with offerId, state (Co"},{"name":"get_offers","description":"Reads offer listings from the Boson subgraph. Supports pagination, ordering, and filtering (e.g. by sellerId). Read-only. Returns: array of offers with price, d"},{"name":"get_sellers","description":"Reads seller account entities from the Boson subgraph. Optionally includes related offers, exchanges, funds, and logs. Read-only. Returns: array of seller entit"},{"name":"get_dispute_resolvers","description":"Reads registered dispute resolver entities. Use this to find a valid disputeResolverId for create_offer. Read-only. Returns: array of resolvers with ID, fees, e"},{"name":"create_offer","description":"Creates a product offer. Caller must have a seller account (create_seller first). Prerequisite: store metadata first with store_product_v1_metadata or store_bas"},{"name":"create_offer_with_condition","description":"Creates an offer gated by token-ownership (e.g. hold an ERC-721 to commit). Same prerequisites as create_offer plus a condition object specifying the gate token"},{"name":"create_buyer","description":"Creates a buyer account for signerAddress. Required before a buyer can commit to seller-initiated offers for the first time. No prerequisites. Returns unsigned "},{"name":"sign_full_offer","description":"Generates EIP-712 typed data for a non-listed (private) offer that the offer creator must sign. Call before create_offer_and_commit or void_non_listed_offer. Re"},{"name":"create_offer_and_commit","description":"Atomically creates a private offer and commits a specific buyer in one transaction. Prerequisite: call sign_full_offer, sign the returned typed data locally wit"},{"name":"create_offer_commit_and_redeem","description":"Atomically creates a private offer, commits a specific buyer, and immediately redeems the voucher in a single transaction via the OrchestrationHandler. Same pre"},{"name":"void_offer","description":"Voids a listed offer so it can no longer be committed to. Caller must be the seller assistant. Existing exchanges are unaffected. Returns unsigned transaction d"},{"name":"void_non_listed_offer","description":"Voids a private (non-listed) offer before it is fulfilled. Prerequisite: call sign_full_offer and sign the returned typed data locally with your wallet (EIP-712"},{"name":"void_non_listed_offer_batch","description":"Voids multiple private offers atomically. Same prerequisite as void_non_listed_offer, but for an array of full offer objects. Returns unsigned transaction data."},{"name":"create_seller","description":"Creates a seller account on Boson Protocol. Required before creating any offers. signerAddress is automatically set as admin, assistant, and treasury. Provide s"},{"name":"update_seller","description":"Updates an existing seller account. Caller must be the current seller admin (signerAddress). Use get_sellers_by_address to retrieve the seller id first. Returns"},{"name":"send_signed_transaction","description":"Broadcasts a signed raw Ethereum transaction to the network. signedTransaction must be 0x-prefixed RLP-encoded hex obtained from local wallet signing (e.g. ethe"},{"name":"send_meta_transaction","description":"Relays a pre-signed meta-transaction via Biconomy so the user pays no gas. Requires sigR/sigS/sigV from a locally-signed EIP-712 payload. Use when the target op"},{"name":"send_native_meta_transaction","description":"Relays a native meta-transaction (EIP-712 signed function call) via Biconomy. Requires ABI-encoded function signature and sigR/sigS/sigV from a locally-signed E"},{"name":"send_forwarded_meta_transaction","description":"Relays a Biconomy forwarded meta-transaction (ERC-20 gas payment). Requires a complete ERC20ForwardRequest and domain separator signature. Returns: relay transa"},{"name":"withdraw_funds","description":"Withdraws funds from an entity's protocol treasury to the entity's treasury address. Sellers withdraw proceeds; buyers withdraw refunds. Caller must control the"},{"name":"deposit_funds","description":"Deposits ERC-20 or native tokens into an entity's protocol treasury (e.g. seller deposit). For ERC-20, call approve_exchange_token first. In metaTx mode, you ca"},{"name":"extend_dispute_timeout","description":"Extends the deadline of an active dispute. Dispute must be in 'Resolving' state. Either party can call this. Returns unsigned transaction data."},{"name":"expire_dispute","description":"Marks a dispute as expired after its resolution period passes. Permissionless — anyone can call. Exchange must be in 'Disputed' state past its timeout. Returns "},{"name":"expire_dispute_batch","description":"Marks multiple expired disputes in one transaction. All exchanges must be in 'Disputed' state past their respective timeouts. Permissionless. Returns unsigned t"},{"name":"resolve_dispute","description":"Resolves a dispute by mutual agreement. Workflow: (1) create_dispute_resolution_proposal generates typed data, (2) both parties sign the typed data locally with"},{"name":"raise_dispute","description":"Raises a dispute on a redeemed exchange. Caller must be the buyer. Must be called within disputePeriodDurationInMS after redemption. Returns unsigned transactio"},{"name":"retract_dispute","description":"Retracts a raised dispute, releasing seller deposit and restoring completion flow. Caller must be the buyer who raised it. Returns unsigned transaction data."},{"name":"escalate_dispute","description":"Escalates a stale dispute to the third-party dispute resolver. Caller must be the buyer. Resolver's escalation fee must be covered. Returns unsigned transaction"},{"name":"decide_dispute","description":"Decides an escalated dispute. Caller must be the dispute resolver assigned to the offer's disputeResolverId. Specify buyerPercent in basis points (0=all to sell"},{"name":"refuse_escalated_dispute","description":"Dispute resolver refuses to decide an escalated dispute. Returns the escalation fee to the buyer and resets dispute to 'Resolving' state. Returns unsigned trans"},{"name":"expire_escalated_dispute","description":"Expires an escalated dispute once the resolver's response period passes without a decision. Permissionless — anyone can call. Returns unsigned transaction data."},{"name":"create_dispute_resolution_proposal","description":"Generates EIP-712 typed data for a mutual dispute resolution proposal. Both buyer and seller must sign the same buyerPercentBasisPoints value locally with their"},{"name":"revoke_voucher","description":"Revokes a committed (not yet redeemed) voucher on behalf of the seller, returning funds to the buyer. Caller must be the seller assistant. Returns unsigned tran"},{"name":"approve_exchange_token","description":"Grants ERC-20 allowance to the Boson Protocol contract. Must be called before commit_to_offer or deposit_funds when using non-native exchange tokens, unless you"},{"name":"sign_receive_with_erc3009_authorization","description":"Generates EIP-712 typed data for an ERC-3009 ReceiveWithAuthorization (e.g. USDC). Authorizes the spender (default: protocol diamond) to pull `value` from signe"},{"name":"sign_receive_with_erc2612_permit","description":"Generates EIP-712 typed data for an EIP-2612 Permit. Authorizes the spender (default: protocol diamond) to pull `value` from signerAddress until `deadline`. Sig"},{"name":"sign_receive_with_permit2","description":"Generates EIP-712 typed data for a Uniswap Permit2 PermitTransferFrom. Authorizes the spender (default: protocol diamond) to pull `value` from signerAddress unt"},{"name":"sign_receive_with_dai_permit","description":"Generates EIP-712 typed data for a DAI-style Permit. Authorizes the spender (default: protocol diamond) to pull DAI-style tokens from signerAddress until `expir"},{"name":"commit_to_offer","description":"Commits to an offer, creating an exchange and minting a voucher NFT. Caller is the buyer (signerAddress) unless 'buyer' param is set. For ERC-20 offers, call ap"},{"name":"commit_to_conditional_offer","description":"Commits to a token-gated (conditional) offer using a specific gating tokenId. Caller (signerAddress) must hold the gating token specified by the offer's conditi"},{"name":"commit_to_offer_and_redeem_voucher","description":"Atomically commits to an offer and immediately redeems the voucher in a single transaction via the OrchestrationHandler. Buyer (signerAddress) must already hold"},{"name":"commit_to_conditional_offer_and_redeem_voucher","description":"Atomically commits to a token-gated (conditional) offer using a specific gating tokenId and immediately redeems the voucher in a single transaction. Buyer must "},{"name":"commit_to_buyer_offer","description":"Fulfils a buyer-initiated offer (creator='BUYER') by the seller. Caller must be the seller. Provide matching collateral. Returns unsigned transaction data."},{"name":"cancel_voucher","description":"Cancels a committed voucher. Caller must be the buyer (voucher holder). Buyer forfeits buyerCancellationPenalty; remainder is refunded. Returns unsigned transac"},{"name":"redeem_voucher","description":"Redeems a voucher, signalling physical receipt of goods and starting the dispute period clock. Caller must be the buyer. After redemption, buyer has disputePeri"},{"name":"complete_exchange","description":"Completes an exchange after the dispute period expires, releasing funds to the seller. Can be called by seller after dispute period or by buyer at any time post"},{"name":"get_sellers_by_address","description":"Reads seller entities associated with a specific Ethereum address. Use this to check if signerAddress already has a seller account before calling create_seller."},{"name":"get_all_products_with_not_voided_variants","description":"Reads product groupings with at least one non-voided variant from the Boson subgraph. Useful for storefront displays. Supports pagination and ordering. Read-onl"},{"name":"search_products","description":"Searches products in the Boson subgraph by keywords matched against title, description, brand, category, and tags. Supports pagination, ordering, filtering, and"},{"name":"validate_metadata","description":"Validates a metadata object against the Boson Protocol schema (PRODUCT_V1, BUNDLE, BASE, etc.) without storing it. Use before store_*_metadata to catch errors e"},{"name":"store_product_v1_metadata","description":"Stores a ProductV1 metadata object to IPFS. Call before create_offer to get metadataUri and metadataHash. Returns: { metadataUri: 'ipfs://...', metadataHash: '0"},{"name":"store_bundle_metadata","description":"Stores a Bundle metadata object to IPFS. Prerequisite: call store_bundle_item_product_v1_metadata and/or store_bundle_item_nft_metadata first; include their ret"},{"name":"store_base_metadata","description":"Stores a Base metadata object to IPFS. Use for simple offers that don't require ProductV1 or Bundle structure. Returns: { metadataUri, metadataHash } for use in"},{"name":"render_contractual_agreement","description":"Renders the legal contractual agreement text/HTML for an offer using its offer data and metadata. Use to preview or store the agreement. Returns: rendered agree"},{"name":"store_bundle_item_product_v1_metadata","description":"Stores a single ProductV1 bundle item's metadata to IPFS. Call once per physical product in a bundle before store_bundle_metadata. Returns: { url: 'ipfs://...' "},{"name":"store_bundle_item_nft_metadata","description":"Stores a single NFT bundle item's metadata to IPFS. Call once per NFT component in a bundle before store_bundle_metadata. Returns: { url: 'ipfs://...' } to incl"},{"name":"register_agent","description":"Registers a dACP agent with this MCP server instance, associating its Ethereum identities and roles. The signature proves control of each signerAddress. Server-"},{"name":"get_registered_agents","description":"Returns all dACP agents registered with this MCP server instance, with their associated protocol entities and roles. No auth required."},{"name":"get_supported_tokens","description":"Returns ERC-20 tokens accepted as exchange tokens on the given configId deployment. Use returned addresses in exchangeTokenAddress fields of create_offer. Read-"}],"toolCount":63,"toolsHash":"efaae4ec9832e94d93b789d7904ce5f258e2e951cc2031d43c2cf4159f298534","serverName":"boson-protocol-server","capabilities":["tools","resources","completions","prompts"],"serverVersion":"1.2.11","protocolVersion":"2025-06-18"}},{"at":"2026-10-09T11:26:09.301Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":36,"error":null,"detail":{"tools":[{"name":"get_config_ids","description":"Returns all valid configId values for this server. Call first to discover which network/deployment to use. No auth required."},{"name":"get_funds","description":"Reads treasury fund balances for sellers and buyers from the Boson subgraph. Supports pagination/ordering/filtering. Read-only — signerAddress not required. Ret"},{"name":"get_disputes","description":"Reads dispute records from the Boson subgraph. Supports pagination, ordering, and filtering by buyer/seller/state. Read-only. Returns: array of dispute entities"},{"name":"get_dispute_by_id","description":"Reads a single dispute by its ID (equals the exchangeId). Read-only. Returns: dispute entity with state, timeout, buyerPercent. Use get_disputes to search first"},{"name":"get_exchanges","description":"Reads exchange records (offer commitments) from the Boson subgraph. Filter by buyer/seller/state. Read-only. Returns: array of exchanges with offerId, state (Co"},{"name":"get_offers","description":"Reads offer listings from the Boson subgraph. Supports pagination, ordering, and filtering (e.g. by sellerId). Read-only. Returns: array of offers with price, d"},{"name":"get_sellers","description":"Reads seller account entities from the Boson subgraph. Optionally includes related offers, exchanges, funds, and logs. Read-only. Returns: array of seller entit"},{"name":"get_dispute_resolvers","description":"Reads registered dispute resolver entities. Use this to find a valid disputeResolverId for create_offer. Read-only. Returns: array of resolvers with ID, fees, e"},{"name":"create_offer","description":"Creates a product offer. Caller must have a seller account (create_seller first). Prerequisite: store metadata first with store_product_v1_metadata or store_bas"},{"name":"create_offer_with_condition","description":"Creates an offer gated by token-ownership (e.g. hold an ERC-721 to commit). Same prerequisites as create_offer plus a condition object specifying the gate token"},{"name":"create_buyer","description":"Creates a buyer account for signerAddress. Required before a buyer can commit to seller-initiated offers for the first time. No prerequisites. Returns unsigned "},{"name":"sign_full_offer","description":"Generates EIP-712 typed data for a non-listed (private) offer that the offer creator must sign. Call before create_offer_and_commit or void_non_listed_offer. Re"},{"name":"create_offer_and_commit","description":"Atomically creates a private offer and commits a specific buyer in one transaction. Prerequisite: call sign_full_offer, sign the returned typed data locally wit"},{"name":"create_offer_commit_and_redeem","description":"Atomically creates a private offer, commits a specific buyer, and immediately redeems the voucher in a single transaction via the OrchestrationHandler. Same pre"},{"name":"void_offer","description":"Voids a listed offer so it can no longer be committed to. Caller must be the seller assistant. Existing exchanges are unaffected. Returns unsigned transaction d"},{"name":"void_non_listed_offer","description":"Voids a private (non-listed) offer before it is fulfilled. Prerequisite: call sign_full_offer and sign the returned typed data locally with your wallet (EIP-712"},{"name":"void_non_listed_offer_batch","description":"Voids multiple private offers atomically. Same prerequisite as void_non_listed_offer, but for an array of full offer objects. Returns unsigned transaction data."},{"name":"create_seller","description":"Creates a seller account on Boson Protocol. Required before creating any offers. signerAddress is automatically set as admin, assistant, and treasury. Provide s"},{"name":"update_seller","description":"Updates an existing seller account. Caller must be the current seller admin (signerAddress). Use get_sellers_by_address to retrieve the seller id first. Returns"},{"name":"send_signed_transaction","description":"Broadcasts a signed raw Ethereum transaction to the network. signedTransaction must be 0x-prefixed RLP-encoded hex obtained from local wallet signing (e.g. ethe"},{"name":"send_meta_transaction","description":"Relays a pre-signed meta-transaction via Biconomy so the user pays no gas. Requires sigR/sigS/sigV from a locally-signed EIP-712 payload. Use when the target op"},{"name":"send_native_meta_transaction","description":"Relays a native meta-transaction (EIP-712 signed function call) via Biconomy. Requires ABI-encoded function signature and sigR/sigS/sigV from a locally-signed E"},{"name":"send_forwarded_meta_transaction","description":"Relays a Biconomy forwarded meta-transaction (ERC-20 gas payment). Requires a complete ERC20ForwardRequest and domain separator signature. Returns: relay transa"},{"name":"withdraw_funds","description":"Withdraws funds from an entity's protocol treasury to the entity's treasury address. Sellers withdraw proceeds; buyers withdraw refunds. Caller must control the"},{"name":"deposit_funds","description":"Deposits ERC-20 or native tokens into an entity's protocol treasury (e.g. seller deposit). For ERC-20, call approve_exchange_token first. In metaTx mode, you ca"},{"name":"extend_dispute_timeout","description":"Extends the deadline of an active dispute. Dispute must be in 'Resolving' state. Either party can call this. Returns unsigned transaction data."},{"name":"expire_dispute","description":"Marks a dispute as expired after its resolution period passes. Permissionless — anyone can call. Exchange must be in 'Disputed' state past its timeout. Returns "},{"name":"expire_dispute_batch","description":"Marks multiple expired disputes in one transaction. All exchanges must be in 'Disputed' state past their respective timeouts. Permissionless. Returns unsigned t"},{"name":"resolve_dispute","description":"Resolves a dispute by mutual agreement. Workflow: (1) create_dispute_resolution_proposal generates typed data, (2) both parties sign the typed data locally with"},{"name":"raise_dispute","description":"Raises a dispute on a redeemed exchange. Caller must be the buyer. Must be called within disputePeriodDurationInMS after redemption. Returns unsigned transactio"},{"name":"retract_dispute","description":"Retracts a raised dispute, releasing seller deposit and restoring completion flow. Caller must be the buyer who raised it. Returns unsigned transaction data."},{"name":"escalate_dispute","description":"Escalates a stale dispute to the third-party dispute resolver. Caller must be the buyer. Resolver's escalation fee must be covered. Returns unsigned transaction"},{"name":"decide_dispute","description":"Decides an escalated dispute. Caller must be the dispute resolver assigned to the offer's disputeResolverId. Specify buyerPercent in basis points (0=all to sell"},{"name":"refuse_escalated_dispute","description":"Dispute resolver refuses to decide an escalated dispute. Returns the escalation fee to the buyer and resets dispute to 'Resolving' state. Returns unsigned trans"},{"name":"expire_escalated_dispute","description":"Expires an escalated dispute once the resolver's response period passes without a decision. Permissionless — anyone can call. Returns unsigned transaction data."},{"name":"create_dispute_resolution_proposal","description":"Generates EIP-712 typed data for a mutual dispute resolution proposal. Both buyer and seller must sign the same buyerPercentBasisPoints value locally with their"},{"name":"revoke_voucher","description":"Revokes a committed (not yet redeemed) voucher on behalf of the seller, returning funds to the buyer. Caller must be the seller assistant. Returns unsigned tran"},{"name":"approve_exchange_token","description":"Grants ERC-20 allowance to the Boson Protocol contract. Must be called before commit_to_offer or deposit_funds when using non-native exchange tokens, unless you"},{"name":"sign_receive_with_erc3009_authorization","description":"Generates EIP-712 typed data for an ERC-3009 ReceiveWithAuthorization (e.g. USDC). Authorizes the spender (default: protocol diamond) to pull `value` from signe"},{"name":"sign_receive_with_erc2612_permit","description":"Generates EIP-712 typed data for an EIP-2612 Permit. Authorizes the spender (default: protocol diamond) to pull `value` from signerAddress until `deadline`. Sig"},{"name":"sign_receive_with_permit2","description":"Generates EIP-712 typed data for a Uniswap Permit2 PermitTransferFrom. Authorizes the spender (default: protocol diamond) to pull `value` from signerAddress unt"},{"name":"sign_receive_with_dai_permit","description":"Generates EIP-712 typed data for a DAI-style Permit. Authorizes the spender (default: protocol diamond) to pull DAI-style tokens from signerAddress until `expir"},{"name":"commit_to_offer","description":"Commits to an offer, creating an exchange and minting a voucher NFT. Caller is the buyer (signerAddress) unless 'buyer' param is set. For ERC-20 offers, call ap"},{"name":"commit_to_conditional_offer","description":"Commits to a token-gated (conditional) offer using a specific gating tokenId. Caller (signerAddress) must hold the gating token specified by the offer's conditi"},{"name":"commit_to_offer_and_redeem_voucher","description":"Atomically commits to an offer and immediately redeems the voucher in a single transaction via the OrchestrationHandler. Buyer (signerAddress) must already hold"},{"name":"commit_to_conditional_offer_and_redeem_voucher","description":"Atomically commits to a token-gated (conditional) offer using a specific gating tokenId and immediately redeems the voucher in a single transaction. Buyer must "},{"name":"commit_to_buyer_offer","description":"Fulfils a buyer-initiated offer (creator='BUYER') by the seller. Caller must be the seller. Provide matching collateral. Returns unsigned transaction data."},{"name":"cancel_voucher","description":"Cancels a committed voucher. Caller must be the buyer (voucher holder). Buyer forfeits buyerCancellationPenalty; remainder is refunded. Returns unsigned transac"},{"name":"redeem_voucher","description":"Redeems a voucher, signalling physical receipt of goods and starting the dispute period clock. Caller must be the buyer. After redemption, buyer has disputePeri"},{"name":"complete_exchange","description":"Completes an exchange after the dispute period expires, releasing funds to the seller. Can be called by seller after dispute period or by buyer at any time post"},{"name":"get_sellers_by_address","description":"Reads seller entities associated with a specific Ethereum address. Use this to check if signerAddress already has a seller account before calling create_seller."},{"name":"get_all_products_with_not_voided_variants","description":"Reads product groupings with at least one non-voided variant from the Boson subgraph. Useful for storefront displays. Supports pagination and ordering. Read-onl"},{"name":"search_products","description":"Searches products in the Boson subgraph by keywords matched against title, description, brand, category, and tags. Supports pagination, ordering, filtering, and"},{"name":"validate_metadata","description":"Validates a metadata object against the Boson Protocol schema (PRODUCT_V1, BUNDLE, BASE, etc.) without storing it. Use before store_*_metadata to catch errors e"},{"name":"store_product_v1_metadata","description":"Stores a ProductV1 metadata object to IPFS. Call before create_offer to get metadataUri and metadataHash. Returns: { metadataUri: 'ipfs://...', metadataHash: '0"},{"name":"store_bundle_metadata","description":"Stores a Bundle metadata object to IPFS. Prerequisite: call store_bundle_item_product_v1_metadata and/or store_bundle_item_nft_metadata first; include their ret"},{"name":"store_base_metadata","description":"Stores a Base metadata object to IPFS. Use for simple offers that don't require ProductV1 or Bundle structure. Returns: { metadataUri, metadataHash } for use in"},{"name":"render_contractual_agreement","description":"Renders the legal contractual agreement text/HTML for an offer using its offer data and metadata. Use to preview or store the agreement. Returns: rendered agree"},{"name":"store_bundle_item_product_v1_metadata","description":"Stores a single ProductV1 bundle item's metadata to IPFS. Call once per physical product in a bundle before store_bundle_metadata. Returns: { url: 'ipfs://...' "},{"name":"store_bundle_item_nft_metadata","description":"Stores a single NFT bundle item's metadata to IPFS. Call once per NFT component in a bundle before store_bundle_metadata. Returns: { url: 'ipfs://...' } to incl"},{"name":"register_agent","description":"Registers a dACP agent with this MCP server instance, associating its Ethereum identities and roles. The signature proves control of each signerAddress. Server-"},{"name":"get_registered_agents","description":"Returns all dACP agents registered with this MCP server instance, with their associated protocol entities and roles. No auth required."},{"name":"get_supported_tokens","description":"Returns ERC-20 tokens accepted as exchange tokens on the given configId deployment. Use returned addresses in exchangeTokenAddress fields of create_offer. Read-"}],"toolCount":63,"toolsHash":"efaae4ec9832e94d93b789d7904ce5f258e2e951cc2031d43c2cf4159f298534","serverName":"boson-protocol-server","capabilities":["tools","resources","completions","prompts"],"serverVersion":"1.2.11","protocolVersion":"2025-06-18"}},{"at":"2026-10-09T04:27:52.230Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":33,"error":null,"detail":{"tools":[{"name":"get_config_ids","description":"Returns all valid configId values for this server. Call first to discover which network/deployment to use. No auth required."},{"name":"get_funds","description":"Reads treasury fund balances for sellers and buyers from the Boson subgraph. Supports pagination/ordering/filtering. Read-only — signerAddress not required. Ret"},{"name":"get_disputes","description":"Reads dispute records from the Boson subgraph. Supports pagination, ordering, and filtering by buyer/seller/state. Read-only. Returns: array of dispute entities"},{"name":"get_dispute_by_id","description":"Reads a single dispute by its ID (equals the exchangeId). Read-only. Returns: dispute entity with state, timeout, buyerPercent. Use get_disputes to search first"},{"name":"get_exchanges","description":"Reads exchange records (offer commitments) from the Boson subgraph. Filter by buyer/seller/state. Read-only. Returns: array of exchanges with offerId, state (Co"},{"name":"get_offers","description":"Reads offer listings from the Boson subgraph. Supports pagination, ordering, and filtering (e.g. by sellerId). Read-only. Returns: array of offers with price, d"},{"name":"get_sellers","description":"Reads seller account entities from the Boson subgraph. Optionally includes related offers, exchanges, funds, and logs. Read-only. Returns: array of seller entit"},{"name":"get_dispute_resolvers","description":"Reads registered dispute resolver entities. Use this to find a valid disputeResolverId for create_offer. Read-only. Returns: array of resolvers with ID, fees, e"},{"name":"create_offer","description":"Creates a product offer. Caller must have a seller account (create_seller first). Prerequisite: store metadata first with store_product_v1_metadata or store_bas"},{"name":"create_offer_with_condition","description":"Creates an offer gated by token-ownership (e.g. hold an ERC-721 to commit). Same prerequisites as create_offer plus a condition object specifying the gate token"},{"name":"create_buyer","description":"Creates a buyer account for signerAddress. Required before a buyer can commit to seller-initiated offers for the first time. No prerequisites. Returns unsigned "},{"name":"sign_full_offer","description":"Generates EIP-712 typed data for a non-listed (private) offer that the offer creator must sign. Call before create_offer_and_commit or void_non_listed_offer. Re"},{"name":"create_offer_and_commit","description":"Atomically creates a private offer and commits a specific buyer in one transaction. Prerequisite: call sign_full_offer, sign the returned typed data locally wit"},{"name":"create_offer_commit_and_redeem","description":"Atomically creates a private offer, commits a specific buyer, and immediately redeems the voucher in a single transaction via the OrchestrationHandler. Same pre"},{"name":"void_offer","description":"Voids a listed offer so it can no longer be committed to. Caller must be the seller assistant. Existing exchanges are unaffected. Returns unsigned transaction d"},{"name":"void_non_listed_offer","description":"Voids a private (non-listed) offer before it is fulfilled. Prerequisite: call sign_full_offer and sign the returned typed data locally with your wallet (EIP-712"},{"name":"void_non_listed_offer_batch","description":"Voids multiple private offers atomically. Same prerequisite as void_non_listed_offer, but for an array of full offer objects. Returns unsigned transaction data."},{"name":"create_seller","description":"Creates a seller account on Boson Protocol. Required before creating any offers. signerAddress is automatically set as admin, assistant, and treasury. Provide s"},{"name":"update_seller","description":"Updates an existing seller account. Caller must be the current seller admin (signerAddress). Use get_sellers_by_address to retrieve the seller id first. Returns"},{"name":"send_signed_transaction","description":"Broadcasts a signed raw Ethereum transaction to the network. signedTransaction must be 0x-prefixed RLP-encoded hex obtained from local wallet signing (e.g. ethe"},{"name":"send_meta_transaction","description":"Relays a pre-signed meta-transaction via Biconomy so the user pays no gas. Requires sigR/sigS/sigV from a locally-signed EIP-712 payload. Use when the target op"},{"name":"send_native_meta_transaction","description":"Relays a native meta-transaction (EIP-712 signed function call) via Biconomy. Requires ABI-encoded function signature and sigR/sigS/sigV from a locally-signed E"},{"name":"send_forwarded_meta_transaction","description":"Relays a Biconomy forwarded meta-transaction (ERC-20 gas payment). Requires a complete ERC20ForwardRequest and domain separator signature. Returns: relay transa"},{"name":"withdraw_funds","description":"Withdraws funds from an entity's protocol treasury to the entity's treasury address. Sellers withdraw proceeds; buyers withdraw refunds. Caller must control the"},{"name":"deposit_funds","description":"Deposits ERC-20 or native tokens into an entity's protocol treasury (e.g. seller deposit). For ERC-20, call approve_exchange_token first. In metaTx mode, you ca"},{"name":"extend_dispute_timeout","description":"Extends the deadline of an active dispute. Dispute must be in 'Resolving' state. Either party can call this. Returns unsigned transaction data."},{"name":"expire_dispute","description":"Marks a dispute as expired after its resolution period passes. Permissionless — anyone can call. Exchange must be in 'Disputed' state past its timeout. Returns "},{"name":"expire_dispute_batch","description":"Marks multiple expired disputes in one transaction. All exchanges must be in 'Disputed' state past their respective timeouts. Permissionless. Returns unsigned t"},{"name":"resolve_dispute","description":"Resolves a dispute by mutual agreement. Workflow: (1) create_dispute_resolution_proposal generates typed data, (2) both parties sign the typed data locally with"},{"name":"raise_dispute","description":"Raises a dispute on a redeemed exchange. Caller must be the buyer. Must be called within disputePeriodDurationInMS after redemption. Returns unsigned transactio"},{"name":"retract_dispute","description":"Retracts a raised dispute, releasing seller deposit and restoring completion flow. Caller must be the buyer who raised it. Returns unsigned transaction data."},{"name":"escalate_dispute","description":"Escalates a stale dispute to the third-party dispute resolver. Caller must be the buyer. Resolver's escalation fee must be covered. Returns unsigned transaction"},{"name":"decide_dispute","description":"Decides an escalated dispute. Caller must be the dispute resolver assigned to the offer's disputeResolverId. Specify buyerPercent in basis points (0=all to sell"},{"name":"refuse_escalated_dispute","description":"Dispute resolver refuses to decide an escalated dispute. Returns the escalation fee to the buyer and resets dispute to 'Resolving' state. Returns unsigned trans"},{"name":"expire_escalated_dispute","description":"Expires an escalated dispute once the resolver's response period passes without a decision. Permissionless — anyone can call. Returns unsigned transaction data."},{"name":"create_dispute_resolution_proposal","description":"Generates EIP-712 typed data for a mutual dispute resolution proposal. Both buyer and seller must sign the same buyerPercentBasisPoints value locally with their"},{"name":"revoke_voucher","description":"Revokes a committed (not yet redeemed) voucher on behalf of the seller, returning funds to the buyer. Caller must be the seller assistant. Returns unsigned tran"},{"name":"approve_exchange_token","description":"Grants ERC-20 allowance to the Boson Protocol contract. Must be called before commit_to_offer or deposit_funds when using non-native exchange tokens, unless you"},{"name":"sign_receive_with_erc3009_authorization","description":"Generates EIP-712 typed data for an ERC-3009 ReceiveWithAuthorization (e.g. USDC). Authorizes the spender (default: protocol diamond) to pull `value` from signe"},{"name":"sign_receive_with_erc2612_permit","description":"Generates EIP-712 typed data for an EIP-2612 Permit. Authorizes the spender (default: protocol diamond) to pull `value` from signerAddress until `deadline`. Sig"},{"name":"sign_receive_with_permit2","description":"Generates EIP-712 typed data for a Uniswap Permit2 PermitTransferFrom. Authorizes the spender (default: protocol diamond) to pull `value` from signerAddress unt"},{"name":"sign_receive_with_dai_permit","description":"Generates EIP-712 typed data for a DAI-style Permit. Authorizes the spender (default: protocol diamond) to pull DAI-style tokens from signerAddress until `expir"},{"name":"commit_to_offer","description":"Commits to an offer, creating an exchange and minting a voucher NFT. Caller is the buyer (signerAddress) unless 'buyer' param is set. For ERC-20 offers, call ap"},{"name":"commit_to_conditional_offer","description":"Commits to a token-gated (conditional) offer using a specific gating tokenId. Caller (signerAddress) must hold the gating token specified by the offer's conditi"},{"name":"commit_to_offer_and_redeem_voucher","description":"Atomically commits to an offer and immediately redeems the voucher in a single transaction via the OrchestrationHandler. Buyer (signerAddress) must already hold"},{"name":"commit_to_conditional_offer_and_redeem_voucher","description":"Atomically commits to a token-gated (conditional) offer using a specific gating tokenId and immediately redeems the voucher in a single transaction. Buyer must "},{"name":"commit_to_buyer_offer","description":"Fulfils a buyer-initiated offer (creator='BUYER') by the seller. Caller must be the seller. Provide matching collateral. Returns unsigned transaction data."},{"name":"cancel_voucher","description":"Cancels a committed voucher. Caller must be the buyer (voucher holder). Buyer forfeits buyerCancellationPenalty; remainder is refunded. Returns unsigned transac"},{"name":"redeem_voucher","description":"Redeems a voucher, signalling physical receipt of goods and starting the dispute period clock. Caller must be the buyer. After redemption, buyer has disputePeri"},{"name":"complete_exchange","description":"Completes an exchange after the dispute period expires, releasing funds to the seller. Can be called by seller after dispute period or by buyer at any time post"},{"name":"get_sellers_by_address","description":"Reads seller entities associated with a specific Ethereum address. Use this to check if signerAddress already has a seller account before calling create_seller."},{"name":"get_all_products_with_not_voided_variants","description":"Reads product groupings with at least one non-voided variant from the Boson subgraph. Useful for storefront displays. Supports pagination and ordering. Read-onl"},{"name":"search_products","description":"Searches products in the Boson subgraph by keywords matched against title, description, brand, category, and tags. Supports pagination, ordering, filtering, and"},{"name":"validate_metadata","description":"Validates a metadata object against the Boson Protocol schema (PRODUCT_V1, BUNDLE, BASE, etc.) without storing it. Use before store_*_metadata to catch errors e"},{"name":"store_product_v1_metadata","description":"Stores a ProductV1 metadata object to IPFS. Call before create_offer to get metadataUri and metadataHash. Returns: { metadataUri: 'ipfs://...', metadataHash: '0"},{"name":"store_bundle_metadata","description":"Stores a Bundle metadata object to IPFS. Prerequisite: call store_bundle_item_product_v1_metadata and/or store_bundle_item_nft_metadata first; include their ret"},{"name":"store_base_metadata","description":"Stores a Base metadata object to IPFS. Use for simple offers that don't require ProductV1 or Bundle structure. Returns: { metadataUri, metadataHash } for use in"},{"name":"render_contractual_agreement","description":"Renders the legal contractual agreement text/HTML for an offer using its offer data and metadata. Use to preview or store the agreement. Returns: rendered agree"},{"name":"store_bundle_item_product_v1_metadata","description":"Stores a single ProductV1 bundle item's metadata to IPFS. Call once per physical product in a bundle before store_bundle_metadata. Returns: { url: 'ipfs://...' "},{"name":"store_bundle_item_nft_metadata","description":"Stores a single NFT bundle item's metadata to IPFS. Call once per NFT component in a bundle before store_bundle_metadata. Returns: { url: 'ipfs://...' } to incl"},{"name":"register_agent","description":"Registers a dACP agent with this MCP server instance, associating its Ethereum identities and roles. The signature proves control of each signerAddress. Server-"},{"name":"get_registered_agents","description":"Returns all dACP agents registered with this MCP server instance, with their associated protocol entities and roles. No auth required."},{"name":"get_supported_tokens","description":"Returns ERC-20 tokens accepted as exchange tokens on the given configId deployment. Use returned addresses in exchangeTokenAddress fields of create_offer. Read-"}],"toolCount":63,"toolsHash":"efaae4ec9832e94d93b789d7904ce5f258e2e951cc2031d43c2cf4159f298534","serverName":"boson-protocol-server","capabilities":["tools","resources","completions","prompts"],"serverVersion":"1.2.11","protocolVersion":"2025-06-18"}},{"at":"2026-10-08T21:21:54.373Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":38,"error":null,"detail":{"tools":[{"name":"get_config_ids","description":"Returns all valid configId values for this server. Call first to discover which network/deployment to use. No auth required."},{"name":"get_funds","description":"Reads treasury fund balances for sellers and buyers from the Boson subgraph. Supports pagination/ordering/filtering. Read-only — signerAddress not required. Ret"},{"name":"get_disputes","description":"Reads dispute records from the Boson subgraph. Supports pagination, ordering, and filtering by buyer/seller/state. Read-only. Returns: array of dispute entities"},{"name":"get_dispute_by_id","description":"Reads a single dispute by its ID (equals the exchangeId). Read-only. Returns: dispute entity with state, timeout, buyerPercent. Use get_disputes to search first"},{"name":"get_exchanges","description":"Reads exchange records (offer commitments) from the Boson subgraph. Filter by buyer/seller/state. Read-only. Returns: array of exchanges with offerId, state (Co"},{"name":"get_offers","description":"Reads offer listings from the Boson subgraph. Supports pagination, ordering, and filtering (e.g. by sellerId). Read-only. Returns: array of offers with price, d"},{"name":"get_sellers","description":"Reads seller account entities from the Boson subgraph. Optionally includes related offers, exchanges, funds, and logs. Read-only. Returns: array of seller entit"},{"name":"get_dispute_resolvers","description":"Reads registered dispute resolver entities. Use this to find a valid disputeResolverId for create_offer. Read-only. Returns: array of resolvers with ID, fees, e"},{"name":"create_offer","description":"Creates a product offer. Caller must have a seller account (create_seller first). Prerequisite: store metadata first with store_product_v1_metadata or store_bas"},{"name":"create_offer_with_condition","description":"Creates an offer gated by token-ownership (e.g. hold an ERC-721 to commit). Same prerequisites as create_offer plus a condition object specifying the gate token"},{"name":"create_buyer","description":"Creates a buyer account for signerAddress. Required before a buyer can commit to seller-initiated offers for the first time. No prerequisites. Returns unsigned "},{"name":"sign_full_offer","description":"Generates EIP-712 typed data for a non-listed (private) offer that the offer creator must sign. Call before create_offer_and_commit or void_non_listed_offer. Re"},{"name":"create_offer_and_commit","description":"Atomically creates a private offer and commits a specific buyer in one transaction. Prerequisite: call sign_full_offer, sign the returned typed data locally wit"},{"name":"create_offer_commit_and_redeem","description":"Atomically creates a private offer, commits a specific buyer, and immediately redeems the voucher in a single transaction via the OrchestrationHandler. Same pre"},{"name":"void_offer","description":"Voids a listed offer so it can no longer be committed to. Caller must be the seller assistant. Existing exchanges are unaffected. Returns unsigned transaction d"},{"name":"void_non_listed_offer","description":"Voids a private (non-listed) offer before it is fulfilled. Prerequisite: call sign_full_offer and sign the returned typed data locally with your wallet (EIP-712"},{"name":"void_non_listed_offer_batch","description":"Voids multiple private offers atomically. Same prerequisite as void_non_listed_offer, but for an array of full offer objects. Returns unsigned transaction data."},{"name":"create_seller","description":"Creates a seller account on Boson Protocol. Required before creating any offers. signerAddress is automatically set as admin, assistant, and treasury. Provide s"},{"name":"update_seller","description":"Updates an existing seller account. Caller must be the current seller admin (signerAddress). Use get_sellers_by_address to retrieve the seller id first. Returns"},{"name":"send_signed_transaction","description":"Broadcasts a signed raw Ethereum transaction to the network. signedTransaction must be 0x-prefixed RLP-encoded hex obtained from local wallet signing (e.g. ethe"},{"name":"send_meta_transaction","description":"Relays a pre-signed meta-transaction via Biconomy so the user pays no gas. Requires sigR/sigS/sigV from a locally-signed EIP-712 payload. Use when the target op"},{"name":"send_native_meta_transaction","description":"Relays a native meta-transaction (EIP-712 signed function call) via Biconomy. Requires ABI-encoded function signature and sigR/sigS/sigV from a locally-signed E"},{"name":"send_forwarded_meta_transaction","description":"Relays a Biconomy forwarded meta-transaction (ERC-20 gas payment). Requires a complete ERC20ForwardRequest and domain separator signature. Returns: relay transa"},{"name":"withdraw_funds","description":"Withdraws funds from an entity's protocol treasury to the entity's treasury address. Sellers withdraw proceeds; buyers withdraw refunds. Caller must control the"},{"name":"deposit_funds","description":"Deposits ERC-20 or native tokens into an entity's protocol treasury (e.g. seller deposit). For ERC-20, call approve_exchange_token first. In metaTx mode, you ca"},{"name":"extend_dispute_timeout","description":"Extends the deadline of an active dispute. Dispute must be in 'Resolving' state. Either party can call this. Returns unsigned transaction data."},{"name":"expire_dispute","description":"Marks a dispute as expired after its resolution period passes. Permissionless — anyone can call. Exchange must be in 'Disputed' state past its timeout. Returns "},{"name":"expire_dispute_batch","description":"Marks multiple expired disputes in one transaction. All exchanges must be in 'Disputed' state past their respective timeouts. Permissionless. Returns unsigned t"},{"name":"resolve_dispute","description":"Resolves a dispute by mutual agreement. Workflow: (1) create_dispute_resolution_proposal generates typed data, (2) both parties sign the typed data locally with"},{"name":"raise_dispute","description":"Raises a dispute on a redeemed exchange. Caller must be the buyer. Must be called within disputePeriodDurationInMS after redemption. Returns unsigned transactio"},{"name":"retract_dispute","description":"Retracts a raised dispute, releasing seller deposit and restoring completion flow. Caller must be the buyer who raised it. Returns unsigned transaction data."},{"name":"escalate_dispute","description":"Escalates a stale dispute to the third-party dispute resolver. Caller must be the buyer. Resolver's escalation fee must be covered. Returns unsigned transaction"},{"name":"decide_dispute","description":"Decides an escalated dispute. Caller must be the dispute resolver assigned to the offer's disputeResolverId. Specify buyerPercent in basis points (0=all to sell"},{"name":"refuse_escalated_dispute","description":"Dispute resolver refuses to decide an escalated dispute. Returns the escalation fee to the buyer and resets dispute to 'Resolving' state. Returns unsigned trans"},{"name":"expire_escalated_dispute","description":"Expires an escalated dispute once the resolver's response period passes without a decision. Permissionless — anyone can call. Returns unsigned transaction data."},{"name":"create_dispute_resolution_proposal","description":"Generates EIP-712 typed data for a mutual dispute resolution proposal. Both buyer and seller must sign the same buyerPercentBasisPoints value locally with their"},{"name":"revoke_voucher","description":"Revokes a committed (not yet redeemed) voucher on behalf of the seller, returning funds to the buyer. Caller must be the seller assistant. Returns unsigned tran"},{"name":"approve_exchange_token","description":"Grants ERC-20 allowance to the Boson Protocol contract. Must be called before commit_to_offer or deposit_funds when using non-native exchange tokens, unless you"},{"name":"sign_receive_with_erc3009_authorization","description":"Generates EIP-712 typed data for an ERC-3009 ReceiveWithAuthorization (e.g. USDC). Authorizes the spender (default: protocol diamond) to pull `value` from signe"},{"name":"sign_receive_with_erc2612_permit","description":"Generates EIP-712 typed data for an EIP-2612 Permit. Authorizes the spender (default: protocol diamond) to pull `value` from signerAddress until `deadline`. Sig"},{"name":"sign_receive_with_permit2","description":"Generates EIP-712 typed data for a Uniswap Permit2 PermitTransferFrom. Authorizes the spender (default: protocol diamond) to pull `value` from signerAddress unt"},{"name":"sign_receive_with_dai_permit","description":"Generates EIP-712 typed data for a DAI-style Permit. Authorizes the spender (default: protocol diamond) to pull DAI-style tokens from signerAddress until `expir"},{"name":"commit_to_offer","description":"Commits to an offer, creating an exchange and minting a voucher NFT. Caller is the buyer (signerAddress) unless 'buyer' param is set. For ERC-20 offers, call ap"},{"name":"commit_to_conditional_offer","description":"Commits to a token-gated (conditional) offer using a specific gating tokenId. Caller (signerAddress) must hold the gating token specified by the offer's conditi"},{"name":"commit_to_offer_and_redeem_voucher","description":"Atomically commits to an offer and immediately redeems the voucher in a single transaction via the OrchestrationHandler. Buyer (signerAddress) must already hold"},{"name":"commit_to_conditional_offer_and_redeem_voucher","description":"Atomically commits to a token-gated (conditional) offer using a specific gating tokenId and immediately redeems the voucher in a single transaction. Buyer must "},{"name":"commit_to_buyer_offer","description":"Fulfils a buyer-initiated offer (creator='BUYER') by the seller. Caller must be the seller. Provide matching collateral. Returns unsigned transaction data."},{"name":"cancel_voucher","description":"Cancels a committed voucher. Caller must be the buyer (voucher holder). Buyer forfeits buyerCancellationPenalty; remainder is refunded. Returns unsigned transac"},{"name":"redeem_voucher","description":"Redeems a voucher, signalling physical receipt of goods and starting the dispute period clock. Caller must be the buyer. After redemption, buyer has disputePeri"},{"name":"complete_exchange","description":"Completes an exchange after the dispute period expires, releasing funds to the seller. Can be called by seller after dispute period or by buyer at any time post"},{"name":"get_sellers_by_address","description":"Reads seller entities associated with a specific Ethereum address. Use this to check if signerAddress already has a seller account before calling create_seller."},{"name":"get_all_products_with_not_voided_variants","description":"Reads product groupings with at least one non-voided variant from the Boson subgraph. Useful for storefront displays. Supports pagination and ordering. Read-onl"},{"name":"search_products","description":"Searches products in the Boson subgraph by keywords matched against title, description, brand, category, and tags. Supports pagination, ordering, filtering, and"},{"name":"validate_metadata","description":"Validates a metadata object against the Boson Protocol schema (PRODUCT_V1, BUNDLE, BASE, etc.) without storing it. Use before store_*_metadata to catch errors e"},{"name":"store_product_v1_metadata","description":"Stores a ProductV1 metadata object to IPFS. Call before create_offer to get metadataUri and metadataHash. Returns: { metadataUri: 'ipfs://...', metadataHash: '0"},{"name":"store_bundle_metadata","description":"Stores a Bundle metadata object to IPFS. Prerequisite: call store_bundle_item_product_v1_metadata and/or store_bundle_item_nft_metadata first; include their ret"},{"name":"store_base_metadata","description":"Stores a Base metadata object to IPFS. Use for simple offers that don't require ProductV1 or Bundle structure. Returns: { metadataUri, metadataHash } for use in"},{"name":"render_contractual_agreement","description":"Renders the legal contractual agreement text/HTML for an offer using its offer data and metadata. Use to preview or store the agreement. Returns: rendered agree"},{"name":"store_bundle_item_product_v1_metadata","description":"Stores a single ProductV1 bundle item's metadata to IPFS. Call once per physical product in a bundle before store_bundle_metadata. Returns: { url: 'ipfs://...' "},{"name":"store_bundle_item_nft_metadata","description":"Stores a single NFT bundle item's metadata to IPFS. Call once per NFT component in a bundle before store_bundle_metadata. Returns: { url: 'ipfs://...' } to incl"},{"name":"register_agent","description":"Registers a dACP agent with this MCP server instance, associating its Ethereum identities and roles. The signature proves control of each signerAddress. Server-"},{"name":"get_registered_agents","description":"Returns all dACP agents registered with this MCP server instance, with their associated protocol entities and roles. No auth required."},{"name":"get_supported_tokens","description":"Returns ERC-20 tokens accepted as exchange tokens on the given configId deployment. Use returned addresses in exchangeTokenAddress fields of create_offer. Read-"}],"toolCount":63,"toolsHash":"efaae4ec9832e94d93b789d7904ce5f258e2e951cc2031d43c2cf4159f298534","serverName":"boson-protocol-server","capabilities":["tools","resources","completions","prompts"],"serverVersion":"1.2.11","protocolVersion":"2025-06-18"}},{"at":"2026-10-08T14:23:41.507Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":275,"error":null,"detail":{"tools":[{"name":"get_config_ids","description":"Returns all valid configId values for this server. Call first to discover which network/deployment to use. No auth required."},{"name":"get_funds","description":"Reads treasury fund balances for sellers and buyers from the Boson subgraph. Supports pagination/ordering/filtering. Read-only — signerAddress not required. Ret"},{"name":"get_disputes","description":"Reads dispute records from the Boson subgraph. Supports pagination, ordering, and filtering by buyer/seller/state. Read-only. Returns: array of dispute entities"},{"name":"get_dispute_by_id","description":"Reads a single dispute by its ID (equals the exchangeId). Read-only. Returns: dispute entity with state, timeout, buyerPercent. Use get_disputes to search first"},{"name":"get_exchanges","description":"Reads exchange records (offer commitments) from the Boson subgraph. Filter by buyer/seller/state. Read-only. Returns: array of exchanges with offerId, state (Co"},{"name":"get_offers","description":"Reads offer listings from the Boson subgraph. Supports pagination, ordering, and filtering (e.g. by sellerId). Read-only. Returns: array of offers with price, d"},{"name":"get_sellers","description":"Reads seller account entities from the Boson subgraph. Optionally includes related offers, exchanges, funds, and logs. Read-only. Returns: array of seller entit"},{"name":"get_dispute_resolvers","description":"Reads registered dispute resolver entities. Use this to find a valid disputeResolverId for create_offer. Read-only. Returns: array of resolvers with ID, fees, e"},{"name":"create_offer","description":"Creates a product offer. Caller must have a seller account (create_seller first). Prerequisite: store metadata first with store_product_v1_metadata or store_bas"},{"name":"create_offer_with_condition","description":"Creates an offer gated by token-ownership (e.g. hold an ERC-721 to commit). Same prerequisites as create_offer plus a condition object specifying the gate token"},{"name":"create_buyer","description":"Creates a buyer account for signerAddress. Required before a buyer can commit to seller-initiated offers for the first time. No prerequisites. Returns unsigned "},{"name":"sign_full_offer","description":"Generates EIP-712 typed data for a non-listed (private) offer that the offer creator must sign. Call before create_offer_and_commit or void_non_listed_offer. Re"},{"name":"create_offer_and_commit","description":"Atomically creates a private offer and commits a specific buyer in one transaction. Prerequisite: call sign_full_offer, sign the returned typed data locally wit"},{"name":"create_offer_commit_and_redeem","description":"Atomically creates a private offer, commits a specific buyer, and immediately redeems the voucher in a single transaction via the OrchestrationHandler. Same pre"},{"name":"void_offer","description":"Voids a listed offer so it can no longer be committed to. Caller must be the seller assistant. Existing exchanges are unaffected. Returns unsigned transaction d"},{"name":"void_non_listed_offer","description":"Voids a private (non-listed) offer before it is fulfilled. Prerequisite: call sign_full_offer and sign the returned typed data locally with your wallet (EIP-712"},{"name":"void_non_listed_offer_batch","description":"Voids multiple private offers atomically. Same prerequisite as void_non_listed_offer, but for an array of full offer objects. Returns unsigned transaction data."},{"name":"create_seller","description":"Creates a seller account on Boson Protocol. Required before creating any offers. signerAddress is automatically set as admin, assistant, and treasury. Provide s"},{"name":"update_seller","description":"Updates an existing seller account. Caller must be the current seller admin (signerAddress). Use get_sellers_by_address to retrieve the seller id first. Returns"},{"name":"send_signed_transaction","description":"Broadcasts a signed raw Ethereum transaction to the network. signedTransaction must be 0x-prefixed RLP-encoded hex obtained from local wallet signing (e.g. ethe"},{"name":"send_meta_transaction","description":"Relays a pre-signed meta-transaction via Biconomy so the user pays no gas. Requires sigR/sigS/sigV from a locally-signed EIP-712 payload. Use when the target op"},{"name":"send_native_meta_transaction","description":"Relays a native meta-transaction (EIP-712 signed function call) via Biconomy. Requires ABI-encoded function signature and sigR/sigS/sigV from a locally-signed E"},{"name":"send_forwarded_meta_transaction","description":"Relays a Biconomy forwarded meta-transaction (ERC-20 gas payment). Requires a complete ERC20ForwardRequest and domain separator signature. Returns: relay transa"},{"name":"withdraw_funds","description":"Withdraws funds from an entity's protocol treasury to the entity's treasury address. Sellers withdraw proceeds; buyers withdraw refunds. Caller must control the"},{"name":"deposit_funds","description":"Deposits ERC-20 or native tokens into an entity's protocol treasury (e.g. seller deposit). For ERC-20, call approve_exchange_token first. In metaTx mode, you ca"},{"name":"extend_dispute_timeout","description":"Extends the deadline of an active dispute. Dispute must be in 'Resolving' state. Either party can call this. Returns unsigned transaction data."},{"name":"expire_dispute","description":"Marks a dispute as expired after its resolution period passes. Permissionless — anyone can call. Exchange must be in 'Disputed' state past its timeout. Returns "},{"name":"expire_dispute_batch","description":"Marks multiple expired disputes in one transaction. All exchanges must be in 'Disputed' state past their respective timeouts. Permissionless. Returns unsigned t"},{"name":"resolve_dispute","description":"Resolves a dispute by mutual agreement. Workflow: (1) create_dispute_resolution_proposal generates typed data, (2) both parties sign the typed data locally with"},{"name":"raise_dispute","description":"Raises a dispute on a redeemed exchange. Caller must be the buyer. Must be called within disputePeriodDurationInMS after redemption. Returns unsigned transactio"},{"name":"retract_dispute","description":"Retracts a raised dispute, releasing seller deposit and restoring completion flow. Caller must be the buyer who raised it. Returns unsigned transaction data."},{"name":"escalate_dispute","description":"Escalates a stale dispute to the third-party dispute resolver. Caller must be the buyer. Resolver's escalation fee must be covered. Returns unsigned transaction"},{"name":"decide_dispute","description":"Decides an escalated dispute. Caller must be the dispute resolver assigned to the offer's disputeResolverId. Specify buyerPercent in basis points (0=all to sell"},{"name":"refuse_escalated_dispute","description":"Dispute resolver refuses to decide an escalated dispute. Returns the escalation fee to the buyer and resets dispute to 'Resolving' state. Returns unsigned trans"},{"name":"expire_escalated_dispute","description":"Expires an escalated dispute once the resolver's response period passes without a decision. Permissionless — anyone can call. Returns unsigned transaction data."},{"name":"create_dispute_resolution_proposal","description":"Generates EIP-712 typed data for a mutual dispute resolution proposal. Both buyer and seller must sign the same buyerPercentBasisPoints value locally with their"},{"name":"revoke_voucher","description":"Revokes a committed (not yet redeemed) voucher on behalf of the seller, returning funds to the buyer. Caller must be the seller assistant. Returns unsigned tran"},{"name":"approve_exchange_token","description":"Grants ERC-20 allowance to the Boson Protocol contract. Must be called before commit_to_offer or deposit_funds when using non-native exchange tokens, unless you"},{"name":"sign_receive_with_erc3009_authorization","description":"Generates EIP-712 typed data for an ERC-3009 ReceiveWithAuthorization (e.g. USDC). Authorizes the spender (default: protocol diamond) to pull `value` from signe"},{"name":"sign_receive_with_erc2612_permit","description":"Generates EIP-712 typed data for an EIP-2612 Permit. Authorizes the spender (default: protocol diamond) to pull `value` from signerAddress until `deadline`. Sig"},{"name":"sign_receive_with_permit2","description":"Generates EIP-712 typed data for a Uniswap Permit2 PermitTransferFrom. Authorizes the spender (default: protocol diamond) to pull `value` from signerAddress unt"},{"name":"sign_receive_with_dai_permit","description":"Generates EIP-712 typed data for a DAI-style Permit. Authorizes the spender (default: protocol diamond) to pull DAI-style tokens from signerAddress until `expir"},{"name":"commit_to_offer","description":"Commits to an offer, creating an exchange and minting a voucher NFT. Caller is the buyer (signerAddress) unless 'buyer' param is set. For ERC-20 offers, call ap"},{"name":"commit_to_conditional_offer","description":"Commits to a token-gated (conditional) offer using a specific gating tokenId. Caller (signerAddress) must hold the gating token specified by the offer's conditi"},{"name":"commit_to_offer_and_redeem_voucher","description":"Atomically commits to an offer and immediately redeems the voucher in a single transaction via the OrchestrationHandler. Buyer (signerAddress) must already hold"},{"name":"commit_to_conditional_offer_and_redeem_voucher","description":"Atomically commits to a token-gated (conditional) offer using a specific gating tokenId and immediately redeems the voucher in a single transaction. Buyer must "},{"name":"commit_to_buyer_offer","description":"Fulfils a buyer-initiated offer (creator='BUYER') by the seller. Caller must be the seller. Provide matching collateral. Returns unsigned transaction data."},{"name":"cancel_voucher","description":"Cancels a committed voucher. Caller must be the buyer (voucher holder). Buyer forfeits buyerCancellationPenalty; remainder is refunded. Returns unsigned transac"},{"name":"redeem_voucher","description":"Redeems a voucher, signalling physical receipt of goods and starting the dispute period clock. Caller must be the buyer. After redemption, buyer has disputePeri"},{"name":"complete_exchange","description":"Completes an exchange after the dispute period expires, releasing funds to the seller. Can be called by seller after dispute period or by buyer at any time post"},{"name":"get_sellers_by_address","description":"Reads seller entities associated with a specific Ethereum address. Use this to check if signerAddress already has a seller account before calling create_seller."},{"name":"get_all_products_with_not_voided_variants","description":"Reads product groupings with at least one non-voided variant from the Boson subgraph. Useful for storefront displays. Supports pagination and ordering. Read-onl"},{"name":"search_products","description":"Searches products in the Boson subgraph by keywords matched against title, description, brand, category, and tags. Supports pagination, ordering, filtering, and"},{"name":"validate_metadata","description":"Validates a metadata object against the Boson Protocol schema (PRODUCT_V1, BUNDLE, BASE, etc.) without storing it. Use before store_*_metadata to catch errors e"},{"name":"store_product_v1_metadata","description":"Stores a ProductV1 metadata object to IPFS. Call before create_offer to get metadataUri and metadataHash. Returns: { metadataUri: 'ipfs://...', metadataHash: '0"},{"name":"store_bundle_metadata","description":"Stores a Bundle metadata object to IPFS. Prerequisite: call store_bundle_item_product_v1_metadata and/or store_bundle_item_nft_metadata first; include their ret"},{"name":"store_base_metadata","description":"Stores a Base metadata object to IPFS. Use for simple offers that don't require ProductV1 or Bundle structure. Returns: { metadataUri, metadataHash } for use in"},{"name":"render_contractual_agreement","description":"Renders the legal contractual agreement text/HTML for an offer using its offer data and metadata. Use to preview or store the agreement. Returns: rendered agree"},{"name":"store_bundle_item_product_v1_metadata","description":"Stores a single ProductV1 bundle item's metadata to IPFS. Call once per physical product in a bundle before store_bundle_metadata. Returns: { url: 'ipfs://...' "},{"name":"store_bundle_item_nft_metadata","description":"Stores a single NFT bundle item's metadata to IPFS. Call once per NFT component in a bundle before store_bundle_metadata. Returns: { url: 'ipfs://...' } to incl"},{"name":"register_agent","description":"Registers a dACP agent with this MCP server instance, associating its Ethereum identities and roles. The signature proves control of each signerAddress. Server-"},{"name":"get_registered_agents","description":"Returns all dACP agents registered with this MCP server instance, with their associated protocol entities and roles. No auth required."},{"name":"get_supported_tokens","description":"Returns ERC-20 tokens accepted as exchange tokens on the given configId deployment. Use returned addresses in exchangeTokenAddress fields of create_offer. Read-"}],"toolCount":63,"toolsHash":"efaae4ec9832e94d93b789d7904ce5f258e2e951cc2031d43c2cf4159f298534","serverName":"boson-protocol-server","capabilities":["tools","resources","completions","prompts"],"serverVersion":"1.2.11","protocolVersion":"2025-06-18"}},{"at":"2026-10-08T08:30:14.915Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":74,"error":null,"detail":{"tools":[{"name":"get_config_ids","description":"Returns all valid configId values for this server. Call first to discover which network/deployment to use. No auth required."},{"name":"get_funds","description":"Reads treasury fund balances for sellers and buyers from the Boson subgraph. Supports pagination/ordering/filtering. Read-only — signerAddress not required. Ret"},{"name":"get_disputes","description":"Reads dispute records from the Boson subgraph. Supports pagination, ordering, and filtering by buyer/seller/state. Read-only. Returns: array of dispute entities"},{"name":"get_dispute_by_id","description":"Reads a single dispute by its ID (equals the exchangeId). Read-only. Returns: dispute entity with state, timeout, buyerPercent. Use get_disputes to search first"},{"name":"get_exchanges","description":"Reads exchange records (offer commitments) from the Boson subgraph. Filter by buyer/seller/state. Read-only. Returns: array of exchanges with offerId, state (Co"},{"name":"get_offers","description":"Reads offer listings from the Boson subgraph. Supports pagination, ordering, and filtering (e.g. by sellerId). Read-only. Returns: array of offers with price, d"},{"name":"get_sellers","description":"Reads seller account entities from the Boson subgraph. Optionally includes related offers, exchanges, funds, and logs. Read-only. Returns: array of seller entit"},{"name":"get_dispute_resolvers","description":"Reads registered dispute resolver entities. Use this to find a valid disputeResolverId for create_offer. Read-only. Returns: array of resolvers with ID, fees, e"},{"name":"create_offer","description":"Creates a product offer. Caller must have a seller account (create_seller first). Prerequisite: store metadata first with store_product_v1_metadata or store_bas"},{"name":"create_offer_with_condition","description":"Creates an offer gated by token-ownership (e.g. hold an ERC-721 to commit). Same prerequisites as create_offer plus a condition object specifying the gate token"},{"name":"create_buyer","description":"Creates a buyer account for signerAddress. Required before a buyer can commit to seller-initiated offers for the first time. No prerequisites. Returns unsigned "},{"name":"sign_full_offer","description":"Generates EIP-712 typed data for a non-listed (private) offer that the offer creator must sign. Call before create_offer_and_commit or void_non_listed_offer. Re"},{"name":"create_offer_and_commit","description":"Atomically creates a private offer and commits a specific buyer in one transaction. Prerequisite: call sign_full_offer, sign the returned typed data locally wit"},{"name":"create_offer_commit_and_redeem","description":"Atomically creates a private offer, commits a specific buyer, and immediately redeems the voucher in a single transaction via the OrchestrationHandler. Same pre"},{"name":"void_offer","description":"Voids a listed offer so it can no longer be committed to. Caller must be the seller assistant. Existing exchanges are unaffected. Returns unsigned transaction d"},{"name":"void_non_listed_offer","description":"Voids a private (non-listed) offer before it is fulfilled. Prerequisite: call sign_full_offer and sign the returned typed data locally with your wallet (EIP-712"},{"name":"void_non_listed_offer_batch","description":"Voids multiple private offers atomically. Same prerequisite as void_non_listed_offer, but for an array of full offer objects. Returns unsigned transaction data."},{"name":"create_seller","description":"Creates a seller account on Boson Protocol. Required before creating any offers. signerAddress is automatically set as admin, assistant, and treasury. Provide s"},{"name":"update_seller","description":"Updates an existing seller account. Caller must be the current seller admin (signerAddress). Use get_sellers_by_address to retrieve the seller id first. Returns"},{"name":"send_signed_transaction","description":"Broadcasts a signed raw Ethereum transaction to the network. signedTransaction must be 0x-prefixed RLP-encoded hex obtained from local wallet signing (e.g. ethe"},{"name":"send_meta_transaction","description":"Relays a pre-signed meta-transaction via Biconomy so the user pays no gas. Requires sigR/sigS/sigV from a locally-signed EIP-712 payload. Use when the target op"},{"name":"send_native_meta_transaction","description":"Relays a native meta-transaction (EIP-712 signed function call) via Biconomy. Requires ABI-encoded function signature and sigR/sigS/sigV from a locally-signed E"},{"name":"send_forwarded_meta_transaction","description":"Relays a Biconomy forwarded meta-transaction (ERC-20 gas payment). Requires a complete ERC20ForwardRequest and domain separator signature. Returns: relay transa"},{"name":"withdraw_funds","description":"Withdraws funds from an entity's protocol treasury to the entity's treasury address. Sellers withdraw proceeds; buyers withdraw refunds. Caller must control the"},{"name":"deposit_funds","description":"Deposits ERC-20 or native tokens into an entity's protocol treasury (e.g. seller deposit). For ERC-20, call approve_exchange_token first. In metaTx mode, you ca"},{"name":"extend_dispute_timeout","description":"Extends the deadline of an active dispute. Dispute must be in 'Resolving' state. Either party can call this. Returns unsigned transaction data."},{"name":"expire_dispute","description":"Marks a dispute as expired after its resolution period passes. Permissionless — anyone can call. Exchange must be in 'Disputed' state past its timeout. Returns "},{"name":"expire_dispute_batch","description":"Marks multiple expired disputes in one transaction. All exchanges must be in 'Disputed' state past their respective timeouts. Permissionless. Returns unsigned t"},{"name":"resolve_dispute","description":"Resolves a dispute by mutual agreement. Workflow: (1) create_dispute_resolution_proposal generates typed data, (2) both parties sign the typed data locally with"},{"name":"raise_dispute","description":"Raises a dispute on a redeemed exchange. Caller must be the buyer. Must be called within disputePeriodDurationInMS after redemption. Returns unsigned transactio"},{"name":"retract_dispute","description":"Retracts a raised dispute, releasing seller deposit and restoring completion flow. Caller must be the buyer who raised it. Returns unsigned transaction data."},{"name":"escalate_dispute","description":"Escalates a stale dispute to the third-party dispute resolver. Caller must be the buyer. Resolver's escalation fee must be covered. Returns unsigned transaction"},{"name":"decide_dispute","description":"Decides an escalated dispute. Caller must be the dispute resolver assigned to the offer's disputeResolverId. Specify buyerPercent in basis points (0=all to sell"},{"name":"refuse_escalated_dispute","description":"Dispute resolver refuses to decide an escalated dispute. Returns the escalation fee to the buyer and resets dispute to 'Resolving' state. Returns unsigned trans"},{"name":"expire_escalated_dispute","description":"Expires an escalated dispute once the resolver's response period passes without a decision. Permissionless — anyone can call. Returns unsigned transaction data."},{"name":"create_dispute_resolution_proposal","description":"Generates EIP-712 typed data for a mutual dispute resolution proposal. Both buyer and seller must sign the same buyerPercentBasisPoints value locally with their"},{"name":"revoke_voucher","description":"Revokes a committed (not yet redeemed) voucher on behalf of the seller, returning funds to the buyer. Caller must be the seller assistant. Returns unsigned tran"},{"name":"approve_exchange_token","description":"Grants ERC-20 allowance to the Boson Protocol contract. Must be called before commit_to_offer or deposit_funds when using non-native exchange tokens, unless you"},{"name":"sign_receive_with_erc3009_authorization","description":"Generates EIP-712 typed data for an ERC-3009 ReceiveWithAuthorization (e.g. USDC). Authorizes the spender (default: protocol diamond) to pull `value` from signe"},{"name":"sign_receive_with_erc2612_permit","description":"Generates EIP-712 typed data for an EIP-2612 Permit. Authorizes the spender (default: protocol diamond) to pull `value` from signerAddress until `deadline`. Sig"},{"name":"sign_receive_with_permit2","description":"Generates EIP-712 typed data for a Uniswap Permit2 PermitTransferFrom. Authorizes the spender (default: protocol diamond) to pull `value` from signerAddress unt"},{"name":"sign_receive_with_dai_permit","description":"Generates EIP-712 typed data for a DAI-style Permit. Authorizes the spender (default: protocol diamond) to pull DAI-style tokens from signerAddress until `expir"},{"name":"commit_to_offer","description":"Commits to an offer, creating an exchange and minting a voucher NFT. Caller is the buyer (signerAddress) unless 'buyer' param is set. For ERC-20 offers, call ap"},{"name":"commit_to_conditional_offer","description":"Commits to a token-gated (conditional) offer using a specific gating tokenId. Caller (signerAddress) must hold the gating token specified by the offer's conditi"},{"name":"commit_to_offer_and_redeem_voucher","description":"Atomically commits to an offer and immediately redeems the voucher in a single transaction via the OrchestrationHandler. Buyer (signerAddress) must already hold"},{"name":"commit_to_conditional_offer_and_redeem_voucher","description":"Atomically commits to a token-gated (conditional) offer using a specific gating tokenId and immediately redeems the voucher in a single transaction. Buyer must "},{"name":"commit_to_buyer_offer","description":"Fulfils a buyer-initiated offer (creator='BUYER') by the seller. Caller must be the seller. Provide matching collateral. Returns unsigned transaction data."},{"name":"cancel_voucher","description":"Cancels a committed voucher. Caller must be the buyer (voucher holder). Buyer forfeits buyerCancellationPenalty; remainder is refunded. Returns unsigned transac"},{"name":"redeem_voucher","description":"Redeems a voucher, signalling physical receipt of goods and starting the dispute period clock. Caller must be the buyer. After redemption, buyer has disputePeri"},{"name":"complete_exchange","description":"Completes an exchange after the dispute period expires, releasing funds to the seller. Can be called by seller after dispute period or by buyer at any time post"},{"name":"get_sellers_by_address","description":"Reads seller entities associated with a specific Ethereum address. Use this to check if signerAddress already has a seller account before calling create_seller."},{"name":"get_all_products_with_not_voided_variants","description":"Reads product groupings with at least one non-voided variant from the Boson subgraph. Useful for storefront displays. Supports pagination and ordering. Read-onl"},{"name":"search_products","description":"Searches products in the Boson subgraph by keywords matched against title, description, brand, category, and tags. Supports pagination, ordering, filtering, and"},{"name":"validate_metadata","description":"Validates a metadata object against the Boson Protocol schema (PRODUCT_V1, BUNDLE, BASE, etc.) without storing it. Use before store_*_metadata to catch errors e"},{"name":"store_product_v1_metadata","description":"Stores a ProductV1 metadata object to IPFS. Call before create_offer to get metadataUri and metadataHash. Returns: { metadataUri: 'ipfs://...', metadataHash: '0"},{"name":"store_bundle_metadata","description":"Stores a Bundle metadata object to IPFS. Prerequisite: call store_bundle_item_product_v1_metadata and/or store_bundle_item_nft_metadata first; include their ret"},{"name":"store_base_metadata","description":"Stores a Base metadata object to IPFS. Use for simple offers that don't require ProductV1 or Bundle structure. Returns: { metadataUri, metadataHash } for use in"},{"name":"render_contractual_agreement","description":"Renders the legal contractual agreement text/HTML for an offer using its offer data and metadata. Use to preview or store the agreement. Returns: rendered agree"},{"name":"store_bundle_item_product_v1_metadata","description":"Stores a single ProductV1 bundle item's metadata to IPFS. Call once per physical product in a bundle before store_bundle_metadata. Returns: { url: 'ipfs://...' "},{"name":"store_bundle_item_nft_metadata","description":"Stores a single NFT bundle item's metadata to IPFS. Call once per NFT component in a bundle before store_bundle_metadata. Returns: { url: 'ipfs://...' } to incl"},{"name":"register_agent","description":"Registers a dACP agent with this MCP server instance, associating its Ethereum identities and roles. The signature proves control of each signerAddress. Server-"},{"name":"get_registered_agents","description":"Returns all dACP agents registered with this MCP server instance, with their associated protocol entities and roles. No auth required."},{"name":"get_supported_tokens","description":"Returns ERC-20 tokens accepted as exchange tokens on the given configId deployment. Use returned addresses in exchangeTokenAddress fields of create_offer. Read-"}],"toolCount":63,"toolsHash":"efaae4ec9832e94d93b789d7904ce5f258e2e951cc2031d43c2cf4159f298534","serverName":"boson-protocol-server","capabilities":["tools","resources","completions","prompts"],"serverVersion":"1.2.11","protocolVersion":"2025-06-18"}},{"at":"2026-10-08T02:21:23.544Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":63,"error":null,"detail":{"tools":[{"name":"get_config_ids","description":"Returns all valid configId values for this server. Call first to discover which network/deployment to use. No auth required."},{"name":"get_funds","description":"Reads treasury fund balances for sellers and buyers from the Boson subgraph. Supports pagination/ordering/filtering. Read-only — signerAddress not required. Ret"},{"name":"get_disputes","description":"Reads dispute records from the Boson subgraph. Supports pagination, ordering, and filtering by buyer/seller/state. Read-only. Returns: array of dispute entities"},{"name":"get_dispute_by_id","description":"Reads a single dispute by its ID (equals the exchangeId). Read-only. Returns: dispute entity with state, timeout, buyerPercent. Use get_disputes to search first"},{"name":"get_exchanges","description":"Reads exchange records (offer commitments) from the Boson subgraph. Filter by buyer/seller/state. Read-only. Returns: array of exchanges with offerId, state (Co"},{"name":"get_offers","description":"Reads offer listings from the Boson subgraph. Supports pagination, ordering, and filtering (e.g. by sellerId). Read-only. Returns: array of offers with price, d"},{"name":"get_sellers","description":"Reads seller account entities from the Boson subgraph. Optionally includes related offers, exchanges, funds, and logs. Read-only. Returns: array of seller entit"},{"name":"get_dispute_resolvers","description":"Reads registered dispute resolver entities. Use this to find a valid disputeResolverId for create_offer. Read-only. Returns: array of resolvers with ID, fees, e"},{"name":"create_offer","description":"Creates a product offer. Caller must have a seller account (create_seller first). Prerequisite: store metadata first with store_product_v1_metadata or store_bas"},{"name":"create_offer_with_condition","description":"Creates an offer gated by token-ownership (e.g. hold an ERC-721 to commit). Same prerequisites as create_offer plus a condition object specifying the gate token"},{"name":"create_buyer","description":"Creates a buyer account for signerAddress. Required before a buyer can commit to seller-initiated offers for the first time. No prerequisites. Returns unsigned "},{"name":"sign_full_offer","description":"Generates EIP-712 typed data for a non-listed (private) offer that the offer creator must sign. Call before create_offer_and_commit or void_non_listed_offer. Re"},{"name":"create_offer_and_commit","description":"Atomically creates a private offer and commits a specific buyer in one transaction. Prerequisite: call sign_full_offer, sign the returned typed data locally wit"},{"name":"create_offer_commit_and_redeem","description":"Atomically creates a private offer, commits a specific buyer, and immediately redeems the voucher in a single transaction via the OrchestrationHandler. Same pre"},{"name":"void_offer","description":"Voids a listed offer so it can no longer be committed to. Caller must be the seller assistant. Existing exchanges are unaffected. Returns unsigned transaction d"},{"name":"void_non_listed_offer","description":"Voids a private (non-listed) offer before it is fulfilled. Prerequisite: call sign_full_offer and sign the returned typed data locally with your wallet (EIP-712"},{"name":"void_non_listed_offer_batch","description":"Voids multiple private offers atomically. Same prerequisite as void_non_listed_offer, but for an array of full offer objects. Returns unsigned transaction data."},{"name":"create_seller","description":"Creates a seller account on Boson Protocol. Required before creating any offers. signerAddress is automatically set as admin, assistant, and treasury. Provide s"},{"name":"update_seller","description":"Updates an existing seller account. Caller must be the current seller admin (signerAddress). Use get_sellers_by_address to retrieve the seller id first. Returns"},{"name":"send_signed_transaction","description":"Broadcasts a signed raw Ethereum transaction to the network. signedTransaction must be 0x-prefixed RLP-encoded hex obtained from local wallet signing (e.g. ethe"},{"name":"send_meta_transaction","description":"Relays a pre-signed meta-transaction via Biconomy so the user pays no gas. Requires sigR/sigS/sigV from a locally-signed EIP-712 payload. Use when the target op"},{"name":"send_native_meta_transaction","description":"Relays a native meta-transaction (EIP-712 signed function call) via Biconomy. Requires ABI-encoded function signature and sigR/sigS/sigV from a locally-signed E"},{"name":"send_forwarded_meta_transaction","description":"Relays a Biconomy forwarded meta-transaction (ERC-20 gas payment). Requires a complete ERC20ForwardRequest and domain separator signature. Returns: relay transa"},{"name":"withdraw_funds","description":"Withdraws funds from an entity's protocol treasury to the entity's treasury address. Sellers withdraw proceeds; buyers withdraw refunds. Caller must control the"},{"name":"deposit_funds","description":"Deposits ERC-20 or native tokens into an entity's protocol treasury (e.g. seller deposit). For ERC-20, call approve_exchange_token first. In metaTx mode, you ca"},{"name":"extend_dispute_timeout","description":"Extends the deadline of an active dispute. Dispute must be in 'Resolving' state. Either party can call this. Returns unsigned transaction data."},{"name":"expire_dispute","description":"Marks a dispute as expired after its resolution period passes. Permissionless — anyone can call. Exchange must be in 'Disputed' state past its timeout. Returns "},{"name":"expire_dispute_batch","description":"Marks multiple expired disputes in one transaction. All exchanges must be in 'Disputed' state past their respective timeouts. Permissionless. Returns unsigned t"},{"name":"resolve_dispute","description":"Resolves a dispute by mutual agreement. Workflow: (1) create_dispute_resolution_proposal generates typed data, (2) both parties sign the typed data locally with"},{"name":"raise_dispute","description":"Raises a dispute on a redeemed exchange. Caller must be the buyer. Must be called within disputePeriodDurationInMS after redemption. Returns unsigned transactio"},{"name":"retract_dispute","description":"Retracts a raised dispute, releasing seller deposit and restoring completion flow. Caller must be the buyer who raised it. Returns unsigned transaction data."},{"name":"escalate_dispute","description":"Escalates a stale dispute to the third-party dispute resolver. Caller must be the buyer. Resolver's escalation fee must be covered. Returns unsigned transaction"},{"name":"decide_dispute","description":"Decides an escalated dispute. Caller must be the dispute resolver assigned to the offer's disputeResolverId. Specify buyerPercent in basis points (0=all to sell"},{"name":"refuse_escalated_dispute","description":"Dispute resolver refuses to decide an escalated dispute. Returns the escalation fee to the buyer and resets dispute to 'Resolving' state. Returns unsigned trans"},{"name":"expire_escalated_dispute","description":"Expires an escalated dispute once the resolver's response period passes without a decision. Permissionless — anyone can call. Returns unsigned transaction data."},{"name":"create_dispute_resolution_proposal","description":"Generates EIP-712 typed data for a mutual dispute resolution proposal. Both buyer and seller must sign the same buyerPercentBasisPoints value locally with their"},{"name":"revoke_voucher","description":"Revokes a committed (not yet redeemed) voucher on behalf of the seller, returning funds to the buyer. Caller must be the seller assistant. Returns unsigned tran"},{"name":"approve_exchange_token","description":"Grants ERC-20 allowance to the Boson Protocol contract. Must be called before commit_to_offer or deposit_funds when using non-native exchange tokens, unless you"},{"name":"sign_receive_with_erc3009_authorization","description":"Generates EIP-712 typed data for an ERC-3009 ReceiveWithAuthorization (e.g. USDC). Authorizes the spender (default: protocol diamond) to pull `value` from signe"},{"name":"sign_receive_with_erc2612_permit","description":"Generates EIP-712 typed data for an EIP-2612 Permit. Authorizes the spender (default: protocol diamond) to pull `value` from signerAddress until `deadline`. Sig"},{"name":"sign_receive_with_permit2","description":"Generates EIP-712 typed data for a Uniswap Permit2 PermitTransferFrom. Authorizes the spender (default: protocol diamond) to pull `value` from signerAddress unt"},{"name":"sign_receive_with_dai_permit","description":"Generates EIP-712 typed data for a DAI-style Permit. Authorizes the spender (default: protocol diamond) to pull DAI-style tokens from signerAddress until `expir"},{"name":"commit_to_offer","description":"Commits to an offer, creating an exchange and minting a voucher NFT. Caller is the buyer (signerAddress) unless 'buyer' param is set. For ERC-20 offers, call ap"},{"name":"commit_to_conditional_offer","description":"Commits to a token-gated (conditional) offer using a specific gating tokenId. Caller (signerAddress) must hold the gating token specified by the offer's conditi"},{"name":"commit_to_offer_and_redeem_voucher","description":"Atomically commits to an offer and immediately redeems the voucher in a single transaction via the OrchestrationHandler. Buyer (signerAddress) must already hold"},{"name":"commit_to_conditional_offer_and_redeem_voucher","description":"Atomically commits to a token-gated (conditional) offer using a specific gating tokenId and immediately redeems the voucher in a single transaction. Buyer must "},{"name":"commit_to_buyer_offer","description":"Fulfils a buyer-initiated offer (creator='BUYER') by the seller. Caller must be the seller. Provide matching collateral. Returns unsigned transaction data."},{"name":"cancel_voucher","description":"Cancels a committed voucher. Caller must be the buyer (voucher holder). Buyer forfeits buyerCancellationPenalty; remainder is refunded. Returns unsigned transac"},{"name":"redeem_voucher","description":"Redeems a voucher, signalling physical receipt of goods and starting the dispute period clock. Caller must be the buyer. After redemption, buyer has disputePeri"},{"name":"complete_exchange","description":"Completes an exchange after the dispute period expires, releasing funds to the seller. Can be called by seller after dispute period or by buyer at any time post"},{"name":"get_sellers_by_address","description":"Reads seller entities associated with a specific Ethereum address. Use this to check if signerAddress already has a seller account before calling create_seller."},{"name":"get_all_products_with_not_voided_variants","description":"Reads product groupings with at least one non-voided variant from the Boson subgraph. Useful for storefront displays. Supports pagination and ordering. Read-onl"},{"name":"search_products","description":"Searches products in the Boson subgraph by keywords matched against title, description, brand, category, and tags. Supports pagination, ordering, filtering, and"},{"name":"validate_metadata","description":"Validates a metadata object against the Boson Protocol schema (PRODUCT_V1, BUNDLE, BASE, etc.) without storing it. Use before store_*_metadata to catch errors e"},{"name":"store_product_v1_metadata","description":"Stores a ProductV1 metadata object to IPFS. Call before create_offer to get metadataUri and metadataHash. Returns: { metadataUri: 'ipfs://...', metadataHash: '0"},{"name":"store_bundle_metadata","description":"Stores a Bundle metadata object to IPFS. Prerequisite: call store_bundle_item_product_v1_metadata and/or store_bundle_item_nft_metadata first; include their ret"},{"name":"store_base_metadata","description":"Stores a Base metadata object to IPFS. Use for simple offers that don't require ProductV1 or Bundle structure. Returns: { metadataUri, metadataHash } for use in"},{"name":"render_contractual_agreement","description":"Renders the legal contractual agreement text/HTML for an offer using its offer data and metadata. Use to preview or store the agreement. Returns: rendered agree"},{"name":"store_bundle_item_product_v1_metadata","description":"Stores a single ProductV1 bundle item's metadata to IPFS. Call once per physical product in a bundle before store_bundle_metadata. Returns: { url: 'ipfs://...' "},{"name":"store_bundle_item_nft_metadata","description":"Stores a single NFT bundle item's metadata to IPFS. Call once per NFT component in a bundle before store_bundle_metadata. Returns: { url: 'ipfs://...' } to incl"},{"name":"register_agent","description":"Registers a dACP agent with this MCP server instance, associating its Ethereum identities and roles. The signature proves control of each signerAddress. Server-"},{"name":"get_registered_agents","description":"Returns all dACP agents registered with this MCP server instance, with their associated protocol entities and roles. No auth required."},{"name":"get_supported_tokens","description":"Returns ERC-20 tokens accepted as exchange tokens on the given configId deployment. Use returned addresses in exchangeTokenAddress fields of create_offer. Read-"}],"toolCount":63,"toolsHash":"efaae4ec9832e94d93b789d7904ce5f258e2e951cc2031d43c2cf4159f298534","serverName":"boson-protocol-server","capabilities":["tools","resources","completions","prompts"],"serverVersion":"1.2.11","protocolVersion":"2025-06-18"}},{"at":"2026-10-07T19:25:39.708Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":70,"error":null,"detail":{"tools":[{"name":"get_config_ids","description":"Returns all valid configId values for this server. Call first to discover which network/deployment to use. No auth required."},{"name":"get_funds","description":"Reads treasury fund balances for sellers and buyers from the Boson subgraph. Supports pagination/ordering/filtering. Read-only — signerAddress not required. Ret"},{"name":"get_disputes","description":"Reads dispute records from the Boson subgraph. Supports pagination, ordering, and filtering by buyer/seller/state. Read-only. Returns: array of dispute entities"},{"name":"get_dispute_by_id","description":"Reads a single dispute by its ID (equals the exchangeId). Read-only. Returns: dispute entity with state, timeout, buyerPercent. Use get_disputes to search first"},{"name":"get_exchanges","description":"Reads exchange records (offer commitments) from the Boson subgraph. Filter by buyer/seller/state. Read-only. Returns: array of exchanges with offerId, state (Co"},{"name":"get_offers","description":"Reads offer listings from the Boson subgraph. Supports pagination, ordering, and filtering (e.g. by sellerId). Read-only. Returns: array of offers with price, d"},{"name":"get_sellers","description":"Reads seller account entities from the Boson subgraph. Optionally includes related offers, exchanges, funds, and logs. Read-only. Returns: array of seller entit"},{"name":"get_dispute_resolvers","description":"Reads registered dispute resolver entities. Use this to find a valid disputeResolverId for create_offer. Read-only. Returns: array of resolvers with ID, fees, e"},{"name":"create_offer","description":"Creates a product offer. Caller must have a seller account (create_seller first). Prerequisite: store metadata first with store_product_v1_metadata or store_bas"},{"name":"create_offer_with_condition","description":"Creates an offer gated by token-ownership (e.g. hold an ERC-721 to commit). Same prerequisites as create_offer plus a condition object specifying the gate token"},{"name":"create_buyer","description":"Creates a buyer account for signerAddress. Required before a buyer can commit to seller-initiated offers for the first time. No prerequisites. Returns unsigned "},{"name":"sign_full_offer","description":"Generates EIP-712 typed data for a non-listed (private) offer that the offer creator must sign. Call before create_offer_and_commit or void_non_listed_offer. Re"},{"name":"create_offer_and_commit","description":"Atomically creates a private offer and commits a specific buyer in one transaction. Prerequisite: call sign_full_offer, sign the returned typed data locally wit"},{"name":"create_offer_commit_and_redeem","description":"Atomically creates a private offer, commits a specific buyer, and immediately redeems the voucher in a single transaction via the OrchestrationHandler. Same pre"},{"name":"void_offer","description":"Voids a listed offer so it can no longer be committed to. Caller must be the seller assistant. Existing exchanges are unaffected. Returns unsigned transaction d"},{"name":"void_non_listed_offer","description":"Voids a private (non-listed) offer before it is fulfilled. Prerequisite: call sign_full_offer and sign the returned typed data locally with your wallet (EIP-712"},{"name":"void_non_listed_offer_batch","description":"Voids multiple private offers atomically. Same prerequisite as void_non_listed_offer, but for an array of full offer objects. Returns unsigned transaction data."},{"name":"create_seller","description":"Creates a seller account on Boson Protocol. Required before creating any offers. signerAddress is automatically set as admin, assistant, and treasury. Provide s"},{"name":"update_seller","description":"Updates an existing seller account. Caller must be the current seller admin (signerAddress). Use get_sellers_by_address to retrieve the seller id first. Returns"},{"name":"send_signed_transaction","description":"Broadcasts a signed raw Ethereum transaction to the network. signedTransaction must be 0x-prefixed RLP-encoded hex obtained from local wallet signing (e.g. ethe"},{"name":"send_meta_transaction","description":"Relays a pre-signed meta-transaction via Biconomy so the user pays no gas. Requires sigR/sigS/sigV from a locally-signed EIP-712 payload. Use when the target op"},{"name":"send_native_meta_transaction","description":"Relays a native meta-transaction (EIP-712 signed function call) via Biconomy. Requires ABI-encoded function signature and sigR/sigS/sigV from a locally-signed E"},{"name":"send_forwarded_meta_transaction","description":"Relays a Biconomy forwarded meta-transaction (ERC-20 gas payment). Requires a complete ERC20ForwardRequest and domain separator signature. Returns: relay transa"},{"name":"withdraw_funds","description":"Withdraws funds from an entity's protocol treasury to the entity's treasury address. Sellers withdraw proceeds; buyers withdraw refunds. Caller must control the"},{"name":"deposit_funds","description":"Deposits ERC-20 or native tokens into an entity's protocol treasury (e.g. seller deposit). For ERC-20, call approve_exchange_token first. In metaTx mode, you ca"},{"name":"extend_dispute_timeout","description":"Extends the deadline of an active dispute. Dispute must be in 'Resolving' state. Either party can call this. Returns unsigned transaction data."},{"name":"expire_dispute","description":"Marks a dispute as expired after its resolution period passes. Permissionless — anyone can call. Exchange must be in 'Disputed' state past its timeout. Returns "},{"name":"expire_dispute_batch","description":"Marks multiple expired disputes in one transaction. All exchanges must be in 'Disputed' state past their respective timeouts. Permissionless. Returns unsigned t"},{"name":"resolve_dispute","description":"Resolves a dispute by mutual agreement. Workflow: (1) create_dispute_resolution_proposal generates typed data, (2) both parties sign the typed data locally with"},{"name":"raise_dispute","description":"Raises a dispute on a redeemed exchange. Caller must be the buyer. Must be called within disputePeriodDurationInMS after redemption. Returns unsigned transactio"},{"name":"retract_dispute","description":"Retracts a raised dispute, releasing seller deposit and restoring completion flow. Caller must be the buyer who raised it. Returns unsigned transaction data."},{"name":"escalate_dispute","description":"Escalates a stale dispute to the third-party dispute resolver. Caller must be the buyer. Resolver's escalation fee must be covered. Returns unsigned transaction"},{"name":"decide_dispute","description":"Decides an escalated dispute. Caller must be the dispute resolver assigned to the offer's disputeResolverId. Specify buyerPercent in basis points (0=all to sell"},{"name":"refuse_escalated_dispute","description":"Dispute resolver refuses to decide an escalated dispute. Returns the escalation fee to the buyer and resets dispute to 'Resolving' state. Returns unsigned trans"},{"name":"expire_escalated_dispute","description":"Expires an escalated dispute once the resolver's response period passes without a decision. Permissionless — anyone can call. Returns unsigned transaction data."},{"name":"create_dispute_resolution_proposal","description":"Generates EIP-712 typed data for a mutual dispute resolution proposal. Both buyer and seller must sign the same buyerPercentBasisPoints value locally with their"},{"name":"revoke_voucher","description":"Revokes a committed (not yet redeemed) voucher on behalf of the seller, returning funds to the buyer. Caller must be the seller assistant. Returns unsigned tran"},{"name":"approve_exchange_token","description":"Grants ERC-20 allowance to the Boson Protocol contract. Must be called before commit_to_offer or deposit_funds when using non-native exchange tokens, unless you"},{"name":"sign_receive_with_erc3009_authorization","description":"Generates EIP-712 typed data for an ERC-3009 ReceiveWithAuthorization (e.g. USDC). Authorizes the spender (default: protocol diamond) to pull `value` from signe"},{"name":"sign_receive_with_erc2612_permit","description":"Generates EIP-712 typed data for an EIP-2612 Permit. Authorizes the spender (default: protocol diamond) to pull `value` from signerAddress until `deadline`. Sig"},{"name":"sign_receive_with_permit2","description":"Generates EIP-712 typed data for a Uniswap Permit2 PermitTransferFrom. Authorizes the spender (default: protocol diamond) to pull `value` from signerAddress unt"},{"name":"sign_receive_with_dai_permit","description":"Generates EIP-712 typed data for a DAI-style Permit. Authorizes the spender (default: protocol diamond) to pull DAI-style tokens from signerAddress until `expir"},{"name":"commit_to_offer","description":"Commits to an offer, creating an exchange and minting a voucher NFT. Caller is the buyer (signerAddress) unless 'buyer' param is set. For ERC-20 offers, call ap"},{"name":"commit_to_conditional_offer","description":"Commits to a token-gated (conditional) offer using a specific gating tokenId. Caller (signerAddress) must hold the gating token specified by the offer's conditi"},{"name":"commit_to_offer_and_redeem_voucher","description":"Atomically commits to an offer and immediately redeems the voucher in a single transaction via the OrchestrationHandler. Buyer (signerAddress) must already hold"},{"name":"commit_to_conditional_offer_and_redeem_voucher","description":"Atomically commits to a token-gated (conditional) offer using a specific gating tokenId and immediately redeems the voucher in a single transaction. Buyer must "},{"name":"commit_to_buyer_offer","description":"Fulfils a buyer-initiated offer (creator='BUYER') by the seller. Caller must be the seller. Provide matching collateral. Returns unsigned transaction data."},{"name":"cancel_voucher","description":"Cancels a committed voucher. Caller must be the buyer (voucher holder). Buyer forfeits buyerCancellationPenalty; remainder is refunded. Returns unsigned transac"},{"name":"redeem_voucher","description":"Redeems a voucher, signalling physical receipt of goods and starting the dispute period clock. Caller must be the buyer. After redemption, buyer has disputePeri"},{"name":"complete_exchange","description":"Completes an exchange after the dispute period expires, releasing funds to the seller. Can be called by seller after dispute period or by buyer at any time post"},{"name":"get_sellers_by_address","description":"Reads seller entities associated with a specific Ethereum address. Use this to check if signerAddress already has a seller account before calling create_seller."},{"name":"get_all_products_with_not_voided_variants","description":"Reads product groupings with at least one non-voided variant from the Boson subgraph. Useful for storefront displays. Supports pagination and ordering. Read-onl"},{"name":"search_products","description":"Searches products in the Boson subgraph by keywords matched against title, description, brand, category, and tags. Supports pagination, ordering, filtering, and"},{"name":"validate_metadata","description":"Validates a metadata object against the Boson Protocol schema (PRODUCT_V1, BUNDLE, BASE, etc.) without storing it. Use before store_*_metadata to catch errors e"},{"name":"store_product_v1_metadata","description":"Stores a ProductV1 metadata object to IPFS. Call before create_offer to get metadataUri and metadataHash. Returns: { metadataUri: 'ipfs://...', metadataHash: '0"},{"name":"store_bundle_metadata","description":"Stores a Bundle metadata object to IPFS. Prerequisite: call store_bundle_item_product_v1_metadata and/or store_bundle_item_nft_metadata first; include their ret"},{"name":"store_base_metadata","description":"Stores a Base metadata object to IPFS. Use for simple offers that don't require ProductV1 or Bundle structure. Returns: { metadataUri, metadataHash } for use in"},{"name":"render_contractual_agreement","description":"Renders the legal contractual agreement text/HTML for an offer using its offer data and metadata. Use to preview or store the agreement. Returns: rendered agree"},{"name":"store_bundle_item_product_v1_metadata","description":"Stores a single ProductV1 bundle item's metadata to IPFS. Call once per physical product in a bundle before store_bundle_metadata. Returns: { url: 'ipfs://...' "},{"name":"store_bundle_item_nft_metadata","description":"Stores a single NFT bundle item's metadata to IPFS. Call once per NFT component in a bundle before store_bundle_metadata. Returns: { url: 'ipfs://...' } to incl"},{"name":"register_agent","description":"Registers a dACP agent with this MCP server instance, associating its Ethereum identities and roles. The signature proves control of each signerAddress. Server-"},{"name":"get_registered_agents","description":"Returns all dACP agents registered with this MCP server instance, with their associated protocol entities and roles. No auth required."},{"name":"get_supported_tokens","description":"Returns ERC-20 tokens accepted as exchange tokens on the given configId deployment. Use returned addresses in exchangeTokenAddress fields of create_offer. Read-"}],"toolCount":63,"toolsHash":"efaae4ec9832e94d93b789d7904ce5f258e2e951cc2031d43c2cf4159f298534","serverName":"boson-protocol-server","capabilities":["tools","resources","completions","prompts"],"serverVersion":"1.2.11","protocolVersion":"2025-06-18"}}],"tools":[{"name":"get_config_ids","description":"Returns all valid configId values for this server. Call first to discover which network/deployment to use. No auth required."},{"name":"get_funds","description":"Reads treasury fund balances for sellers and buyers from the Boson subgraph. Supports pagination/ordering/filtering. Read-only — signerAddress not required. Ret"},{"name":"get_disputes","description":"Reads dispute records from the Boson subgraph. Supports pagination, ordering, and filtering by buyer/seller/state. Read-only. Returns: array of dispute entities"},{"name":"get_dispute_by_id","description":"Reads a single dispute by its ID (equals the exchangeId). Read-only. Returns: dispute entity with state, timeout, buyerPercent. Use get_disputes to search first"},{"name":"get_exchanges","description":"Reads exchange records (offer commitments) from the Boson subgraph. Filter by buyer/seller/state. Read-only. Returns: array of exchanges with offerId, state (Co"},{"name":"get_offers","description":"Reads offer listings from the Boson subgraph. Supports pagination, ordering, and filtering (e.g. by sellerId). Read-only. Returns: array of offers with price, d"},{"name":"get_sellers","description":"Reads seller account entities from the Boson subgraph. Optionally includes related offers, exchanges, funds, and logs. Read-only. Returns: array of seller entit"},{"name":"get_dispute_resolvers","description":"Reads registered dispute resolver entities. Use this to find a valid disputeResolverId for create_offer. Read-only. Returns: array of resolvers with ID, fees, e"},{"name":"create_offer","description":"Creates a product offer. Caller must have a seller account (create_seller first). Prerequisite: store metadata first with store_product_v1_metadata or store_bas"},{"name":"create_offer_with_condition","description":"Creates an offer gated by token-ownership (e.g. hold an ERC-721 to commit). Same prerequisites as create_offer plus a condition object specifying the gate token"},{"name":"create_buyer","description":"Creates a buyer account for signerAddress. Required before a buyer can commit to seller-initiated offers for the first time. No prerequisites. Returns unsigned "},{"name":"sign_full_offer","description":"Generates EIP-712 typed data for a non-listed (private) offer that the offer creator must sign. Call before create_offer_and_commit or void_non_listed_offer. Re"},{"name":"create_offer_and_commit","description":"Atomically creates a private offer and commits a specific buyer in one transaction. Prerequisite: call sign_full_offer, sign the returned typed data locally wit"},{"name":"create_offer_commit_and_redeem","description":"Atomically creates a private offer, commits a specific buyer, and immediately redeems the voucher in a single transaction via the OrchestrationHandler. Same pre"},{"name":"void_offer","description":"Voids a listed offer so it can no longer be committed to. Caller must be the seller assistant. Existing exchanges are unaffected. Returns unsigned transaction d"},{"name":"void_non_listed_offer","description":"Voids a private (non-listed) offer before it is fulfilled. Prerequisite: call sign_full_offer and sign the returned typed data locally with your wallet (EIP-712"},{"name":"void_non_listed_offer_batch","description":"Voids multiple private offers atomically. Same prerequisite as void_non_listed_offer, but for an array of full offer objects. Returns unsigned transaction data."},{"name":"create_seller","description":"Creates a seller account on Boson Protocol. Required before creating any offers. signerAddress is automatically set as admin, assistant, and treasury. Provide s"},{"name":"update_seller","description":"Updates an existing seller account. Caller must be the current seller admin (signerAddress). Use get_sellers_by_address to retrieve the seller id first. Returns"},{"name":"send_signed_transaction","description":"Broadcasts a signed raw Ethereum transaction to the network. signedTransaction must be 0x-prefixed RLP-encoded hex obtained from local wallet signing (e.g. ethe"},{"name":"send_meta_transaction","description":"Relays a pre-signed meta-transaction via Biconomy so the user pays no gas. Requires sigR/sigS/sigV from a locally-signed EIP-712 payload. Use when the target op"},{"name":"send_native_meta_transaction","description":"Relays a native meta-transaction (EIP-712 signed function call) via Biconomy. Requires ABI-encoded function signature and sigR/sigS/sigV from a locally-signed E"},{"name":"send_forwarded_meta_transaction","description":"Relays a Biconomy forwarded meta-transaction (ERC-20 gas payment). Requires a complete ERC20ForwardRequest and domain separator signature. Returns: relay transa"},{"name":"withdraw_funds","description":"Withdraws funds from an entity's protocol treasury to the entity's treasury address. Sellers withdraw proceeds; buyers withdraw refunds. Caller must control the"},{"name":"deposit_funds","description":"Deposits ERC-20 or native tokens into an entity's protocol treasury (e.g. seller deposit). For ERC-20, call approve_exchange_token first. In metaTx mode, you ca"},{"name":"extend_dispute_timeout","description":"Extends the deadline of an active dispute. Dispute must be in 'Resolving' state. Either party can call this. Returns unsigned transaction data."},{"name":"expire_dispute","description":"Marks a dispute as expired after its resolution period passes. Permissionless — anyone can call. Exchange must be in 'Disputed' state past its timeout. Returns "},{"name":"expire_dispute_batch","description":"Marks multiple expired disputes in one transaction. All exchanges must be in 'Disputed' state past their respective timeouts. Permissionless. Returns unsigned t"},{"name":"resolve_dispute","description":"Resolves a dispute by mutual agreement. Workflow: (1) create_dispute_resolution_proposal generates typed data, (2) both parties sign the typed data locally with"},{"name":"raise_dispute","description":"Raises a dispute on a redeemed exchange. Caller must be the buyer. Must be called within disputePeriodDurationInMS after redemption. Returns unsigned transactio"},{"name":"retract_dispute","description":"Retracts a raised dispute, releasing seller deposit and restoring completion flow. Caller must be the buyer who raised it. Returns unsigned transaction data."},{"name":"escalate_dispute","description":"Escalates a stale dispute to the third-party dispute resolver. Caller must be the buyer. Resolver's escalation fee must be covered. Returns unsigned transaction"},{"name":"decide_dispute","description":"Decides an escalated dispute. Caller must be the dispute resolver assigned to the offer's disputeResolverId. Specify buyerPercent in basis points (0=all to sell"},{"name":"refuse_escalated_dispute","description":"Dispute resolver refuses to decide an escalated dispute. Returns the escalation fee to the buyer and resets dispute to 'Resolving' state. Returns unsigned trans"},{"name":"expire_escalated_dispute","description":"Expires an escalated dispute once the resolver's response period passes without a decision. Permissionless — anyone can call. Returns unsigned transaction data."},{"name":"create_dispute_resolution_proposal","description":"Generates EIP-712 typed data for a mutual dispute resolution proposal. Both buyer and seller must sign the same buyerPercentBasisPoints value locally with their"},{"name":"revoke_voucher","description":"Revokes a committed (not yet redeemed) voucher on behalf of the seller, returning funds to the buyer. Caller must be the seller assistant. Returns unsigned tran"},{"name":"approve_exchange_token","description":"Grants ERC-20 allowance to the Boson Protocol contract. Must be called before commit_to_offer or deposit_funds when using non-native exchange tokens, unless you"},{"name":"sign_receive_with_erc3009_authorization","description":"Generates EIP-712 typed data for an ERC-3009 ReceiveWithAuthorization (e.g. USDC). Authorizes the spender (default: protocol diamond) to pull `value` from signe"},{"name":"sign_receive_with_erc2612_permit","description":"Generates EIP-712 typed data for an EIP-2612 Permit. Authorizes the spender (default: protocol diamond) to pull `value` from signerAddress until `deadline`. Sig"},{"name":"sign_receive_with_permit2","description":"Generates EIP-712 typed data for a Uniswap Permit2 PermitTransferFrom. Authorizes the spender (default: protocol diamond) to pull `value` from signerAddress unt"},{"name":"sign_receive_with_dai_permit","description":"Generates EIP-712 typed data for a DAI-style Permit. Authorizes the spender (default: protocol diamond) to pull DAI-style tokens from signerAddress until `expir"},{"name":"commit_to_offer","description":"Commits to an offer, creating an exchange and minting a voucher NFT. Caller is the buyer (signerAddress) unless 'buyer' param is set. For ERC-20 offers, call ap"},{"name":"commit_to_conditional_offer","description":"Commits to a token-gated (conditional) offer using a specific gating tokenId. Caller (signerAddress) must hold the gating token specified by the offer's conditi"},{"name":"commit_to_offer_and_redeem_voucher","description":"Atomically commits to an offer and immediately redeems the voucher in a single transaction via the OrchestrationHandler. Buyer (signerAddress) must already hold"},{"name":"commit_to_conditional_offer_and_redeem_voucher","description":"Atomically commits to a token-gated (conditional) offer using a specific gating tokenId and immediately redeems the voucher in a single transaction. Buyer must "},{"name":"commit_to_buyer_offer","description":"Fulfils a buyer-initiated offer (creator='BUYER') by the seller. Caller must be the seller. Provide matching collateral. Returns unsigned transaction data."},{"name":"cancel_voucher","description":"Cancels a committed voucher. Caller must be the buyer (voucher holder). Buyer forfeits buyerCancellationPenalty; remainder is refunded. Returns unsigned transac"},{"name":"redeem_voucher","description":"Redeems a voucher, signalling physical receipt of goods and starting the dispute period clock. Caller must be the buyer. After redemption, buyer has disputePeri"},{"name":"complete_exchange","description":"Completes an exchange after the dispute period expires, releasing funds to the seller. Can be called by seller after dispute period or by buyer at any time post"},{"name":"get_sellers_by_address","description":"Reads seller entities associated with a specific Ethereum address. Use this to check if signerAddress already has a seller account before calling create_seller."},{"name":"get_all_products_with_not_voided_variants","description":"Reads product groupings with at least one non-voided variant from the Boson subgraph. Useful for storefront displays. Supports pagination and ordering. Read-onl"},{"name":"search_products","description":"Searches products in the Boson subgraph by keywords matched against title, description, brand, category, and tags. Supports pagination, ordering, filtering, and"},{"name":"validate_metadata","description":"Validates a metadata object against the Boson Protocol schema (PRODUCT_V1, BUNDLE, BASE, etc.) without storing it. Use before store_*_metadata to catch errors e"},{"name":"store_product_v1_metadata","description":"Stores a ProductV1 metadata object to IPFS. Call before create_offer to get metadataUri and metadataHash. Returns: { metadataUri: 'ipfs://...', metadataHash: '0"},{"name":"store_bundle_metadata","description":"Stores a Bundle metadata object to IPFS. Prerequisite: call store_bundle_item_product_v1_metadata and/or store_bundle_item_nft_metadata first; include their ret"},{"name":"store_base_metadata","description":"Stores a Base metadata object to IPFS. Use for simple offers that don't require ProductV1 or Bundle structure. Returns: { metadataUri, metadataHash } for use in"},{"name":"render_contractual_agreement","description":"Renders the legal contractual agreement text/HTML for an offer using its offer data and metadata. Use to preview or store the agreement. Returns: rendered agree"},{"name":"store_bundle_item_product_v1_metadata","description":"Stores a single ProductV1 bundle item's metadata to IPFS. Call once per physical product in a bundle before store_bundle_metadata. Returns: { url: 'ipfs://...' "},{"name":"store_bundle_item_nft_metadata","description":"Stores a single NFT bundle item's metadata to IPFS. Call once per NFT component in a bundle before store_bundle_metadata. Returns: { url: 'ipfs://...' } to incl"},{"name":"register_agent","description":"Registers a dACP agent with this MCP server instance, associating its Ethereum identities and roles. The signature proves control of each signerAddress. Server-"},{"name":"get_registered_agents","description":"Returns all dACP agents registered with this MCP server instance, with their associated protocol entities and roles. No auth required."},{"name":"get_supported_tokens","description":"Returns ERC-20 tokens accepted as exchange tokens on the given configId deployment. Use returned addresses in exchangeTokenAddress fields of create_offer. Read-"}],"package":null,"toolSurface":{"id":"ts_acavtbk5pz4d","endpointId":"ep_jjpvhja87msu","hash":"efaae4ec9832e94d93b789d7904ce5f258e2e951cc2031d43c2cf4159f298534","toolCount":63,"serverName":"boson-protocol-server","serverVersion":"1.2.11","protocolVersion":"2025-06-18","firstSeenAt":"2026-10-07T19:25:39.711Z","lastSeenAt":"2026-10-10T06:27:04.220Z","observations":10,"toolNames":["get_config_ids","get_funds","get_disputes","get_dispute_by_id","get_exchanges","get_offers","get_sellers","get_dispute_resolvers","create_offer","create_offer_with_condition","create_buyer","sign_full_offer","create_offer_and_commit","create_offer_commit_and_redeem","void_offer","void_non_listed_offer","void_non_listed_offer_batch","create_seller","update_seller","send_signed_transaction","send_meta_transaction","send_native_meta_transaction","send_forwarded_meta_transaction","withdraw_funds","deposit_funds","extend_dispute_timeout","expire_dispute","expire_dispute_batch","resolve_dispute","raise_dispute","retract_dispute","escalate_dispute","decide_dispute","refuse_escalated_dispute","expire_escalated_dispute","create_dispute_resolution_proposal","revoke_voucher","approve_exchange_token","sign_receive_with_erc3009_authorization","sign_receive_with_erc2612_permit","sign_receive_with_permit2","sign_receive_with_dai_permit","commit_to_offer","commit_to_conditional_offer","commit_to_offer_and_redeem_voucher","commit_to_conditional_offer_and_redeem_voucher","commit_to_buyer_offer","cancel_voucher","redeem_voucher","complete_exchange","get_sellers_by_address","get_all_products_with_not_voided_variants","search_products","validate_metadata","store_product_v1_metadata","store_bundle_metadata","store_base_metadata","render_contractual_agreement","store_bundle_item_product_v1_metadata","store_bundle_item_nft_metadata","register_agent","get_registered_agents","get_supported_tokens"],"distinctSurfaces":2},"endpointFacts":[{"id":"ep_jjpvhja87msu","url":"https://mcp.bosonprotocol.io/mcp","type":"mcp_streamable_http","factsCheckedAt":"2026-10-08T21:21:54.392Z","auth":{"observedAt":"2026-10-08T21:21:54.421Z","authRequired":false,"scheme":null,"resourceMetadata":null,"authorizationServer":null,"conformance":{"dpop":false,"rfc8414":false,"rfc9728":false,"pkceS256":false,"clientIdMetadataDocument":false,"dynamicClientRegistration":false}},"tls":{"observedAt":"2026-10-08T21:21:54.434Z","protocol":"TLSv1.3","chainValid":true,"chainError":null,"hostMatches":true,"subject":"mcp.bosonprotocol.io","issuer":{"commonName":"WR3","organization":"Google Trust Services"},"validFrom":"2026-10-07T16:52:42.000Z","validTo":"2027-01-05T17:46:35.000Z","daysToExpiry":87,"sanCount":1,"fingerprint256":"A3:29:95:F7:72:53:05:D6:45:FC:18:FA:74:34:A3:1F:75:68:A9:DD:68:A4:BB:91:32:92:1F:C4:5B:7C:97:17"}}]},"verification":{"claimed":false,"claimedAt":null,"proofs":[]},"provenance":{"sources":[{"source":"mcp_registry","key":"io.bosonprotocol/agentic-commerce","url":"https://registry.modelcontextprotocol.io/v0/servers/io.bosonprotocol%2Fagentic-commerce","firstSeenAt":"2026-09-05T23:21:00.732Z","fetchedAt":"2026-10-09T15:22:44.535Z","normalizedAt":"2026-10-09T15:22:44.535Z"}]},"firstSeenAt":"2026-09-05T23:21:00.732Z","updatedAt":"2026-10-10T06:29:27.380Z"}