{"status":"ok","service":"openbooks-mcp","transport":"streamable-http","path":"/mcp","auth":true,"tools":57,"role":"AZ midterms fiscal intelligence — leads, never findings","legs":["budget","checkbook","ag_findings","campaign_overlap","spend_taxonomy","composites","parity","payee_evidence","payee_identity","payee_coverage","spending_lake"],"backend":"postgres","writable":false,"spend_mart_available":true,"spend_mart_path":"/opt/openbooks/warehouse_spend.duckdb","last_mart_build":"2026-07-20T23:14:35+00:00","warehouse_mtime":"2026-08-22T09:30:45+00:00","campaign_mart":{"available":true,"as_of":"2026-08-04T07:00:10+00:00","n_files":7},"fy_coverage":{"checkbook":{"first_fy":2016,"last_fy":2025},"ag_findings":{"first_fy":2016,"last_fy":2025},"budget_authorized":{"basis":"SB1847 FY2025-26 / FY2026-27 biennium (structured)","three_way_year":2025,"note":"Pre-FY2025 is honest two-way (checkbook ↔ AG) only"},"spend_taxonomy_mart":{"first_fy":2016,"last_fy":2025,"available":true}},"started_at":"2026-11-02T06:34:25.203291+00:00","uptime_s":1645.6,"version":"1.0.0","code_ask_mtime":"2026-11-02T06:32:37.342160+00:00","disclaimer":"Leads only — never findings of wrongdoing. Cash-basis checkbook ≠ GAAP; ACFR governs. Variance is directional (authorized vs prior-year actual), not overspend. Campaign (L5) is adjacency only.","allowed_hosts_sample":["127.0.0.1","127.0.0.1:*","127.0.0.1:8766","134.209.68.173","134.209.68.173:*","134.209.68.173:8766","[::1]","[::1]:*","[::1]:8766","localhost","localhost:*","localhost:8766"],"allowed_hosts_n":15,"db_privileges":{"engine":"postgres","probed":true,"python_writable":false,"role":"openbooks_mcp_ro","superuser":false,"can_write":false,"write_table_n":0,"write_tables_sample":[],"least_privilege":true,"note":"SELECT-only role"},"least_privilege":{"enabled":true,"role":"openbooks_mcp_ro","applied":true,"reason":"ok","note":"Session SET ROLE to a SELECT-only role; dashboard-owner grants untouched. Empty/0 disables. Verified against current_user; fail closed on mismatch."},"http_guard":{"rate_limit":120,"window_s":60.0,"enabled":true,"health_exempt":true,"key":"client_ip","note":"429 on /mcp when a client IP exceeds the window; Bearer tokens never logged"},"query_budget":{"statement_timeout_ms":15000,"tool_timeout_s":30.0,"max_body_bytes":65536,"max_result_bytes":524288,"statement_timeout_applied":true,"statement_timeout_reason":"ok","note":"Postgres session statement_timeout + tool wall-clock + HTTP body/result caps; 0 disables a control. Not GRANT least-privilege."},"latency":{"enabled":true,"window_n":256,"sample_n":4,"p50_ms":26.521,"p95_ms":175.272,"max_ms":175.272,"ok_n":4,"error_n":0,"in_flight":0,"peak_in_flight":1,"by_tool":{"investigate":{"n":1,"p50_ms":2.442,"p95_ms":2.442},"spend":{"n":2,"p50_ms":10.804,"p95_ms":175.272},"lake_years":{"n":1,"p50_ms":26.521,"p95_ms":26.521}},"note":"In-process tool wall-clock over last N samples. No args, token, or DSN. Local load probe only — not a public SLA."},"schema_contract":{"policy":"additive_v1","compatible_change":"add keys","breaking_change":"drop a required key or mint a new schema id","dual_read_v2":false,"schemas":[{"id":"openbooks.mcp_envelope.v1","family":"openbooks.mcp_envelope","version":1,"required":["ok","tool","data","truncated","as_of","disclaimer"],"required_n":6},{"id":"openbooks.payee_evidence.v1","family":"openbooks.payee_evidence","version":1,"required":["schema","snapshot_hash","window","basis","disclaimer"],"required_n":5,"success_by_tool":{"payee_search":["schema","snapshot_hash","window","basis","disclaimer","q","match","n","has_more","names"],"payee_observations":["schema","snapshot_hash","window","basis","disclaimer","name","observations","identity_coverage"],"payee_entries":["schema","snapshot_hash","window","basis","disclaimer","name","entries","has_more","next_cursor","reconciled_to_atlas"]}},{"id":"openbooks.payee_identity.v1","family":"openbooks.payee_identity","version":1,"required":["schema","catalog","coverage","disclaimer"],"required_n":4},{"id":"openbooks.payee_coverage.v1","family":"openbooks.payee_coverage","version":1,"required":["schema","extraction_window","missing_row_level_fiscal_years","official_gaps","stale","never_invent","gate3_complete","disclaimer"],"required_n":8}],"note":"Local peer contract freeze. Extra keys allowed. Not a public endpoint, Funnel, or WCAG claim."},"stale_data":{"enabled":true,"stale":true,"freshness_complete":false,"reason_codes":["missing_row_level_fy","atlas_window_ended"],"atlas_window_end":"2025-09-16","atlas_last_fy":2025,"warehouse_last_fy":2025,"warehouse_ahead_of_atlas":false,"missing_row_level_fiscal_years":[2026],"never_treat_as_live_portal":true,"never_infer_missing_fy":true,"note":"Atlas snapshot is not live portal cash. Missing row-level years are gaps, never inferred from fund totals. Local freshness flags only — not a public endpoint."},"golden_cross_backend":{"policy":"cross_backend_v1","compared_at_health":false,"dual_backend_required_for_sota":true,"never_treat_single_backend_as_parity":true,"case_n":6,"case_ids":["empty_q_refused","privacy_redacted_no_dump","exact_label_search","entries_cursor_page","identity_coverage_counts","coverage_stale_flags"],"comparable_entry_keys":["schema","snapshot_hash","name","atlas_n_rows","atlas_signed_usd","warehouse_n_rows","warehouse_signed_usd","reconciled_to_atlas","privacy_suppressed","has_more","page_n","row_keys","record_numbers","fiscal_years","amounts","next_cursor"],"schemas":["openbooks.payee_evidence.v1","openbooks.payee_identity.v1","openbooks.payee_coverage.v1"]},"adversarial_privacy":{"policy":"adversarial_privacy_v1","compared_at_health":false,"never_upgrade_identity":true,"fail_closed_on_alias":true,"case_n":8,"case_ids":["zwsp_inside_redact","fullwidth_redact","nbsp_placeholder","cyrillic_homoglyph_redact","format_only_query_refused","html_wrapper_still_redacted","redacted_search_hit_no_vendor_id","folded_alias_no_entry_dump"],"fold":"nfkc_strip_cf_confusable_collapse_upper"}}