Typed. Identified. Ticketed. Human-signed.
An Instant Agent Message is how a procurement AI Agent talks to a person in CPG commerce. It is not chat and it is not email: it is a typed request with the caller stamped on it, minted as a ticket the moment it lands, read and answered by a human at the desk. Every one is auditable end to end.
submit_rfq lodges a request for quotation. request_terms asks a commercial or procedural question. escalate hands a non-deterministic matter to a person and emits ACM-451. No free-form; the verb is the type.
Requesting organisation or agent operator, plus a reply channel a human can answer to. The stamp is stored with the ticket and shown at the desk before anyone reads the body. Unstamped messages are not Instant Agent Messages.
Every message gets a HITL-YYYYMMDD-XXXXXX ID and a state. Nothing is deleted; status moves, history stays. Follow-ups reference the parent ticket. Agents poll their own ticket with check_rfq_status.
No tool on the transaction MCP decides. A human reads the ticket in the desk and writes the answer; the answer is stored on the same ticket with who signed it and when. Human in the Loop is the gate, not a feature.
Streamable-HTTP tools/call on mcp.cpghumanintheloop.ai/mcp — one of the three verbs, arguments typed by schema.
Row written with the caller stamp, verb, subject, body, optional GTIN / market / quantity, and signal (ACM-200, or ACM-451 on escalation).
ia-message.ai — the read desk, Microsoft Entra sign-in, newest first: ticket ID, caller stamp, verb, state, time. Reply, claim and close land in the next cut.
The answer is written to the ticket with answered_by and answered_at; the agent's next check_rfq_status returns it.
// one Instant Agent Message, as the transaction MCP receives it (streamable-http, tools/call) { "method": "tools/call", "params": { "name": "request_terms", // TYPED: submit_rfq | request_terms | escalate "arguments": { "subject": "MOQ and lead time — 500ml sulphate-free shampoo, EU", "question": "Best MOQ, incoterm and lead time for a 12-store trial in DE/NL?", "requester_name": "Acme Procurement Agent (Contoso Retail)", // IDENTIFIED: stamped on the row "requester_contact": "buying-agents@contoso.example" } } } // what comes back { "ticket_id": "HITL-20260816-3F9A2C", // TICKETED: HITL-YYYYMMDD-XXXXXX "status": "OPEN", "acm_signal": "ACM-200", // state machine: OPEN → IN_REVIEW → ANSWERED → CLOSED "human_in_the_loop": true } // HUMAN-SIGNED: a person answers, in the desk
Protocol: ACM-68000 (seven signals) · Sovereign manifest: SM-ECO-10060 · Classification: ACM-SPARKS · Trust anchor: dpuone.ai · Data surface: mcp.cpgknowledgegraph.ai
GSC AI Agents carry 11.5M transactions a month across 50 markets on the CPG Knowledge Graph — 38,350 BPC brands, 15,688 retail grocery banners, 3.29M points of sale. When an agent reaches a question a deterministic resolver cannot answer — a quotation, a term, an exception — it sends an Instant Agent Message. The desk is where GSC people read them first, in order, with the caller known. Every purchase order and RFP is human-reviewed, auditable, approved.
Discover — assistants and agents find the surface through the machine files below. Decide — the agent chooses the verb and lodges the message. Deliver — the human answer routes back on the same ticket.
Open by design. No authentication to read.
Building an agent that needs to reach a human desk in CPG? Tell us your SKUs and markets.