920e5fc3c6
Fills remaining MVP gaps from artifact_01_product_mvp_icp.md.
Plaid MCP (port 9006 — Connectivity layer, Module F):
- mcp/plaid/server.py: create_link_token, exchange_public_token,
get_account_info, initiate_ach_pull, get_transfer_status, handle_webhook
- Supports sandbox/development/production Plaid environments
- Mock mode when PLAID_CLIENT_ID not configured (local dev)
- Enables Flow 3: bank account → ACH pull → USDC credit
TypeScript SDK (@finogrid/agent-ledger-sdk):
- sdk/typescript/src/types.ts: full type definitions for all entities
(KYAStatus, LoopType, IntentStatus, Mandate types, x402 types)
- sdk/typescript/src/client.ts: FinogridClient with resource sub-clients
(agents, kya, wallets, paymentIntents, micropay, mandates, x402)
- KYA.pollUntil() helper; x402 middleware helpers; typed error classes
(FinogridApiError, X402PaymentRequiredError)
- sdk/typescript/src/client.test.ts: x402 encode/decode roundtrip tests
Ops Console API (port 8200 — Module G):
- services/ops_console/main.py: FastAPI, ops API key auth, 7 router domains
- routers/search.py: unified cross-entity search (clients, agents, wallets,
micro_transactions, batches)
- routers/exceptions.py: held_tasks | kya_blocked | expired_intents triage
- routers/approvals.py: mandate threshold approval queue (approve/reject)
- routers/ledger_explorer.py: filterable ledger entries with pagination
- routers/agents_explorer.py: list + full detail (KYA, wallets, txs, today spend)
- routers/mandates_console.py: activate, suspend, resume, revoke + MandateEvent emit
- routers/corridors.py: aggregate stats per corridor (volume, success/error rates)
Docs updated:
- README.md v2.0: full architecture diagram, agent hierarchy, KYA table,
loop type table, x402 description, all 6 MCP servers, TypeScript SDK
quick-start, full env var table, project structure
- docs/architecture.md v2.0: all 3 flows, micropay gates table, mandate
model detail, service map, MCP map, ops console endpoint table
https://claude.ai/code/session_013rQFv4hhLZuRKREpsKC8vn