Skip to main content
Glama

sign_full_offer

Read-only

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.

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

A4.2/5.0
Behavior4/5

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

The description explains that this tool generates data to be signed offline, consistent with the readOnlyHint annotation. It adds context about the return value and next steps, which helps the agent understand it is a preparatory read operation.

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?

Two sentences, no wasted words. The essential information is front-loaded: what the tool does, when to use it, and what to do with the output.

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

Completeness4/5

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

Given the complexity (32 parameters, nested objects, no output schema), the description provides adequate workflow context and tells the agent what to do after invoking. It could mention the return format more precisely, but it suffices for a preparatory tool.

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 high (94%), so the baseline is 3. The description does not elaborate on individual parameters beyond what the schema already covers. It adds minimal value for parameter semantics, but the schema is comprehensive.

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

Purpose5/5

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

The description clearly states the verb (generates) and resource (EIP-712 typed data for a non-listed offer), and distinguishes from siblings by specifying it should be called before create_offer_and_commit or void_non_listed_offer.

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?

Explicitly states when to call this tool relative to other tools ('Call before create_offer_and_commit or void_non_listed_offer') and describes the workflow (generate, sign locally, use signature). No exclusions or alternatives are mentioned, but the context is clear.

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