Skip to content

io.bosonprotocol/agentic-commerce

io.bosonprotocol/agentic-commercebosonprotocol.iostreamable-httpv1.0.0Scanned

MCP server for Boson Protocol — on-chain agentic commerce for physical & digital goods.

63 tools: 36 can delete or cancel things, 2 do something that can't be undone, 11 change things and 14 only read.

Tools: 36 delete, 2 irreversible, 11 write, 14 read.
  • Reads private data · 0
  • Reads text others write · 0
  • Can send data out · 5
  • 11 findings

Tools listed without sign-in. Remote posture

Anlyon alternative

49 of these tools change something. Run those as governed actions.

Declare what an action changes, and Anlyon puts it under a shared limit, binds every approval to the exact request, and grades the outcome. It works on any HTTPS API you can describe as an action.

Anlyon does not run, proxy or govern this MCP server. A tool your own code calls directly is not routed through Anlyon and is not governed by it.

Import an OpenAPI spec →

Tools

Grouped by what each tool does, most consequential first. Open one for its reasons and full description; descriptions are the publisher's own words.

63 tools

Deletes or cancels 36Claude Code: deny
  • approve_exchange_tokenGrants ERC-20 allowance to the Boson Protocol contract.No findings

    Why it is in this group

    • The name "approve_exchange_token" says "approve": a word for a change.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    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 relay in metaTx mode with transferAuthorizations (built with a sign_receive_with_* tool) passed to send_meta_transaction. Returns unsigned transaction data.

    Annotations the server declares

    • title: Approve Exchange Token
    • readOnlyHint: false
    • destructiveHint: true
  • cancel_voucherCancels a committed voucher.No findings

    Why it is in this group

    • The name "cancel_voucher" says "cancel": a word for removing or ending something.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Cancels a committed voucher. Caller must be the buyer (voucher holder). Buyer forfeits buyerCancellationPenalty; remainder is refunded. Returns unsigned transaction data.

    Annotations the server declares

    • title: Cancel Voucher
    • readOnlyHint: false
    • destructiveHint: true
  • commit_to_buyer_offerFulfils a buyer-initiated offer (creator='BUYER') by the seller.No findings

    Why it is in this group

    • The name "commit_to_buyer_offer" says "commit": a word for a change.
    • The input addresses people (input.royaltyInfo.recipients): what it sends cannot be taken back.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Fulfils a buyer-initiated offer (creator='BUYER') by the seller. Caller must be the seller. Provide matching collateral. Returns unsigned transaction data.

    Annotations the server declares

    • title: Fulfil Buyer Offer
    • readOnlyHint: false
    • destructiveHint: true
  • commit_to_conditional_offerCommits to a token-gated (conditional) offer using a specific gating tokenId.No findings

    Why it is in this group

    • The name "commit_to_conditional_offer" says "commit": a word for a change.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Commits to a token-gated (conditional) offer using a specific gating tokenId. Caller (signerAddress) must hold the gating token specified by the offer's condition. Use this instead of commit_to_offer for offers created via create_offer_with_condition. Returns unsigned transaction data.

    Annotations the server declares

    • title: Commit to Token-Gated Offer
    • readOnlyHint: false
    • destructiveHint: true
  • commit_to_conditional_offer_and_redeem_voucherAtomically commits to a token-gated (conditional) offer using a specific gating tokenId and immediately redeems the voucher in a single transaction.No findings

    Why it is in this group

    • The name "commit_to_conditional_offer_and_redeem_voucher" says "commit": a word for a change.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Atomically commits to a token-gated (conditional) offer using a specific gating tokenId and immediately redeems the voucher in a single transaction. Buyer must hold the gating token. Returns unsigned transaction data.

    Annotations the server declares

    • title: Commit & Redeem (Token-Gated)
    • readOnlyHint: false
    • destructiveHint: true
  • commit_to_offerCommits to an offer, creating an exchange and minting a voucher NFT.No findings

    Why it is in this group

    • The name "commit_to_offer" says "commit": a word for a change.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    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 approve_exchange_token first. In metaTx mode, you can skip the approval by passing transferAuthorizations (built with a sign_receive_with_* tool) to send_meta_transaction. Returns unsigned transaction data.

    Annotations the server declares

    • title: Commit to Offer
    • readOnlyHint: false
    • destructiveHint: true
  • commit_to_offer_and_redeem_voucherAtomically commits to an offer and immediately redeems the voucher in a single transaction via the OrchestrationHandler.No findings

    Why it is in this group

    • The name "commit_to_offer_and_redeem_voucher" says "commit": a word for a change.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Atomically commits to an offer and immediately redeems the voucher in a single transaction via the OrchestrationHandler. Buyer (signerAddress) must already hold any required ERC-20 allowance (approve_exchange_token), or, in metaTx mode, pass transferAuthorizations to send_meta_transaction. Skips voucher transferability and starts the dispute period clock immediately. Returns unsigned transaction data.

    Annotations the server declares

    • title: Commit & Redeem
    • readOnlyHint: false
    • destructiveHint: true
  • complete_exchangeCompletes an exchange after the dispute period expires, releasing funds to the seller.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    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-redemption. Returns unsigned transaction data.

    Annotations the server declares

    • title: Complete Exchange
    • readOnlyHint: false
    • destructiveHint: true
  • create_buyerCreates a buyer account for signerAddress.No findings

    Why it is in this group

    • The name "create_buyer" says "create": a word for a change.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Creates a buyer account for signerAddress. Required before a buyer can commit to seller-initiated offers for the first time. No prerequisites. Returns unsigned transaction data.

    Annotations the server declares

    • title: Create Buyer Account
    • readOnlyHint: false
    • destructiveHint: true
  • create_offerCreates a product offer.No findings

    Why it is in this group

    • The name "create_offer" says "create": a word for a change.
    • The input addresses people (input.royaltyInfo.recipients): what it sends cannot be taken back.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Creates a product offer. Caller must have a seller account (create_seller first). Prerequisite: store metadata first with store_product_v1_metadata or store_base_metadata to get metadataUri/metadataHash. All dates in milliseconds; amounts as strings in wei. Returns unsigned tx — sign locally with your wallet → send_signed_transaction, or executionMode='metaTx'.

    Annotations the server declares

    • title: Create Offer
    • readOnlyHint: false
    • destructiveHint: true
  • create_offer_and_commitAtomically creates a private offer and commits a specific buyer in one transaction.No findings

    Why it is in this group

    • The name "create_offer_and_commit" says "create": a word for a change.
    • The name "create_offer_and_commit" also says "commit": a word for a change.
    • The input addresses people (input.royaltyInfo.recipients): what it sends cannot be taken back.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Atomically creates a private offer and commits a specific buyer in one transaction. Prerequisite: call sign_full_offer, sign the returned typed data locally with your wallet (EIP-712), and provide the signature here. Used for private/bilateral trades. Returns unsigned transaction data.

    Annotations the server declares

    • title: Create & Commit Private Offer
    • readOnlyHint: false
    • destructiveHint: true
  • create_offer_commit_and_redeemAtomically creates a private offer, commits a specific buyer, and immediately redeems the voucher in a single transaction via the OrchestrationHandler.No findings

    Why it is in this group

    • The name "create_offer_commit_and_redeem" says "create": a word for a change.
    • The input addresses people (input.royaltyInfo.recipients): what it sends cannot be taken back.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Atomically creates a private offer, commits a specific buyer, and immediately redeems the voucher in a single transaction via the OrchestrationHandler. Same prerequisites as create_offer_and_commit (sign_full_offer + EIP-712 signature). Use for instant-fulfilment private trades. Returns unsigned transaction data.

    Annotations the server declares

    • title: Create, Commit & Redeem Private Offer
    • readOnlyHint: false
    • destructiveHint: true
  • create_offer_with_conditionCreates an offer gated by token-ownership (e.g.No findings

    Why it is in this group

    • The name "create_offer_with_condition" says "create": a word for a change.
    • The input addresses people (input.royaltyInfo.recipients): what it sends cannot be taken back.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    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, method, and threshold. Returns unsigned transaction data.

    Annotations the server declares

    • title: Create Token-Gated Offer
    • readOnlyHint: false
    • destructiveHint: true
  • create_sellerCreates a seller account on Boson Protocol.No findings

    Why it is in this group

    • The name "create_seller" says "create": a word for a change.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Creates a seller account on Boson Protocol. Required before creating any offers. signerAddress is automatically set as admin, assistant, and treasury. Provide seller metadata and royaltyPercentage. Returns unsigned transaction data.

    Annotations the server declares

    • title: Create Seller Account
    • readOnlyHint: false
    • destructiveHint: true
  • decide_disputeDecides an escalated dispute.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Decides an escalated dispute. Caller must be the dispute resolver assigned to the offer's disputeResolverId. Specify buyerPercent in basis points (0=all to seller, 10000=all to buyer). Returns unsigned transaction data.

    Annotations the server declares

    • title: Decide Dispute
    • readOnlyHint: false
    • destructiveHint: true
  • deposit_fundsDeposits ERC-20 or native tokens into an entity's protocol treasury (e.g.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    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 can skip the approval by passing transferAuthorizations (built with a sign_receive_with_* tool) to send_meta_transaction. Returns unsigned transaction data.

    Annotations the server declares

    • title: Deposit Funds
    • readOnlyHint: false
    • destructiveHint: true
  • escalate_disputeEscalates a stale dispute to the third-party dispute resolver.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    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 data.

    Annotations the server declares

    • title: Escalate Dispute
    • readOnlyHint: false
    • destructiveHint: true
  • expire_disputeMarks a dispute as expired after its resolution period passes.No findings

    Why it is in this group

    • The description's first verb is "mark": a word for a change.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Marks a dispute as expired after its resolution period passes. Permissionless — anyone can call. Exchange must be in 'Disputed' state past its timeout. Returns unsigned transaction data.

    Annotations the server declares

    • title: Expire Dispute
    • readOnlyHint: false
    • destructiveHint: true
  • expire_dispute_batchMarks multiple expired disputes in one transaction.No findings

    Why it is in this group

    • The description's first verb is "mark": a word for a change.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Marks multiple expired disputes in one transaction. All exchanges must be in 'Disputed' state past their respective timeouts. Permissionless. Returns unsigned transaction data.

    Annotations the server declares

    • title: Expire Disputes (Batch)
    • readOnlyHint: false
    • destructiveHint: true
  • expire_escalated_disputeExpires an escalated dispute once the resolver's response period passes without a decision.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Expires an escalated dispute once the resolver's response period passes without a decision. Permissionless — anyone can call. Returns unsigned transaction data.

    Annotations the server declares

    • title: Expire Escalated Dispute
    • readOnlyHint: false
    • destructiveHint: true
  • extend_dispute_timeoutExtends the deadline of an active dispute.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Extends the deadline of an active dispute. Dispute must be in 'Resolving' state. Either party can call this. Returns unsigned transaction data.

    Annotations the server declares

    • title: Extend Dispute Timeout
    • readOnlyHint: false
    • destructiveHint: true
  • raise_disputeRaises a dispute on a redeemed exchange.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Raises a dispute on a redeemed exchange. Caller must be the buyer. Must be called within disputePeriodDurationInMS after redemption. Returns unsigned transaction data.

    Annotations the server declares

    • title: Raise Dispute
    • readOnlyHint: false
    • destructiveHint: true
  • redeem_voucherRedeems a voucher, signalling physical receipt of goods and starting the dispute period clock.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Redeems a voucher, signalling physical receipt of goods and starting the dispute period clock. Caller must be the buyer. After redemption, buyer has disputePeriodDurationInMS to raise a dispute. Returns unsigned transaction data.

    Annotations the server declares

    • title: Redeem Voucher
    • readOnlyHint: false
    • destructiveHint: true
  • refuse_escalated_disputeDispute resolver refuses to decide an escalated dispute.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Dispute resolver refuses to decide an escalated dispute. Returns the escalation fee to the buyer and resets dispute to 'Resolving' state. Returns unsigned transaction data.

    Annotations the server declares

    • title: Refuse Escalated Dispute
    • readOnlyHint: false
    • destructiveHint: true
  • resolve_disputeResolves a dispute by mutual agreement.1 finding

    Why it is in this group

    • The name "resolve_dispute" says "resolve": a word for reading.
    • The server marks it destructive (destructiveHint: true).

    Findings

    • Warn

      The server marks "resolve_dispute" destructive (destructiveHint: true), and its name says "resolve", a word for reading.

      Matched text

      annotations: {"readOnlyHint":false,"destructiveHint":true}; The name "resolve_dispute" says "resolve": a word for reading.

      What this check looks for
    Description, as the server wrote it
    Resolves a dispute by mutual agreement. Workflow: (1) create_dispute_resolution_proposal generates typed data, (2) both parties sign the typed data locally with their wallet (EIP-712), (3) either party submits sigR/sigS/sigV here. Returns unsigned transaction data.

    Annotations the server declares

    • title: Resolve Dispute
    • readOnlyHint: false
    • destructiveHint: true
  • retract_disputeRetracts a raised dispute, releasing seller deposit and restoring completion flow.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Retracts a raised dispute, releasing seller deposit and restoring completion flow. Caller must be the buyer who raised it. Returns unsigned transaction data.

    Annotations the server declares

    • title: Retract Dispute
    • readOnlyHint: false
    • destructiveHint: true
  • revoke_voucherRevokes a committed (not yet redeemed) voucher on behalf of the seller, returning funds to the buyer.No findings

    Why it is in this group

    • The name "revoke_voucher" says "revoke": a word for removing or ending something.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    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 transaction data.

    Annotations the server declares

    • title: Revoke Voucher
    • readOnlyHint: false
    • destructiveHint: true
  • send_forwarded_meta_transactionRelays a Biconomy forwarded meta-transaction (ERC-20 gas payment).Can send data outNo findings

    Why it is in this group

    • The name "send_forwarded_meta_transaction" says "send": a word for sending, and what is sent cannot be taken back.
    • The input addresses people (input.request.to): what it sends cannot be taken back.
    • The server marks it destructive (destructiveHint: true).

    What it can reach

    • outboundThe name "send_forwarded_meta_transaction" says "send": it sends or publishes something to other people.
    Description, as the server wrote it
    Relays a Biconomy forwarded meta-transaction (ERC-20 gas payment). Requires a complete ERC20ForwardRequest and domain separator signature. Returns: relay transaction data.

    Annotations the server declares

    • title: Relay Forwarded Meta-Transaction
    • readOnlyHint: false
    • destructiveHint: true
  • send_meta_transactionRelays a pre-signed meta-transaction via Biconomy so the user pays no gas.Can send data out3 findings

    Why it is in this group

    • The name "send_meta_transaction" says "send": a word for sending, and what is sent cannot be taken back.
    • The server marks it destructive (destructiveHint: true).

    What it can reach

    • outboundThe name "send_meta_transaction" says "send": it sends or publishes something to other people.

    Findings

    • Warn

      The input schema at properties.transferAuthorizations.items.anyOf[0].properties.data.properties.validBefore.$ref contains a 86-character base64 string.

      Matched text

      inputSchema.properties.transferAuthorizations.items.anyOf[0].properties.data.properties.validBefore.$ref: "#/properties/transferAuthorizations/items/anyOf/0/properties/data/pro..."

      What this check looks for
    • Warn

      The input schema at properties.transferAuthorizations.items.anyOf[0].properties.r.$ref contains a 81-character base64 string.

      Matched text

      inputSchema.properties.transferAuthorizations.items.anyOf[0].properties.r.$ref: "#/properties/transferAuthorizations/items/anyOf/0/properties/data/pro..."

      What this check looks for
    • Warn

      The input schema at properties.transferAuthorizations.items.anyOf[0].properties.s.$ref contains a 81-character base64 string.

      Matched text

      inputSchema.properties.transferAuthorizations.items.anyOf[0].properties.s.$ref: "#/properties/transferAuthorizations/items/anyOf/0/properties/data/pro..."

      What this check looks for
    Description, as the server wrote it
    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 operation requires metaTx relay. Optionally accepts transferAuthorizations (from the sign_receive_with_* tools, completed with your local signature) so the protocol can pull ERC-20 tokens without a prior approve_exchange_token tx. Returns: relay transaction data.

    Annotations the server declares

    • title: Relay Meta-Transaction
    • readOnlyHint: false
    • destructiveHint: true
  • send_native_meta_transactionRelays a native meta-transaction (EIP-712 signed function call) via Biconomy.Can send data outNo findings

    Why it is in this group

    • The name "send_native_meta_transaction" says "send": a word for sending, and what is sent cannot be taken back.
    • The server marks it destructive (destructiveHint: true).

    What it can reach

    • outboundThe name "send_native_meta_transaction" says "send": it sends or publishes something to other people.
    Description, as the server wrote it
    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 EIP-712 payload. Returns: relay transaction data.

    Annotations the server declares

    • title: Relay Native Meta-Transaction
    • readOnlyHint: false
    • destructiveHint: true
  • send_signed_transactionBroadcasts a signed raw Ethereum transaction to the network.Can send data outNo findings

    Why it is in this group

    • The name "send_signed_transaction" says "send": a word for sending, and what is sent cannot be taken back.
    • The server marks it destructive (destructiveHint: true).

    What it can reach

    • outboundThe name "send_signed_transaction" says "send": it sends or publishes something to other people.
    Description, as the server wrote it
    Broadcasts a signed raw Ethereum transaction to the network. signedTransaction must be 0x-prefixed RLP-encoded hex obtained from local wallet signing (e.g. ethers `wallet.signTransaction(tx)`). Returns: transaction hash, block number, and gas used.

    Annotations the server declares

    • title: Broadcast Signed Transaction
    • readOnlyHint: false
    • destructiveHint: true
  • update_sellerUpdates an existing seller account.No findings

    Why it is in this group

    • The name "update_seller" says "update": a word for a change.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    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 unsigned transaction data.

    Annotations the server declares

    • title: Update Seller Account
    • readOnlyHint: false
    • destructiveHint: true
  • void_non_listed_offerVoids a private (non-listed) offer before it is fulfilled.No findings

    Why it is in this group

    • The name "void_non_listed_offer" says "void": a word for removing or ending something.
    • The input addresses people (input.royaltyInfo.recipients): what it sends cannot be taken back.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    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) to obtain the signature. Returns unsigned transaction data.

    Annotations the server declares

    • title: Void Private Offer
    • readOnlyHint: false
    • destructiveHint: true
  • void_non_listed_offer_batchVoids multiple private offers atomically.No findings

    Why it is in this group

    • The name "void_non_listed_offer_batch" says "void": a word for removing or ending something.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Voids multiple private offers atomically. Same prerequisite as void_non_listed_offer, but for an array of full offer objects. Returns unsigned transaction data.

    Annotations the server declares

    • title: Void Private Offers (Batch)
    • readOnlyHint: false
    • destructiveHint: true
  • void_offerVoids a listed offer so it can no longer be committed to.No findings

    Why it is in this group

    • The name "void_offer" says "void": a word for removing or ending something.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    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 data.

    Annotations the server declares

    • title: Void Offer
    • readOnlyHint: false
    • destructiveHint: true
  • withdraw_fundsWithdraws funds from an entity's protocol treasury to the entity's treasury address.No findings

    Why it is in this group

    • The name "withdraw_funds" says "withdraw": a word that usually means money moves, which cannot be taken back.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Withdraws funds from an entity's protocol treasury to the entity's treasury address. Sellers withdraw proceeds; buyers withdraw refunds. Caller must control the entity via signerAddress. Returns unsigned transaction data.

    Annotations the server declares

    • title: Withdraw Funds
    • readOnlyHint: false
    • destructiveHint: true
