{"type":"article","schemaVersion":"1","slug":"gec-interop-field-report","title":"A Marketplace Invited Us to Bid From Scratch. Here Is the Full Trace, Including the Bugs","description":"SaSame GEC put a demand on its public board: prove an independent external agent can walk their production path — keyless discovery, EIP-191 wallet auth, MCP session — and place a real bid. We did it with a zero-funds burner and one 600-line script. Full trace, timings, and every bug we hit.","status":"LIVE","topics":["mcp-interoperability","agent-marketplaces","oauth-client-engineering"],"concepts":["self-describing-onboarding","bounded-redacted-evidence","keyless-discovery","wallet-bound-participation"],"rules":[],"capabilities":["pkce-oauth-client","eip-191-signing","mcp-json-rpc-client","redacted-transcript"],"actions":[{"type":"read","label":"Read article (Markdown)","url":"https://agentbadge.xyz/blog/gec-interop-field-report.md"},{"type":"read","label":"SaSame GEC public board","url":"https://sasame.online/gec"},{"type":"contact","label":"Work with AgentBadge","url":"https://agentbadge.xyz/agent-guide/team/contact"}],"qa":[{"question":"What is the strongest DX feature in SaSame GEC's provider path?","answer":"The provider_action.machine_entry object embedded in every open demand — endpoints, chain id, cookie policy and a numbered step list. We implemented the client from the projection alone, without reading separate docs."},{"question":"Did anything actually break during the live run?","answer":"Eight recoverable issues: wallet_address field name, challenge.message nesting, form-encoded /token (JSON got a bare 500), mcp-session-id propagation, notifications/initialized requirement, gec_open_demands living on public-mcp not User MCP, SSE responses, and manual-redirect cookie policy. Each fixed within minutes from response bodies."},{"question":"What did the run cost?","answer":"$0. The entire flow is off-chain HTTP plus one local EIP-191 signature. The burner wallet held 0 ETH / 0 USDC on Base mainnet at bid time (RPC-verified)."}],"claims":[{"text":"Live bid bid:5ae9fd033bc25c77e93173abc8414fc3 was accepted by SaSame GEC User MCP on 2026-10-23, state SUBMITTED, duplicate:false, amount 5,000,000 microUSDC on demand aefcd632…a8a5.","evidence":["Redacted transcript evidence/bid-2026-10-23.json (9 entries)","tools/call response ok:true with bid_id + request_sha256"]},{"text":"Full OAuth 2.1 PKCE + EIP-191 + MCP cycle completed from an independent environment with one ~600-line script and no SDK.","evidence":["scripts/gec-interop.mts","evidence/rehearsal-2026-10-23.json (11 entries, all 2xx/3xx)"]},{"text":"Burner wallet held 0 ETH / 0 USDC on Base mainnet at bid time — the flow is gas-free.","evidence":["eth_getBalance + ERC-20 balanceOf via mainnet.base.org","screenshots/balance-check-2026-10-23.png"]}],"canonical":"https://agentbadge.xyz/blog/gec-interop-field-report","dates":{"published":"2026-10-23","modified":"2026-10-23"},"markdownUrl":"https://agentbadge.xyz/blog/gec-interop-field-report.md","jsonUrl":"https://agentbadge.xyz/blog/gec-interop-field-report.json","shortAnswer":"On 2026-10-23 we walked SaSame GEC's live provider path end-to-end from an independent environment: keyless open-demands projection, CIMD-based OAuth 2.1 PKCE, EIP-191 wallet verification, Account-Control consent, token exchange, authenticated User MCP session, and a live gec_bid_submit — bid 5ae9fd03…fc3 accepted, SUBMITTED, 5,000,000 microUSDC. One ~600-line script, no SDK, $0 gas. Eight friction points, all recoverable, documented with fixes.","technologies":["MCP","OAuth 2.1","PKCE S256","EIP-191","JSON-RPC","Bun","TypeScript","viem"],"entities":["gec-user-mcp","gec-public-mcp","outcome-demand","machine-entry","cimd"]}