mightbesaad avatar

Gvnr

mightbesaad/gvnr

A hosted governance layer that sits outside your LLM calls and decides whether an agent is cleared to spend. You set USD spend envelopes per agent and window, then call `budget_clear` before each request and `reconcile` after with actual token counts. It also handles rate limits per model, idempotency keys to dedupe retries, and a human approval bridge when an agent hits a cap or needs sign-off. The governance operations quota is prepaid with USDC on Base at 1,000 ops per dollar, either through the web pay flow or x402. No proxy, no self-hosting. Useful when you want hard guardrails on agent spend without routing tokens through a gateway or waiting for the bill to know something went wrong.

tools
10
auth
Secret needed
transport
HTTP
last updated
Jun 2, 2026

Tools

10 tools

Public tool metadata for what this MCP can expose to an agent.

budget_clearPre-flight authorization for a planned LLM call. Estimates cost from model + estimated_tokens, deducts from the agent envelope, returns {approved:true, remaining_usd} or {approved:false, reason}. Call BEFORE the LLM request; if approved=false, skip the call. Pair with `reconci...3 params

Pre-flight authorization for a planned LLM call. Estimates cost from model + estimated_tokens, deducts from the agent envelope, returns {approved:true, remaining_usd} or {approved:false, reason}. Call BEFORE the LLM request; if approved=false, skip the call. Pair with `reconci...

Parameters* required
agent_idstring
The agent identifier
estimated_tokensinteger
Tokens to be billed — output tokens for chat models, input tokens for input-only models (embeddings)
modelstring
Model being called (e.g. claude-sonnet-4-6, gpt-4o, text-embedding-3-small)
set_envelopeCreate or update a per-agent USD spend envelope. Idempotent: re-calling preserves the running spent_usd and reset_at; only limit_usd and window are overwritten. `window:"daily"` resets at UTC midnight; `window:"session"` never resets (caller-managed). Must be set before `budge...3 params

Create or update a per-agent USD spend envelope. Idempotent: re-calling preserves the running spent_usd and reset_at; only limit_usd and window are overwritten. `window:"daily"` resets at UTC midnight; `window:"session"` never resets (caller-managed). Must be set before `budge...

Parameters* required
agent_idstring
The agent identifier
limit_usdnumber
Spend limit in USD
windowstring
Reset window: daily (UTC midnight) or session (never resets)one of daily · sessiondefault: daily
get_balanceRead-only snapshot of the account-level governance-operation quota. The quota is increased by pay-as-you-go USDC topups (any amount, credited at 1,000 ops per $1) and decreased by one per `budget_clear`. Your LLM token spend is billed by your provider, not here; per-agent spen...

Read-only snapshot of the account-level governance-operation quota. The quota is increased by pay-as-you-go USDC topups (any amount, credited at 1,000 ops per $1) and decreased by one per `budget_clear`. Your LLM token spend is billed by your provider, not here; per-agent spen...

No parameter schema in public metadata yet.

reconcilePost-call drift correction. After the LLM returns, call this with the actual input/output token counts from the provider response — applies the delta (actual minus estimated cost) to the agent envelope (the spend cap); the operation quota is unchanged. Pairs with `budget_clear...3 params

Post-call drift correction. After the LLM returns, call this with the actual input/output token counts from the provider response — applies the delta (actual minus estimated cost) to the agent envelope (the spend cap); the operation quota is unchanged. Pairs with `budget_clear...

Parameters* required
actual_input_tokensinteger
Actual input tokens reported by the LLM provider
actual_output_tokensinteger
Actual output tokens reported by the LLM provider
agent_idstring
The agent identifier
set_rate_envelopeCreate or update a rate-limit envelope scoped to the (agent_id, provider, model) triple. Each triple gets its own independent counter — different agents on the same model do not share quota. Fixed 60-second window (not sliding). Idempotent: re-calling updates requests_per_minu...4 params

Create or update a rate-limit envelope scoped to the (agent_id, provider, model) triple. Each triple gets its own independent counter — different agents on the same model do not share quota. Fixed 60-second window (not sliding). Idempotent: re-calling updates requests_per_minu...

Parameters* required
agent_idstring
The agent identifier
modelstring
Model identifier, e.g. claude-sonnet-4-6, gpt-4o
providerstring
Provider name, e.g. anthropic, openai, bedrock
requests_per_minuteinteger
Allowed requests per 60-second window
rate_checkCheck the rate-limit envelope for an (agent_id, provider, model) triple before making an LLM call. Returns {allowed:true, requests_remaining_this_minute} if under cap (and increments the counter), or {allowed:false, reason:"rate_exceeded", retry_after_ms} if over. Pairs with `...3 params

Check the rate-limit envelope for an (agent_id, provider, model) triple before making an LLM call. Returns {allowed:true, requests_remaining_this_minute} if under cap (and increments the counter), or {allowed:false, reason:"rate_exceeded", retry_after_ms} if over. Pairs with `...

