Agent skills
Teach your agent to use AgentPay in one paste. A skill for Claude Code and friends, an AGENTS.md for Codex and Cursor, and tool schemas for the Claude, OpenAI and Gemini APIs.
Install the skill
The skill, the AGENTS.md, the MCP config, the tool files, the API reference and the Postman collection live in one public repository.
npx skills add Kato-Official/agentpay-skillsThat installs SKILL.md where Claude Code, Codex, Cursor, Gemini CLI and other agents load it by themselves. github.com/Kato-Official/agentpay-skills
Or paste a file
The console ships the same files under Developer, Agent skills.
| File | For |
|---|---|
SKILL.md | Claude Code. Save as .claude/skills/agentpay/SKILL.md. |
AGENTS.md | Codex, Cursor and most agents. Drop it next to your agent's code. |
agentpay_anthropic_tools.json | Tool-use schema for the Claude API. |
agentpay_openai_tools.json | Function-calling schema for the OpenAI API. |
agentpay_google_tools.json | Function declarations for the Gemini API. |
agentpay_langchain_tools.py | LangChain and CrewAI tools. |
agentpay_mcp_config.json | The MCP server config. |
Every file exposes the same six tools: complete_purchase, get_checkout_status, issue_card, get_spend_status, get_wallet, create_topup_link. All point at https://api.joomjoo.com with Authorization: Bearer $AGENTPAY_API_KEY.
What the skill teaches
- Prefer
complete_purchase. Only issue a card when the agent truly must type it. - Never spend above the cap. One card per purchase; a single-use card locks after its first charge.
- Pay only with the AgentPay card, never a card saved on the merchant account. Confirm the last four digits.
- 3DS is AgentPay's job. Never ask the person for a one-time code.
- Send an
idempotency_keyon every checkout and retry with the same one. - Never put the API key, a card number or a security code in a log, a message, a file or a prompt.
- Pass error messages on as they are; they are written for the person.
Wire the tools yourself
If you build the tool loop by hand, each tool is one HTTP call. The schema file gives the parameters; the API reference gives the response.
import Anthropic from "@anthropic-ai/sdk";
import tools from "./agentpay_anthropic_tools.json" with { type: "json" };
const client = new Anthropic();
const msg = await client.messages.create({
model: "claude-sonnet-5-5",
max_tokens: 1024,
tools,
messages: [{ role: "user", content: "Buy the domain example.click for one year, up to 20 dollars." }],
});
// dispatch msg.content tool_use blocks to the matching AgentPay endpointimport json, anthropic
tools = json.load(open("agentpay_anthropic_tools.json"))
client = anthropic.Anthropic()
msg = client.messages.create(
model="claude-sonnet-5-5",
max_tokens=1024,
tools=tools,
messages=[{"role": "user", "content": "Buy the domain example.click for one year, up to 20 dollars."}],
)