{"protocolVersion": "0.3.0", "id": "financial-agent", "name": "Financial Agent", "description": "Personal finance AI assistant \u2014 tracks accounts, transactions, budgets, bills, and anomalies. Exposes read + categorize + reconcile skills to peer agents.", "url": "http://localhost:3000/a2a", "version": "1.0.0", "provider": {"organization": "bknight", "url": "https://bknight.dev"}, "capabilities": {"streaming": false, "pushNotifications": false, "stateTransitionHistory": false}, "defaultInputModes": ["application/json", "text/plain"], "defaultOutputModes": ["application/json", "text/plain"], "securitySchemes": {"bearer": {"type": "http", "scheme": "bearer", "bearerFormat": "agent_<hex>"}}, "security": [{"bearer": []}], "interfaces": [{"transport": "rest", "url": "http://localhost:3000/a2a/v1", "version": "1.0"}, {"transport": "json-rpc", "url": "http://localhost:3000/a2a", "version": "1.0"}], "skills": [{"id": "budget_what_if", "name": "Budget what-if", "description": "Run a budget what-if projection with per-category overrides + a horizon; returns deterministic projection numbers plus a brief LLM-narrated summary.", "tags": ["llm"], "inputModes": ["application/json"], "outputModes": ["application/json"]}, {"id": "categorize_transaction", "name": "Categorize transaction", "description": "Assign (or LLM-suggest) a category for a transaction.", "tags": ["write"], "inputModes": ["application/json"], "outputModes": ["application/json"]}, {"id": "explain_transaction", "name": "Explain transaction", "description": "Return an LLM explanation of a transaction with supporting context.", "tags": ["llm"], "inputModes": ["application/json"], "outputModes": ["application/json"]}, {"id": "get_account", "name": "Get account", "description": "Fetch a single account by id (federation Account shape; no balances or credentials).", "tags": ["read-only"], "inputModes": ["application/json"], "outputModes": ["application/json"]}, {"id": "get_anomalies", "name": "Get anomalies", "description": "List anomaly flags over a date range / state.", "tags": ["read-only"], "inputModes": ["application/json"], "outputModes": ["application/json"], "inputSchema": {"type": "object", "properties": {"startDate": {"type": "string", "format": "date"}, "endDate": {"type": "string", "format": "date"}, "state": {"type": "string"}}, "additionalProperties": false}}, {"id": "get_balance_summary", "name": "Get balance summary", "description": "Return aggregate assets, liabilities, and net worth.", "tags": ["read-only"], "inputModes": ["application/json"], "outputModes": ["application/json"], "inputSchema": {"type": "object", "properties": {}, "additionalProperties": false}}, {"id": "get_budget_status", "name": "Get budget status", "description": "Return a budget with its spend-vs-allocation status.", "tags": ["read-only"], "inputModes": ["application/json"], "outputModes": ["application/json"]}, {"id": "get_transaction", "name": "Get transaction", "description": "Fetch a single transaction by id (federation Transaction shape).", "tags": ["read-only"], "inputModes": ["application/json"], "outputModes": ["application/json"]}, {"id": "get_transactions", "name": "Get transactions", "description": "List transactions for an account / date range.", "tags": ["read-only"], "inputModes": ["application/json"], "outputModes": ["application/json"], "inputSchema": {"type": "object", "properties": {"accountId": {"type": "string"}, "startDate": {"type": "string", "format": "date"}, "endDate": {"type": "string", "format": "date"}, "limit": {"type": "integer", "default": 50}, "page": {"type": "integer", "default": 1}}, "additionalProperties": false}}, {"id": "list_accounts", "name": "List accounts", "description": "List all accounts (federation Account shape).", "tags": ["read-only"], "inputModes": ["application/json"], "outputModes": ["application/json"]}, {"id": "reconcile_transaction", "name": "Reconcile transaction", "description": "Apply a reconciliation decision to a transaction; records provenance + emits transaction_matched.", "tags": ["write"], "inputModes": ["application/json"], "outputModes": ["application/json"]}, {"id": "record_invoice", "name": "Record invoice", "description": "Record an inbound peer invoice (enqueues reconciliation).", "tags": ["write"], "inputModes": ["application/json"], "outputModes": ["application/json"]}, {"id": "record_receipt", "name": "Record receipt", "description": "Record an inbound peer receipt (enqueues reconciliation).", "tags": ["write"], "inputModes": ["application/json"], "outputModes": ["application/json"]}, {"id": "search_transactions", "name": "Search transactions", "description": "Search transactions by query + filters (optionally LLM-ranked).", "tags": ["read-only", "llm"], "inputModes": ["application/json"], "outputModes": ["application/json"], "inputSchema": {"type": "object", "properties": {"query": {"type": "string"}, "search": {"type": "string"}, "limit": {"type": "integer", "default": 50}}, "additionalProperties": false}}]}