Parimit
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@ParimitPropose a ₹500 payment to 'Acme Corp' for invoice INV-204."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Parimit
Bounded authority for agent payments.
Parimit (परिमित, pronounced puh-REE-mit) means measured or bounded. It is an open-source, proposal-only payment-intent governance boundary for AI agents.
Alpha safety demo: Parimit does not connect to UPI, a bank, a PSP, or any live payment rail. It cannot move money. Do not treat it as a payment processor, authorization system, or compliance certification.
Parimit lets an agent propose a structured payment intent, applies deterministic policy, asks a human to approve or reject the exact intent, and keeps a tamper-evident audit history. The included rail is a simulator for safe demonstrations of success, failure, reversal, and uncertain outcomes.
The boundary
AI agent Human operator
| |
| propose / read / cancel own | approve or reject exact proposal
v v
+------------------------- Parimit -------------------------+
| validation -> policy -> approval -> HMAC receipt -> audit |
+-----------------------------------------------------------+
|
v
mock simulator only
(never money)The MCP surface intentionally exposes no pay, send, initiate, execute,
or approve capability. The HTTP demo contains a separate dashboard approval
route using clearly labelled, spoofable local headers; it is not a production
identity boundary and must never be exposed as an agent tool. No surface can
dispatch an approval to a payment rail.
Related MCP server: Cerberus
What works in v0.1
Create a proposal with an agent-scoped idempotency key.
Validate amount, currency, payee, purpose, and expiry.
Apply deterministic amount, allowlist, and velocity policies.
Require one or two distinct human approvals according to policy.
Cancel or inspect a proposal without moving funds.
Produce an HMAC-protected, non-dispatchable authorization receipt.
Append hash-chained audit events.
Simulate labelled outcomes; recording
IN_DOUBTfreezes the mock observation stream and rejects every later mock outcome.Use the browser dashboard, REST API, or proposal-only MCP server.
Run locally with Node.js 24 and no third-party runtime dependencies.
Quick start
Requirements: Node.js 24 and a modern browser.
git clone https://github.com/cad07/parimit.git
cd parimit
npm startOpen http://localhost:8787. The application stores demo state locally; it is not suitable for shared or production deployment.
Run the tests and the safety-boundary scanner:
npm test
npm run check:boundaryRun the MCP server over standard input/output:
npm run mcpFor a containerized demo:
docker compose up --buildConfiguration
The server reads configuration from exported environment variables. The Node
process does not load .env automatically; .env.example is a reference.
Docker Compose forwards the receipt and policy variables from a local .env
file, while keeping its container host, port, database path, and demo mode fixed.
Variable | Local default | Meaning |
|
| Bind address |
|
| HTTP port |
|
| Demo SQLite database |
|
| This alpha refuses to start when set false |
| insecure development value | HMAC key for demo approval receipts |
|
| Per-proposal ceiling in paise (₹1,000.00) |
|
| Per-agent daily ceiling in paise (₹5,000.00) |
|
| Require two people above this demo threshold (₹500.00) |
|
| Default proposal lifetime |
|
| Maximum requested lifetime |
| empty | Comma-separated normalized denylist |
| unset | Optional comma-separated allowlist |
Use only fictional references. Do not put bank, PSP, UPI, OTP, PIN, or customer credentials into this application or its environment.
Safe demo
Create a proposal for a small amount and a fictional demo payee.
Observe the deterministic policy decision.
Open the approval view and approve the exact proposal as a human.
Create a ₹600.00 proposal and use two distinct demo approvers.
Run the mock simulator and select success, failure, reversal, or
IN_DOUBT.After
IN_DOUBT, try another mock outcome and confirm that it is rejected withIN_DOUBT_FROZEN; this alpha has no reconciliation bypass.Inspect the audit chain. Re-submit the same idempotency key to see duplicate protection.
Nothing in this flow contacts an external service or moves money.
Agent interfaces
The REST contract is in openapi.yaml. The MCP server is
deliberately narrower and exposes only proposal-safe tools:
create_payment_proposalget_payment_statuscancel_payment_proposalget_policy_decisionsimulate_payment(mock outcomes only)get_payment_audit
MCP clients must not be given the human dashboard credentials or direct access
to internal approval routes. See docs/safety-boundary.md.
Design principles
Agents propose; review stays separate. The MCP surface has no approval tool. The local HTTP demo rejects an
agentrole and the requester identifier, but its spoofable headers are workflow labels—not human authentication.Approval is not execution. A receipt describes human authorization but is structurally non-dispatchable.
Exact-intent binding. Changing amount, currency, payee, or purpose invalidates earlier approvals.
Fail closed. Invalid policy, expired intent, audit mismatch, and uncertain state all stop progress.
Freeze after uncertainty. Once
IN_DOUBTis recorded, all later mock observations are rejected. This alpha exposes no reconciliation mechanism.Pure core. Domain and policy code cannot import network modules.
The repository enforces part of this boundary with
scripts/check-boundary.ts in CI.
Documentation
Relationship to NPCI AiNxt OS
The design was informed by the public, non-dispatchable payment boundary in
NPCI's AiNxt OS, reviewed at commit
5b6fbb90eb715384559256f7257e4d661cb1d17b.
AiNxt's settlement documentation states that its payment core does not perform
I/O or talk to banks. Parimit preserves the same separation in its own
independently written implementation.
No AiNxt source code is copied into this initial release. Parimit is not
affiliated with or endorsed by NPCI, and it must not use NPCI, AiNxt, or UPI
logos. See NOTICE.
Contributing and security
Contributions are welcome, particularly policy tests, threat-model review,
accessibility improvements, and additional mock scenarios. Read
CONTRIBUTING.md and the
CODE_OF_CONDUCT.md first.
Please do not open public issues for vulnerabilities. Follow
SECURITY.md to report them privately.
License
MIT. See LICENSE. Product and payment-network names belong to their
respective owners.
This server cannot be deployed
Maintenance
Related MCP Connectors
Pre-spend firewall for AI agents. Approves, blocks, flags transactions against policy rules.
Payment infrastructure for AI agents: spending rules, approval flows, single-use virtual cards.
Pre-execution governance for AI agents. Deterministic PASS/FAIL/REVIEW verdicts, replayable proof.
Supervised API-write gateway for AI agents with policy, human approval and execution receipts.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceEnables AI agents to analyze Ethereum wallets, simulate transactions, and draft transfers with deterministic policy and risk scoring, requiring human approval before on-chain execution.7 npmISC
- AlicenseNot gradedqualityBmaintenanceProvides a three-layer payment firewall for AI agents, enabling identity verification, risk screening, and execution authorization with on-chain policy enforcement for secure and auditable transactions.213 npm2MIT
- AlicenseNot gradedqualityAmaintenanceDeterministic, auditable payment policy enforcement for AI agents. It provides pre-action authorization with scopes, budgets, allowlists, and signed mandates via an MCP server.MIT
- FlicenseNot gradedqualityCmaintenanceEnables 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.-