Skip to main content
Glama

create_offer

Destructive

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'.

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.
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.
priceTypeNo0 = static price, 1 = discovery price (auction).
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.
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'.
validFromDateInMSYesUnix timestamp in milliseconds when the offer becomes active. Example: Date.now() for immediate.
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

A4.1/5.0
Behavior4/5

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

Annotations indicate destructive=true and readOnly=false. The description adds that the tool returns an unsigned transaction and describes two execution modes (direct/metaTx), which are important behavioral details not covered by annotations.

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 four sentences, front-loaded with the action and resource, and every sentence adds value (prerequisites, formats, output handling). No unnecessary words.

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

Completeness5/5

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

Despite no output schema, the description clearly explains the return value (unsigned tx) and how to proceed, which is sufficient for a complex tool with 25 parameters. Prerequisites and format details are covered, making it complete for the given complexity.

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 coverage is 96%, so the description adds minimal parameter-level detail. It mentions date and amount formats (dates in ms, amounts as strings in wei) but most parameters are well-documented in the schema. Baseline 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 'Creates a product offer', identifying the verb and resource. It also distinguishes from siblings like create_offer_and_commit by noting that this tool returns an unsigned transaction for local signing, implying that other tools handle commitment automatically. However, it does not explicitly name alternatives, so it gets a 4.

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

Usage Guidelines4/5

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

The description provides prerequisites (seller account, metadata storage) and explains when to use this tool versus alternatives (e.g., for local signing vs metaTx). It does not explicitly list exclusions, but the context is clear enough for an agent to decide.

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