{"schema_version":"verify.report.v1","generated_at":"2026-09-12T08:54:57.217122+00:00","snapshot_id":"trustsnap_d905a75eacf33687","server":{"namespace":"github-alex-odoo","name":"myfinance-mcp","title":"alex-odoo/myfinance-mcp","description":"A remote MCP server for personal finance - log expenses by talking to your AI, import bank statements, track budgets and net worth in any currency.","homepage_url":"https://myfinance-mcp.com","docs_url":"https://myfinance-mcp.com","icon_url":"https://avatars.githubusercontent.com/u/165295360?v=4","support_url":"https://github.com/alex-odoo/myfinance-mcp","remote_url":"https://myfinance-mcp.com","server_card_url":null,"latest_version":null,"current_status":"unverified","current_score":null,"transport_type":"streamable-http","has_oauth":true,"has_dcr":true,"has_prompts":false,"tool_count":0,"current_validation_schema_version":"8058defc70ca932c","last_validated_at":"2026-09-12T06:59:19.483848+00:00","registry_source":"github_topic_registry","registry_identifier":"github_topic_registry:alex-odoo/myfinance-mcp","canonical_identifier":null,"current_score_components":{"auth_operability_score":3.0,"error_contract_score":1.0,"rate_limit_semantics_score":2.0,"schema_completeness_score":0.0,"backward_compatibility_score":4.0,"slo_health_score":0.0,"security_hygiene_score":0.0,"task_success_score":0.0,"trust_confidence_score":0.0,"prompt_contract_score":2.0,"resource_contract_score":4.0,"discovery_metadata_score":2.0,"registry_consistency_score":3.0,"installability_score":1.0,"session_semantics_score":1.0,"tool_surface_design_score":0.0,"result_shape_stability_score":0.0,"oauth_interop_score":4.0,"recovery_semantics_score":1.0,"maintenance_signal_score":2.0,"adoption_signal_score":2.0,"freshness_confidence_score":1.0,"transport_fidelity_score":3.0,"spec_recency_score":0.0,"session_resume_score":0.0,"step_up_auth_score":4.0,"transport_compliance_score":0.0,"utility_coverage_score":1.0,"advanced_capability_coverage_score":1.0,"connector_publishability_score":0.0,"tool_snapshot_churn_score":0.0,"connector_replay_score":0.0,"request_association_score":0.0,"interactive_flow_safety_score":4.0,"official_registry_presence_score":2.0,"safety_transparency_score":3.0,"tool_capability_clarity_score":0.0,"data_exfiltration_resilience_score":0.0,"dependency_supply_chain_signal_score":0.0,"input_sanitization_safety_score":0.0,"tool_namespace_clarity_score":0.0},"capability_taxonomy":[],"machine_summary":{},"taxonomy_tags":[],"score_decomposition":[],"validation_diff":null,"tool_snapshot_diff":null,"connector_replay":{},"request_association":{},"production_readiness":{"code":"metadata_only","label":"Metadata only","reason":"No live validation evidence exists yet for this entry.","badge":"score-low"},"recommended_for":[],"history_summary":{},"validation_timeline":[],"evidence_confidence":{"score":null,"label":"not_assessed","reason":"No evidence-bearing validation runs exist yet (8 captured checks, validation age 1.9 hours). Confidence cannot be computed.","live_check_count":8,"validation_age_hours":1.93,"basis":{"evidence_bearing_validations":0,"affirmative_live_check_count":8,"validation_age_hours":1.93,"freshness_threshold_hours":24}},"incident_feed":[],"disputes":[],"remediations":[],"client_remediation_modes":[],"client_profiles":[],"client_readiness_verdicts":[],"publishability_policy_profiles":[],"compatibility_fixtures":[],"install_snippets":{},"aliases":[],"raw_evidence":{"checks":{"probe_noise_resilience":{"status":"ok","latency_ms":313.66,"details":{"url":"https://myfinance-mcp.com/robots.txt","http_status":200,"headers":{"content-type":"text/plain"},"validation_disallowed":false,"consent_error":null}},"server_card":{"status":"ok","latency_ms":275.81,"details":{"url":"https://myfinance-mcp.com/.well-known/mcp/server-card.json","payload":{"serverInfo":{"name":"myfinancemcp","version":"0.13.0"},"authentication":{"required":true,"schemes":["oauth2"]},"tools":[{"name":"ping","title":"Ping","description":"Health check for the MyFinance MCP connection. Returns the signed-in account email - call this when the user asks which account is connected.","inputSchema":{"type":"object","properties":{},"$schema":"http://json-schema.org/draft-07/schema#"},"annotations":{"readOnlyHint":true,"openWorldHint":false}},{"name":"log_expense","title":"Log expense","description":"Record ONE purchase, bill, or receipt. Negative amount = refund to the same category. NEVER use this for bank-statement rows or any batch of 3+ records: use import_transactions with the whole array instead (one-by-one logging hits the per-turn tool limit).","inputSchema":{"type":"object","properties":{"amount":{"type":"number","description":"Amount spent in the original currency. Negative = refund."},"currency":{"type":"string","minLength":3,"maxLength":3,"description":"3-letter ISO currency code (EUR, USD, UAH, AED, ...). Omit to use the user's base currency."},"category":{"type":"string","enum":["groceries","restaurants","transport","fuel","housing","utilities","health","pharmacy","clothing","electronics","entertainment","subscriptions","education","travel","gifts","family","personal_care","business","fees","other"],"description":"Omit only if nothing fits; defaults to 'other'."},"merchant":{"type":"string","description":"Store/service name, e.g. 'Silpo', 'Netflix'."},"note":{"type":"string"},"date":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","description":"Date as YYYY-MM-DD. Omit for today."},"items":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"qty":{"type":"number"},"price":{"type":"number","description":"Line price in the receipt's currency"}},"required":["name"],"additionalProperties":false},"description":"Receipt line items, when logging from a receipt photo."},"account":{"type":"string","description":"Account name (see get_accounts). Default: Manual."},"entity":{"type":"string","enum":["personal","business"],"description":"Override the account's default scope, e.g. a personal dinner paid with the business card."}},"required":["amount"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":false}},{"name":"log_income","title":"Log income","description":"Record incoming money: salary, client payment, gift.","inputSchema":{"type":"object","properties":{"amount":{"type":"number","exclusiveMinimum":0,"description":"Amount received in the original currency."},"currency":{"type":"string","minLength":3,"maxLength":3,"description":"3-letter ISO currency code (EUR, USD, UAH, AED, ...). Omit to use the user's base currency."},"category":{"type":"string","enum":["salary","business","freelance","investments","gifts","refunds","other"],"description":"Defaults to 'other'."},"merchant":{"type":"string","description":"Payer / source, e.g. client or employer name."},"note":{"type":"string"},"date":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","description":"Date as YYYY-MM-DD. Omit for today."},"account":{"type":"string","description":"Account name (see get_accounts). Default: Manual."},"entity":{"type":"string","enum":["personal","business"],"description":"Override the account's default scope, e.g. a client payment landing on a personal card."}},"required":["amount"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":false}},{"name":"create_account","title":"Create account","description":"Add a money account: bank, card, cash, or investment (brokerage). Transfers between own accounts are then tracked without counting as spending.","inputSchema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":40,"description":"Short name, e.g. 'Revolut', 'Mono black', 'IBKR'."},"type":{"type":"string","enum":["cash","bank","card","investment","manual"],"description":"cash | bank | card | investment"},"currency":{"type":"string","minLength":3,"maxLength":3,"description":"Main currency of this account."},"entity":{"type":"string","enum":["personal","business"],"description":"Whose money: personal (default) or business. Sets the default scope for this account's transactions."}},"required":["name","type","currency"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":false}},{"name":"update_account","title":"Update account","description":"Rename an account or change its type, entity or main currency. Transactions keep their history; an entity change only affects future transactions.","inputSchema":{"type":"object","properties":{"account":{"type":"string","minLength":1,"description":"Current account name (see get_accounts)."},"new_name":{"type":"string","minLength":1,"maxLength":40},"type":{"type":"string","enum":["cash","bank","card","investment","manual"]},"entity":{"type":"string","enum":["personal","business"]},"currency":{"type":"string","minLength":3,"maxLength":3,"description":"Main currency the balance is shown in."}},"required":["account"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":false}},{"name":"delete_account","title":"Delete one account","description":"Delete ONE money account (see get_accounts) together with its balance snapshots. If it still holds transactions, pass delete_transactions=true to confirm deleting them too. To erase the whole profile use delete_all_data instead.","inputSchema":{"type":"object","properties":{"account":{"type":"string","minLength":1,"description":"Account name to delete."},"delete_transactions":{"type":"boolean","description":"Must be true when the account still has transactions."}},"required":["account"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"},"annotations":{"readOnlyHint":false,"destructiveHint":true,"idempotentHint":false,"openWorldHint":false}},{"name":"merge_accounts","title":"Merge accounts","description":"Merge one account into another: moves all transactions to the target, de-duplicates rows present on both sides (same type, currency, amount and date within dedup_window_days; the row with a bank reference wins and absorbs the other's category), rewrites transfer references, then deletes the source account. Typical use: a hand-made statement-import account and a live bank sync account tracking the same real bank. Run with dry_run=true first and show the counts to the user.","inputSchema":{"type":"object","properties":{"source":{"type":"string","minLength":1,"description":"Account to merge FROM (deleted afterwards)."},"target":{"type":"string","minLength":1,"description":"Account to merge INTO (kept)."},"dry_run":{"type":"boolean","description":"Preview counts without changing anything."},"dedup_window_days":{"type":"integer","minimum":0,"maximum":14,"description":"Fuzzy duplicate match window, default 3. 0 = drop only exact bank-reference duplicates."}},"required":["source","target"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"},"annotations":{"readOnlyHint":false,"destructiveHint":true,"idempotentHint":false,"openWorldHint":false}},{"name":"get_accounts","title":"Accounts & net worth","description":"All accounts with computed balances (latest snapshot + tracked flows) and total net worth in the base currency. Optionally filtered to personal or business scope.","inputSchema":{"type":"object","properties":{"entity":{"type":"string","enum":["personal","business"],"description":"Only accounts of this scope. Omit for all."}},"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"},"annotations":{"readOnlyHint":true,"openWorldHint":false}},{"name":"log_transfer","title":"Log transfer","description":"Move money between OWN accounts: card to brokerage, cash withdrawal, currency exchange. Never counted as spending or income.","inputSchema":{"type":"object","properties":{"amount":{"type":"number","exclusiveMinimum":0,"description":"Amount leaving the source account."},"currency":{"type":"string","minLength":3,"maxLength":3,"description":"Default: source account currency."},"from_account":{"type":"string"},"to_account":{"type":"string"},"received_amount":{"type":"number","exclusiveMinimum":0,"description":"Amount arriving, for cross-currency transfers."},"received_currency":{"$ref":"#/properties/currency","description":"3-letter ISO currency code (EUR, USD, UAH, AED, ...). Omit to use the user's base currency."},"note":{"type":"string"},"date":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","description":"Date as YYYY-MM-DD. Omit for today."}},"required":["amount","from_account","to_account"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":false}},{"name":"log_balance","title":"Log balance snapshot","description":"Anchor an account's REAL balance at end of a date (from the bank app). Balances are then snapshot + later flows.","inputSchema":{"type":"object","properties":{"account":{"type":"string"},"amount":{"type":"number","description":"Actual balance shown by the bank/broker."},"currency":{"type":"string","minLength":3,"maxLength":3,"description":"Default: account currency."},"date":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","description":"Balance as of end of this date. Default: today."}},"required":["account","amount"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":false}},{"name":"import_transactions","title":"Bulk import","description":"Import bank-statement / statement-screenshot rows in bulk. ALWAYS send the ENTIRE statement as ONE call with the full transactions array (up to 500 rows) - never split into chunks, never log rows one-by-one via log_expense. If one statement truly cannot fit in a single call, EVERY row of EVERY chunk must carry external_id (bank reference; or the statement row number, e.g. 'r017') - rows without external_id are keyed by amount+date+occurrence WITHIN one call, so identical rows arriving in different calls are indistinguishable from re-imports. Safe to re-run: keyed rows are skipped, a hand-logged twin is merged into the bank row instead of duplicating, and repeated purchases (same merchant and amount on different days, or twice the same day) import normally. Unknown categories become 'other'. Pass statement_total to get a reconciliation check. Sign convention: negative amount = money out, positive = money in.","inputSchema":{"type":"object","properties":{"account":{"type":"string","description":"Target account name. Default: Manual."},"statement_total":{"type":"number","description":"Signed sum of ALL rows in the source statement, for reconciliation."},"dry_run":{"type":"boolean","description":"Preview only: report what would be imported/skipped/merged without writing anything."},"transactions":{"type":"array","items":{"type":"object","properties":{"date":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","description":"Date as YYYY-MM-DD. Omit for today."},"amount":{"type":"number","description":"Signed: negative = expense/out, positive = income/in."},"currency":{"type":"string","minLength":3,"maxLength":3,"description":"3-letter ISO currency code (EUR, USD, UAH, AED, ...). Omit to use the user's base currency."},"type":{"type":"string","enum":["expense","income","transfer"],"description":"Override sign-based detection."},"category":{"type":"string"},"merchant":{"type":"string"},"note":{"type":"string"},"external_id":{"type":"string","description":"Bank transaction reference - the strongest dedup key. If absent, the server derives a stable key from amount + date + position."},"force":{"type":"boolean","description":"Import even if a similar row exists. Use ONLY when a previous response's hint asked to re-send this row. Exact external_id duplicates are still skipped."},"entity":{"type":"string","enum":["personal","business"],"description":"Scope override for THIS row, e.g. a personal dinner inside a business-account statement. Default: the account's entity."}},"required":["date","amount"],"additionalProperties":false},"minItems":1,"maxItems":500}},"required":["transactions"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}},{"name":"get_summary","title":"Spending summary","description":"Totals for a period, computed server-side in the user's base currency. Breaks down expenses (default) or income: 'how much did I spend on X in July', 'what does my June income consist of'. Supports category drill-down (category=subscriptions + group_by=merchant) and exclusions (exclude_categories).","inputSchema":{"type":"object","properties":{"period":{"type":"string","description":"YYYY-MM or YYYY. Defaults to the current month."},"from":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","description":"Date as YYYY-MM-DD. Omit for today."},"to":{"$ref":"#/properties/from","description":"Date as YYYY-MM-DD. Omit for today."},"type":{"type":"string","enum":["expense","income"],"description":"Which side the groups break down. Default: expense. Use income for 'where does my income come from'."},"group_by":{"type":"string","enum":["category","merchant","month"],"description":"Default: category."},"category":{"type":"string","enum":["groceries","restaurants","transport","fuel","housing","utilities","health","pharmacy","clothing","electronics","entertainment","subscriptions","education","travel","gifts","family","personal_care","business","fees","other","salary","freelance","investments","refunds"],"description":"Only this category, e.g. subscriptions with group_by=merchant to see what the subscriptions consist of."},"exclude_categories":{"type":"array","items":{"$ref":"#/properties/category"},"description":"Drop these categories from totals and groups, e.g. ['business'] for personal stats without business-categorized records."},"entity":{"type":"string","enum":["personal","business"],"description":"personal or business only. Omit for everything."}},"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"},"annotations":{"readOnlyHint":true,"openWorldHint":false}},{"name":"get_transactions","title":"List transactions","description":"Find records: 'what was that 40 eur charge', recent spending, by category or merchant.","inputSchema":{"type":"object","properties":{"from":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","description":"Date as YYYY-MM-DD. Omit for today."},"to":{"$ref":"#/properties/from","description":"Date as YYYY-MM-DD. Omit for today."},"category":{"type":"string"},"merchant":{"type":"string","description":"Substring match, case-insensitive."},"query":{"type":"string","description":"Searches note and merchant."},"entity":{"type":"string","enum":["personal","business"],"description":"personal or business only."},"limit":{"type":"integer","minimum":1,"maximum":100,"description":"Default 20."}},"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"},"annotations":{"readOnlyHint":true,"openWorldHint":false}},{"name":"update_transaction","title":"Update transaction","description":"Fix a logged record: wrong category, amount, merchant, date, personal/business scope, or type. type=transfer + counter_account converts a mislogged row into a transfer between own accounts (e.g. a cash withdrawal into a transfer to Cash). counter_transaction_id instead GLUES TWO EXISTING rows (one expense + one income on different own accounts) into ONE transfer - use it when a currency exchange, own-account top-up, or cash withdrawal produced two separate rows. Category fixes on rows with a merchant are remembered: future bank syncs of that merchant reuse your category.","inputSchema":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"amount":{"type":"number"},"currency":{"type":"string","minLength":3,"maxLength":3,"description":"3-letter ISO currency code (EUR, USD, UAH, AED, ...). Omit to use the user's base currency."},"category":{"type":"string","enum":["groceries","restaurants","transport","fuel","housing","utilities","health","pharmacy","clothing","electronics","entertainment","subscriptions","education","travel","gifts","family","personal_care","business","fees","other","salary","business","freelance","investments","gifts","refunds","other"]},"merchant":{"type":"string"},"note":{"type":"string"},"date":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","description":"Date as YYYY-MM-DD. Omit for today."},"entity":{"type":"string","enum":["personal","business"]},"type":{"type":"string","enum":["expense","income","transfer"],"description":"Convert the record's type. transfer additionally needs counter_account."},"counter_account":{"type":"string","description":"type=transfer only: the OTHER own account of the transfer (for an expense row: where the money went, e.g. Cash)."},"counter_transaction_id":{"type":"string","format":"uuid","description":"Merge ANOTHER existing row into this one as the second leg of a transfer between own accounts. One row must be an expense, the other an income, on different accounts (any currencies). The other row is absorbed: its account/amount/currency become the counter leg and its bank reference is preserved, so re-syncs and re-imports do not duplicate it."}},"required":["id"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"},"annotations":{"readOnlyHint":false,"destructiveHint":true,"idempotentHint":true,"openWorldHint":false}},{"name":"delete_transaction","title":"Delete transaction","description":"Remove ONE wrongly logged record. For 3+ records use delete_transactions (bulk) with the ids array.","inputSchema":{"type":"object","properties":{"id":{"type":"string","format":"uuid"}},"required":["id"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"},"annotations":{"readOnlyHint":false,"destructiveHint":true,"idempotentHint":true,"openWorldHint":false}},{"name":"delete_transactions","title":"Bulk delete","description":"Delete MANY transactions in ONE call by ids (from get_transactions). Always prefer this over repeated delete_transaction calls - one-by-one deletion hits the per-turn tool limit.","inputSchema":{"type":"object","properties":{"ids":{"type":"array","items":{"type":"string","format":"uuid"},"minItems":1,"maxItems":500}},"required":["ids"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"},"annotations":{"readOnlyHint":false,"destructiveHint":true,"idempotentHint":true,"openWorldHint":false}},{"name":"get_trends","title":"Monthly trends","description":"Month-over-month expense/income dynamics, optionally for one category or scope.","inputSchema":{"type":"object","properties":{"months":{"type":"integer","minimum":2,"maximum":24,"description":"How many months back. Default 6."},"category":{"type":"string","enum":["groceries","restaurants","transport","fuel","housing","utilities","health","pharmacy","clothing","electronics","entertainment","subscriptions","education","travel","gifts","family","personal_care","business","fees","other"]},"entity":{"type":"string","enum":["personal","business"],"description":"personal or business only. Omit for everything."}},"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"},"annotations":{"readOnlyHint":true,"openWorldHint":false}},{"name":"set_budget","title":"Set budget","description":"Monthly spending cap, overall or per category, in the user's base currency.","inputSchema":{"type":"object","properties":{"amount":{"type":"number","exclusiveMinimum":0},"category":{"type":"string","enum":["groceries","restaurants","transport","fuel","housing","utilities","health","pharmacy","clothing","electronics","entertainment","subscriptions","education","travel","gifts","family","personal_care","business","fees","other"],"description":"Omit for the overall monthly budget."}},"required":["amount"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"},"annotations":{"readOnlyHint":false,"destructiveHint":true,"idempotentHint":true,"openWorldHint":false}},{"name":"get_budget_progress","title":"Budget progress","description":"Current month: spent vs cap for every budget. Budgets track PERSONAL spending only; business-scope transactions never count against them.","inputSchema":{"type":"object","properties":{},"$schema":"http://json-schema.org/draft-07/schema#"},"annotations":{"readOnlyHint":true,"openWorldHint":false}},{"name":"get_settings","title":"Get settings","description":"Signed-in account email, base currency and timezone.","inputSchema":{"type":"object","properties":{},"$schema":"http://json-schema.org/draft-07/schema#"},"annotations":{"readOnlyHint":true,"openWorldHint":false}},{"name":"update_settings","title":"Update settings","description":"Change base currency (recomputes all historical stats at each transaction's original date rate) or timezone.","inputSchema":{"type":"object","properties":{"base_currency":{"type":"string","minLength":3,"maxLength":3,"description":"3-letter ISO currency code (EUR, USD, UAH, AED, ...). Omit to use the user's base currency."},"timezone":{"type":"string","description":"IANA timezone, e.g. Europe/Kyiv, Asia/Dubai."}},"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"},"annotations":{"readOnlyHint":false,"destructiveHint":true,"idempotentHint":true,"openWorldHint":false}},{"name":"export_transactions","title":"Export CSV","description":"All transactions as CSV (GDPR portability). Optionally one scope only, e.g. business rows for the accountant.","inputSchema":{"type":"object","properties":{"from":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","description":"Date as YYYY-MM-DD. Omit for today."},"to":{"$ref":"#/properties/from","description":"Date as YYYY-MM-DD. Omit for today."},"entity":{"type":"string","enum":["personal","business"]}},"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"},"annotations":{"readOnlyHint":true,"openWorldHint":false}},{"name":"connect_zenmoney","title":"Connect ZenMoney","description":"Link a ZenMoney account (both zenmoney.app international and zenmoney.ru work; the right backend is auto-detected) for read-only transaction sync. action=paste_token stores the user's personal ZenMoney API token: get it free at zerro.app - log in choosing YOUR ZenMoney version on the login screen, then open zerro.app/token and copy it. action=status shows connection health and the synced accounts list. action=set_account_sync with account + enabled turns syncing of ONE account on or off, for example when the same bank is also connected via connect_bank. action=disconnect removes the link and stored token; already-imported transactions stay. After connecting, run sync_zenmoney.","inputSchema":{"type":"object","properties":{"action":{"type":"string","enum":["paste_token","status","disconnect","set_account_sync"]},"token":{"type":"string","minLength":10,"description":"ZenMoney API token. Required for action=paste_token."},"account":{"type":"string","description":"set_account_sync: account name or id (see action=status)."},"enabled":{"type":"boolean","description":"set_account_sync: true = resume syncing this account, false = stop."}},"required":["action"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":true,"openWorldHint":true}},{"name":"sync_zenmoney","title":"Sync ZenMoney","description":"Pull transactions, accounts and balances from the linked ZenMoney account (read-only, incremental after the first run, safe to re-run). First sync imports full history unless months_back is set. dry_run previews transaction changes (account mapping is still saved). Report includes unmapped ZenMoney tags: those rows land in category 'other' for the user to review. If the same real bank account is also connected via connect_bank its transactions WILL duplicate: relay any overlap_warnings from the response to the user and offer to disable one side (action=set_account_sync).","inputSchema":{"type":"object","properties":{"dry_run":{"type":"boolean","description":"Preview transaction changes without writing them."},"months_back":{"type":"integer","exclusiveMinimum":0,"maximum":240,"description":"First sync only: import history no older than this many months. Default: everything."}},"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":true,"openWorldHint":true}},{"name":"connect_bank","title":"Connect a bank","description":"Link a real bank account via open banking (Enable Banking, EU/UK/EEA coverage) for read-only transaction sync. Flow: action=list_banks with the user's country (and optional search) to find the exact bank name -> action=start with bank_name + country -> give the user the returned authorize_url to open and approve at their bank -> after they confirm they are done, run sync_bank. action=status shows connection health, consent expiry and the synced accounts list. action=set_account_sync with account + enabled turns syncing of ONE account on or off, for example when the same bank is also connected via another source. action=disconnect revokes the session and removes the link; imported transactions stay. Only one bank connection at a time for now; connecting a different bank replaces the previous one after disconnect.","inputSchema":{"type":"object","properties":{"action":{"type":"string","enum":["list_banks","start","status","disconnect","set_account_sync"]},"country":{"type":"string","minLength":2,"maxLength":2,"description":"2-letter country code (FI, DE, FR, ...). Required for list_banks and start."},"search":{"type":"string","description":"list_banks: case-insensitive substring filter on bank names."},"bank_name":{"type":"string","description":"start: exact bank name as returned by list_banks. Required for action=start."},"account":{"type":"string","description":"set_account_sync: account name or id (see action=status)."},"enabled":{"type":"boolean","description":"set_account_sync: true = resume syncing this account, false = stop."}},"required":["action"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":true,"openWorldHint":true}},{"name":"sync_bank","title":"Sync bank","description":"Pull booked transactions and balances from the connected bank (via connect_bank; read-only, incremental, safe to re-run). First sync imports months_back of history (default 3; banks may return less). Equal-amount same-day debit/credit pairs across the user's own synced accounts are merged into transfers. Categories come from the user's remembered per-merchant fixes first, then MCC; the rest land in 'other'. The server also auto-syncs healthy connections roughly daily; run this only for immediate freshness or right after connecting. If the same real bank account is also connected via ZenMoney its transactions WILL duplicate: relay any overlap_warnings from the response to the user and offer to disable one side (action=set_account_sync).","inputSchema":{"type":"object","properties":{"dry_run":{"type":"boolean","description":"Preview changes without writing them."},"months_back":{"type":"integer","exclusiveMinimum":0,"maximum":24,"description":"First sync only: how many months of history to request. Default 3."}},"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":true,"openWorldHint":true}},{"name":"delete_all_data","title":"Delete all data","description":"Erase the user profile and ALL financial data permanently (GDPR). For removing a single money account use delete_account instead. Requires confirm='DELETE'.","inputSchema":{"type":"object","properties":{"confirm":{"type":"string","const":"DELETE"}},"required":["confirm"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"},"annotations":{"readOnlyHint":false,"destructiveHint":true,"idempotentHint":true,"openWorldHint":false}}],"resources":[{"name":"dashboard","uri":"ui://myfinancemcp/dashboard","description":"MyFinance MCP dashboard: budgets, trends, summary, accounts","mimeType":"text/html;profile=mcp-app","_meta":{"ui":{"prefersBorder":true}}}],"prompts":[]},"http_status":200,"headers":{"content-type":"application/json","strict-transport-security":"max-age=31536000; includeSubDomains"}}},"oauth_protected_resource":{"status":"ok","latency_ms":94.91,"details":{"url":"https://myfinance-mcp.com/.well-known/oauth-protected-resource","payload":{"resource":"https://myfinance-mcp.com/mcp","authorization_servers":["https://myfinance-mcp.com"],"scopes_supported":["finance"],"resource_name":"MyFinance MCP"},"http_status":200,"headers":{"content-type":"application/json; charset=utf-8","strict-transport-security":"max-age=31536000; includeSubDomains"}}},"oauth_authorization_server":{"status":"ok","latency_ms":94.85,"details":{"url":"https://myfinance-mcp.com/.well-known/oauth-authorization-server","payload":{"issuer":"https://myfinance-mcp.com/","authorization_endpoint":"https://myfinance-mcp.com/authorize","response_types_supported":["code"],"code_challenge_methods_supported":["S256"],"token_endpoint":"https://myfinance-mcp.com/token","token_endpoint_auth_methods_supported":["client_secret_post","none"],"grant_types_supported":["authorization_code","refresh_token"],"scopes_supported":["finance"],"revocation_endpoint":"https://myfinance-mcp.com/revoke","revocation_endpoint_auth_methods_supported":["client_secret_post"],"registration_endpoint":"https://myfinance-mcp.com/register"},"http_status":200,"headers":{"content-type":"application/json; charset=utf-8","strict-transport-security":"max-age=31536000; includeSubDomains"}}},"openid_configuration":{"status":"error","latency_ms":94.56,"details":{"url":"https://myfinance-mcp.com/.well-known/openid-configuration","error":"Client error '404 Not Found' for url 'https://myfinance-mcp.com/.well-known/openid-configuration'\nFor more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/404"}},"initialize":{"status":"auth_required","latency_ms":307.89,"details":{"url":"https://myfinance-mcp.com","error":"Client error '401 Unauthorized' for url 'https://myfinance-mcp.com'\nFor more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/401","http_status":401,"payload":{},"headers":{"content-type":"application/json; charset=utf-8","www-authenticate":"Bearer error=\"invalid_token\", error_description=\"Missing Authorization header\", resource_metadata=\"https://myfinance-mcp.com/.well-known/oauth-protected-resource/mcp\"","strict-transport-security":"max-age=31536000; includeSubDomains"}}},"protocol_version_probe":{"status":"missing","latency_ms":null,"details":{"reason":"no_protocol_version","validator_protocol_version":"2025-03-26","latest_known_version":"2025-11-25"}},"tools_list":{"status":"auth_required","latency_ms":324.54,"details":{"url":"https://myfinance-mcp.com","error":"Client error '401 Unauthorized' for url 'https://myfinance-mcp.com'\nFor more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/401","http_status":401,"payload":{},"headers":{"content-type":"application/json; charset=utf-8","www-authenticate":"Bearer error=\"invalid_token\", error_description=\"Missing Authorization header\", resource_metadata=\"https://myfinance-mcp.com/.well-known/oauth-protected-resource/mcp\"","strict-transport-security":"max-age=31536000; includeSubDomains"}}},"prompts_list":{"status":"auth_required","latency_ms":288.45,"details":{"url":"https://myfinance-mcp.com","error":"Client error '401 Unauthorized' for url 'https://myfinance-mcp.com'\nFor more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/401","http_status":401,"payload":{},"headers":{"content-type":"application/json; charset=utf-8","www-authenticate":"Bearer error=\"invalid_token\", error_description=\"Missing Authorization header\", resource_metadata=\"https://myfinance-mcp.com/.well-known/oauth-protected-resource/mcp\"","strict-transport-security":"max-age=31536000; includeSubDomains"},"reason":"auth_required"}},"prompt_get":{"status":"missing","latency_ms":null,"details":{"reason":"not_advertised"}},"resources_list":{"status":"auth_required","latency_ms":289.48,"details":{"url":"https://myfinance-mcp.com","error":"Client error '401 Unauthorized' for url 'https://myfinance-mcp.com'\nFor more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/401","http_status":401,"payload":{},"headers":{"content-type":"application/json; charset=utf-8","www-authenticate":"Bearer error=\"invalid_token\", error_description=\"Missing Authorization header\", resource_metadata=\"https://myfinance-mcp.com/.well-known/oauth-protected-resource/mcp\"","strict-transport-security":"max-age=31536000; includeSubDomains"},"reason":"auth_required"}},"resource_read":{"status":"missing","latency_ms":null,"details":{"reason":"no_resource_uri"}},"determinism_probe":{"status":"missing","latency_ms":null,"details":{"reason":"tools_list_unavailable"}},"instruction_tool_reference_probe":{"status":"not_assessed","latency_ms":null,"details":{"reason":"initialize_or_tools_unavailable"}},"session_resume_probe":{"status":"missing","latency_ms":null,"details":{"reason":"no_session_id","transport":"streamable-http","resume_expected":false,"protocol_version":null}},"step_up_auth_probe":{"status":"ok","latency_ms":null,"details":{"oauth_present":true,"auth_required_checks":["initialize","tools_list","prompts_list","resources_list"],"supported_scopes":["finance"],"scope_specificity_ratio":0.5,"broad_scopes":[],"challenge_headers":["Bearer error=\"invalid_token\", error_description=\"Missing Authorization header\", resource_metadata=\"https://myfinance-mcp.com/.well-known/oauth-protected-resource/mcp\"","Bearer error=\"invalid_token\", error_description=\"Missing Authorization header\", resource_metadata=\"https://myfinance-mcp.com/.well-known/oauth-protected-resource/mcp\"","Bearer error=\"invalid_token\", error_description=\"Missing Authorization header\", resource_metadata=\"https://myfinance-mcp.com/.well-known/oauth-protected-resource/mcp\"","Bearer error=\"invalid_token\", error_description=\"Missing Authorization header\", resource_metadata=\"https://myfinance-mcp.com/.well-known/oauth-protected-resource/mcp\""],"step_up_signals":["Bearer error=\"invalid_token\", error_description=\"Missing Authorization header\", resource_metadata=\"https://myfinance-mcp.com/.well-known/oauth-protected-resource/mcp\"","Bearer error=\"invalid_token\", error_description=\"Missing Authorization header\", resource_metadata=\"https://myfinance-mcp.com/.well-known/oauth-protected-resource/mcp\"","Bearer error=\"invalid_token\", error_description=\"Missing Authorization header\", resource_metadata=\"https://myfinance-mcp.com/.well-known/oauth-protected-resource/mcp\"","Bearer error=\"invalid_token\", error_description=\"Missing Authorization header\", resource_metadata=\"https://myfinance-mcp.com/.well-known/oauth-protected-resource/mcp\""],"minimal_scope_documented":true}},"transport_compliance_probe":{"status":"error","latency_ms":307.87,"details":{"transport":"streamable-http","session_id_present":false,"protocol_header_present":false,"last_event_id_visible":false,"requested_protocol_version":"2025-03-26","bad_protocol_status_code":401,"bad_protocol_payload":{"error":"invalid_token","error_description":"Missing Authorization header"},"bad_protocol_headers":{"content-type":"application/json; charset=utf-8","www-authenticate":"Bearer error=\"invalid_token\", error_description=\"Missing Authorization header\", resource_metadata=\"https://myfinance-mcp.com/.well-known/oauth-protected-resource/mcp\"","strict-transport-security":"max-age=31536000; includeSubDomains"},"bad_protocol_error":null,"delete_status_code":null,"delete_error":null,"expired_session_status_code":null,"expired_session_error":null,"issues":["missing_protocol_header","bad_protocol_not_rejected"]}},"utility_coverage_probe":{"status":"ok","latency_ms":102.39,"details":{"completions":{"advertised":false,"sample_target":{"type":"resource","uri":"ui://myfinancemcp/dashboard"},"live_probe":"not_executed"},"pagination":{"supported":false,"next_cursor_methods":[],"metadata_signal":false},"tasks":{"advertised":false,"probe_status":"auth_required","http_status":401},"initialize_capability_keys":[]}},"advanced_capabilities_probe":{"status":"warning","latency_ms":null,"details":{"capabilities":{"prompts":true,"resources":true,"completions":false,"roots":false,"sampling":false,"elicitation":false,"structured_outputs":false,"resource_links":true},"enabled_count":3,"enabled":["prompts","resource_links","resources"],"initialize_capability_keys":[]}},"tool_snapshot_probe":{"status":"missing","latency_ms":null,"details":{"reason":"no_tools"}},"connector_replay_probe":{"status":"missing","latency_ms":null,"details":{"reason":"no_tools"}},"request_association_probe":{"status":"missing","latency_ms":null,"details":{"reason":"no_request_association_capabilities_advertised"}},"interactive_flow_probe":{"status":"ok","latency_ms":null,"details":{"risk_hits":[],"safe_hits":["oauth","login","consent"],"oauth_supported":true,"prompt_available":false}},"action_safety_probe":{"status":"not_assessed","latency_ms":null,"details":{"summary":{"tool_count":0,"high_risk_tools":0,"destructive_tools":0,"exec_tools":0,"egress_tools":0,"secret_tools":0,"bulk_access_tools":0,"declared_non_read_only_tools":0,"annotation_conflict_tools":0,"risk_distribution":{"low":0,"medium":0,"high":0,"critical":0},"capability_distribution":{},"has_mutating_capability":false,"has_non_read_capability":false},"auth_present":true,"safeguard_count":0,"confirmation_signals":[],"reason":"empty_observation_set"}},"official_registry_probe":{"status":"missing","latency_ms":null,"details":{"registry_source":"github_topic_registry","direct_match":false,"official_peer_count":0}},"provenance_divergence_probe":{"status":"not_assessed","latency_ms":null,"details":{"direct_official_match":false,"registry_title":null,"server_card_title":"myfinancemcp","registry_version":null,"server_card_version":"0.13.0","registry_homepage":null,"server_card_homepage":null,"registry_repository":null,"server_card_repository":null,"drift_fields":[],"metadata_document_count":2,"compared_fields":["title","version","homepage","repository"],"readable_sources":["server_card"],"comparable_field_count":0}},"schema_divergence_probe":{"status":"missing","latency_ms":null,"details":{"reason":"no_live_tools","compared_tool_count":0,"compared_dimensions":["server_name","server_version","declared_vs_observed_auth","tool_membership","parameter_names","required_parameters","parameter_types","output_schema_presence"],"server_name_mismatch":false,"card_server_name":"myfinancemcp","live_server_name":null,"server_version_mismatch":false,"card_server_version":"0.13.0","live_server_version":null,"auth_scheme_mismatch":false}},"connector_publishability_probe":{"status":"error","latency_ms":null,"details":{"transport":"streamable-http","tool_count":0,"high_risk_tools":0,"blockers":["tools_list","protocol_version","session_resume","transport_compliance","connector_replay","request_association","action_safety","tool_surface"],"criteria":{"remote_transport":true,"initialize":true,"tools_list":false,"protocol_version":false,"session_resume":false,"step_up_auth":true,"transport_compliance":false,"connector_replay":false,"request_association":false,"action_safety":false,"server_card":true,"tool_surface":false,"auth_flow":true}}}}},"active_alerts":[],"maintainer_analytics":{},"public_server_reputation":{},"maintainer_response_quality":{},"maintainer_annotations":[],"maintainer_rebuttals":[],"security_posture_summary":{},"tool_security_inventory":[],"transport_compliance":{},"utility_coverage":{},"write_action_governance":{},"provenance_divergence":{},"alias_consolidation":{},"alert_routing":{},"authenticated_validation":{},"hosted_runtime":{},"action_controls_diff":null,"benchmark_tasks":[],"latest_capability_counts":{},"point_loss_breakdown":[],"verdict_traces":{},"current_snapshot":{"schema_version":"verify.trust_snapshot.v1","snapshot_id":"trustsnap_d905a75eacf33687","generated_at":"2026-09-12T08:54:57.225869+00:00","trust_evaluated_at":"2026-09-12T08:54:57.225869+00:00","evidence_revision":"25daa8b97b5975690ce640eb","source":"current_snapshot","server":"github-alex-odoo/myfinance-mcp","last_validated_at":"2026-09-12T06:59:19.483848+00:00","validation_age_hours":1.93,"freshness":{"schema_version":"verify.freshness_profile.v1","last_validated_at":"2026-09-12T06:59:19.483848+00:00","age_hours":1.93,"bucket":"verified_last_24h","label":"Verified in last 24h","badges":["verified_last_24h"],"freshness_sla_hours":720.0,"freshness_sla_status":"met","stale_score_suppressed":false,"display_score":null,"raw_score":null,"confidence_score":null,"confidence_weighted_score":null,"tier_status":[{"tier":"community","label":"Community","freshness_sla_hours":720,"met":true,"priority_revalidation":false},{"tier":"pro","label":"Pro","freshness_sla_hours":168,"met":true,"priority_revalidation":true},{"tier":"enterprise","label":"Enterprise","freshness_sla_hours":24,"met":true,"priority_revalidation":true}]},"current_status":"unverified","current_score":null,"display_score":null,"stale_score_suppressed":false,"production_trust_decision":{"schema_version":"verify.executive_verdict.v1","decision":"Not assessed","why":"tool surface has not been observed by any completed validation run","next_action":"revalidate so the tool surface can be inspected before a production decision is made","reason_count":0},"production_readiness_class":{"code":"metadata_only","label":"Metadata only","reason":"No live validation evidence exists yet for this entry."},"evidence_confidence":{"score":null,"label":"not_assessed","validation_age_hours":1.93,"live_check_count":8,"basis":{"evidence_bearing_validations":0,"affirmative_live_check_count":8,"validation_age_hours":1.93,"freshness_threshold_hours":24}},"active_alerts":[],"active_alert_summary":{"critical":0,"high":0,"medium":0,"low":0,"high_or_critical":0,"total":0},"materialization":{"state":"partial","trust_core_complete":true,"fields_unavailable":["tool_security_inventory","security_posture_summary","write_action_governance","capability_taxonomy","remediations"],"materialized_at":"2026-09-12T08:54:57.225869+00:00"}},"trust_snapshot":{"schema_version":"verify.trust_snapshot.v1","snapshot_id":"trustsnap_d905a75eacf33687","generated_at":"2026-09-12T08:54:57.225869+00:00","trust_evaluated_at":"2026-09-12T08:54:57.225869+00:00","evidence_revision":"25daa8b97b5975690ce640eb","source":"current_snapshot","server":"github-alex-odoo/myfinance-mcp","last_validated_at":"2026-09-12T06:59:19.483848+00:00","validation_age_hours":1.93,"freshness":{"schema_version":"verify.freshness_profile.v1","last_validated_at":"2026-09-12T06:59:19.483848+00:00","age_hours":1.93,"bucket":"verified_last_24h","label":"Verified in last 24h","badges":["verified_last_24h"],"freshness_sla_hours":720.0,"freshness_sla_status":"met","stale_score_suppressed":false,"display_score":null,"raw_score":null,"confidence_score":null,"confidence_weighted_score":null,"tier_status":[{"tier":"community","label":"Community","freshness_sla_hours":720,"met":true,"priority_revalidation":false},{"tier":"pro","label":"Pro","freshness_sla_hours":168,"met":true,"priority_revalidation":true},{"tier":"enterprise","label":"Enterprise","freshness_sla_hours":24,"met":true,"priority_revalidation":true}]},"current_status":"unverified","current_score":null,"display_score":null,"stale_score_suppressed":false,"production_trust_decision":{"schema_version":"verify.executive_verdict.v1","decision":"Not assessed","why":"tool surface has not been observed by any completed validation run","next_action":"revalidate so the tool surface can be inspected before a production decision is made","reason_count":0},"production_readiness_class":{"code":"metadata_only","label":"Metadata only","reason":"No live validation evidence exists yet for this entry."},"evidence_confidence":{"score":null,"label":"not_assessed","validation_age_hours":1.93,"live_check_count":8,"basis":{"evidence_bearing_validations":0,"affirmative_live_check_count":8,"validation_age_hours":1.93,"freshness_threshold_hours":24}},"active_alerts":[],"active_alert_summary":{"critical":0,"high":0,"medium":0,"low":0,"high_or_critical":0,"total":0},"materialization":{"state":"partial","trust_core_complete":true,"fields_unavailable":["tool_security_inventory","security_posture_summary","write_action_governance","capability_taxonomy","remediations"],"materialized_at":"2026-09-12T08:54:57.225869+00:00"}},"agent_commerce":{},"latest_claim":null,"maintainer_profile_slug":null,"watch_summary":{},"partial":true,"fields_unavailable":["tool_security_inventory","security_posture_summary","write_action_governance","capability_taxonomy","remediations"],"trust_evaluated_at":"2026-09-12T08:54:57.225869+00:00","evidence_revision":"25daa8b97b5975690ce640eb","active_alert_summary":{"critical":0,"high":0,"medium":0,"low":0,"high_or_critical":0,"total":0},"materialization":{"state":"partial","trust_core_complete":true,"fields_unavailable":["tool_security_inventory","security_posture_summary","write_action_governance","capability_taxonomy","remediations"],"materialized_at":"2026-09-12T08:54:57.225869+00:00"},"owner_opted_out":false},"latest_validation":null,"current_snapshot":{"schema_version":"verify.trust_snapshot.v1","snapshot_id":"trustsnap_d905a75eacf33687","generated_at":"2026-09-12T08:54:57.225869+00:00","trust_evaluated_at":"2026-09-12T08:54:57.225869+00:00","evidence_revision":"25daa8b97b5975690ce640eb","source":"current_snapshot","server":"github-alex-odoo/myfinance-mcp","last_validated_at":"2026-09-12T06:59:19.483848+00:00","validation_age_hours":1.93,"freshness":{"schema_version":"verify.freshness_profile.v1","last_validated_at":"2026-09-12T06:59:19.483848+00:00","age_hours":1.93,"bucket":"verified_last_24h","label":"Verified in last 24h","badges":["verified_last_24h"],"freshness_sla_hours":720.0,"freshness_sla_status":"met","stale_score_suppressed":false,"display_score":null,"raw_score":null,"confidence_score":null,"confidence_weighted_score":null,"tier_status":[{"tier":"community","label":"Community","freshness_sla_hours":720,"met":true,"priority_revalidation":false},{"tier":"pro","label":"Pro","freshness_sla_hours":168,"met":true,"priority_revalidation":true},{"tier":"enterprise","label":"Enterprise","freshness_sla_hours":24,"met":true,"priority_revalidation":true}]},"current_status":"unverified","current_score":null,"display_score":null,"stale_score_suppressed":false,"production_trust_decision":{"schema_version":"verify.executive_verdict.v1","decision":"Not assessed","why":"tool surface has not been observed by any completed validation run","next_action":"revalidate so the tool surface can be inspected before a production decision is made","reason_count":0},"production_readiness_class":{"code":"metadata_only","label":"Metadata only","reason":"No live validation evidence exists yet for this entry."},"evidence_confidence":{"score":null,"label":"not_assessed","validation_age_hours":1.93,"live_check_count":8,"basis":{"evidence_bearing_validations":0,"affirmative_live_check_count":8,"validation_age_hours":1.93,"freshness_threshold_hours":24}},"active_alerts":[],"active_alert_summary":{"critical":0,"high":0,"medium":0,"low":0,"high_or_critical":0,"total":0},"materialization":{"state":"partial","trust_core_complete":true,"fields_unavailable":["tool_security_inventory","security_posture_summary","write_action_governance","capability_taxonomy","remediations"],"materialized_at":"2026-09-12T08:54:57.225869+00:00"}},"trust_snapshot":{"schema_version":"verify.trust_snapshot.v1","snapshot_id":"trustsnap_d905a75eacf33687","generated_at":"2026-09-12T08:54:57.225869+00:00","trust_evaluated_at":"2026-09-12T08:54:57.225869+00:00","evidence_revision":"25daa8b97b5975690ce640eb","source":"current_snapshot","server":"github-alex-odoo/myfinance-mcp","last_validated_at":"2026-09-12T06:59:19.483848+00:00","validation_age_hours":1.93,"freshness":{"schema_version":"verify.freshness_profile.v1","last_validated_at":"2026-09-12T06:59:19.483848+00:00","age_hours":1.93,"bucket":"verified_last_24h","label":"Verified in last 24h","badges":["verified_last_24h"],"freshness_sla_hours":720.0,"freshness_sla_status":"met","stale_score_suppressed":false,"display_score":null,"raw_score":null,"confidence_score":null,"confidence_weighted_score":null,"tier_status":[{"tier":"community","label":"Community","freshness_sla_hours":720,"met":true,"priority_revalidation":false},{"tier":"pro","label":"Pro","freshness_sla_hours":168,"met":true,"priority_revalidation":true},{"tier":"enterprise","label":"Enterprise","freshness_sla_hours":24,"met":true,"priority_revalidation":true}]},"current_status":"unverified","current_score":null,"display_score":null,"stale_score_suppressed":false,"production_trust_decision":{"schema_version":"verify.executive_verdict.v1","decision":"Not assessed","why":"tool surface has not been observed by any completed validation run","next_action":"revalidate so the tool surface can be inspected before a production decision is made","reason_count":0},"production_readiness_class":{"code":"metadata_only","label":"Metadata only","reason":"No live validation evidence exists yet for this entry."},"evidence_confidence":{"score":null,"label":"not_assessed","validation_age_hours":1.93,"live_check_count":8,"basis":{"evidence_bearing_validations":0,"affirmative_live_check_count":8,"validation_age_hours":1.93,"freshness_threshold_hours":24}},"active_alerts":[],"active_alert_summary":{"critical":0,"high":0,"medium":0,"low":0,"high_or_critical":0,"total":0},"materialization":{"state":"partial","trust_core_complete":true,"fields_unavailable":["tool_security_inventory","security_posture_summary","write_action_governance","capability_taxonomy","remediations"],"materialized_at":"2026-09-12T08:54:57.225869+00:00"}},"partial":true,"fields_unavailable":["tool_security_inventory","security_posture_summary","write_action_governance","capability_taxonomy","remediations"],"snapshot_invariant":{"schema_version":"verify.snapshot_invariant.v1","server":"github-alex-odoo/myfinance-mcp","ok":true,"surface_snapshot_ids":{"page":"trustsnap_d905a75eacf33687","badge":null,"report":"trustsnap_d905a75eacf33687","policy":null},"checked_surfaces":["page","report"],"unchecked_surfaces":["badge","policy"],"checked_count_surfaces":[],"count_mismatches":{},"checked_at":"2026-09-12T08:54:57.217645+00:00"},"history":{},"production_readiness":{"code":"metadata_only","label":"Metadata only","reason":"No live validation evidence exists yet for this entry.","badge":"score-low"},"agent_commerce_readiness":{},"evidence_confidence":{"score":null,"label":"not_assessed","reason":"No evidence-bearing validation runs exist yet (8 captured checks, validation age 1.9 hours). Confidence cannot be computed.","live_check_count":8,"validation_age_hours":1.93,"basis":{"evidence_bearing_validations":0,"affirmative_live_check_count":8,"validation_age_hours":1.93,"freshness_threshold_hours":24}},"recommended_for":[],"active_alerts":[],"remediations":[],"cache_note":"Fast fallback response; full report evidence is deferred to protect web capacity. Fields listed in fields_unavailable (including tool_security_inventory, and write_action_governance) are not yet computed on this response -- an empty value means unchecked, not confirmed clean. Treat partial responses as indeterminate.","publisher_claim":{"verified":false,"status":"unclaimed","claim_url":"https://verify.sentinelsignal.io/claim?server=github-alex-odoo%2Fmyfinance-mcp&source=report_json","reason_code":"claim_to_publish_metadata","reason":"Claim this profile to verify publisher identity, add evidence, and manage trust metadata.","score_neutral":true},"observed_attention":{"schema":"verify.observed_attention.v1","window_days":30,"level":"none","label":"No observed attention","summary":"No recent machine-readable trust or discovery activity observed for this server.","segments":{"useful_ai_user":{"level":"none","observed":false,"description":"AI-assisted user sessions such as ChatGPT/User or Claude/User."},"machine_trust_evaluator":{"level":"none","observed":false,"description":"Synthetic sessions inspecting multiple trust surfaces such as report, policy, ledger, badge, trust-summary, or compare."},"possible_agent_or_script":{"level":"none","observed":false,"description":"Structured direct sessions with rapid profile, compare, report, policy, badge, or trust-surface fan-out."},"isolated_machine_surface":{"level":"none","observed":false,"description":"Aged-out direct synthetic singleton sessions that touched a machine-readable trust surface without becoming a broader evaluator."},"ai_crawler":{"level":"none","observed":false,"description":"Known AI crawler activity such as ClaudeBot, GPTBot, or similar crawlers."},"search_crawler":{"level":"none","observed":false,"description":"Search and SEO crawler activity."},"browser_like_automation":{"level":"none","observed":false,"description":"Browser-like synthetic sessions with rapid structured endpoint activity."},"confirmed_human":{"level":"none","observed":false,"description":"Confirmed browser-session human activity."}},"surfaces_observed":{"server_profile":false,"compare":false,"compare_json":false,"compare_api":false,"report_json":false,"policy":false,"ledger":false,"badge_metadata":false,"badge_svg":false,"trust_summary":false,"mcp_tool":false},"claim_prompt":{"recommended":false,"reason":"No claim prompt is recommended from observed attention in the current window."},"notes":["Observed attention is based on segmented first-party telemetry.","Crawler and evaluator activity is not treated as confirmed human demand.","Public levels are bucketed to avoid exposing raw traffic counts."]},"owner_activation":{"claim_recommended":false,"reason":"no_observed_attention"},"related_machine_surfaces":{"compare_index":"/compare.json","compare_api":"/v1/compare?server=github-alex-odoo%2Fmyfinance-mcp","trust_summary":"/v1/servers/github-alex-odoo/myfinance-mcp/trust-summary","ledger":"/v1/servers/github-alex-odoo/myfinance-mcp/ledger","policy":"/v1/servers/github-alex-odoo/myfinance-mcp/policy","report":"/v1/servers/github-alex-odoo/myfinance-mcp/report"},"intelligence_api":{"available":true,"signup_url":"https://verify.sentinelsignal.io/verify-intelligence-api","use_case":"Programmatic MCP server trust, comparison, policy, and evidence enrichment."},"trust_evaluated_at":"2026-09-12T08:54:57.225869+00:00","evidence_revision":"25daa8b97b5975690ce640eb","active_alert_summary":{"critical":0,"high":0,"medium":0,"low":0,"high_or_critical":0,"total":0},"materialization":{"state":"partial","trust_core_complete":true,"fields_unavailable":["tool_security_inventory","security_posture_summary","write_action_governance","capability_taxonomy","remediations"],"materialized_at":"2026-09-12T08:54:57.225869+00:00"}}