Pink Agentic AI Payments
Thanh toán cho các tác nhân AI qua MCP: ngân sách và quy tắc theo từng tác nhân (cho phép, hỏi con người, chặn) được kiểm tra phía máy chủ trước khi thực hiện thanh toán. Sandbox miễn phí với tiền thử nghiệm.
Máy chủ MCP được lưu trữ
npx add-mcp 'https://agentic-sandbox.pinkwallet.com/mcp'Cài vào Claude Code, Codex, Cursor và nhiều công cụ khác
Tài liệu
Sign Up
Login
Last updated: 2026-10-12
At a glance
| MCP endpoint | https://agentic-sandbox.pinkwallet.com/mcp (Streamable HTTP), or run it as a local stdio server with npx -y pink-agentic-payments-mcp (env PINK_AGENT_API_KEY) |
|---|---|
| Auth | OAuth 2.1 (discovery, dynamic client registration, PKCE) for clients like Claude.ai custom connectors, or a simple Authorization: Bearer <agent_key> header / key-in-path |
| REST base | https://agentic-sandbox.pinkwallet.com/v1 |
| Tools | 7 MCP tools: pink.get_budget, pink.list_payees, pink.list_rules, pink.check_policy, pink.request_payment, pink.get_credential, pink.report_receipt |
| Cost | Free. Sandbox workspaces use test credentials only, no money moves |
| Status | Public sandbox live now; production access through early access |
5-minute quickstart
1. Create a sandbox workspace
Pick a template (coffee, startup, or ecommerce) and create a workspace. Tested against the live sandbox on 2026-10-05:
curl -s -X POST "https://agentic-sandbox.pinkwallet.com/v1/sandbox/workspaces" \
-H 'content-type: application/json' \
-d '{"template":"coffee","company":"My company"}'
The response returns an admin_key and a list of agents, each with its own key, monthly budget and per-payment cap. Save one agent's key: the examples below call it $AGENT_KEY.
2. Connect your client
Option A: Claude Desktop, Claude Code, or Cursor, with the agent key as a Bearer header:
claude mcp add --transport http pink \
"https://agentic-sandbox.pinkwallet.com/mcp" \
--header "Authorization: Bearer $AGENT_KEY"
Option B: a Claude.ai custom connector over OAuth 2.1, with no key pasted into any config file. Add a custom connector with the URL https://agentic-sandbox.pinkwallet.com/mcp, then complete the consent screen (paste the workspace's admin_key there and pick which agent to connect as).
Option C: a local stdio bridge for clients that only speak stdio. npx -y pink-agentic-payments-mcp forwards every call to the same remote MCP server over PINK_AGENT_API_KEY; see the package's README for ready-to-paste Claude Desktop, Cursor and VS Code configs.
3. Check the policy, then request the payment
Dry-run first with pink.check_policy (nothing is spent or held), then call pink.request_payment for real. Time-of-day rules run on the server clock in the workspace's timezone; the local_hour argument simulates an hour for dry runs only (pink.check_policy), and a real pink.request_payment call ignores it.
curl -s -X POST "https://agentic-sandbox.pinkwallet.com/mcp" \
-H 'content-type: application/json' -H 'accept: application/json, text/event-stream' \
-H "Authorization: Bearer $AGENT_KEY" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"pink.request_payment","arguments":{"payee_id":"p_cc","amount":420,"purpose":"20 kg espresso beans","idempotency_key":"quickstart-1"}}}'
What comes back, by decision:
- Allowed: a single-use credential locked to the payee and amount, valid 15 minutes, returned immediately. Confirmed live: a $420 coffee-bean order under an agent's $500 cap came back
"decision": "allowed"with a bank-transfer credential attached. - Pending human approval: a
hold_idand the approver's name; pollpink.get_credentialuntil it resolves. Confirmed live: an $890 order above the same cap came back"decision": "pending_human", needing the store manager. - Blocked: no credential, with the rule that matched. Confirmed live: a crypto-exchange payee came back
"decision": "blocked"on the "Never: gift cards, cash-like, crypto" rule.
From here, the deeper guides: full quickstart walkthrough, connect via MCP (all supported clients), connect via REST, policy rules reference, and the security model. Runnable framework examples (LangGraph, OpenAI Agents SDK, Haystack) are in github.com/Pink-Agentic-Payments/sandbox-examples.
[
For agents already running on an MCP-capable client or framework — Claude, Cursor, VS Code, the OpenAI Agents SDK, LangChain — connect directly with no custom HTTP client to write.
| Tool | What it does |
|---|---|
pink.get_budget | Check the calling agent's remaining monthly budget and per-payment cap |
pink.list_payees | List the payees this agent is allowed to pay |
pink.list_rules | List the policy rules that apply to this agent |
pink.check_policy | Dry-run a payment against the rules without submitting it |
pink.request_payment | Request a payment; the rules decide ALLOW, ASK A PERSON, or BLOCK |
pink.get_credential | Retrieve the single-use card or bank-transfer credential once approved |
pink.report_receipt | File the receipt for a completed payment |
](https://pinkwallet.com/agentic/developers/connect-via-mcp)[
For any language or agent framework without native MCP support, call the REST API directly.
| Method | Endpoint | What it does |
|---|---|---|
POST | /v1/payments/check | Dry run: would-allow / would-ask / would-block with the full rule trace |
POST | /v1/payments | Request a payment |
GET | /v1/payments/{id} | Poll a pending payment; returns the credential once approved |
POST | /v1/payments/{id}/receipt | File the receipt for a completed payment |
](https://pinkwallet.com/agentic/developers/connect-via-rest)
Python client
Pink Agentic AI Payments has an official Python client, pink-agentic-payments, that wraps the sandbox REST API: policy checks, payment requests, approvals and receipts.
pip install pink-agentic-payments
from pink_agentic_payments import create_sandbox_workspace, PinkClient
workspace = create_sandbox_workspace(company="My Test Co", template="coffee")
agent_key = workspace["agents"][0]["key"]
client = PinkClient(agent_key)
check = client.check_policy(amount=420, payee_id="p_cc", purpose="beans")
print(check["decision"], "-", check["reason"])
github.com/Pink-Agentic-Payments/pink-agentic-payments-python (also on PyPI: pip install pink-agentic-payments).
Pink JS/TS client
Pink Agentic AI Payments also has an official JavaScript/TypeScript client, pink-agentic-payments-js, that wraps the sandbox REST API: policy checks, payment requests, approvals and receipts.
npm install pink-agentic-payments
import { createSandboxWorkspace, PinkClient } from 'pink-agentic-payments';
const workspace = await createSandboxWorkspace({ company: 'My Test Co', template: 'coffee' });
const agentKey = workspace.agents[0].key;
const client = new PinkClient(agentKey);
const check = await client.checkPolicy({ amount: 420, payeeId: 'p_cc', purpose: 'beans' });
console.log(check.decision, '-', check.reason);
github.com/Pink-Agentic-Payments/pink-agentic-payments-js (on npm: npm install pink-agentic-payments).
Install the packages
All MIT, maintained at github.com/Pink-Agentic-Payments. Everything here talks to the sandbox; test money only.
| JS/TS client | npm install pink-agentic-payments — live on npm. pink-agentic-payments-js |
|---|---|
| Python client | pip install pink-agentic-payments. pink-agentic-payments-python |
| LangChain | pip install langchain-pink — 4 tools (pink_request_payment, pink_check_policy, pink_get_budget, pink_check_payment_status) + PinkToolkit. langchain-pink, or the connect guide |
| n8n | npm install n8n-nodes-pink — live on npm (0.1.0), or install from the n8n UI: Settings → Community Nodes → Install → n8n-nodes-pink. n8n-nodes-pink, or the connect guide |
| MCP (local stdio) | npx -y pink-agentic-payments-mcp with env PINK_AGENT_API_KEY — bridges any stdio MCP client to the remote server above. pink-agentic-payments-mcp |
| Vercel AI SDK | npm install pink-agentic-payments-ai-sdk ai zod — pinkTools({ agentKey }) returns 4 ai tools. pink-agentic-payments-ai-sdk, or the connect guide |
Guides with screenshots, per client
Not a developer, or just want the menu names? The connection guides walk through each client step by step: Claude, ChatGPT, Claude Code, Gemini CLI, Cursor, Windsurf, VS Code, Copilot Studio, the OpenAI and Anthropic APIs, LangChain, CrewAI, n8n and the official SDKs.
Get started
- 5-minute quickstart — the fastest path from zero to a first test payment.
- Agent integration patterns
- Framework recipes — complete agent loops for the MCP TypeScript SDK, REST, Claude, the Anthropic and OpenAI APIs, OpenAI Agents SDK, LangChain, CrewAI and the IDE clients.
- MCP tools reference — all seven tools with input schemas and real sandbox responses.
- Policy rules reference — the rule object, evaluation order, payee scopes, windows, approver quorums, evidence conditions.
- Security model — what a wrong, compromised or over-eager agent can and cannot do. — how to wire budget checks, approvals, and receipts into an agent's own loop.
Sandbox status
Sandbox live: test credentials only, no money moves.Create a free sandbox workspace — no signup form needed. Production is not yet available.
Design partners wanted
We're looking for 3 design partners to run Pink Agentic AI Payments on a real use case before general availability: teams whose agents buy API credits, ads, cloud or travel, or that run many small automated payments to suppliers. You get hands-on setup of your rules with our team and early access. Free during the design-partner period.
Prefer email? [email protected], subject "Pink design partner".
FAQ
Should I connect via MCP or REST?
Use MCP if your agent already runs on an MCP-capable client or framework (Claude, Cursor, VS Code, the OpenAI Agents SDK, LangChain) — you get 7 tools (get_budget, list_payees, list_rules, check_policy, request_payment, get_credential, report_receipt) with no custom HTTP client to write. Use REST if your agent framework doesn't speak MCP, or you want direct control over the HTTP calls; both paths run against the same policy engine and sandbox workspace.
How do I test a payment before actually requesting one?
Call POST /v1/payments/check (REST) or pink.check_policy (MCP) first — it's a dry run that returns would_allow, would_ask, or would_block along with the full rule trace, without creating a real payment request.
What does a payment request actually return?
POST /v1/payments returns one of three states: 201 if the rules allow it immediately, 202 if it's pending human approval, or 403 if it's blocked. For a pending request, you poll GET /v1/payments/{id} until it resolves, which returns the credential once approved. Sending an Idempotency-Key header makes retries of the same request safe.
Is the sandbox connected to real money?
No. The sandbox is live: create a free sandbox workspace at https://agentic-sandbox.pinkwallet.com/ (test credentials only, no money moves). Production is not yet available.