Parameters* required
agent_idstring
The agent identifier
modelstring
Model identifier, e.g. claude-sonnet-4-6
providerstring
Provider name, e.g. anthropic, openai
idempotency_checkDedupe retries on a caller-supplied key. Returns {is_first_call:true} the first time a key is seen within TTL; returns {is_first_call:false} on every subsequent call. Use as a guard around non-idempotent operations — common pairings: gate `reconcile` to prevent double-correcti...2 params

Dedupe retries on a caller-supplied key. Returns {is_first_call:true} the first time a key is seen within TTL; returns {is_first_call:false} on every subsequent call. Use as a guard around non-idempotent operations — common pairings: gate `reconcile` to prevent double-correcti...

Parameters* required
keystring
Idempotency key — unique per logical operation
ttl_secondsinteger
Time-to-live in seconds (default 3600, max 30 days)
request_approvalRequest human approval for an agent action. Returns immediately with {approval_id, approval_url, expires_at}; the human approves or denies via the URL (mobile-first web page), and the agent polls `check_approval` with approval_id to learn the decision. Notifies the account hol...4 params

Request human approval for an agent action. Returns immediately with {approval_id, approval_url, expires_at}; the human approves or denies via the URL (mobile-first web page), and the agent polls `check_approval` with approval_id to learn the decision. Notifies the account hol...

Parameters* required
action_summarystring
Human-readable description of the action awaiting approval (≤280 chars)
agent_idstring
Agent identifier requesting approval
channelsarray
Notification channels (default ["email"]; telegram/sms accepted for forward-compat but not yet delivered)
ttl_secondsinteger
Time the approver has to decide (default 600s, max 7 days)
check_approvalPoll the status of a pending approval created by `request_approval`. Returns {decision: "pending"} while the human has not decided, {decision: "approved"} or {decision: "denied"} once they have, or {decision: "timeout"} if expires_at passed without a decision. Read-only and id...1 params

Poll the status of a pending approval created by `request_approval`. Returns {decision: "pending"} while the human has not decided, {decision: "approved"} or {decision: "denied"} once they have, or {decision: "timeout"} if expires_at passed without a decision. Read-only and id...

Parameters* required
approval_idstring
approval_id returned by request_approval
view_dashboardOpen an interactive, read-only spend dashboard for this account: an operation-quota gauge plus a live bar per agent showing spent vs. envelope limit, remaining USD, and daily-reset countdown, with a recent-clearance activity feed. Use when a human asks how their budget or an a...

Open an interactive, read-only spend dashboard for this account: an operation-quota gauge plus a live bar per agent showing spent vs. envelope limit, remaining USD, and daily-reset countdown, with a recent-clearance activity feed. Use when a human asks how their budget or an a...

No parameter schema in public metadata yet.

Sponsors

Readme

Gvnr

Tests Release License: MIT MCP Registry gvnr MCP server smithery badge

Spend caps, rate coordination, idempotency, and a human-in-the-loop gate for AI agents — enforced before the call, not after the invoice. One MCP endpoint, settled via x402 (USDC on Base). No proxy, no self-hosting, no infrastructure to deploy.

Listed on the Official MCP Registry as dev.gvnr/gvnr.


The problem


View the full README on GitHub

Details

Repository
github.com/mightbesaad/gvnr
Website
gvnr.dev
Category
AI & LLM Tools
Transport
HTTP
Auth
Required
Registry
MCP registry, active

Related AI & LLM Tools MCP servers

View all
1minuetai avatarMinuetminuetai/minuet-mcpMCP server exposing Minuet's ERC-8004 agent relationship graph.0stars
2mizukaizen avatarHive Doctrine Mcpmizukaizen/hive-doctrine-mcpAgent knowledge marketplace. 105 products, 6 MCP tools, x402 payments on Base network.0stars
3myaitoken avatarMyai Mcpmyaitoken/myai-mcpDecentralized AI inference on Base: OpenAI-compatible chat via community GPUs, paid in MYAI0stars
4npupko avatarAgency Mcp Servernpupko/agency-mcp-serverOn-demand access to 150+ specialist AI agent templates — search, browse, and spawn agents0stars
5ojaskord avatarLocal Model Suitability MCPojaskord/local-model-suitability-mcpAI model router. Checks whether to use local Ollama or cloud inference before each API call.0stars
6oxgeneral avatarAgentNetoxgeneral/agentnetAgent-to-agent referral network. Discover, recommend, and refer users between AI agents via MCP.0stars