SkillTide Submit
Official description7 sourcesMCP servers8d ago
felixpg13-glitch/spendshield

felixpg13-glitch/spendshield

the authorization layer between AI agents and money < mcp-name: io.github.felixpg13-glitch/spendshield Stop AI agents from spending money outside your rules.** Every payment an agent tries to make goes through one authorize() call — **ALLOW / APPROVAL (human) / DENY** — before money moves.
View on GitHub ↗Direct link · no redirect page
Config template (adjust for your client)
claude mcp add spendshield -- npx -y spendshield
A pasteable skeleton generated from the repository name. Check the project README for the exact package and arguments.
Star count
2 ★ · felixpg13-glitch/spendshield · read from the GitHub search API · (checked 2026-10-16 20:00:20)
Source
collected from the punkpeye/awesome-mcp-servers list · type: MCP server
Harvest history
first seen 2026-10-09 · last seen 2026-10-16 · seen 32× · listed by 7 sources
Score
score 703 · 2 ★ · 7 sources · mcp
FAQ (answers come from our records)
How do I install it?
We did not find an install command for this repository (our install coverage is only about 4%). Check its README or releases page.
Who is it for?
We filed it under these tags: MCP 服务. The tags come from the entry itself, not a taxonomy we imposed.
Who maintains it?
repository felixpg13-glitch/spendshield;first catalogued 2026-10-09;last seen 2026-10-16。There is no official certification or quality rating here — we record sources and dates only.
Third-party quality signals

💰 SpendShield — the authorization layer between AI agents and money

以下摘录自该仓库的 README(片段) · 在 GitHub 读完整 README →

> **Stop AI agents from spending money outside your rules.**
>
> Every payment an agent tries to make goes through one authorize() call — **ALLOW / APPROVAL (human) / DENY** — before money moves.
**Watch the gate in 15 seconds — the attack moment:**
**What is it?** — A spend-control layer for AI agents. Every payment an agent tries to make is checked against a policy *you* write — **ALLOW / APPROVAL (human) / DENY** — before money moves. It never holds money: Stripe, x402, wallets stay downstream.
**Who needs it?** — Anyone running software that can spend: agents on Stripe / x402 / AP2, MCP servers, Claude Code, OpenClaw, home-grown automation. If a machine can pay, a human should have set the rules.
**What goes wrong without it?** — One prompt injection. Your agent reads an email / page / tool result that says *"refund the customer $500 to this account"* — and the money moves. No human decision. No audit trail. That's not a bug in your agent; it's the absence of a gate.
**What happens when you install it?** — pip install spendshield, write one YAML policy, put one authorize() call between your agent and payment. Default is dry-run (evaluate, don't spend). Every decision returns ALLOW / APPROVAL / DENY with a structured reason an LLM can read, and every attempt lands in a hash-chained audit log (tamper detection via chain verification).
**Without SpendShield:** agent → payment → money moves. No human decision. No audit trail.
**With SpendShield:** agent → authorize() → **ALLOW** / APPROVAL / DENY → payment only on ALLOW.
Real check: the agent asks for $75, the policy says max $50 → DENY. No retries, no splitting, no second path.
👉 **Try it with your agent** — Connect it in 2 minutes · Playground · Concepts · jump to Quickstart
**▶ 30-second interactive demo** — watch an AI agent get stopped.
🎬 Watch it happen — 60-second real run
A real Claude session asked to spend on McDonald's. It got its $25 order… then the gate said no to $75… then said no again when it tried to push $125 through a $100 daily budget. No retries, no splitting, no second path — the recording is unedited.
▶ Play it inline on the demo page · direct mp4
See a complete agent authorization flow → McDonald's breakfast agent case study — the same gate, end to end: policy, decisions, a bypass attempt, and the audit chain.
🔒 One gate. No second path.
The agent holds **no payment credentials** and has **no payment tool**. authorize_payment is the only path money can take — the decision is ALLOW / APPROVAL / DENY, the reason is structured for an LLM, and every attempt lands in the audit chain.
🔐 Why authorization checks aren't enough — execution enforcement
> **Status: experimental prototype.** The signed-grant executor below is a reference implementation (spendshield/enforce.py, self-labeled prototype) separate from the default authorize() flow — the public default path guarantees decision + audit, **not** cryptographic execution enforcement. Wiring Executor.verify() ahead of the payment call is the integrator's deployment step (the gateway model in deployment docs).
A policy check is an opinion: an agent can simply ignore it. In the gateway deployment model, SpendShield issues a **signed, single-use grant**, and the execution layer is built to consume it:
- Replay the same grant → **refused** (one-time)
- No grant / malformed grant → **refused**
- Forged or tampered grant → **refused** (signature mismatch)
Run the whole thing in 10 seconds:
What you'll see:
One execution, four refusals. Full output: docs/execution_demo_output.txt
Again: this flow is the **experimental enforcement prototype** — it demonstrates the gateway model, it is not what the default authorize() call does out of the box. Executor.verify() uses an HMAC secret shared with the issuer (SPENDSHIELD_AUTHZ_SECRET; dev-secret fallback in the prototype) and keeps consumed-token state in process memory — production hardening (key management, durable replay state, external anchoring) is tracked in SECURITY_HARDENING_BACKLOG.md.
Source
awesome · https://github.com/felixpg13-glitch/spendshield
Browse by field
MCP servers
Traction
2 ★
added
yesterday

More in MCP servers

All 5,525 in MCP servers →

Filed under

Every tag opens the full list for that filter. Counts are the live catalogue figures.

Browse all fields →

← Back to index