Skip to main content
Glama

AgentGate

Stripe + Auth0 for AI Agents — The machine-readable infrastructure and programmable payment layer for autonomous AI agents.

License: MIT Protocol: MCP 2024-11-05 Auth: OAuth 2.1 Payments: Stripe Issuing


What is AgentGate?

AgentGate solves the three structural barriers blocking autonomous AI agents from operating on the real web:

Barrier

Solution

🧭 Navigation — HTML built for humans

DOM-to-MCP Synthesizer (Playwright)

šŸ” Identity — Raw keys in prompts

OAuth 2.1 PKCE + MCP-I scoped tokens

šŸ’³ Payment — No physical card

Stripe Issuing single-use virtual cards


Project Structure

agent gate/
ā”œā”€ā”€ apps/
│   ā”œā”€ā”€ landing/          # Marketing landing page (HTML/CSS/JS)
│   └── dashboard/        # Developer dashboard (Next.js 14)
ā”œā”€ā”€ packages/
│   ā”œā”€ā”€ api/              # Core Proxy API (Fastify/TypeScript)
│   └── mcp-server/       # @agentgate/mcp-server npm package
ā”œā”€ā”€ sdk/
│   └── antigravity/      # Google Antigravity 2.0 integration
│       ā”œā”€ā”€ skills/agentgate/SKILL.md
│       └── main.py
└── docs/
    └── business-plan.md

Quick Start

1. Clone & Install

git clone https://github.com/your-org/agentgate
cd agentgate

# Install API dependencies
cd packages/api && npm install

# Install MCP server dependencies
cd ../mcp-server && npm install

2. Configure Environment

# packages/api/.env
STRIPE_SECRET_KEY=sk_test_...
STRIPE_ISSUING_WEBHOOK_SECRET=whsec_...
JWT_SECRET=your-super-secret-key-min-32-chars
PORT=4000
NODE_ENV=development

3. Start the API

cd packages/api
npm run dev
# → AgentGate API running on http://localhost:4000

4. Test the health endpoint

curl http://localhost:4000/health
# → { "status": "ok", "service": "agentgate-api", "version": "1.0.0" }

Core API Reference

OAuth 2.1 — Issue Agent Token

curl -X POST http://localhost:4000/oauth/token \
  -H "Content-Type: application/json" \
  -d '{
    "grant_type":  "client_credentials",
    "client_id":   "my-agent-app",
    "client_secret": "my-secret",
    "scope": "mcp:read mcp:execute payment:issue"
  }'

Response:

{
  "access_token": "eyJhbGciOiJFUzI1NiIsInR5cCI6IkpXVCJ9...",
  "token_type":   "Bearer",
  "expires_in":   3600,
  "scope":        "mcp:read mcp:execute payment:issue",
  "agent_id":     "agent_a1b2c3d4..."
}

MCP Tool Discovery

curl -X POST http://localhost:4000/mcp/discover \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  -d '{ "url": "https://shop.example.com" }'

Response:

{
  "session_id": "sess_...",
  "title":      "Example Shop",
  "tools": [
    {
      "name":        "search_content",
      "description": "Search the page for products...",
      "inputSchema": { "type": "object", "properties": { "query": { "type": "string" } }, "required": ["query"] }
    },
    {
      "name":        "add_to_cart",
      "description": "Add the currently viewed product to the shopping cart.",
      "inputSchema": { "type": "object", "properties": { "quantity": { "type": "number" } }, "required": [] }
    },
    {
      "name":        "fill_checkout",
      "description": "Fill in the checkout form...",
      "inputSchema": { "type": "object", "properties": { "email": {...}, "card_number": {...} } }
    }
  ],
  "latency_ms": 847
}

MCP Tool Execution (JSON-RPC 2.0)

curl -X POST http://localhost:4000/mcp/execute \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  -d '{
    "jsonrpc": "2.0",
    "id": "1",
    "method": "tools/call",
    "params": {
      "name": "search_content",
      "arguments": { "query": "wireless keyboard" },
      "context": { "target_url": "https://shop.example.com" }
    }
  }'

Issue Virtual Card

curl -X POST http://localhost:4000/payments/issue-card \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  -d '{
    "merchant_domain":    "shop.example.com",
    "amount_limit_cents": 8000,
    "currency":           "usd"
  }'

Google Antigravity Integration

from google.antigravity import Agent, LocalAgentConfig
from google.antigravity.types import McpStdioServer

config = LocalAgentConfig(
    system_instructions="You are an autonomous buyer agent.",
    mcp_servers=[
        McpStdioServer(
            name="agentgate_mcp_proxy",
            command="npx",
            args=["-y", "@agentgate/mcp-server"],
            env={"AGENTGATE_API_KEY": "ag_live_..."}
        )
    ]
)

async with Agent(config) as agent:
    response = await agent.chat(
        "Go to developer-tool-x.com, purchase the Starter plan for $29, return the confirmation ID."
    )
    print(await response.text())

See sdk/antigravity/main.py for the full runtime example.


Stripe Issuing Webhook

Configure your Stripe dashboard webhook to send issuing_authorization.request events to:

https://your-domain.com/webhooks/stripe-issuing

Test locally with Stripe CLI:

stripe listen --forward-to localhost:4000/webhooks/stripe-issuing

Architecture

AI Agent (Antigravity/LangChain/Claude)
    │
    │ OAuth 2.1 PKCE token request
    ā–¼
AgentGate Proxy API (Fastify/TypeScript)
    │
    ā”œā”€ā”€ Layer 1: Identity & Auth Middleware (OAuth 2.1 / MCP-I)
    ā”œā”€ā”€ Layer 2: DOM-to-MCP Synthesizer (Playwright/Chromium)
    └── Layer 3: Payment Engine (Stripe Issuing)
                    │
                    ā–¼
           Target Web Application
           (E-commerce / SaaS / Legacy HTML)

Pricing

Plan

Price

MCP Calls

Virtual Cards

Starter

Free

1,000/mo

10/mo

Pro

$299/mo

100,000/mo

Unlimited

Enterprise

$999/mo

Unlimited

Unlimited

All plans: 1.2% + $0.15 per programmatic transaction.


License

MIT Ā© 2026 AgentGate, Inc.