Can't be undone 2Claude Code: ask
  • render_contractual_agreementRenders the legal contractual agreement text/HTML for an offer using its offer data and metadata.1 finding

    Why it is in this group

    • The input addresses people (input.offerData.royaltyInfo.recipients): what it sends cannot be taken back.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    Findings

    • Warn

      The server marks "render_contractual_agreement" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".

      Matched text

      annotations: {"readOnlyHint":true}; The input addresses people (input.offerData.royaltyInfo.recipients): what it sends cannot be taken back.

      What this check looks for
    Description, as the server wrote it
    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 agreement string.

    Annotations the server declares

    • title: Render Contractual Agreement
    • readOnlyHint: true
  • sign_full_offerGenerates EIP-712 typed data for a non-listed (private) offer that the offer creator must sign.Can send data out1 finding

    Why it is in this group

    • The description's first verb is "generate": a word for a change.
    • The input addresses people (input.royaltyInfo.recipients): what it sends cannot be taken back.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    What it can reach

    • outboundThe input takes a destination (input.royaltyInfo.recipients): what the tool writes goes there.

    Findings

    • Warn

      The server marks "sign_full_offer" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".

      Matched text

      annotations: {"readOnlyHint":true}; The description's first verb is "generate": a word for a change.

      What this check looks for
    Description, as the server wrote it
    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. Returns: typed data structure — sign it locally with your wallet (EIP-712), then use the signature in the next step.

    Annotations the server declares

    • title: Sign Full Offer (Typed Data)
    • readOnlyHint: true
