Skip to main content
Glama

create_offer_commit_and_redeem

Destructive

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.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
priceYesOffer price in the exchange token's smallest unit (wei). Pass as string to avoid precision loss, e.g. '1000000000000000000' = 1 ETH.
agentIdNoOptional dACP agent facilitating this offer. Omit or pass '0' if no agent.
buyerIdYesNumeric ID of the buyer entity. Use '0' for seller-initiated offers.
creatorNo'SELLER' (default) = seller creates offer. 'BUYER' = buyer-initiated offer, quantity must be 1.
configIdYesBoson/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 values for this server.
feeLimitNoMax protocol fee the seller accepts in same token unit. Pass as string.
sellerIdYesNumeric ID of the seller entity. Obtain via get_sellers_by_address.
committerYesEthereum address of the buyer committing in the same transaction.
conditionNo
priceTypeNo0 = static price, 1 = discovery price (auction).
signatureYesECDSA signature over the offer typed data. Workflow: sign_full_offer → sign the returned typed data locally with your wallet (EIP-712) → use result here.
metadataUriYesIPFS URI pointing to the offer metadata JSON. Obtain by calling store_product_v1_metadata, store_bundle_metadata, or store_base_metadata.
royaltyInfoNo
metadataHashYesKeccak256 hash of the metadata JSON. Returned alongside metadataUri from the store_*_metadata tools.
offerCreatorYesEthereum address of the seller creating this non-listed offer. Must match the seller's assistant address.
executionModeNo'direct' = standard on-chain tx (sign locally with your wallet → send_signed_transaction). 'metaTx' = gasless relay via Biconomy (send_meta_transaction). Defaults to 'direct'.
sellerDepositYesSeller collateral in same unit as price. Released to seller on completion or forfeited on dispute. Pass as string.
signerAddressYesEthereum address that will sign and send this transaction. Must match the wallet that will sign the returned transaction locally.
collectionIndexNoIndex of the seller's NFT collection for vouchers. Omit to use default (index 0).
disputeResolverIdNoID of the dispute resolver for escalated disputes. Call get_dispute_resolvers to list available resolvers.
quantityAvailableYesHow many times this offer can be committed to. Must be 1 when creator='BUYER'.
useDepositedFundsNoIf true, use funds already deposited in the protocol treasury instead of transferring from the wallet.
validFromDateInMSYesUnix timestamp in milliseconds when the offer becomes active. Example: Date.now() for immediate.
conditionalTokenIdNoOptional token ID of the NFT gate token used by this specific commit (for SpecificToken gating type).
validUntilDateInMSYesUnix timestamp in milliseconds when the offer can no longer be committed to.
drMutualizerAddressNoOptional dispute resolver mutualizer contract address that pools resolution funds.
exchangeTokenAddressNoERC-20 token accepted for payment. Omit or use address(0) for native ETH. Call get_supported_tokens for valid values.
buyerCancellationPenaltyYesAmount buyer forfeits on cancel, in same unit as price. Must be <= price. Pass as string.
voucherValidDurationInMSYesVoucher is redeemable for this many ms after commit. Set to 0 to use voucherRedeemableUntilDateInMS instead.
disputePeriodDurationInMSYesDuration in ms for buyer to raise a dispute after redeeming. Example: 604800000 = 7 days.
resolutionPeriodDurationInMSYesDuration in ms to respond to a resolution proposal before it expires. Example: 259200000 = 3 days.
voucherRedeemableFromDateInMSYesTimestamp in ms from which buyer can redeem. Must be >= validFromDateInMS.
voucherRedeemableUntilDateInMSYesTimestamp in ms after which voucher cannot be redeemed. Set to 0 to use voucherValidDurationInMS instead.

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate destructiveHint=true, so the agent knows it's a write operation. The description adds that the operation is atomic, performed via OrchestrationHandler, and returns unsigned transaction data (implying a subsequent signing step). This context is useful but does not elaborate on potential side effects (e.g., fund requirements, reverting conditions).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences that efficiently convey the core action, prerequisites, use case, and return type. It front-loads the atomic nature and avoids extraneous details, earning a perfect score.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (33 parameters, no output schema), the description is brief and covers the essential purpose. However, it does not explain how to handle the returned unsigned transaction data or that this tool replaces separate create/commit/redeem calls. For such a complex tool, the description could be more complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 94%, so the input schema already documents most parameters thoroughly. The description does not add further parameter-level details beyond referencing prerequisites. The baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool atomically creates a private offer, commits a buyer, and redeems the voucher. It names the OrchestrationHandler and distinguishes from create_offer_and_commit by noting the same prerequisites and the additional redemption step. However, it does not explicitly differentiate from other commit+redeem sibling tools like commit_to_offer_and_redeem_voucher.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description specifies 'Use for instant-fulfilment private trades' and mentions prerequisites (sign_full_offer + EIP-712 signature). It provides a clear use case but lacks explicit guidance on when not to use this tool versus alternatives (e.g., when delayed redemption is acceptable, use create_offer_and_commit instead).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

TDQS

A3.7/5.0
Disambiguation4/5

Most tools have distinct purposes with detailed descriptions, but there is overlap among multiple commit_to_* and sign_receive_* variants that could confuse an agent. The tool boundaries are clear for the core workflow, but the sheer number of similar operations slightly reduces clarity.

Naming Consistency4/5

Tool names predominantly follow a verb_noun pattern with underscores (e.g., commit_to_offer, create_seller). Some inconsistency exists with mixed verbs like 'store_', 'sign_', 'send_', but the pattern is largely predictable and readable.

Tool Count3/5

With 63 tools, the server is heavy but covers a complex protocol (offer lifecycle, disputes, metadata, meta-transactions). The count is borderline; some tools (e.g., multiple signing helpers) could be consolidated, but the scope justifies the size.

Completeness4/5

The tool set covers the core protocol flows comprehensively: create, commit, redeem, dispute, resolve, void, and metadata storage. Minor gaps exist (e.g., no dedicated 'get_offer_by_id' but filtering suffices), and meta-transaction support is extensive.

Resources