Skip to main content
Glama

PyPI version License: MIT CI Python 3.10+

Point One Percent — pop-pay

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.

Install

Choose your preferred method:

pipx install "pop-pay[mcp]"
pip install "pop-pay[mcp]"
uv tool install "pop-pay[mcp]"
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

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"
      }
    }
  }
}
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

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

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.

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

A
license - permissive license
-
quality - not tested
B
maintenance

Maintenance

Maintainers
Response time
2wRelease cycle
2Releases (12mo)

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/100xPercent/pop-pay-python'

If you have feedback or need assistance with the MCP directory API, please join our Discord server