pop-pay

pop-pay

Project Point One Percent - Agent Pay \[pop-pay] is a payment guardrail and one-time flow protocol specifically designed for Agentic AI (e.g., Claude Code, OpenClaw). It enables agents to handle financial transactions safely without risking unlimited exposure of human-controlled credit cards.

Category
Visit Server

README

PyPI version License: MIT CI Python 3.10+

<p align="center"> <picture> <img src="https://raw.githubusercontent.com/100xPercent/pop-pay-python/main/project_banner.png" alt="Point One Percent (AgentPay)" width="800"> </picture> </p>

Point One Percent — pop-pay

<p align="left"><i>it only takes <b>0.1%</b> of Hallucination to drain <b>100%</b> of your wallet.</i></p>

The runtime security layer for AI agent commerce. Drop-in CLI + MCP server. Card credentials are injected directly into the browser DOM via CDP — they never enter the agent's context window. One hallucinated prompt can't drain a wallet it can't see.

<p align="center"> <img src="https://raw.githubusercontent.com/100xPercent/pop-pay-python/main/assets/runtime_demo.gif" alt="Point One Percent — live CDP injection demo" width="800"> </p>

Install

Choose your preferred method:

<details> <summary>pipx — isolated global CLI</summary>

pipx install "pop-pay[mcp]"

</details>

<details> <summary>pip</summary>

pip install "pop-pay[mcp]"

</details>

<details> <summary>uv (isolated tool install)</summary>

uv tool install "pop-pay[mcp]"

</details>

<details> <summary>Extras matrix — feature flags</summary>

pip install "pop-pay"                  # core (keyword guardrail + mock provider)
pip install "pop-pay[mcp,browser]"     # CDP injection (browser automation)
pip install "pop-pay[mcp,llm]"         # LLM guardrails (OpenAI, Ollama, vLLM, OpenRouter)
pip install "pop-pay[stripe]"          # Stripe virtual card issuing
pip install "pop-pay[langchain]"       # LangChain integration
pip install "pop-pay[all]"             # everything

</details>

All install paths expose the CLI binaries: pop-launch, pop-init-vault, pop-unlock, and pop-pay (dashboard launcher).

Using Node.js / JavaScript? Check out pop-pay (npm)npm i -g pop-pay or brew install 100xpercent/tap/pop-pay. Same security model, same vault format, independent release cycle — safe to switch between runtimes.

Quick Start (CLI)

1. Initialize the encrypted credential vault

pop-init-vault

This encrypts your card credentials into ~/.config/pop-pay/vault.enc (AES-256-GCM). For stronger protection (blocks agents with shell access):

pop-init-vault --passphrase   # one-time setup
pop-unlock                     # run once per session

2. Launch Chrome with CDP remote debugging

pop-launch

Opens a Chromium instance on http://localhost:9222 that pop-pay injects credentials into. Your agent (via MCP, browser automation, or x402) then drives the checkout flow — card details never leave the browser process.

3. Open the monitoring dashboard (optional)

pop-pay

Real-time view of agent payment activity, budget utilization, and rejection logs.

4. Plug into your agent

Two supported integration paths:

  • MCP server — add pop-pay to any MCP-compatible client (Claude Code, OpenClaw). See MCP Server below.
  • Python SDK / LangChain — see Python SDK below.

MCP Server (optional)

The MCP server is invoked as a Python module and decrypts the vault at startup.

Add to your MCP client

{
  "mcpServers": {
    "pop-pay": {
      "command": "python3",
      "args": ["-m", "pop_pay.mcp_server"],
      "env": {
        "POP_CDP_URL": "http://localhost:9222"
      }
    }
  }
}

<details> <summary>Claude Code</summary>

claude mcp add pop-pay -- python3 -m pop_pay.mcp_server

With environment variables:

claude mcp add pop-pay \
  -e POP_CDP_URL=http://localhost:9222 \
  -e POP_ALLOWED_CATEGORIES='["aws","cloudflare"]' \
  -e POP_MAX_PER_TX=100.0 \
  -e POP_MAX_DAILY=500.0 \
  -e POP_GUARDRAIL_ENGINE=keyword \
  -- python3 -m pop_pay.mcp_server

</details>

