Skip to main content
Glama
levellerlabs

Agent Renewal Guard

by levellerlabs

Agent Renewal Guard - Alexa+ MCP server for recurring-payment control

Self-hosted MCP server (spec 2025-11-25+, Streamable HTTP) that lets an Alexa+-style voice agent watch recurring payments and PROPOSE renew/degrade/cancel recommendations without ever being able to move money itself. Every consequential action is a proposal that waits for human approval - the agent can advise, never execute.

Built for the Amazon Developer Hackathon 2026, Alexa+ track.

Why

Recurring payments drain money quietly: the gym membership from February, the 2TB cloud plan holding 180GB, the family streaming tier after the kids moved out. Voice is the natural surface for this - "Alexa, what renewals need a decision this week?" - but you do not want a voice agent holding your wallet. This server gives the agent eyes (read-only spend facts) and a pen for suggestions, never keys to the till.

Related MCP server: Subscription Sniper — AI Agent for Recurring Spend Audits

What it is

  • A single-file Python MCP server (server.py) built on the official mcp SDK (v1.29.1, Streamable HTTP transport, stateless mode). Negotiates MCP protocol version 2025-11-25 over Streamable HTTP (verified live: initialize returns protocolVersion 2025-11-25).

  • Tools are split into two privilege tiers so an Alexa+ orchestrator can be configured least-privilege:

    • list_upcoming_renewals (read-only): renewals inside a decision window with monthly-cost facts, utilisation signals and days-until-renewal.

    • get_renewal_detail (read-only): one renewal, full record including cost history.

    • propose_decision (proposals): record a recommend/dromote/cancel/keep suggestion with reasons. Writes to state/proposals.json ONLY. Nothing here touches a bank.

    • list_proposals (read-only): the pending human-approval tray, so a companion skill can speak them back and the human can approve/reject from the Alexa app.

    • record_decision (human-gated): marks a proposal approved/rejected. Intended to be called only by the approval surface (app/CLI), not exposed to the advising agent.

  • Data lives in state/renewals.json (a documented, editable JSON file - bank CSV import scripts are possible but out of scope for the PoC).

  • The server never holds bank credentials, never makes payments, never cancels anything. The strongest thing the agent can do is write a suggestion to a local file.

Quick start

Requires Python 3.11+.

python3 -m venv .venv
source .venv/bin/activate
pip install "mcp[cli]>=1.29.1"
python server.py            # serves Streamable HTTP on http://localhost:8787/mcp

Smoke-test with the MCP inspector:

npx @modelcontextprotocol/inspector python server.py

Or a raw Streamable HTTP POST:

curl -s http://localhost:8787/mcp -H 'Content-Type: application/json' \
  -H 'Accept: application/json, text/event-stream' \
  -d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-11-25","capabilities":{},"clientInfo":{"name":"curl","version":"0"}}}'

Then list tools:

curl -s http://localhost:8787/mcp -H 'Content-Type: application/json' \
  -H 'Accept: application/json, text/event-stream' \
  -H 'Mcp-Session-Id: <from initialize response>' \
  -d '{"jsonrpc":"2.0","id":2,"method":"tools/list"}'

State files

  • state/renewals.json - the subscription ledger. Edit by hand or generate from a bank export. Schema documented at the top of the file.

  • state/proposals.json - the proposal tray. Written by propose_decision, read by list_proposals, resolved by record_decision. Nothing else ever writes here.

Agent Skills integration

The skill/ directory contains an Alexa+ Agent Skill package (renewal-guard-skill/SKILL.md + resources/) that teaches an Alexa+ orchestrator when to call each tool and the approval-flow guardrails. Drop it into an agent runtime that supports Agent Skills (open standard) and point it at this server's /mcp endpoint.

Security model

  • Two-tier tool split: advising tools cannot mutate proposals' approval state; the approval tool is documented for the human-side surface only.

  • No bank credentials, no payment rails, no cancel APIs. The agent physically cannot spend money through this server.

  • Proposals carry an audit trail: who proposed, when, reasons, and the exact facts the proposal was based on (replayable from the ledger).

License

MIT

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

No tool schema history has been recorded yet.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    AgentPay is the authorization layer between an AI agent and real spending. You define the rules — spending caps, allowed merchants, time windows — and every purchase attempt the agent makes is checked against them in real time. Approved transactions go through. Anything outside the mandate is blocked and logged. No more babysitting every agent action. No more runaway charges.
    MIT
  • F
    license
    A
    quality
    C
    maintenance
    An MCP-powered AI agent that audits your Gmail for recurring subscriptions, detects silent price increases, and flags unused services.
    6
    -
  • F
    license
    Not graded
    quality
    C
    maintenance
    Enables AI agents to propose wallet payments while a local, human-authored policy decides whether each transaction is approved, requires human confirmation, or is refused, and records every decision in a signed, append-only ledger.
    -

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/levellerlabs/agent-renewal-guard'

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