Changes things 11Claude Code: ask
  • create_dispute_resolution_proposalGenerates EIP-712 typed data for a mutual dispute resolution proposal.1 finding

    Why it is in this group

    • The name "create_dispute_resolution_proposal" says "create": a word for a change.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    Findings

    • Warn

      The server marks "create_dispute_resolution_proposal" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

      Matched text

      annotations: {"readOnlyHint":true}; The name "create_dispute_resolution_proposal" says "create": a word for a change.

      What this check looks for
    Description, as the server wrote it
    Generates EIP-712 typed data for a mutual dispute resolution proposal. Both buyer and seller must sign the same buyerPercentBasisPoints value locally with their wallet (EIP-712) before calling resolve_dispute. Returns: typed data structure (domain, types, message).

    Annotations the server declares

    • title: Create Dispute Resolution Proposal
    • readOnlyHint: true
  • register_agentRegisters a dACP agent with this MCP server instance, associating its Ethereum identities and roles.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    Description, as the server wrote it
    Registers a dACP agent with this MCP server instance, associating its Ethereum identities and roles. The signature proves control of each signerAddress. Server-local state — no configId/signerAddress context needed. Returns: registration confirmation.

    Annotations the server declares

    • title: Register dACP Agent
    • readOnlyHint: false
    • destructiveHint: false
  • sign_receive_with_dai_permitGenerates EIP-712 typed data for a DAI-style Permit.1 finding

    Why it is in this group

    • The description's first verb is "generate": a word for a change.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    Findings

    • Warn

      The server marks "sign_receive_with_dai_permit" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

      Matched text

      annotations: {"readOnlyHint":true}; The description's first verb is "generate": a word for a change.

      What this check looks for
    Description, as the server wrote it
    Generates EIP-712 typed data for a DAI-style Permit. Authorizes the spender (default: protocol diamond) to pull DAI-style tokens from signerAddress until `expiry`. Sign locally with your wallet (EIP-712); add the resulting signature to the returned transferAuthorization { strategy: 'DAIPermit', data } and pass it in send_meta_transaction.transferAuthorizations. Returns: typedData to sign + transferAuthorization template.

    Annotations the server declares

    • title: Sign Receive (DAI Permit)
    • readOnlyHint: true
  • sign_receive_with_erc2612_permitGenerates EIP-712 typed data for an EIP-2612 Permit.1 finding

    Why it is in this group

    • The description's first verb is "generate": a word for a change.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    Findings

    • Warn

      The server marks "sign_receive_with_erc2612_permit" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

      Matched text

      annotations: {"readOnlyHint":true}; The description's first verb is "generate": a word for a change.

      What this check looks for
    Description, as the server wrote it
    Generates EIP-712 typed data for an EIP-2612 Permit. Authorizes the spender (default: protocol diamond) to pull `value` from signerAddress until `deadline`. Sign locally with your wallet (EIP-712); add the resulting signature to the returned transferAuthorization { strategy: 'EIP2612', data } and pass it in send_meta_transaction.transferAuthorizations. Returns: typedData to sign + transferAuthorization template.

    Annotations the server declares

    • title: Sign Receive (ERC-2612 Permit)
    • readOnlyHint: true
  • sign_receive_with_erc3009_authorizationGenerates EIP-712 typed data for an ERC-3009 ReceiveWithAuthorization (e.g.1 finding

    Why it is in this group

    • The description's first verb is "generate": a word for a change.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    Findings

    • Warn

      The server marks "sign_receive_with_erc3009_authorization" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

      Matched text

      annotations: {"readOnlyHint":true}; The description's first verb is "generate": a word for a change.

      What this check looks for
    Description, as the server wrote it
    Generates EIP-712 typed data for an ERC-3009 ReceiveWithAuthorization (e.g. USDC). Authorizes the spender (default: protocol diamond) to pull `value` from signerAddress between validAfter and validBefore. Sign locally with your wallet (EIP-712); add the resulting signature to the returned transferAuthorization { strategy: 'ERC3009', data } and pass it in send_meta_transaction.transferAuthorizations. Returns: typedData to sign + transferAuthorization template.

    Annotations the server declares

    • title: Sign Receive (ERC-3009)
    • readOnlyHint: true
  • sign_receive_with_permit2Generates EIP-712 typed data for a Uniswap Permit2 PermitTransferFrom.1 finding

    Why it is in this group

    • The description's first verb is "generate": a word for a change.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    Findings

    • Warn

      The server marks "sign_receive_with_permit2" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

      Matched text

      annotations: {"readOnlyHint":true}; The description's first verb is "generate": a word for a change.

      What this check looks for
    Description, as the server wrote it
    Generates EIP-712 typed data for a Uniswap Permit2 PermitTransferFrom. Authorizes the spender (default: protocol diamond) to pull `value` from signerAddress until `deadline`. permit2Address defaults to contracts.permit2 from SDK config; permit2Nonce defaults to a random uint256. Sign locally with your wallet (EIP-712); add the resulting signature to the returned transferAuthorization { strategy: 'Permit2', data } and pass it in send_meta_transaction.transferAuthorizations. Returns: typedData to sign + transferAuthorization template.

    Annotations the server declares

    • title: Sign Receive (Permit2)
    • readOnlyHint: true
  • store_base_metadataStores a Base metadata object to IPFS.No findings

    Why it is in this group

    • The name "store_base_metadata" says "store": a word for a change.
    Description, as the server wrote it
    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 create_offer.

    Annotations the server declares

    • title: Store Base Metadata
    • readOnlyHint: false
    • destructiveHint: false
  • store_bundle_item_nft_metadataStores a single NFT bundle item's metadata to IPFS.No findings

    Why it is in this group

    • The name "store_bundle_item_nft_metadata" says "store": a word for a change.
    Description, as the server wrote it
    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 include in the items array.

    Annotations the server declares

    • title: Store Bundle Item (NFT)
    • readOnlyHint: false
    • destructiveHint: false
  • store_bundle_item_product_v1_metadataStores a single ProductV1 bundle item's metadata to IPFS.No findings

    Why it is in this group

    • The name "store_bundle_item_product_v1_metadata" says "store": a word for a change.
    Description, as the server wrote it
    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://...' } to include in the items array.

    Annotations the server declares

    • title: Store Bundle Item (Product)
    • readOnlyHint: false
    • destructiveHint: false
  • store_bundle_metadataStores a Bundle metadata object to IPFS.No findings

    Why it is in this group

    • The name "store_bundle_metadata" says "store": a word for a change.
    Description, as the server wrote it
    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 returned URLs in the items array. Returns: { metadataUri, metadataHash }.

    Annotations the server declares

    • title: Store Bundle Metadata
    • readOnlyHint: false
    • destructiveHint: false
  • store_product_v1_metadataStores a ProductV1 metadata object to IPFS.No findings

    Why it is in this group

    • The name "store_product_v1_metadata" says "store": a word for a change.
    Description, as the server wrote it
    Stores a ProductV1 metadata object to IPFS. Call before create_offer to get metadataUri and metadataHash. Returns: { metadataUri: 'ipfs://...', metadataHash: '0x...' }.

    Annotations the server declares

    • title: Store Product Metadata
    • readOnlyHint: false
    • destructiveHint: false
Only reads 14Show 14 read-only tools
  • get_all_products_with_not_voided_variantsReads product groupings with at least one non-voided variant from the Boson subgraph.No findings

    Why it is in this group

    • The name "get_all_products_with_not_voided_variants" says "get": a word for reading.
    Description, as the server wrote it
    Reads product groupings with at least one non-voided variant from the Boson subgraph. Useful for storefront displays. Supports pagination and ordering. Read-only.

    Annotations the server declares

    • title: Get Products (Active Variants)
    • readOnlyHint: true
  • get_config_idsReturns all valid configId values for this server.No findings

    Why it is in this group

    • The name "get_config_ids" says "get": a word for reading.
    Description, as the server wrote it
    Returns all valid configId values for this server. Call first to discover which network/deployment to use. No auth required.

    Annotations the server declares

    • title: Get Config IDs
    • readOnlyHint: true
  • get_dispute_by_idReads a single dispute by its ID (equals the exchangeId).No findings

    Why it is in this group

    • The name "get_dispute_by_id" says "get": a word for reading.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • title: Get Dispute by ID
    • readOnlyHint: true
  • get_dispute_resolversReads registered dispute resolver entities.No findings

    Why it is in this group

    • The name "get_dispute_resolvers" says "get": a word for reading.
    Description, as the server wrote it
    Reads registered dispute resolver entities. Use this to find a valid disputeResolverId for create_offer. Read-only. Returns: array of resolvers with ID, fees, escalationResponsePeriod, and supported tokens.

    Annotations the server declares

    • title: Get Dispute Resolvers
    • readOnlyHint: true
  • get_disputesReads dispute records from the Boson subgraph.No findings

    Why it is in this group

    • The name "get_disputes" says "get": a word for reading.
    Description, as the server wrote it
    Reads dispute records from the Boson subgraph. Supports pagination, ordering, and filtering by buyer/seller/state. Read-only. Returns: array of dispute entities with exchangeId, state, timeout.

    Annotations the server declares

    • title: Get Disputes
    • readOnlyHint: true
  • get_exchangesReads exchange records (offer commitments) from the Boson subgraph.No findings

    Why it is in this group

    • The name "get_exchanges" says "get": a word for reading.
    Description, as the server wrote it
    Reads exchange records (offer commitments) from the Boson subgraph. Filter by buyer/seller/state. Read-only. Returns: array of exchanges with offerId, state (Committed/Redeemed/Completed/Disputed/Cancelled/Revoked), and voucher details.

    Annotations the server declares

    • title: Get Exchanges
    • readOnlyHint: true
  • get_fundsReads treasury fund balances for sellers and buyers from the Boson subgraph.No findings

    Why it is in this group

    • The name "get_funds" says "get": a word for reading.
    Description, as the server wrote it
    Reads treasury fund balances for sellers and buyers from the Boson subgraph. Supports pagination/ordering/filtering. Read-only — signerAddress not required. Returns: array of { tokenAddress, availableAmount, accountId }.

    Annotations the server declares

    • title: Get Funds
    • readOnlyHint: true
  • get_offersReads offer listings from the Boson subgraph.No findings

    Why it is in this group

    • The name "get_offers" says "get": a word for reading.
    Description, as the server wrote it
    Reads offer listings from the Boson subgraph. Supports pagination, ordering, and filtering (e.g. by sellerId). Read-only. Returns: array of offers with price, deposit, dates, and quantity.

    Annotations the server declares

    • title: Get Offers
    • readOnlyHint: true
  • get_registered_agentsReturns all dACP agents registered with this MCP server instance, with their associated protocol entities and roles.No findings

    Why it is in this group

    • The name "get_registered_agents" says "get": a word for reading.
    Description, as the server wrote it
    Returns all dACP agents registered with this MCP server instance, with their associated protocol entities and roles. No auth required.

    Annotations the server declares

    • title: Get Registered Agents
    • readOnlyHint: true
  • get_sellersReads seller account entities from the Boson subgraph.No findings

    Why it is in this group

    • The name "get_sellers" says "get": a word for reading.
    Description, as the server wrote it
    Reads seller account entities from the Boson subgraph. Optionally includes related offers, exchanges, funds, and logs. Read-only. Returns: array of seller entities with addresses and metadataUri.

    Annotations the server declares

    • title: Get Sellers
    • readOnlyHint: true
  • get_sellers_by_addressReads seller entities associated with a specific Ethereum address.No findings

    Why it is in this group

    • The name "get_sellers_by_address" says "get": a word for reading.
    Description, as the server wrote it
    Reads seller entities associated with a specific Ethereum address. Use this to check if signerAddress already has a seller account before calling create_seller. Read-only. Returns: array of seller entities.

    Annotations the server declares

    • title: Get Sellers by Address
    • readOnlyHint: true
  • get_supported_tokensReturns ERC-20 tokens accepted as exchange tokens on the given configId deployment.No findings

    Why it is in this group

    • The name "get_supported_tokens" says "get": a word for reading.
    Description, as the server wrote it
    Returns ERC-20 tokens accepted as exchange tokens on the given configId deployment. Use returned addresses in exchangeTokenAddress fields of create_offer. Read-only. Returns: array of { address, name, symbol, decimals }.

    Annotations the server declares

    • title: Get Supported Tokens
    • readOnlyHint: true
  • search_productsSearches products in the Boson subgraph by keywords matched against title, description, brand, category, and tags.No findings

    Why it is in this group

    • The name "search_products" says "search": a word for reading.
    Description, as the server wrote it
    Searches products in the Boson subgraph by keywords matched against title, description, brand, category, and tags. Supports pagination, ordering, filtering, and an includeInvalidOffers flag (default false = only products with currently-valid offers). Read-only. Returns: array of product search result fragments.

    Annotations the server declares

    • title: Search Products
    • readOnlyHint: true
  • validate_metadataValidates a metadata object against the Boson Protocol schema (PRODUCT_V1, BUNDLE, BASE, etc.) without storing it.No findings

    Why it is in this group

    • The name "validate_metadata" says "validate": a word for reading.
    Description, as the server wrote it
    Validates a metadata object against the Boson Protocol schema (PRODUCT_V1, BUNDLE, BASE, etc.) without storing it. Use before store_*_metadata to catch errors early. Read-only. Returns: validation result with any errors.

    Annotations the server declares

    • title: Validate Metadata
    • readOnlyHint: true

This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.

Exfil surface

Which tools read private data, which read text someone else can write, and which can send data out. One of each is a path a prompt injection can use.

No private-data, untrusted-input, outbound path in this server alone: no tool is tagged private-data or untrusted-input.

Reads private data0
Reads files, mail, messages, databases, secrets, calendars or repositories.
Reads text others write0
Brings in text someone else can write: web pages, inbound email, messages, issues and comments.
Can send data out5
Can carry data to people or systems: it sends, posts or publishes, or takes a recipient, channel or URL.

Other servers in the same agent add their own tools to these paths. Audit your whole setup to see them together.

Remote posture

What anyone on the internet sees at the remote endpoint: an anonymous initialize and tools/list, and the public OAuth metadata.

Tools listed without sign-in

Looked at Oct 22, 2026, 14:49 UTC, unchanged since Oct 22, 2026. No credentials were sent and no tool was called. What is looked at.

Reachable
yes
HTTP status of an anonymous initialize
200
tools/list served without credentials
yes
Tools that change things, listed without credentials
49
Protocol version
2025-06-18
WWW-Authenticate on 401
not observed
resource_metadata in WWW-Authenticate
not observed
RFC 9728 protected resource metadata
not observed
Authorization servers
not observed
Legacy HTTP+SSE transport
no
Dynamic client registration
not observed
Client ID metadata documents
not observed
  • HighThe whole server

    The endpoint served tools/list without credentials, and the list has 49 tools that change things (36 destructive, 2 irreversible, 11 write). Whether a call also works without credentials was not tested: tools are never called.

    Matched text

    https://mcp.bosonprotocol.io/mcp: tools/list returned 63 tools to an anonymous client, including create_offer (destructive), create_offer_with_condition (destructive), create_buyer (destructive), create_offer_and_commit (destructive), create_offer_commit_and_redeem (destructive) and 44 more

    What this check looks for

Findings

Matches of fixed checks, with the text they matched.

11 warn
  • The server marks "sign_full_offer" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".

    Matched text

    annotations: {"readOnlyHint":true}; The description's first verb is "generate": a word for a change.

    What this check looks for
  • The input schema at properties.transferAuthorizations.items.anyOf[0].properties.data.properties.validBefore.$ref contains a 86-character base64 string.

    Matched text

    inputSchema.properties.transferAuthorizations.items.anyOf[0].properties.data.properties.validBefore.$ref: "#/properties/transferAuthorizations/items/anyOf/0/properties/data/pro..."

    What this check looks for
  • The input schema at properties.transferAuthorizations.items.anyOf[0].properties.r.$ref contains a 81-character base64 string.

    Matched text

    inputSchema.properties.transferAuthorizations.items.anyOf[0].properties.r.$ref: "#/properties/transferAuthorizations/items/anyOf/0/properties/data/pro..."

    What this check looks for
  • The input schema at properties.transferAuthorizations.items.anyOf[0].properties.s.$ref contains a 81-character base64 string.

    Matched text

    inputSchema.properties.transferAuthorizations.items.anyOf[0].properties.s.$ref: "#/properties/transferAuthorizations/items/anyOf/0/properties/data/pro..."

    What this check looks for
  • The server marks "resolve_dispute" destructive (destructiveHint: true), and its name says "resolve", a word for reading.

    Matched text

    annotations: {"readOnlyHint":false,"destructiveHint":true}; The name "resolve_dispute" says "resolve": a word for reading.

    What this check looks for
  • The server marks "create_dispute_resolution_proposal" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

    Matched text

    annotations: {"readOnlyHint":true}; The name "create_dispute_resolution_proposal" says "create": a word for a change.

    What this check looks for
Show 5 more findings
  • The server marks "sign_receive_with_erc3009_authorization" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

    Matched text

    annotations: {"readOnlyHint":true}; The description's first verb is "generate": a word for a change.

    What this check looks for
  • The server marks "sign_receive_with_erc2612_permit" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

    Matched text

    annotations: {"readOnlyHint":true}; The description's first verb is "generate": a word for a change.

    What this check looks for
  • The server marks "sign_receive_with_permit2" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

    Matched text

    annotations: {"readOnlyHint":true}; The description's first verb is "generate": a word for a change.

    What this check looks for
  • The server marks "sign_receive_with_dai_permit" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

    Matched text

    annotations: {"readOnlyHint":true}; The description's first verb is "generate": a word for a change.

    What this check looks for
  • The server marks "render_contractual_agreement" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".

    Matched text

    annotations: {"readOnlyHint":true}; The input addresses people (input.offerData.royaltyInfo.recipients): what it sends cannot be taken back.

    What this check looks for

History

Changes to its tool definitions and to its remote endpoint, newest first.

No change seen yet. Its tools are rescanned every day, and a remote endpoint is looked at once a week.

Install

Pinned to version 1.0.0. Values in angle brackets are yours to fill in.

claude mcp add --transport http agentic-commerce https://mcp.bosonprotocol.io/mcp
claude mcp add --transport http agentic-commerce https://mcp.bosonprotocol.io/mcp

Run in a terminal.

Claude Code permissions

Allow the reads, ask before a change or a way out, deny the deletes. Paste into .claude/settings.json.

.claude/settings.json
{
  "permissions": {
    "allow": [
      "mcp__agentic-commerce__get_config_ids",
      "mcp__agentic-commerce__get_funds",
      "mcp__agentic-commerce__get_disputes",
      "mcp__agentic-commerce__get_dispute_by_id",
      "mcp__agentic-commerce__get_exchanges",
      "mcp__agentic-commerce__get_offers",
      "mcp__agentic-commerce__get_sellers",
      "mcp__agentic-commerce__get_dispute_resolvers",
      "mcp__agentic-commerce__get_sellers_by_address",
      "mcp__agentic-commerce__get_all_products_with_not_voided_variants",
      "mcp__agentic-commerce__search_products",
      "mcp__agentic-commerce__validate_metadata",
      "mcp__agentic-commerce__get_registered_agents",
      "mcp__agentic-commerce__get_supported_tokens"
    ],
    "ask": [
      "mcp__agentic-commerce__sign_full_offer",
      "mcp__agentic-commerce__create_dispute_resolution_proposal",
      "mcp__agentic-commerce__sign_receive_with_erc3009_authorization",
      "mcp__agentic-commerce__sign_receive_with_erc2612_permit",
      "mcp__agentic-commerce__sign_receive_with_permit2",
      "mcp__agentic-commerce__sign_receive_with_dai_permit",
      "mcp__agentic-commerce__store_product_v1_metadata",
      "mcp__agentic-commerce__store_bundle_metadata",
      "mcp__agentic-commerce__store_base_metadata",
      "mcp__agentic-commerce__render_contractual_agreement",
      "mcp__agentic-commerce__store_bundle_item_product_v1_metadata",
      "mcp__agentic-commerce__store_bundle_item_nft_metadata",
      "mcp__agentic-commerce__register_agent"
    ],
    "deny": [
      "mcp__agentic-commerce__create_offer",
      "mcp__agentic-commerce__create_offer_with_condition",
      "mcp__agentic-commerce__create_buyer",
      "mcp__agentic-commerce__create_offer_and_commit",
      "mcp__agentic-commerce__create_offer_commit_and_redeem",
      "mcp__agentic-commerce__void_offer",
      "mcp__agentic-commerce__void_non_listed_offer",
      "mcp__agentic-commerce__void_non_listed_offer_batch",
      "mcp__agentic-commerce__create_seller",
      "mcp__agentic-commerce__update_seller",
      "mcp__agentic-commerce__send_signed_transaction",
      "mcp__agentic-commerce__send_meta_transaction",
      "mcp__agentic-commerce__send_native_meta_transaction",
      "mcp__agentic-commerce__send_forwarded_meta_transaction",
      "mcp__agentic-commerce__withdraw_funds",
      "mcp__agentic-commerce__deposit_funds",
      "mcp__agentic-commerce__extend_dispute_timeout",
      "mcp__agentic-commerce__expire_dispute",
      "mcp__agentic-commerce__expire_dispute_batch",
      "mcp__agentic-commerce__resolve_dispute",
      "mcp__agentic-commerce__raise_dispute",
      "mcp__agentic-commerce__retract_dispute",
      "mcp__agentic-commerce__escalate_dispute",
      "mcp__agentic-commerce__decide_dispute",
      "mcp__agentic-commerce__refuse_escalated_dispute",
      "mcp__agentic-commerce__expire_escalated_dispute",
      "mcp__agentic-commerce__revoke_voucher",
      "mcp__agentic-commerce__approve_exchange_token",
      "mcp__agentic-commerce__commit_to_offer",
      "mcp__agentic-commerce__commit_to_conditional_offer",
      "mcp__agentic-commerce__commit_to_offer_and_redeem_voucher",
      "mcp__agentic-commerce__commit_to_conditional_offer_and_redeem_voucher",
      "mcp__agentic-commerce__commit_to_buyer_offer",
      "mcp__agentic-commerce__cancel_voucher",
      "mcp__agentic-commerce__redeem_voucher",
      "mcp__agentic-commerce__complete_exchange"
    ]
  }
}

Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. A read that can send data out (it takes a URL, say) asks first too. It assumes the server is installed as agentic-commerce. Review it before you use it.

Capability tags behind 5 rules
  • mcp__agentic-commerce__sign_full_offer outbound
  • mcp__agentic-commerce__send_signed_transaction outbound
  • mcp__agentic-commerce__send_meta_transaction outbound
  • mcp__agentic-commerce__send_native_meta_transaction outbound
  • mcp__agentic-commerce__send_forwarded_meta_transaction outbound

Pin

Keep the decision: fail CI when the tools change, follow every change, or show a badge.

Pin in CI

Fail a build when the tools you reviewed are not the tools the server serves today.

curl -s "https://anlyon.dev/api/v1/servers/io.bosonprotocol/agentic-commerce/verify?hash=794008f3a928392f82fae4df3eb997a4d1e6900108f7651c8216dd99f03d8853" | jq -e '.changed == false'

Pinned hash 794008f3a928, from Oct 21, 2026, 19:01 UTC.

Watch

Get told when its tools change: a new tool, a new description, a new class.

https://anlyon.dev/servers/io.bosonprotocol/agentic-commerce/changes.xml

An Atom feed. Works in any feed reader or Slack's RSS app.

Badge

anlyon.dev badge for io.bosonprotocol/agentic-commerce
[![anlyon.dev](https://anlyon.dev/badge/io.bosonprotocol/agentic-commerce.svg)](https://anlyon.dev/servers/io.bosonprotocol/agentic-commerce)

Source: MCP Registry. Synced Oct 21, 2026, 18:13 UTC.