Spec Driven Development
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
Description from the maker (original English)
Governance and audit layer for AI agents: policy, approvals, tamper-evident audit chains.
These three are never merged into one score: opinions, measurements and popularity are different things.
We have not written a plain-language summary for this one yet. Below are the facts we read from the registry.
Pick the AI app you use, then copy the settings.
MNEMOPAY_API_KEY, MNEMOPAY_PERSIST_DIRValues marked secret are keys to your account. Never share them or paste them into a chat.
You need
Which app do you use?
Pick your app above. We remember it, so next time the button says “Install in …”.
Open Claude Desktop → Settings → Developer → Edit Config, and paste this into claude_desktop_config.json
{
"mcpServers": {
"sdk": {
"command": "npx",
"args": [
"-y",
"@mnemopay/sdk"
],
"env": {
"MNEMOPAY_API_KEY": "your-value",
"MNEMOPAY_PERSIST_DIR": "your-value"
}
}
}
}Run this in your terminal
claude mcp add sdk --env MNEMOPAY_API_KEY=your-value --env MNEMOPAY_PERSIST_DIR=your-value -- npx -y @mnemopay/sdkFill in the empty values before running it.
Paste into .cursor/mcp.json in your project, or ~/.cursor/mcp.json
{
"mcpServers": {
"sdk": {
"command": "npx",
"args": [
"-y",
"@mnemopay/sdk"
],
"env": {
"MNEMOPAY_API_KEY": "your-value",
"MNEMOPAY_PERSIST_DIR": "your-value"
}
}
}
}Your browser asks to open the app, then the app shows the settings and asks you to confirm. Key values are left empty for you to fill in.
Paste into .vscode/mcp.json in your project
{
"servers": {
"sdk": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"@mnemopay/sdk"
],
"env": {
"MNEMOPAY_API_KEY": "your-value",
"MNEMOPAY_PERSIST_DIR": "your-value"
}
}
}
}Your browser asks to open the app, then the app shows the settings and asks you to confirm. Key values are left empty for you to fill in.
This one runs on your computer, and ChatGPT can only connect to servers on the internet. Pick another app.
Your choice stays on this device in a cookie; no account needed.
MNEMOPAY_PERSIST_DIR envThese settings are generated from the maker’s registry entry. If the README says otherwise, follow the README.
Runs on your computer; the tool list appears in your AI app after you install it.
We check information anyone can see; we have not read the code. Checks that do not apply are left out of the count. · Checked Nov 6, 2026
The registry name was verified against the domain mnemopay.com (the registry checks domain ownership)
We have not read this repo from GitHub yet
We have not read this repo from GitHub yet
This one runs on your computer; there is no internet endpoint
Runs on your computer and uses local settings instead
Runs on your computer; we can only read tool lists from internet endpoints
Compared with every active server in this category in the registry. Stars count only when the publisher owns the repo.
It passed 1 of 1 applicable basic checks. We have not read the code. Before adding a key or token, see what access the server asks for and use a key with only the permissions you need.
You need to fill in: MNEMOPAY_API_KEY
It runs on your computer. Your AI app starts it when needed, and data does not pass through the maker’s servers (unless it calls an online service itself).
The GitHub repo last changed –, and the latest version (1.15.2) reached the registry 3 days ago.
Apps that support MCP, such as Claude Desktop, Claude Code, Cursor and VS Code. You also need Node.js on your computer.
In the same category: Spec Driven Development, Remote Desktop Commander, Recta
Servers in the same category from other makers, sorted by stars.
Reading a card:★ GitHub starsiThree pillars: reviews · checks · usageiUpdated = latest version published to the registryi
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
Remote Desktop Commander: use files, terminal and processes on your own computers from any AI app.
Cheaper cross-chain stablecoin routes for AI agents; 5 % of the verified saving, nothing if none.
Copied from the maker’s repo as written. PopNx MCP has not reviewed or endorsed it. HTML, images and scripts are removed. Links lead off this site.
The governance layer for AI agents that take consequential actions. Charter-driven mission scope, policy enforcement with human-in-the-loop approvals, FiscalGate budget enforcement, EU AI Act Article 12 audit bundles, Agent Reputation Scoring (300-850), and a tamper-evident MerkleAudit chain — whether the action moves money or changes infrastructure.
MnemoPay sits above the rail (Stripe, Paystack, Lightning, Stripe MPP, x402, Google AP2) and below the agent runtime (LangChain, CrewAI, Claude Agent SDK, your own loop). The rail moves money. The runtime decides. MnemoPay declares the rules, enforces the budget, and produces the evidence.
Payments are one kind of consequential action. The same charter, policy, approval and audit path governs operational tooling too — the primitives do not care whether the step settles a payment or drains a node.
npm install @mnemopay/sdk
New here? Start at
docs/QUICKSTART.md— 60 seconds, three steps, working code.
Docs: Quickstart · Architecture · Permissions · Action ledger · Integrations (OpenAI/Anthropic/Gemini/Cohere/Mistral/LangGraph) · Recall · FiscalGate · Audit bundles (EU AI Act Art. 12) · Subpath import rule · Claude Agent SDK guide · Bundlers: Vite · Webpack · Bun
Community: LICENSE (Apache 2.0) · CHANGELOG · CONTRIBUTING · CODE_OF_CONDUCT · SECURITY · Discussions · Good first issues
Receipts: Trust hub (entity, KYB, Apple Team ID, Article 12 audit chain — verify in <5 min) · Benchmarks (1M ops, 100% adversarial detection, $0 ledger drift) · Python SDK on PyPI (Mock/Stripe/Paystack/Lightning rails, scoring and
AuditChain; Charter, FiscalGate and Article 12 are TypeScript-only so far)
import MnemoPay, {
Charter, FiscalGate, MerkleAudit, // governance primitives AgentReputationScoring, BehavioralEngine, // trust + reputation StripeRail, X402Rail, GoogleAP2Rail, // rails } from "@mnemopay/sdk";
const agent = MnemoPay.quick("my-agent");
await agent.remember("User prefers monthly billing"); const tx = await agent.charge(25, "Monthly API access"); // FiscalGate hold await agent.settle(tx.id); // FiscalGate capture
// Agent Reputation Score — portable, 300-850 range. NOT FICO-brand, NOT a consumer // credit report, NOT governed by FCRA. Scores agents (software), not humans. const scorer = new AgentReputationScoring(); const result = scorer.compute({ transactions: [tx], createdAt: new Date(), /* ... */ }); // → { score: 672, rating: "good", feeRate: 0.015, trustLevel: "standard" }
Native Node ESM (`.mjs` or `"type": "module"`): the package is CommonJS, so a default import yields the whole module object. Use the named export instead:
import { MnemoPay, Charter } from "@mnemopay/sdk", thenMnemoPay.quick(...). The default-import form above works in TypeScript and bundlers.
14 modules. Hash-chained ledger. Charter / FiscalGate / Article 12 audit bundles. 6 payment rails. 200K-operation stress tested. Apache 2.0.
What MnemoPay is NOT: not a bank, not a money transmitter, not a Stripe replacement, not an agent framework, not a compliance platform. It's the rules-and-evidence layer between the rail and the runtime.
"Sub-second governance" is a tested invariant, not marketing. The bench in tests/bench/governance-latency.bench.ts measures each governance hot path with vitest bench and emits a grep-able [gov-bench] summary line per scenario. Numbers below are steady-state percentiles from npm run bench:governance (run on the dev machine — your hardware will differ; the relative ordering is what matters).
| Hot path | p50 | p95 | p99 | machine |
|---|---|---|---|---|
policy.evaluateAction (EU AI Act, single tool_call) | 2.1 µs | 2.8 µs | 5.0 µs | Intel i5-1035G1 @ 1.0 GHz · Node 25.9 · Windows 11 |
MerkleAudit.record (append + chain hash) | 20 µs | 45 µs | 150 µs | Intel i5-1035G1 @ 1.0 GHz · Node 25.9 · Windows 11 |
MnemoPayLite.remember() end-to-end with auto-anchor (Ed25519) | 1.0 ms | 1.7 ms | 2.5 ms | Intel i5-1035G1 @ 1.0 GHz · Node 25.9 · Windows 11 |
Both per-event hot paths (evaluateAction, MerkleAudit.record) clear an entire EU AI Act policy gate and audit-chain write two orders of magnitude inside one millisecond. The end-to-end remember() path — including Ed25519 sign + sequence + chain emit — still sits comfortably inside the "sub-second governance" envelope with three decimal-orders of headroom.
A CI-enforced guard spec in tests/governance/latency-invariant.test.ts runs a degraded-mode sample on every npm test and fails if p95 for policy.evaluateAction regresses past 1 ms, or MerkleAudit.record past 5 ms. Bounds are sized to catch a ~10x regression, not flap on jitter.
How to reproduce: npm run bench:governance (full vitest.bench harness) or npm test -- latency-invariant (CI-bound check).
Every rail ships with the same PaymentRail interface as StripeRail / PaystackRail / LightningRail:
| Rail | What it is |
|---|---|
| `StripeMPPRail` | Stripe Machine Payments Protocol — agent payments routed as crypto deposits on the Tempo network via Stripe-pinned API 2026-03-04.preview |
| `X402Rail` | Coinbase x402 (HTTP 402 revival) — USDC on Base L2 via EIP-3009 transferWithAuthorization. Pluggable signer (bring-your-own viem/ethers/noble). Zero crypto deps in the SDK. |
| `GoogleAP2Rail` | Google Agent Payment Protocol (FIDO Alliance, AP2 v0.2). Mandate VC + Intent VC + HTTP settlement. Pre-flight policy enforcement (caps, expiry, currency, recipients) before any signature is produced. |
Plus the Spatial governance fold — attachSpatialEvidence() co-signs the MerkleAudit chain with GridStamp proof-of-presence for embodied agents (drones, robots). Loose-coupled — no gridstamp runtime dependency.
If you only need one MnemoPay module, import that subpath instead of the package root. This keeps MCP servers and other stdio tools quiet, avoids pulling unused middleware into bundles, and makes the dependency boundary obvious.
import { localEmbed, cosineSimilarity } from "@mnemopay/sdk/recall";
import { StripeRail, X402Rail } from "@mnemopay/sdk/rails"; import { SQLiteStorage } from "@mnemopay/sdk/storage"; import { CommerceEngine } from "@mnemopay/sdk/commerce";
Use the root import when you want the full SDK surface. Use @mnemopay/sdk/mcp only when you are intentionally mounting the MnemoPay MCP server.
@mnemopay/sdk/swarm is the missing piece that browse.sh shipped as a public skill catalog. Ours adds the bit they don't: every agent in the swarm carries a DID, every action is FiscalGate-prechecked against per-agent + total caps, every TaskResult is appended to a shared Article-12 audit chain, and every skill invocation is billable through the same hash-chained ledger the rest of the SDK already uses.
CLI: npx @mnemopay/swarm list · npx @mnemopay/swarm demo — see mnemopay-swarm.
import { Swarm } from "@mnemopay/sdk/swarm";
import { AuditChain } from "@mnemopay/sdk/governance"; import { open } from "@mnemopay/browser"; // any BrowserProvider works
const provider = await someProviderFactory(); const swarm = new Swarm({ size: 4, provider, did: "did:mp:abc...", budget: { perAgent: 0.25, total: 1.00 }, audit: { chain: new AuditChain() }, });
const run = await swarm.spawn([ { id: "t1", skillId: "ramp.com/expense-create", prompt: "submit $42 lunch" }, { id: "t2", skillId: "linear/issue-create", prompt: "file UI bug" }, { id: "t3", skillId: "cloudflare/dns-record-set", prompt: "add CNAME" }, ]);
const results = await swarm.gather(run); const final = await swarm.recombine(results, "merge-json");
When to use it. Any time you'd open N parallel browser sessions to attack a problem — multi-source research, cross-platform issue triage, A/B-style "ask three agents, take the majority answer" — but you want one audit bundle, one budget envelope, and one place where billing happens.
Three recombine strategies (plus your own).
first-success — returns the output of the first ok:true task; perfect for race patterns where any answer is fine.majority-vote — returns the most-common output across ok:true tasks; perfect for fact-extraction where consensus matters.merge-json — deep-merges every ok:true object output with sorted keys (deterministic across runs).concat — joins string outputs with \n in spawn order.(results) => unknown callback.Skill catalog. Public listings live at mcp.mnemopay.com/skills. The catalog is intentionally small and honestly marked — verified-partner badges only show after a real partnership is signed. Everything else carries verified: false, status: 'pending-partner' so you know exactly what trust tier you're getting.
@mnemopay/sdk/swarm/browser extends Swarm with a typed step sequence (goto / act / extract / screenshot / wait) per task and a lazy wire to @mnemopay/browser (optional peer dep — installing the SDK does NOT pull Playwright). Each task gets its own browser session, every step appends a browser.step event to the shared audit chain, and a thrown step kills only that one task — sibling sessions keep running.
import { BrowserSwarm } from "@mnemopay/sdk/swarm/browser";
const swarm = new BrowserSwarm({ size: 3, provider: undefined as never, budget: { perAgent: 0.25, total: 1.00 }, browser: { provider: "stagehand" }, }); const run = await swarm.spawn([ { id: "amzn", prompt: "amazon price", steps: [{type:"goto", url:"https://amazon.com/dp/X"}, {type:"extract", selector:"#priceblock_ourprice"}] }, { id: "bby", prompt: "best buy price", steps: [{type:"goto", url:"https://bestbuy.com/site/X"},{type:"extract", selector:".priceView-customer-price"}] }, { id: "tgt", prompt: "target price", steps: [{type:"goto", url:"https://target.com/p/X"}, {type:"extract", selector:"[data-test=product-price]"}] }, ]); const results = await swarm.gather(run); // BrowserTaskResult[] with .screenshots + .extractedData
File issues at github.com/mnemopay/mnemopay-sdk.
.audit(client) with streaming + on-diOnly the beginning is shown; read the rest in the repo