
Company News
AWS Security Hub Adds Socket for Supply Chain Security
Socket is now in the AWS Security Hub Extended plan. Adopt it through AWS, apply committed spend, and block malicious open source packages.
@agentkitai/agentgate-ucp
Advanced tools
The approval gate for unattended UCP buying agents — a policy/approval MCP proxy in front of a merchant's UCP checkout endpoint.
The approval gate for unattended UCP buying agents.

▶ Play the interactive walkthrough · read the launch post
A thin MCP server ("the gate") that a buying agent connects to instead of a merchant's UCP checkout endpoint. It re-exposes the UCP checkout tools 1:1 and passes everything through — except it runs a policy / approval / evidence layer before money moves.
UCP's escalation model assumes a human is present at the surface. For unattended agents — scheduled replenishment, procurement, background jobs — nobody is watching. This is the missing approval layer, plus a tamper-evident record of every gated purchase.
The agent still speaks plain UCP. It never learns there's a gate in front of the merchant; it just sometimes gets an escalation back (with a link a human resolves) instead of a completed order.
npx @agentkitai/agentgate-ucp # run the gate (or: npm i -g @agentkitai/agentgate-ucp)
Configure via environment (see .env.example) — required:
MCP_AUTH_TOKEN (the bearer token agents present on /mcp), MERCHANT_URL,
AGENTGATE_URL, AGENTGATE_API_KEY, and AGENTGATE_WEBHOOK_SECRET (the decision
webhook moves money, so it must be signed). FormBridge and AgentLens are optional
(unset each and that seam passes through). Then point your agent's MCP client at
$PUBLIC_URL/mcp (default http://localhost:8787/mcp) with
Authorization: Bearer $MCP_AUTH_TOKEN.
The five checkout tools (create / get / update / complete / cancel_checkout)
pass straight through to the merchant. Three seams add control:
① Spend policy — on complete_checkout, the gate fetches the merchant's
authoritative totals (never the agent-supplied amount), evaluates them
against AgentGate spend policy, and
either forwards, denies, or parks the completion. A parked purchase waits
for a human's approval (Slack / dashboard) and is replayed out-of-band — with
the original idempotency key — the moment they approve.
② Merchant escalations — when the merchant itself answers a completion with
a requires_escalation (an inventory hold, a fraud review), the gate surfaces
it faithfully to the agent — never misreporting a held order as placed.
③ Buyer-input form handoff — when the merchant needs a field only a human
can supply (requires_buyer_input), the gate resolves the real UCP field
schema at that JSONPath, builds a typed FormBridge
form, and hands back a resume link. The human fills it; the gate writes the
answer back to its exact path, update_checkouts, and re-drives completion
through the spend gate again.
The gate self-emits a hash-chained timeline of each purchase into
AgentLens, keyed one session per
checkout (received → decision → parked → approved/replayed → placed).
GET /api/audit/verify?sessionId=ucp_<checkout>
proves the chain is intact (verified:true, brokenChains:[]).agentlens.evidence-pack/v1 keyed on
a server-derived verified_agent_id — dispute-grade proof that this agent
made this purchase, checkable without the database.Buying agent ──MCP──▶ agentgate-ucp ──REST──▶ Merchant UCP checkout
│ ▲ │
spend policy │ │ └───emit───▶ AgentLens (hash-chained evidence)
▼ │
AgentGate ──▶ Slack / dashboard (human approves)
│
decision webhook (HMAC) ──▶ gate replays the parked completion
requires_buyer_input ──▶ FormBridge (typed form) ──▶ human ──▶ answer-back
webhook (HMAC) ──▶ gate writes answer, re-drives complete
demo/run-demo.sh stands up all five services locally and drives four scenarios
end to end, capturing a transcript:
| Scenario | Proves | |
|---|---|---|
| A | over-spend | parked → human approves in AgentGate → decision webhook → replayed → completed |
| B | under-spend | auto-approved, completes immediately |
| C | merchant hold | a merchant requires_escalation surfaced faithfully (no order placed) |
| D | buyer-input | typed FormBridge form → human fills → answer-back → re-drive → completed, with a verified AgentLens chain |
bash demo/run-demo.sh # merchant :3100, agentgate :4000, formbridge :8091, gate :8787
See demo/README.md for the topology and the recorded
demo/transcript.txt.
/mcp requires a bearer MCP_AUTH_TOKEN — an
unauthenticated request never reaches the merchant. The gate refuses to start
without the token.update_checkout can't slip a pricier cart past the
gate), and a buyer's form answer that changes the total is re-gated on the re-drive.__proto__/constructor/prototype and wildcard/filter/negative-index
paths are rejected (no prototype pollution, no fan-out).Hardened by two independent adversarial reviews (a multi-lens workflow + Codex gpt-5.5) — 30+ findings fixed before release, each with a regression test.
npm install
cp .env.example .env # MCP_AUTH_TOKEN / MERCHANT_URL / AGENTGATE_URL / AGENTGATE_API_KEY / AGENTGATE_WEBHOOK_SECRET required
npm run dev # gate on :8787, MCP at /mcp
npm run typecheck
npm test # 151 tests
npm run build && node dist/index.js
Local topology: merchant :3100, AgentGate :4000, FormBridge :8091,
AgentLens :3000, gate :8787. Every integration (AgentGate aside) is optional
— unset its URL and that seam passes through untouched.
Gate points 1–3 + evidence complete and demo-verified end to end. Targets the
merged UCP checkout surface (requires_escalation + messages[] + continue_url);
tracking the in-flight Actions primitive (UCP #553).
MIT.
FAQs
The approval gate for unattended UCP buying agents — a policy/approval MCP proxy in front of a merchant's UCP checkout endpoint.
We found that @agentkitai/agentgate-ucp demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Company News
Socket is now in the AWS Security Hub Extended plan. Adopt it through AWS, apply committed spend, and block malicious open source packages.

Research
/Security News
Popular npm packages keyv and cacheable compromised.

Security News
A misconfiguration gave three Anthropic models internet access, and one, believing it was in a simulation, shipped a credential-stealing package to PyPI.