
Company News
Free Business Plan Upgrades for Open Source Maintainers
Open source maintainers are under more pressure than ever. We're raising our open source program from the Team plan to the Business plan, free.
@payclaw/badge
Advanced tools
Prove your agent is an authorized actor, not a bot. MCP-native identity declaration for agent commerce.
Agents are not bots. Prove it.
Your AI agent looks like a bot to every merchant on the internet. Badge gives it a way to declare what it is: an authorized actor, shopping on behalf of a real human, with explicit consent.
One MCP tool call. Your agent declares itself. Merchants let it through.
Add to your MCP client config:
{
"mcpServers": {
"payclaw-badge": {
"command": "npx",
"args": ["-y", "@payclaw/badge"],
"env": {
"PAYCLAW_API_URL": "https://payclaw.io"
}
}
}
}
No API key required. On first use, your agent will show a code and URL — approve on your phone in one tap, and your Consent Key is stored. Optional: set PAYCLAW_API_KEY for existing accounts (backward compatible).
Badge requires Node.js 20 or newer. Node 18 is end-of-life and unsupported.
If you see engine or compatibility errors: node -v — install Node 20+ from nodejs.org or nvm install 20.
Badge is a UCP (Universal Commerce Protocol) Credential Provider. Merchants who declare the PayClaw identity extension signal to every UCP-compliant agent that authorized agents are preferred at their store.
When your agent encounters a UCP merchant with PayClaw installed, it presents a cryptographic badge automatically — no extra steps.
Your agent is smart. It can browse, compare prices, build carts, find deals. But to every merchant on the internet, it looks identical to a scraper.
Merchants don't ask "is this agent helpful?" They ask "is this a bot?" And they block first, ask never.
Without Badge: Your agent hits a merchant → bot detection fires → blocked. Task fails. Your user is disappointed. The merchant lost a sale and doesn't know it.
With Badge: Your agent calls payclaw_getAgentIdentity → receives a verification token → presents it to the merchant. The merchant sees: authorized actor, verified human behind it, declared intent. Your agent gets through. Task succeeds.
Every time your agent calls payclaw_getAgentIdentity, it receives a UCP-compatible credential that declares:
starter / regular / veteran / elite based on verified trip historyagent_identity@payclaw.io for merchant verificationThe agent presents this disclosure to merchants. Merchants see a verified identity, not anonymous traffic.
1. Your agent calls payclaw_getAgentIdentity
2. No key? Device auth flow triggers — code + URL appear in terminal
3. You approve on your phone (Google or Apple, one tap)
4. Consent Key stored — agent is authorized
5. Every subsequent call uses the stored key automatically
1. Agent calls payclaw_getAgentIdentity({ merchantUrl: 'https://store.com' })
2. PayClaw fetches store.com/.well-known/ucp manifest
3. If merchant declares io.payclaw.common.identity → returns checkoutPatch
4. Agent merges checkoutPatch into checkout payload
5. Agent calls payclaw_reportBadgePresented({ merchantUrl, verification_token })
6. Merchant calls verify(token) → gets PayClawIdentity
If the merchant doesn't support UCP, a valid token is still returned — nothing breaks. No card is issued. No money moves. Badge is the identity layer — the credential that lets authorized agents through while bot defenses stay intact.
When enabled, PayClaw checks back with your agent 7 seconds after badge presentation to confirm whether the merchant accepted or denied. Results are logged to your dashboard.
"env": {
"PAYCLAW_API_URL": "https://payclaw.io",
"PAYCLAW_EXTENDED_AUTH": "true"
}
Without it, your agent reports outcomes via payclaw_reportBadgeOutcome when it knows the result.
| Tool | Description |
|---|---|
payclaw_getAgentIdentity | Declare identity, get UCP-compatible verification token |
payclaw_reportBadgePresented | Signal that you presented your Badge to a merchant |
payclaw_reportBadgeOutcome | Report whether merchant accepted or denied the badge |
payclaw_reportBadgeNotPresented | Report that the badge was not presented |
Badge is the package merchants install for local JWT verification — no API call to PayClaw, no uptime dependency.
npm install @payclaw/badge
import { verify } from '@payclaw/badge/verify'
const identity = await verify(req.body['io.payclaw.common.identity']?.token)
if (identity) {
// Verified — identity.userId, identity.agentId, identity.scopes, etc.
// Apply tier pricing, skip CAPTCHAs, fast-track checkout
}
// null = no badge or invalid — proceed as guest
verify() fetches PayClaw's JWKS once, caches for 1 hour, and verifies the ES256 signature locally via Web Crypto API. Zero runtime dependencies. Works in Node.js 18+ and Cloudflare Workers. Never throws — returns null on any error.
Full verification docs + Python example: github.com/payclaw/ucp-agent-badge
| Capability | Description |
|---|---|
verify() export | Merchant-side JWT verification — import { verify } from '@payclaw/badge/verify'. Zero dependencies, Web Crypto only. |
UCP-aware getAgentIdentity | Pass merchantUrl — fetches merchant manifest, returns checkoutPatch when io.payclaw.common.identity is declared |
reportBadgePresented with merchantUrl | Preferred over merchant; includes optional checkoutSessionId for UCP session tracking |
| SSRF-protected manifest fetcher | HTTPS-only, private IP blocking, 5-minute domain cache |
| Trip lifecycle hardening | onServerClose resolves as inconclusive; orphan token recovery on restart |
Badge is the base layer. For virtual Visa cards, use @payclaw/mcp-server — which includes Badge automatically.
npx -y @payclaw/mcp-server
PayClaw is KYA infrastructure. Every declaration creates a verified record of agentic commerce behavior — building the trust signal that merchants need to tell authorized agents from anonymous bots.
io.payclaw.common.identity (MIT)Agents are not bots. PayClaw proves it.
FAQs
Prove your agent is an authorized actor, not a bot. MCP-native identity declaration for agent commerce.
The npm package @payclaw/badge receives a total of 30 weekly downloads. As such, @payclaw/badge popularity was classified as not popular.
We found that @payclaw/badge 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
Open source maintainers are under more pressure than ever. We're raising our open source program from the Team plan to the Business plan, free.

Security News
The supply chain control that delays freshly published gems now covers lockfile generation and gem vendoring in Ruby projects.

Security News
During a UK cyber test, a Mythos 5 agent used sockpuppets, social engineering, and prompt injection to try to get a maintainer to merge malware.