<details> <summary>OpenClaw / NemoClaw</summary>

Compatible with any MCP host. See the Integration Guide for setup instructions and System Prompt templates.

</details>

<details> <summary>Docker</summary>

docker-compose up -d

Runs the MCP server + headless Chromium with CDP. Mount your encrypted vault from the host. See docker-compose.yml for configuration.

</details>

MCP Tools

Tool Description
request_virtual_card Issue a virtual card and inject credentials into the checkout page via CDP.
request_purchaser_info Auto-fill billing/contact info (name, address, email, phone).
request_x402_payment Pay for API calls via the x402 HTTP payment protocol.
page_snapshot Scan a checkout page for hidden prompt injections or anomalies.

Configuration

Core variables in ~/.config/pop-pay/.env. See ENV_REFERENCE.md for the full list.

Variable Default Description
POP_ALLOWED_CATEGORIES ["aws","cloudflare"] Approved vendor categories — see Categories Cookbook
POP_MAX_PER_TX 100.0 Max USD per transaction
POP_MAX_DAILY 500.0 Max USD per day
POP_BLOCK_LOOPS true Block hallucination/retry loops
POP_AUTO_INJECT true Enable CDP card injection
POP_GUARDRAIL_ENGINE keyword keyword (zero-cost) or llm (semantic)

Guardrail Mode

keyword (default) llm
Mechanism Keyword matching on reasoning string Semantic analysis via LLM
Cost Zero — no API calls One LLM call per request
Best for Development, low-risk workflows Production, high-value transactions

To enable LLM mode, see Integration Guide §1.

Providers

Provider Description
BYOC (default) Bring Your Own Card — encrypted vault credentials, local CDP injection.
Stripe Issuing Real virtual cards via Stripe API. Requires POP_STRIPE_KEY.
Lithic Multi-issuer adapter (Stripe Issuing / Lithic).
Mock Test mode with generated card numbers for development.

Priority: Stripe Issuing → BYOC Local → Mock.

Python SDK

Integrate pop-pay into custom Python or LangChain workflows:

from pop_pay.client import PopClient
from pop_pay.providers.stripe_mock import MockStripeProvider
from pop_pay.core.models import GuardrailPolicy

client = PopClient(
    provider=MockStripeProvider(),
    policy=GuardrailPolicy(
        allowed_categories=["API", "Cloud"],
        max_amount_per_tx=50.0,
        max_daily_budget=200.0,
    ),
)

# LangChain integration
from pop_pay.tools.langchain import PopPaymentTool
tool = PopPaymentTool(client=client, agent_id="agent-01")

See Integration Guide §2 for the full SDK and provider reference.

Security

Layer Defense
Context Isolation Card credentials never enter the agent's context window or logs
Encrypted Vault AES-256-GCM with PBKDF2 key derivation and OS keyring integration
TOCTOU Guard Domain verified at the moment of CDP injection — blocks redirect attacks
Repr Redaction Automatic masking (****-4242) in all MCP responses, logs, and tracebacks

See THREAT_MODEL.md for the full STRIDE analysis and COMPLIANCE_FAQ.md for enterprise details.

Architecture

  • Python — Core engine, MCP server, guardrail logic, CLI
  • Cython — Performance-critical vault operations and memory protection
  • Chrome DevTools Protocol — Direct DOM injection via raw WebSocket
  • SQLite — Local transaction auditing and state management

Documentation

License

MIT

Recommended Servers

playwright-mcp

playwright-mcp

A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.

Official
Featured
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.

Official
Featured
Local
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.

Official
Featured
Local
TypeScript
VeyraX MCP

VeyraX MCP

Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.

Official
Featured
Local
graphlit-mcp-server

graphlit-mcp-server

The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.

Official
Featured
TypeScript
Kagi MCP Server

Kagi MCP Server

An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.

Official
Featured
Python
E2B

E2B

Using MCP to run code via e2b.

Official
Featured
Neon Database

Neon Database

MCP server for interacting with Neon Management API and databases

Official
Featured
Exa Search

Exa Search

A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.

Official
Featured
Qdrant Server

Qdrant Server

This repository is an example of how to create a MCP server for Qdrant, a vector search engine.

Official
Featured