Problem
The vendor skill references document the offer/listing creation API endpoints but omit fields and context required for an agent to actually create orders programmatically.
An AI agent following the documented workflow (marketplace-api.md "Build an Offer" + seaport.md "Creating Listings") will fail at submission with iterative 400 errors:
"Missing required field 'counter'" — not documented anywhere
"Missing required field 'protocol_address'" — not shown as a top-level required field in the offer request body
"Missing required field 'signature'" — the signing flow (EIP-712 typedData) is mentioned but the exact domain/types/message structure for Seaport orders is not provided
What's missing
1. counter field
The parameters object requires a counter field (the offerer's current Seaport nonce). Neither marketplace-api.md nor seaport.md mention it. Agents need to know:
- That
counter is required
- How to get it:
getCounter(address) on the Seaport contract, or that "0" works for accounts that haven't incremented
2. protocol_address as top-level field
The offer/listing submission requires protocol_address at the top level alongside parameters and signature:
{
"protocol_address": "0x0000000000000068f116a894984e2db1123eb395",
"parameters": { ... },
"signature": "0x..."
}
The current docs show protocol_address only in fulfillment requests, not in order creation.
3. EIP-712 typedData format for signing
seaport.md says "Sign order with EIP-712" but doesn't provide the typedData structure. Agents need the exact:
- domain:
{ name: "Seaport", version: "1.6", chainId, verifyingContract }
- types: The
OrderComponents type with all field types
- message: How to map the
parameters object to the message fields
4. salt format
marketplace-api.md shows "salt": "random_salt_value" — Seaport expects a uint256. Agents don't know if this should be a hex string, decimal string, or how to generate one.
Impact
We tested this with an AI agent (minimax-m2.7) that:
- Read all vendor references
- Built the Seaport parameters correctly (offer items, consideration, timestamps)
- Posted to
opensea-post.sh and got "Missing required field 'counter'"
- Added counter (guessed
"0") → "Missing required field 'protocol_address'"
- Added protocol_address →
"Missing required field 'signature'"
- Got stuck — didn't know the EIP-712 typedData format to sign
The agent got 80% of the way there from the docs but couldn't bridge the gaps.
Suggested fix
Add a complete worked example to seaport.md or marketplace-api.md showing offer creation end-to-end:
# 1. Get counter (usually "0" for new accounts)
cast call 0x0000000000000068F116a894984e2DB1123eB395 "getCounter(address)" 0xYourWallet --rpc-url https://ethereum-rpc.publicnode.com
# 2. Build parameters (with counter, salt as uint256)
# 3. Sign EIP-712 typedData with exact domain/types
# 4. POST with { protocol_address, parameters, signature }
Or alternatively, document these fields inline in the existing "Build an Offer" section.
Problem
The vendor skill references document the offer/listing creation API endpoints but omit fields and context required for an agent to actually create orders programmatically.
An AI agent following the documented workflow (
marketplace-api.md"Build an Offer" +seaport.md"Creating Listings") will fail at submission with iterative 400 errors:"Missing required field 'counter'"— not documented anywhere"Missing required field 'protocol_address'"— not shown as a top-level required field in the offer request body"Missing required field 'signature'"— the signing flow (EIP-712 typedData) is mentioned but the exact domain/types/message structure for Seaport orders is not providedWhat's missing
1.
counterfieldThe
parametersobject requires acounterfield (the offerer's current Seaport nonce). Neithermarketplace-api.mdnorseaport.mdmention it. Agents need to know:counteris requiredgetCounter(address)on the Seaport contract, or that"0"works for accounts that haven't incremented2.
protocol_addressas top-level fieldThe offer/listing submission requires
protocol_addressat the top level alongsideparametersandsignature:{ "protocol_address": "0x0000000000000068f116a894984e2db1123eb395", "parameters": { ... }, "signature": "0x..." }The current docs show
protocol_addressonly in fulfillment requests, not in order creation.3. EIP-712 typedData format for signing
seaport.mdsays "Sign order with EIP-712" but doesn't provide the typedData structure. Agents need the exact:{ name: "Seaport", version: "1.6", chainId, verifyingContract }OrderComponentstype with all field typesparametersobject to the message fields4.
saltformatmarketplace-api.mdshows"salt": "random_salt_value"— Seaport expects a uint256. Agents don't know if this should be a hex string, decimal string, or how to generate one.Impact
We tested this with an AI agent (minimax-m2.7) that:
opensea-post.shand got"Missing required field 'counter'""0") →"Missing required field 'protocol_address'""Missing required field 'signature'"The agent got 80% of the way there from the docs but couldn't bridge the gaps.
Suggested fix
Add a complete worked example to
seaport.mdormarketplace-api.mdshowing offer creation end-to-end:Or alternatively, document these fields inline in the existing "Build an Offer" section.