io.bosonprotocol/agentic-commerce
REMOTE · MCP.BOSONPROTOCOL.IO · SCANNED SEP 20
MCP server for Boson Protocol — on-chain agentic commerce for physical & digital goods.
Available components
Recent critical change
Authorization (18 Sept 2026). See the changelog before you install this server.
How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. How we score → Why this is hard to score →
Endpoint Security63
- The endpoint's TLS certificate is valid, in date, and uses a strong key. View diagnostics → Pass
- Authorisation check failed: no authorisation is required to call this server, and it exposes a tool marked destructive (create_offer). See how to fix → View diagnostics → Fail
- HTTPS is enforced; there's no plaintext access path. View diagnostics → Pass
- The HSTS (Strict-Transport-Security) header is present. View diagnostics → Pass
- DNSSEC check failed: this domain isn't protected by DNSSEC. See how to fix → View diagnostics → Fail
Transport & Reachability100
- Verified streamable-http transport via a live MCP handshake. View diagnostics → Pass
Schema Quality & AI Usability73
- 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).Pass
- AI-judged instruction clarity (good).Pass
- Context-footprint check failed: tool/resource definitions use about 18340 tokens (~282/item across 65 items; 63 tools + 2 resources), over budget; trim descriptions and params. See how to fix → Fail
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management100
- No destabilizing schema changes in the last 30 days.Pass
Tool Coverage88
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 65% of tool parameters carry a description.Partial
Tool Safety100
- No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
- All 6 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation.Pass
- An AI judge read all 64 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities60
- Spec-recency check failed: implements MCP spec 2025-06-18; the latest is 2026-07-28. See how to fix → Fail
How do I install the io.bosonprotocol/agentic-commerce MCP server?
io.bosonprotocol/agentic-commerce is a hosted endpoint at https://mcp.bosonprotocol.io/mcp, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.
remote · mcp.bosonprotocol.io
claude mcp add --transport http io-bosonprotocol-agentic-commerce 'https://mcp.bosonprotocol.io/mcp'
{
"mcpServers": {
"io-bosonprotocol-agentic-commerce": {
"url": "https://mcp.bosonprotocol.io/mcp"
}
}
} {
"servers": {
"io-bosonprotocol-agentic-commerce": {
"type": "http",
"url": "https://mcp.bosonprotocol.io/mcp"
}
}
} [mcp_servers.io-bosonprotocol-agentic-commerce] url = "https://mcp.bosonprotocol.io/mcp"
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"io-bosonprotocol-agentic-commerce": {
"type": "remote",
"url": "https://mcp.bosonprotocol.io/mcp",
"enabled": true
}
}
} openclaw mcp add io-bosonprotocol-agentic-commerce --url 'https://mcp.bosonprotocol.io/mcp' --transport streamable-http
mcp_servers:
io-bosonprotocol-agentic-commerce:
url: "https://mcp.bosonprotocol.io/mcp" {
"McpServers": {
"io-bosonprotocol-agentic-commerce": {
"Transport": "http",
"Url": "https://mcp.bosonprotocol.io/mcp"
}
}
} assistant mcp add io-bosonprotocol-agentic-commerce -t streamable-http -u 'https://mcp.bosonprotocol.io/mcp'
{
"mcpServers": {
"io-bosonprotocol-agentic-commerce": {
"type": "http",
"url": "https://mcp.bosonprotocol.io/mcp"
}
}
} The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.
Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 18 Sept 26 +40
- Authorization: unverified → fail ▼ critical
- Injection markers: unverified → pass ▲ security
- Stability: fail → pass ▲ security
- Schema quality: unverified → fail ▼ functional
- Schema quality: unverified → fail ▼ functional
- Tool coverage: unverified → 100 ▲ functional
- Schema quality: unverified → good ▲ functional
- This server's schema is too large to store in full, so we cannot compare its tools day to day functional
- 17 Sept 26 −40
- Authorization: fail → unverified ▼ security
- Tool safety: pass → unverified ▼ security
- Stability: pass → fail ▼ security
- Schema quality: fail → unverified ▼ functional
- Schema quality: good → unverified ▼ functional
- Schema quality: fail → unverified ▼ functional
- Tool coverage: 100 → unverified ▼ functional
- This server's schema is too large to store in full, so we cannot compare its tools day to day functional
- 15 Sept 26 0
- Server version: 1.2.8 → 1.2.9 functional
- 26 Aug 26 +1
- We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
- 25 Aug 26 +1
- Stability: 0.97 → pass security
- 23 Aug 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 90 to 93. That category is still filling its 30-day observation window: 27 days of observed history at the previous scan, 28 at this one. The score rises as the window fills, whether or not the server changes.
- 11 Aug 26 0
- We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
- 6 Aug 26 0
- Authorization: unverified → fail ▼ critical
- New tool “approve_exchange_token”, which the server declares destructive security
- New tool “cancel_voucher”, which the server declares destructive security
- New tool “commit_to_buyer_offer”, which the server declares destructive security
- New tool “commit_to_conditional_offer”, which the server declares destructive security
- New tool “commit_to_conditional_offer_and_redeem_voucher”, which the server declares destructive security
- New tool “commit_to_offer”, which the server declares destructive security
- New tool “update_seller”, which the server declares destructive security
- New tool “commit_to_offer_and_redeem_voucher”, which the server declares destructive security
- New tool “complete_exchange”, which the server declares destructive security
- New tool “create_buyer”, which the server declares destructive security
- New tool “create_offer”, which the server declares destructive security
- New tool “create_offer_and_commit”, which the server declares destructive security
- New tool “create_offer_commit_and_redeem”, which the server declares destructive security
- New tool “create_offer_with_condition”, which the server declares destructive security
- New tool “create_seller”, which the server declares destructive security
- New tool “decide_dispute”, which the server declares destructive security
- New tool “deposit_funds”, which the server declares destructive security
- New tool “escalate_dispute”, which the server declares destructive security
- New tool “expire_dispute”, which the server declares destructive security
- New tool “expire_dispute_batch”, which the server declares destructive security
- New tool “expire_escalated_dispute”, which the server declares destructive security
- New tool “extend_dispute_timeout”, which the server declares destructive security
- New tool “raise_dispute”, which the server declares destructive security
- New tool “redeem_voucher”, which the server declares destructive security
- New tool “refuse_escalated_dispute”, which the server declares destructive security
- New tool “resolve_dispute”, which the server declares destructive security
- New tool “retract_dispute”, which the server declares destructive security
- New tool “revoke_voucher”, which the server declares destructive security
- New tool “send_forwarded_meta_transaction”, which the server declares destructive security
- New tool “send_meta_transaction”, which the server declares destructive security
- New tool “send_native_meta_transaction”, which the server declares destructive security
- New tool “send_signed_transaction”, which the server declares destructive security
- New tool “void_non_listed_offer”, which the server declares destructive security
- New tool “void_non_listed_offer_batch”, which the server declares destructive security
- New tool “void_offer”, which the server declares destructive security
- New tool “withdraw_funds”, which the server declares destructive security
- Schema quality: unverified → fail ▼ functional
- Schema quality: unverified → fail ▼ functional
- Tool coverage: unverified → 100 ▲ functional
- Schema quality: unverified → good ▲ functional
- First check of Tool coverage: 65 functional
- First check of Schema quality: 100 functional
- New prompt “create-offer” functional
- New prompt “create-seller-if-needed” functional
- New resource “Config IDs” functional
- New resource “dACP Agents” functional
- New tool “create_dispute_resolution_proposal” functional
- New tool “get_all_products_with_not_voided_variants” functional
- New tool “get_config_ids” functional
- New tool “get_dispute_by_id” functional
- New tool “get_dispute_resolvers” functional
- New tool “get_disputes” functional
- New tool “get_exchanges” functional
- New tool “get_funds” functional
- New tool “get_offers” functional
- New tool “get_registered_agents” functional
- New tool “get_sellers” functional
- New tool “get_sellers_by_address” functional
- New tool “get_supported_tokens” functional
- New tool “register_agent” functional
- New tool “render_contractual_agreement” functional
- New tool “search_products” functional
- New tool “sign_full_offer” functional
- New tool “sign_receive_with_dai_permit” functional
- New tool “sign_receive_with_erc2612_permit” functional
- New tool “sign_receive_with_erc3009_authorization” functional
- New tool “sign_receive_with_permit2” functional
- New tool “store_base_metadata” functional
- New tool “store_bundle_item_nft_metadata” functional
- New tool “store_bundle_item_product_v1_metadata” functional
- New tool “store_bundle_metadata” functional
- New tool “store_product_v1_metadata” functional
- New tool “validate_metadata” functional
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 20 Sept 2026 · Probed https://mcp.bosonprotocol.io/mcp
TLS valid
Negotiated TLS 1.3 with TLS_AES_128_GCM_SHA256 .
| Subject | Issuer | Valid from | Valid until | Key | Signature | Serial |
|---|---|---|---|---|---|---|
| CN=mcp.bosonprotocol.io | CN=WR3,O=Google Trust Services,C=US | 12 Aug 2026 | 11 Nov 2026 | RSA 2048 | SHA256-RSA | 4c752a1a5252e72d1026626a125bdadf |
| SANs: mcp.bosonprotocol.io | ||||||
| CN=WR3,O=Google Trust Services,C=US (CA) | CN=GTS Root R1,O=Google Trust Services LLC,C=US | 13 Dec 2023 | 20 Feb 2029 | RSA 2048 | SHA256-RSA | 7ff005a91568d63abc22861684aa4b5a |
| CN=GTS Root R1,O=Google Trust Services LLC,C=US (CA) | CN=GlobalSign Root CA,OU=Root CA,O=GlobalSign nv-sa,C=BE | 19 Jun 2020 | 28 Jan 2028 | RSA 4096 | SHA256-RSA | 77bd0d6cdb36f91aea210fc4f058d30d |
Background: What to check on a remote MCP endpoint →
DNSSEC insecure
Validation of mcp.bosonprotocol.io. — Not signed
| Zone | DS | Keys | Algorithms | Outcome |
|---|---|---|---|---|
| . | trust_anchor | 20326, 38696 | 8, 8 | Verified |
| io. | present | 57355 | 8 | Verified |
| bosonprotocol.io. | absent | Unsigned (proven) parent-signed NSEC/NSEC3 proves an unsigned delegation |
Authentication No authorisation required
The endpoint answered without asking for a token. Anyone who knows the URL can reach it.
| Result | No authorisation required |
|---|---|
| HTTP status | 200 |
| Header | Value |
|---|---|
| strict-transport-security | max-age=31536000; includeSubDomains |
| x-content-type-options | nosniff |
| x-frame-options | DENY |
Background: How OAuth 2.1 works in the 2026 MCP spec →
Transports 2 probes
| Transport | URL | Outcome | Status | Location |
|---|---|---|---|---|
| streamable-http | https://mcp.bosonprotocol.io/mcp | Verified | 200 | |
| http (plaintext) | http://mcp.bosonprotocol.io/mcp | HTTPS enforced | 301 | https://mcp.bosonprotocol.io:443/mcp |
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →
send_meta_transaction ~215
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. Returns: relay transaction data.
| Name | Type | Req | Description |
|---|---|---|---|
| configId | string | yes | Boson/Fermion Protocol deployment identifier. Format: '<env>-<chainId>-<index>' e.g. 'production-137-0' (Polygon mainnet), 'testing-80002-0' (Amoy testnet). Call get_config_ids to list all valid valu… |
| functionName | string | yes | – |
| functionSignature | string | yes | – |
| nonce | string|number | yes | – |
| sigR | string | yes | – |
| sigS | string | yes | – |
| sigV | string|number | yes | – |
| signerAddress | string | yes | Ethereum address that will sign and send this transaction. Must match the wallet that will sign the returned transaction locally. |
No output schema declared.
No examples provided.
send_native_meta_transaction ~241
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.
| Name | Type | Req | Description |
|---|---|---|---|
| configId | string | yes | Boson/Fermion Protocol deployment identifier. Format: '<env>-<chainId>-<index>' e.g. 'production-137-0' (Polygon mainnet), 'testing-80002-0' (Amoy testnet). Call get_config_ids to list all valid valu… |
| contractAddress | string | yes | Valid Ethereum address (e.g. '0xAbCd...' or '0xabcd...'). Mixed-case addresses are checksum-validated; all-lowercase and all-uppercase addresses are also accepted. |
| functionSignature | string | yes | – |
| sigR | string | yes | – |
| sigS | string | yes | – |
| sigV | string|number | yes | – |
| signerAddress | – | yes | Ethereum address that will sign and send this transaction. Must match the wallet that will sign the returned transaction locally. |
No output schema declared.
No examples provided.
send_signed_transaction ~173
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.
| Name | Type | Req | Description |
|---|---|---|---|
| configId | string | yes | Boson/Fermion Protocol deployment identifier. Format: '<env>-<chainId>-<index>' e.g. 'production-137-0' (Polygon mainnet), 'testing-80002-0' (Amoy testnet). Call get_config_ids to list all valid valu… |
| signedTransaction | string | yes | RLP-encoded signed Ethereum transaction as 0x-prefixed hex string. Obtain from local wallet signing (e.g. ethers `wallet.signTransaction(tx)`). |
No output schema declared.
No examples provided.
sign_full_offer ~991
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.
| Name | Type | Req | Description |
|---|---|---|---|
| agentId | – | – | Optional dACP agent facilitating this offer. Omit or pass '0' if no agent. |
| buyerCancellationPenalty | – | yes | Amount buyer forfeits on cancel, in same unit as price. Must be <= price. Pass as string. |
| buyerId | – | yes | Numeric ID of the buyer entity. Use '0' for seller-initiated offers. |
| collectionIndex | string | – | Index of the seller's NFT collection for vouchers. Omit to use default (index 0). |
| committer | – | yes | Ethereum address of the buyer committing in the same transaction. |
| condition | object | – | – |
| conditionalTokenId | – | – | Optional token ID of the NFT gate token used by this specific commit (for SpecificToken gating type). |
| configId | string | yes | Boson/Fermion Protocol deployment identifier. Format: '<env>-<chainId>-<index>' e.g. 'production-137-0' (Polygon mainnet), 'testing-80002-0' (Amoy testnet). Call get_config_ids to list all valid valu… |
| creator | string | – | 'SELLER' (default) = seller creates offer. 'BUYER' = buyer-initiated offer, quantity must be 1. |
| disputePeriodDurationInMS | number | yes | Duration in ms for buyer to raise a dispute after redeeming. Example: 604800000 = 7 days. |
| disputeResolverId | string | – | ID of the dispute resolver for escalated disputes. Call get_dispute_resolvers to list available resolvers. |
| drMutualizerAddress | – | – | Optional dispute resolver mutualizer contract address that pools resolution funds. |
| exchangeTokenAddress | – | – | ERC-20 token accepted for payment. Omit or use address(0) for native ETH. Call get_supported_tokens for valid values. |
| executionMode | string | – | 'direct' = standard on-chain tx (sign locally with your wallet → send_signed_transaction). 'metaTx' = gasless relay via Biconomy (send_meta_transaction). Defaults to 'direct'. |
| feeLimit | – | – | Max protocol fee the seller accepts in same token unit. Pass as string. |
| metadataHash | string | yes | Keccak256 hash of the metadata JSON. Returned alongside metadataUri from the store_*_metadata tools. |
| metadataUri | string | yes | IPFS URI pointing to the offer metadata JSON. Obtain by calling store_product_v1_metadata, store_bundle_metadata, or store_base_metadata. |
| offerCreator | string | yes | Ethereum address of the seller creating this non-listed offer. Must match the seller's assistant address. |
| price | – | yes | Offer price in the exchange token's smallest unit (wei). Pass as string to avoid precision loss, e.g. '1000000000000000000' = 1 ETH. |
| priceType | number | – | 0 = static price, 1 = discovery price (auction). |
| quantityAvailable | number | yes | How many times this offer can be committed to. Must be 1 when creator='BUYER'. |
| resolutionPeriodDurationInMS | number | yes | Duration in ms to respond to a resolution proposal before it expires. Example: 259200000 = 3 days. |
| royaltyInfo | object | – | – |
| sellerDeposit | – | yes | Seller collateral in same unit as price. Released to seller on completion or forfeited on dispute. Pass as string. |
| sellerId | – | yes | Numeric ID of the seller entity. Obtain via get_sellers_by_address. |
| signerAddress | – | yes | Ethereum address that will sign and send this transaction. Must match the wallet that will sign the returned transaction locally. |
| useDepositedFunds | boolean | – | If true, use funds already deposited in the protocol treasury instead of transferring from the wallet. |
| validFromDateInMS | number | yes | Unix timestamp in milliseconds when the offer becomes active. Example: Date.now() for immediate. |
| validUntilDateInMS | number | yes | Unix timestamp in milliseconds when the offer can no longer be committed to. |
| voucherRedeemableFromDateInMS | number | yes | Timestamp in ms from which buyer can redeem. Must be >= validFromDateInMS. |
| voucherRedeemableUntilDateInMS | number | yes | Timestamp in ms after which voucher cannot be redeemed. Set to 0 to use voucherValidDurationInMS instead. |
| voucherValidDurationInMS | number | yes | Voucher is redeemable for this many ms after commit. Set to 0 to use voucherRedeemableUntilDateInMS instead. |
No output schema declared.
No examples provided.
sign_receive_with_dai_permit ~298
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); use the result to build a TransferAuthorization { strategy: 'DAIPermit' } for a meta-tx flow. Returns: typed data structure.
| Name | Type | Req | Description |
|---|---|---|---|
| configId | string | yes | Boson/Fermion Protocol deployment identifier. Format: '<env>-<chainId>-<index>' e.g. 'production-137-0' (Polygon mainnet), 'testing-80002-0' (Amoy testnet). Call get_config_ids to list all valid valu… |
| exchangeTokenAddress | string | yes | ERC-20 token contract address that supports the permit/authorization standard. |
| expiry | – | yes | Unix timestamp in seconds after which the DAI-style permit is no longer valid. |
| signerAddress | – | yes | Ethereum address that will sign and send this transaction. Must match the wallet that will sign the returned transaction locally. |
| spender | – | – | Optional spender address. Defaults to the Boson Protocol diamond from SDK config. |
| tokenDomainName | string | yes | EIP-712 domain name of the DAI-style token (e.g. 'Dai Stablecoin'). |
| value | string | yes | Amount in wei the spender is authorized to pull from the signer. |
No output schema declared.
No examples provided.
sign_receive_with_erc2612_permit ~351
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); use the resulting signature to build a TransferAuthorization { strategy: 'EIP2612' } for a meta-tx flow. Returns: typed data structure.
| Name | Type | Req | Description |
|---|---|---|---|
| configId | string | yes | Boson/Fermion Protocol deployment identifier. Format: '<env>-<chainId>-<index>' e.g. 'production-137-0' (Polygon mainnet), 'testing-80002-0' (Amoy testnet). Call get_config_ids to list all valid valu… |
| deadline | – | yes | Unix timestamp in seconds after which the permit is no longer valid. |
| exchangeTokenAddress | string | yes | ERC-20 token contract address that supports the permit/authorization standard. |
| signerAddress | – | yes | Ethereum address that will sign and send this transaction. Must match the wallet that will sign the returned transaction locally. |
| spender | – | – | Optional spender address. Defaults to the Boson Protocol diamond from SDK config. |
| tokenDomainName | string | yes | EIP-712 domain name of the token contract (e.g. 'USD Coin'). Required for ERC-3009 / EIP-2612 domain separator. |
| tokenDomainVersion | string | yes | EIP-712 domain version of the token contract (e.g. '2'). Required for ERC-3009 / EIP-2612 domain separator. |
| value | string | yes | Amount in wei the spender is authorized to pull from the signer. |
No output schema declared.
No examples provided.
sign_receive_with_erc3009_authorization ~380
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); use the resulting signature + nonce to build a TransferAuthorization { strategy: 'ERC3009' } for a meta-tx flow. Returns: typed data structure.
| Name | Type | Req | Description |
|---|---|---|---|
| configId | string | yes | Boson/Fermion Protocol deployment identifier. Format: '<env>-<chainId>-<index>' e.g. 'production-137-0' (Polygon mainnet), 'testing-80002-0' (Amoy testnet). Call get_config_ids to list all valid valu… |
| exchangeTokenAddress | string | yes | ERC-20 token contract address that supports the permit/authorization standard. |
| signerAddress | – | yes | Ethereum address that will sign and send this transaction. Must match the wallet that will sign the returned transaction locally. |
| spender | – | – | Optional spender address. Defaults to the Boson Protocol diamond from SDK config. |
| tokenDomainName | string | yes | EIP-712 domain name of the token contract (e.g. 'USD Coin'). Required for ERC-3009 / EIP-2612 domain separator. |
| tokenDomainVersion | string | yes | EIP-712 domain version of the token contract (e.g. '2'). Required for ERC-3009 / EIP-2612 domain separator. |
| validAfter | – | yes | Unix timestamp in seconds before which the authorization is not valid. |
| validBefore | – | yes | Unix timestamp in seconds after which the authorization is no longer valid. |
| value | string | yes | Amount in wei the spender is authorized to pull from the signer. |
No output schema declared.
No examples provided.
sign_receive_with_permit2 ~340
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); use the result to build a TransferAuthorization { strategy: 'Permit2' } for a meta-tx flow. Returns: typed data structure.
| Name | Type | Req | Description |
|---|---|---|---|
| configId | string | yes | Boson/Fermion Protocol deployment identifier. Format: '<env>-<chainId>-<index>' e.g. 'production-137-0' (Polygon mainnet), 'testing-80002-0' (Amoy testnet). Call get_config_ids to list all valid valu… |
| deadline | – | yes | Unix timestamp in seconds after which the Permit2 authorization is no longer valid. |
| exchangeTokenAddress | string | yes | ERC-20 token contract address that supports the permit/authorization standard. |
| permit2Address | – | – | Optional Uniswap Permit2 contract address. Defaults to contracts.permit2 from SDK config. |
| permit2Nonce | – | – | Optional Permit2 nonce as a uint256 string. If omitted, a random uint256 is generated. |
| signerAddress | – | yes | Ethereum address that will sign and send this transaction. Must match the wallet that will sign the returned transaction locally. |
| spender | – | – | Optional spender address. Defaults to the Boson Protocol diamond from SDK config. |
| value | string | yes | Amount in wei the spender is authorized to pull from the signer. |
No output schema declared.
No examples provided.
store_base_metadata ~236
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.
| Name | Type | Req | Description |
|---|---|---|---|
| animationUrl | string | – | – |
| attributes | array | – | – |
| condition | string | – | – |
| configId | string | yes | Boson/Fermion Protocol deployment identifier. Format: '<env>-<chainId>-<index>' e.g. 'production-137-0' (Polygon mainnet), 'testing-80002-0' (Amoy testnet). Call get_config_ids to list all valid valu… |
| description | string | yes | – |
| externalUrl | string | yes | – |
| image | string | – | – |
| imageData | string | – | – |
| licenseUrl | string | yes | – |
| name | string | yes | – |
| schemaUrl | string | yes | – |
| signerAddress | string | yes | Ethereum address that will sign and send this transaction. Must match the wallet that will sign the returned transaction locally. |
| type | string | yes | – |
| youtubeUrl | string | – | – |
No output schema declared.
No examples provided.
store_bundle_item_nft_metadata ~306
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.
| Name | Type | Req | Description |
|---|---|---|---|
| animationUrl | string | – | – |
| animation_url | string | – | – |
| attributes | array | – | – |
| chainId | number | – | – |
| configId | string | yes | Boson/Fermion Protocol deployment identifier. Format: '<env>-<chainId>-<index>' e.g. 'production-137-0' (Polygon mainnet), 'testing-80002-0' (Amoy testnet). Call get_config_ids to list all valid valu… |
| contract | string | – | – |
| description | string | – | – |
| externalUrl | string | – | – |
| external_url | string | – | – |
| image | string | – | – |
| imageData | string | – | – |
| image_data | string | – | – |
| name | string | yes | – |
| quantity | number | – | – |
| schemaUrl | string | yes | – |
| signerAddress | string | yes | Ethereum address that will sign and send this transaction. Must match the wallet that will sign the returned transaction locally. |
| terms | array | – | – |
| tokenId | string | – | – |
| tokenIdRange | object | – | – |
| type | string | yes | – |
| youtubeUrl | string | – | – |
| youtube_url | string | – | – |
No output schema declared.
No examples provided.
store_bundle_item_product_v1_metadata ~215
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.
| Name | Type | Req | Description |
|---|---|---|---|
| configId | string | yes | Boson/Fermion Protocol deployment identifier. Format: '<env>-<chainId>-<index>' e.g. 'production-137-0' (Polygon mainnet), 'testing-80002-0' (Amoy testnet). Call get_config_ids to list all valid valu… |
| exchangePolicy | object | yes | – |
| product | object | yes | – |
| productOverrides | object | – | – |
| schemaUrl | string | yes | – |
| shipping | object | yes | – |
| signerAddress | string | yes | Ethereum address that will sign and send this transaction. Must match the wallet that will sign the returned transaction locally. |
| type | string | yes | – |
| uuid | string | yes | – |
| variations | array | – | – |
No output schema declared.
No examples provided.
store_bundle_metadata ~270
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 }.
| Name | Type | Req | Description |
|---|---|---|---|
| animationUrl | string | – | – |
| attributes | array | – | – |
| bundleUuid | string | yes | – |
| condition | string | – | – |
| configId | string | yes | Boson/Fermion Protocol deployment identifier. Format: '<env>-<chainId>-<index>' e.g. 'production-137-0' (Polygon mainnet), 'testing-80002-0' (Amoy testnet). Call get_config_ids to list all valid valu… |
| description | string | yes | – |
| externalUrl | string | yes | – |
| image | string | – | – |
| imageData | string | – | – |
| items | array | yes | – |
| licenseUrl | string | yes | – |
| name | string | yes | – |
| schemaUrl | string | yes | – |
| seller | object | yes | – |
| signerAddress | string | yes | Ethereum address that will sign and send this transaction. Must match the wallet that will sign the returned transaction locally. |
| type | string | yes | – |
| youtubeUrl | string | – | – |
No output schema declared.
No examples provided.
store_product_v1_metadata ~294
Stores a ProductV1 metadata object to IPFS. Call before create_offer to get metadataUri and metadataHash. Returns: { metadataUri: 'ipfs://...', metadataHash: '0x...' }.
| Name | Type | Req | Description |
|---|---|---|---|
| animationUrl | string | – | – |
| attributes | array | yes | – |
| condition | string | – | – |
| configId | string | yes | Boson/Fermion Protocol deployment identifier. Format: '<env>-<chainId>-<index>' e.g. 'production-137-0' (Polygon mainnet), 'testing-80002-0' (Amoy testnet). Call get_config_ids to list all valid valu… |
| description | string | yes | – |
| exchangePolicy | object | yes | – |
| externalUrl | string | yes | – |
| image | string | yes | – |
| imageData | string | – | – |
| licenseUrl | string | yes | – |
| name | string | yes | – |
| product | object | yes | – |
| productOverrides | object | – | – |
| schemaUrl | string | yes | – |
| seller | object | yes | – |
| shipping | object | yes | – |
| signerAddress | string | yes | Ethereum address that will sign and send this transaction. Must match the wallet that will sign the returned transaction locally. |
| type | string | yes | – |
| uuid | string | yes | – |
| variations | array | – | – |
| youtubeUrl | string | – | – |
No output schema declared.
No examples provided.
update_seller ~354
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.
| Name | Type | Req | Description |
|---|---|---|---|
| authTokenId | string | yes | NFT token ID used as auth token (e.g. Lens profile ID). Pass '0' if not using auth tokens. |
| authTokenType | number | yes | Auth token type: 0=None, 1=Lens Protocol profile NFT. |
| configId | string | yes | Boson/Fermion Protocol deployment identifier. Format: '<env>-<chainId>-<index>' e.g. 'production-137-0' (Polygon mainnet), 'testing-80002-0' (Amoy testnet). Call get_config_ids to list all valid valu… |
| contactLinks | array | – | – |
| contactPreference | string | yes | – |
| description | string | – | – |
| executionMode | string | – | 'direct' = standard on-chain tx (sign locally with your wallet → send_signed_transaction). 'metaTx' = gasless relay via Biconomy (send_meta_transaction). Defaults to 'direct'. |
| id | – | yes | Numeric ID of the existing seller entity to update. Obtain from get_sellers_by_address. |
| images | array | – | – |
| kind | string | yes | – |
| legalTradingName | string | – | – |
| name | string | – | – |
| salesChannels | array | – | – |
| signerAddress | string | yes | Ethereum address that will sign and send this transaction. Must match the wallet that will sign the returned transaction locally. |
| socialLinks | array | – | – |
| type | string | yes | – |
| website | string | – | – |
No output schema declared.
No examples provided.
validate_metadata ~64
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.
| Name | Type | Req | Description |
|---|---|---|---|
| metadata | object | yes | – |
No output schema declared.
No examples provided.
void_non_listed_offer ~909
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.
| Name | Type | Req | Description |
|---|---|---|---|
| agentId | – | – | Optional dACP agent facilitating this offer. Omit or pass '0' if no agent. |
| buyerCancellationPenalty | – | yes | Amount buyer forfeits on cancel, in same unit as price. Must be <= price. Pass as string. |
| buyerId | – | yes | Numeric ID of the buyer entity. Use '0' for seller-initiated offers. |
| collectionIndex | – | – | Index of the seller's NFT collection for vouchers. Omit to use default (index 0). |
| condition | object | – | – |
| configId | string | yes | Boson/Fermion Protocol deployment identifier. Format: '<env>-<chainId>-<index>' e.g. 'production-137-0' (Polygon mainnet), 'testing-80002-0' (Amoy testnet). Call get_config_ids to list all valid valu… |
| creator | string | – | 'SELLER' (default) = seller creates offer. 'BUYER' = buyer-initiated offer, quantity must be 1. |
| disputePeriodDurationInMS | number | yes | Duration in ms for buyer to raise a dispute after redeeming. Example: 604800000 = 7 days. |
| disputeResolverId | string | – | ID of the dispute resolver for escalated disputes. Call get_dispute_resolvers to list available resolvers. |
| drMutualizerAddress | – | – | Optional dispute resolver mutualizer contract address that pools resolution funds. |
| exchangeTokenAddress | – | – | ERC-20 token accepted for payment. Omit or use address(0) for native ETH. Call get_supported_tokens for valid values. |
| executionMode | string | – | 'direct' = standard on-chain tx (sign locally with your wallet → send_signed_transaction). 'metaTx' = gasless relay via Biconomy (send_meta_transaction). Defaults to 'direct'. |
| feeLimit | – | – | Max protocol fee the seller accepts in same token unit. Pass as string. |
| metadataHash | string | yes | Keccak256 hash of the metadata JSON. Returned alongside metadataUri from the store_*_metadata tools. |
| metadataUri | string | yes | IPFS URI pointing to the offer metadata JSON. Obtain by calling store_product_v1_metadata, store_bundle_metadata, or store_base_metadata. |
| price | – | yes | Offer price in the exchange token's smallest unit (wei). Pass as string to avoid precision loss, e.g. '1000000000000000000' = 1 ETH. |
| priceType | number | – | 0 = static price, 1 = discovery price (auction). |
| quantityAvailable | number | yes | How many times this offer can be committed to. Must be 1 when creator='BUYER'. |
| resolutionPeriodDurationInMS | number | yes | Duration in ms to respond to a resolution proposal before it expires. Example: 259200000 = 3 days. |
| royaltyInfo | object | – | – |
| sellerDeposit | – | yes | Seller collateral in same unit as price. Released to seller on completion or forfeited on dispute. Pass as string. |
| sellerId | – | yes | Numeric ID of the seller entity. Obtain via get_sellers_by_address. |
| signerAddress | – | yes | Ethereum address that will sign and send this transaction. Must match the wallet that will sign the returned transaction locally. |
| useDepositedFunds | boolean | – | If true, use funds already deposited in the protocol treasury instead of transferring from the wallet. |
| validFromDateInMS | number | yes | Unix timestamp in milliseconds when the offer becomes active. Example: Date.now() for immediate. |
| validUntilDateInMS | number | yes | Unix timestamp in milliseconds when the offer can no longer be committed to. |
| voucherRedeemableFromDateInMS | number | yes | Timestamp in ms from which buyer can redeem. Must be >= validFromDateInMS. |
| voucherRedeemableUntilDateInMS | number | yes | Timestamp in ms after which voucher cannot be redeemed. Set to 0 to use voucherValidDurationInMS instead. |
| voucherValidDurationInMS | number | yes | Voucher is redeemable for this many ms after commit. Set to 0 to use voucherRedeemableUntilDateInMS instead. |
No output schema declared.
No examples provided.
void_non_listed_offer_batch ~148
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 | Type | Req | Description |
|---|---|---|---|
| configId | string | yes | Boson/Fermion Protocol deployment identifier. Format: '<env>-<chainId>-<index>' e.g. 'production-137-0' (Polygon mainnet), 'testing-80002-0' (Amoy testnet). Call get_config_ids to list all valid valu… |
| fullOffers | array | yes | – |
| signerAddress | – | yes | Ethereum address that will sign and send this transaction. Must match the wallet that will sign the returned transaction locally. |
No output schema declared.
No examples provided.
void_offer ~213
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.
| Name | Type | Req | Description |
|---|---|---|---|
| configId | string | yes | Boson/Fermion Protocol deployment identifier. Format: '<env>-<chainId>-<index>' e.g. 'production-137-0' (Polygon mainnet), 'testing-80002-0' (Amoy testnet). Call get_config_ids to list all valid valu… |
| executionMode | string | – | 'direct' = standard on-chain tx (sign locally with your wallet → send_signed_transaction). 'metaTx' = gasless relay via Biconomy (send_meta_transaction). Defaults to 'direct'. |
| offerId | string | yes | ID of the listed offer to void. Caller must be the seller assistant. Existing exchanges are unaffected. |
| signerAddress | string | yes | Ethereum address that will sign and send this transaction. Must match the wallet that will sign the returned transaction locally. |
No output schema declared.
No examples provided.
withdraw_funds ~217
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.
| Name | Type | Req | Description |
|---|---|---|---|
| configId | string | yes | Boson/Fermion Protocol deployment identifier. Format: '<env>-<chainId>-<index>' e.g. 'production-137-0' (Polygon mainnet), 'testing-80002-0' (Amoy testnet). Call get_config_ids to list all valid valu… |
| entityId | string | yes | Numeric ID of the seller or buyer entity withdrawing funds. |
| executionMode | string | – | 'direct' = standard on-chain tx (sign locally with your wallet → send_signed_transaction). 'metaTx' = gasless relay via Biconomy (send_meta_transaction). Defaults to 'direct'. |
| list | array | yes | – |
| signerAddress | – | yes | Ethereum address that will sign and send this transaction. Must match the wallet that will sign the returned transaction locally. |
No output schema declared.
No examples provided.
What is the io.bosonprotocol/agentic-commerce MCP server?
io.bosonprotocol/agentic-commerce is an MCP server listed in the public MCP registry as io.bosonprotocol/agentic-commerce. MCP server for Boson Protocol, on-chain agentic commerce for physical & digital goods. This page covers its hosted endpoint (https://mcp.bosonprotocol.io/mcp).
Is the io.bosonprotocol/agentic-commerce MCP server safe to use?
io.bosonprotocol/agentic-commerce scores 78 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.
What tools does the io.bosonprotocol/agentic-commerce MCP server expose?
io.bosonprotocol/agentic-commerce exposes 63 tools: get_config_ids, get_funds, get_disputes, get_dispute_by_id, get_exchanges, and 58 more. Their descriptions and schemas cost roughly 18,287 tokens of context every time the server is loaded.
Does the io.bosonprotocol/agentic-commerce MCP server require authentication?
No. We connected to io.bosonprotocol/agentic-commerce without credentials and it answered, so anything it exposes is reachable by anyone who knows the address.
Is the io.bosonprotocol/agentic-commerce MCP server still maintained?
io.bosonprotocol/agentic-commerce is still listed as active in the MCP registry. We last reached this channel on 20 September 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.