{"schema_version":"verify.compare.v1","generated_at":"2026-08-15T05:34:33.684581+00:00","count":1,"missing_servers":[],"results":[{"server_id":"ICS-cz/claribi-mcp","display_name":"clariBIcom","profile_url":"https://verify.sentinelsignal.io/servers/ICS-cz/claribi-mcp","compare_url":"https://verify.sentinelsignal.io/compare?server=ICS-cz%2Fclaribi-mcp","trust_summary_url":"https://verify.sentinelsignal.io/v1/servers/ICS-cz/claribi-mcp/trust-summary","claimed":false,"verified_publisher":false,"claim_status":"unclaimed","badge_url":"https://verify.sentinelsignal.io/badge/ICS-cz/claribi-mcp.svg","report_url":"https://verify.sentinelsignal.io/v1/servers/ICS-cz/claribi-mcp/report","policy_url":"https://verify.sentinelsignal.io/v1/servers/ICS-cz/claribi-mcp/policy","evidence_url":"https://verify.sentinelsignal.io/api/v1/servers/ICS-cz/claribi-mcp/evidence","commerce_signal":null,"payment_capable":null,"delegation_level":null,"risk_flags":[],"strengths":["report_available","policy_available","badge_available"],"limitations":["unclaimed_profile","publisher_not_verified"],"last_seen":null,"last_scored":"2026-08-15T03:56:56.818686+00:00","recommended_agent_action":"allow_with_policy_review","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"}}],"servers":[{"namespace":"ICS-cz","name":"claribi-mcp","title":"clariBIcom","description":"clariBI is an AI-powered business intelligence platform that lets SaaS and ecommerce teams ask plain-English questions across Stripe, HubSpot, Google Analytics, ad platforms, and 30+ other sources. The AI engine picks the right visualization from 24 chart types and generates dashboards automatically.","homepage_url":"https://glama.ai/mcp/servers/x17aszv4v1","docs_url":null,"icon_url":null,"support_url":"https://github.com/ICS-cz/claribi-mcp","remote_url":"https://claribi.com/mcp/v1/","server_card_url":null,"latest_version":null,"current_status":"healthy","current_score":58.33,"transport_type":"streamable-http","has_oauth":false,"has_dcr":false,"has_prompts":false,"tool_count":26,"current_validation_schema_version":"8058defc70ca932c","last_validated_at":"2026-08-15T03:56:56.818686+00:00","registry_source":"glama_registry","registry_identifier":"glama_registry:x17aszv4v1","canonical_identifier":null,"current_score_components":{"auth_operability_score":2.0,"error_contract_score":0.0,"rate_limit_semantics_score":2.0,"schema_completeness_score":3.0,"backward_compatibility_score":4.0,"slo_health_score":3.0,"security_hygiene_score":3.0,"task_success_score":4.0,"trust_confidence_score":4.0,"abuse_noise_ratio_score":4.0,"prompt_contract_score":2.0,"resource_contract_score":2.0,"discovery_metadata_score":2.0,"registry_consistency_score":2.0,"installability_score":4.0,"session_semantics_score":4.0,"tool_surface_design_score":4.0,"result_shape_stability_score":4.0,"oauth_interop_score":0.0,"recovery_semantics_score":0.0,"maintenance_signal_score":3.0,"adoption_signal_score":2.0,"freshness_confidence_score":4.0,"transport_fidelity_score":4.0,"spec_recency_score":2.0,"session_resume_score":3.0,"step_up_auth_score":0.0,"transport_compliance_score":0.0,"utility_coverage_score":0.0,"advanced_capability_coverage_score":1.0,"connector_publishability_score":1.0,"tool_snapshot_churn_score":4.0,"connector_replay_score":4.0,"request_association_score":0.0,"interactive_flow_safety_score":4.0,"action_safety_score":1.0,"official_registry_presence_score":2.0,"safety_transparency_score":2.0,"tool_capability_clarity_score":4.0,"destructive_operation_safety_score":3.0,"egress_ssrf_resilience_score":1.0,"execution_sandbox_safety_score":1.0,"data_exfiltration_resilience_score":3.0,"least_privilege_scope_score":1.0,"secret_handling_hygiene_score":2.0,"dependency_supply_chain_signal_score":0.0,"input_sanitization_safety_score":3.0,"tool_namespace_clarity_score":4.0},"capability_taxonomy":[],"machine_summary":{},"taxonomy_tags":[],"score_decomposition":[],"validation_diff":null,"tool_snapshot_diff":null,"connector_replay":{},"request_association":{},"production_readiness":{"code":"needs_remediation","label":"Needs remediation","reason":"Current validation evidence shows operational or discovery gaps that should be fixed first.","badge":"score-low","critical_alerts":0,"high_or_critical_alerts":0,"degraded_by_active_alerts":false},"recommended_for":[],"history_summary":{},"validation_timeline":[],"evidence_confidence":{"score":100.0,"label":"high","reason":"Based on 20 recent validations, 14 captured checks, and validation age of 1.6 hours.","live_check_count":14,"validation_age_hours":1.63,"basis":{"evidence_bearing_validations":20,"affirmative_live_check_count":14,"validation_age_hours":1.63,"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":326.56,"details":{"url":"https://claribi.com/robots.txt","http_status":200,"headers":{"content-type":"text/plain","strict-transport-security":"max-age=63072000"},"validation_disallowed":false,"consent_error":null}},"server_card":{"status":"error","latency_ms":118.2,"details":{"url":"https://claribi.com/.well-known/mcp/server-card.json","error":"Client error '404 Not Found' for url 'https://claribi.com/.well-known/mcp/server-card.json'\nFor more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/404"}},"oauth_protected_resource":{"status":"error","latency_ms":323.86,"details":{"url":"https://claribi.com/.well-known/oauth-protected-resource","error":"Client error '404 Not Found' for url 'https://claribi.com/.well-known/oauth-protected-resource'\nFor more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/404"}},"oauth_authorization_server":{"status":"missing","latency_ms":null,"details":{"reason":"no_authorization_server"}},"openid_configuration":{"status":"missing","latency_ms":null,"details":{"reason":"no_authorization_server"}},"initialize":{"status":"ok","latency_ms":281.15,"details":{"url":"https://claribi.com/mcp/v1/","payload":{"jsonrpc":"2.0","id":1,"result":{"protocolVersion":"2025-03-26","serverInfo":{"name":"clariBI MCP Server","version":"1.0.0","title":"clariBI","websiteUrl":"https://claribi.com/docs/mcp/overview","icons":[{"src":"https://claribi.com/images/og/feature-integrations.png","mimeType":"image/png","sizes":["1200x630"]}]},"capabilities":{"tools":{"listChanged":false},"resources":{"subscribe":false,"listChanged":false},"prompts":{"listChanged":false}},"instructions":"clariBI MCP Server: analytics for your business data. Unauthenticated users can call register_account, verify_email, and check_pricing. Authenticated users can list dashboards, run analyses, and generate reports. See https://claribi.com/app/developer-portal for docs."}},"http_status":200,"headers":{"content-type":"application/json; charset=utf-8","strict-transport-security":"max-age=31536000; includeSubDomains, max-age=63072000","x-ratelimit-limit":"100","x-ratelimit-remaining":"97","x-ratelimit-reset":"1786766215"}}},"protocol_version_probe":{"status":"warning","latency_ms":null,"details":{"claimed_version":"2025-03-26","validator_protocol_version":"2025-03-26","latest_known_version":"2025-11-25","releases_behind":2,"lag_days":244}},"tools_list":{"status":"ok","latency_ms":116.65,"details":{"url":"https://claribi.com/mcp/v1/","payload":{"jsonrpc":"2.0","id":2,"result":{"tools":[{"name":"check_integration_status","description":"Poll an OAuth handoff initiated by request_oauth_integration_url. Returns the current status (pending, connected, failed, expired) and, when connected, the data_source_id you can pass to run_analysis.","inputSchema":{"type":"object","required":["handoff_id"],"properties":{"handoff_id":{"type":"string","format":"uuid","description":"The id returned by request_oauth_integration_url."}},"additionalProperties":false},"outputSchema":{"type":"object","properties":{"handoff_id":{"type":"string","format":"uuid"},"provider":{"type":"string"},"integration_type":{"type":"string"},"status":{"type":"string","description":"One of pending, connected, failed, expired."},"created_at":{"type":["string","null"],"format":"date-time"},"completed_at":{"type":["string","null"],"format":"date-time"},"data_source_id":{"type":["string","null"],"description":"The created data source, present once status is \"connected\"."},"connection_id":{"type":["string","null"]},"error":{"type":["string","null"],"description":"Failure reason when status is \"failed\"."}},"required":["handoff_id","provider","integration_type","status"]},"annotations":{"readOnlyHint":true,"idempotentHint":true,"openWorldHint":false}},{"name":"check_pricing","description":"List clariBI subscription tiers with prices, AI credits, data source limits, user limits, and headline features. No authentication required.","inputSchema":{"type":"object","properties":{"tier":{"type":"string","description":"Optional. Return only this tier (free, trial, lite, starter, professional, enterprise)."}},"additionalProperties":false},"outputSchema":{"type":"object","properties":{"currency":{"type":"string","description":"ISO currency code, always \"USD\"."},"tiers":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string","description":"Display name of the tier."},"price_monthly_usd":{"type":"number"},"price_yearly_usd":{"type":"number"},"ai_credits":{"type":"integer"},"data_sources":{"type":"integer"},"max_users":{"type":"integer"},"storage_gb":{"type":"number"},"duration_days":{"type":"integer","description":"Trial length in days; 0 for paid tiers."},"headline_features":{"type":"array","items":{"type":"string"}}},"required":["id","name","price_monthly_usd","price_yearly_usd"]}},"billing_url":{"type":"string","format":"uri"}},"required":["currency","tiers","billing_url"]},"annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":true}},{"name":"create_checkout_session","description":"Create a Stripe Checkout URL the user can open in a browser to upgrade their clariBI subscription. Payment cannot happen inside the LLM; this tool returns a URL.","inputSchema":{"type":"object","required":["tier"],"properties":{"tier":{"type":"string","enum":["starter","professional","enterprise"],"description":"Target subscription tier."},"billing_period":{"type":"string","enum":["monthly","yearly"],"default":"monthly","description":"Billing cadence for the checkout. Defaults to monthly."}},"additionalProperties":false},"outputSchema":{"type":"object","properties":{"checkout_url":{"type":"string","format":"uri","description":"Stripe Checkout URL. Open in a browser to complete payment."},"session_id":{"type":"string","description":"Stripe Checkout Session id."},"tier":{"type":"string"},"billing_period":{"type":"string","description":"monthly or yearly."}},"required":["checkout_url","session_id","tier","billing_period"]},"annotations":{"readOnlyHint":false,"idempotentHint":false,"destructiveHint":false,"openWorldHint":true}},{"name":"create_forecast","description":"Bind a forecast to a metric in your workspace. Stores the configuration, sets up the schedule, and resolves the source binding immediately so a bad source_id or metric_path errors out before any credits are spent. Run the forecast with run_forecast.","inputSchema":{"type":"object","required":["name","source_type","source_id","metric_path"],"properties":{"name":{"type":"string","minLength":1,"maxLength":255},"description":{"type":"string","maxLength":5000},"source_type":{"type":"string","enum":["report","dashboard","goal","data_source"],"description":"Which clariBI artifact the metric lives on. Most callers should start with data_source for raw connector metrics or goal to forecast a tracked KPI."},"source_id":{"type":"string","description":"UUID of the report, dashboard, goal, or data source."},"metric_path":{"type":"string","description":"Dot-path to the numeric column. For data_source: the metric key (e.g. \"revenue\"). For goal: \"value\" or \"percentage\". For report: the path inside the insights JSON. For dashboard: \"widget_id:metric_name\"."},"granularity":{"type":"string","enum":["hourly","daily","weekly","monthly","quarterly","annual"],"default":"daily","description":"Bucket size for the time series. Hourly requires an hourly data source; the engine refuses to fabricate hourly buckets from daily data."},"horizon_days":{"type":"integer","minimum":1,"maximum":168,"default":30,"description":"How many BUCKETS ahead to project. The per-granularity cap applies: hourly 168, daily 90, weekly 52, monthly 24, quarterly 8, annual 5. The field name is \"_days\" for backwards compatibility — it counts buckets of the chosen granularity."},"include_correlations":{"type":"boolean","default":true},"include_anomalies":{"type":"boolean","default":true},"include_changepoints":{"type":"boolean","default":true},"narration_enabled":{"type":"boolean","default":true,"description":"When true, every completed run gets an AI-generated narrative attached (summary, highlights, risks, recommendations, methodology). Costs 1-2 extra AI credits per run."},"aggregation":{"type":"string","enum":["auto","sum","mean","last","max"],"default":"auto","description":"How multiple raw points falling into the same bucket are combined. Auto picks sum for additive metrics, mean otherwise. Use Mean for rates (CTR, conversion, latency)."},"transform":{"type":"string","enum":["auto","none","log"],"default":"auto","description":"Series transform applied before fitting. Log helps revenue/traffic series with growing variance. Auto detects when log is beneficial; none forces raw scale."},"non_negative":{"type":"boolean","description":"When true, point + lower band clamped at zero. Omit to let the engine heuristic decide (via non_negative_auto=true)."},"non_negative_auto":{"type":"boolean","default":true,"description":"When true (default), the backend heuristic owns non_negative and re-evaluates per run based on the metric path. Set false alongside non_negative to lock the choice."},"method_override":{"type":"string","maxLength":40,"description":"Force a specific forecasting method instead of auto-selecting via walk-forward CV. Valid names: naive, seasonal_naive, moving_average, drift, linear_trend, ar_p, holt_winters, holt_winters_multiplicative, holt_winters_damped, theta, gradient_boost, ensemble_top3. Empty = auto."},"schedule_frequency":{"type":"string","enum":["daily","weekly","monthly","manual"],"default":"monthly","description":"How often the forecast re-runs. Manual schedules only run when called explicitly via run_forecast."},"schedule_day_of_week":{"type":"integer","minimum":0,"maximum":6},"schedule_day_of_month":{"type":"integer","minimum":1,"maximum":31}},"additionalProperties":false},"outputSchema":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string"},"metric_label":{"type":"string"},"horizon_days":{"type":"integer"},"granularity":{"type":"string"},"schedule_frequency":{"type":"string"},"next_run_at":{"type":["string","null"],"format":"date-time"},"web_url":{"type":"string","format":"uri"}},"required":["id","name","horizon_days","web_url"]},"annotations":{"readOnlyHint":false,"idempotentHint":false,"destructiveHint":false,"openWorldHint":false}},{"name":"generate_report","description":"Create a new generated report in your clariBI organization. Returns the report id you can poll via get_report, plus a download URL once status reaches \"completed\".","inputSchema":{"type":"object","required":["title"],"properties":{"title":{"type":"string","minLength":2,"maxLength":200,"description":"Display title for the generated report."},"template_id":{"type":"string","description":"Optional registry ID of the marketplace template to render. If omitted, an empty report shell is created and you can attach a template later from the web app."},"output_format":{"type":"string","enum":["json","pdf","html","excel","csv"],"default":"pdf","description":"Output format. Must match one of ``GeneratedReport.OUTPUT_FORMATS``."}},"additionalProperties":false},"outputSchema":{"type":"object","properties":{"report_id":{"type":"string","format":"uuid"},"status":{"type":"string","description":"Initial status, normally \"pending\". Poll get_report for progress."},"web_url":{"type":"string","format":"uri"}},"required":["report_id","status","web_url"]},"annotations":{"readOnlyHint":false,"idempotentHint":false,"destructiveHint":false,"openWorldHint":false}},{"name":"get_analysis_status","description":"Check the status of a previously-dispatched run_analysis job. Returns the analysis result if completed.","inputSchema":{"type":"object","required":["job_id"],"properties":{"job_id":{"type":"string","format":"uuid","description":"job_id returned by a prior run_analysis call."}},"additionalProperties":false},"outputSchema":{"type":"object","properties":{"job_id":{"type":"string","format":"uuid"},"status":{"type":"string"},"current_step":{"type":"string"},"progress":{"type":"number","description":"Completion fraction or percentage reported by the job."},"result":{"type":"object","description":"Analysis envelope. Present when status is \"completed\"."},"error":{"type":"string","description":"Failure reason. Present when status is \"failed\"."}},"required":["job_id","status","current_step","progress"]},"annotations":{"readOnlyHint":true,"idempotentHint":true,"openWorldHint":false}},{"name":"get_billing_status","description":"Get the organization's billing status — tier, renewal date, and upgrade options.","inputSchema":{"type":"object","properties":{},"additionalProperties":false},"outputSchema":{"type":"object","properties":{"subscription_tier":{"type":"string"},"subscription_status":{"type":"string"},"price_monthly_usd":{"type":"number"},"price_yearly_usd":{"type":"number"},"trial_ends_at":{"type":["string","null"],"format":"date-time"},"billing_url":{"type":"string","format":"uri"}},"required":["subscription_tier","subscription_status","price_monthly_usd","price_yearly_usd","billing_url"]},"annotations":{"readOnlyHint":true,"idempotentHint":true,"openWorldHint":false}},{"name":"get_dashboard","description":"Fetch one dashboard by ID. Includes widget definitions, the most recent refresh data, and the web URL.","inputSchema":{"type":"object","required":["dashboard_id"],"properties":{"dashboard_id":{"type":"string","format":"uuid","description":"UUID of the dashboard to fetch."}},"additionalProperties":false},"outputSchema":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string"},"status":{"type":"string","description":"Dashboard lifecycle status."},"created_at":{"type":["string","null"],"format":"date-time"},"updated_at":{"type":["string","null"],"format":"date-time"},"last_refresh":{"type":["string","null"],"format":"date-time"},"web_url":{"type":"string","format":"uri"},"is_public":{"type":"boolean"},"description":{"type":"string"},"configuration":{"type":"object","description":"Dashboard layout and widget configuration."},"analysis_metadata":{"type":"object","description":"AnalysisEngine envelope captured when the dashboard was created."}},"required":["id","name","status","web_url","is_public"]},"annotations":{"readOnlyHint":true,"idempotentHint":true,"openWorldHint":false}},{"name":"get_data_source_schema","description":"Fetch the column schema for a data source. Useful before asking run_analysis about specific columns. The schema is derived from the preprocessing metadata clariBI extracted when the source was last synced. Poll this after upload_data_source / ingest_url_data_source until the returned status flips to \"active\" — that means preprocessing has finished and run_analysis will see the data.","inputSchema":{"type":"object","required":["data_source_id"],"properties":{"data_source_id":{"type":"string","format":"uuid","description":"UUID of the data source to fetch the schema for."}},"additionalProperties":false},"outputSchema":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string"},"source_type":{"type":"string"},"status":{"type":"string"},"schema":{"type":"object","description":"Schema-shaped fields the preprocessing pipeline wrote into the source metadata (columns, column_types, sample_rows, row_count, ...). Empty until preprocessing has run or for source types with no column inventory."},"last_sync_at":{"type":["string","null"],"format":"date-time"}},"required":["id","name","source_type","status","schema"]},"annotations":{"readOnlyHint":true,"idempotentHint":true,"openWorldHint":false}},{"name":"get_forecast","description":"Fetch one forecast configuration by ID.","inputSchema":{"type":"object","required":["forecast_id"],"properties":{"forecast_id":{"type":"string","format":"uuid","description":"UUID of the forecast to fetch."}},"additionalProperties":false},"outputSchema":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string"},"source_type":{"type":"string","description":"One of: report, dashboard, goal, data_source."},"source_id":{"type":"string"},"metric_path":{"type":"string"},"metric_label":{"type":"string"},"granularity":{"type":"string","description":"One of: hourly, daily, weekly, monthly, quarterly, annual."},"horizon_days":{"type":"integer"},"is_active":{"type":"boolean"},"created_at":{"type":["string","null"],"format":"date-time"},"web_url":{"type":"string","format":"uri"},"schedule_frequency":{"type":["string","null"],"description":"daily, weekly, monthly, or manual."},"next_run_at":{"type":["string","null"],"format":"date-time"},"latest_run_status":{"type":["string","null"],"description":"pending, running, completed, failed, refunded."},"latest_run_id":{"type":["string","null"],"format":"uuid"},"narration_enabled":{"type":"boolean"},"aggregation":{"type":"string","description":"auto / sum / mean / last / max"},"transform":{"type":"string","description":"auto / none / log"},"non_negative":{"type":"boolean"},"non_negative_auto":{"type":"boolean"},"method_override":{"type":"string"},"description":{"type":"string"},"include_correlations":{"type":"boolean"},"include_anomalies":{"type":"boolean"},"include_changepoints":{"type":"boolean"},"updated_at":{"type":["string","null"],"format":"date-time"}},"required":["id","name","source_type","metric_path","horizon_days","web_url"]},"annotations":{"readOnlyHint":true,"idempotentHint":true,"openWorldHint":false}},{"name":"get_forecast_run","description":"Fetch one run of a forecast by ID, or pass run_id=\"latest\" for the most recent run. Returns the full forecast envelope: target series + 30-day projection, correlated drivers (with lag and bootstrap stability), anomalies, structural changes, and credit accounting.","inputSchema":{"type":"object","required":["forecast_id","run_id"],"properties":{"forecast_id":{"type":"string","format":"uuid"},"run_id":{"type":"string","format":"uuid","description":"UUID of the run. Pass 'latest' to fetch the most recent run for the forecast."}},"additionalProperties":false},"outputSchema":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"forecast_id":{"type":"string","format":"uuid"},"status":{"type":"string"},"trigger":{"type":"string"},"credits_consumed":{"type":"integer"},"credits_refunded":{"type":"integer"},"duration_ms":{"type":"integer"},"created_at":{"type":["string","null"],"format":"date-time"},"completed_at":{"type":["string","null"],"format":"date-time"},"error_message":{"type":"string"},"result":{"type":"object","description":"Forecast envelope. Contains keys: target, correlations, anomalies, changepoints, meta, and (when narration ran) narration. `target` carries lower/upper plus calibrated lower_50/upper_50, lower_80/upper_80, lower_95/upper_95 bands, the winning method, exogenous_driver when a leading-indicator was used, ensemble_components when the ensemble method won, transform applied, and non_negative flag. See docs/MCP_SERVER.md for the shape."},"narration":{"type":["object","null"],"description":"Peer of result.narration for convenience. Null when the run pre-dates narration OR was gated out (insufficient credits, org disabled, etc.)."}},"required":["id","forecast_id","status"]},"annotations":{"readOnlyHint":true,"idempotentHint":true,"openWorldHint":false}},{"name":"get_forecast_trust","description":"Returns per-past-run accuracy for a forecast. Each row compares a prior run's projection against the actuals that have materialized since. Use this to see whether your forecasts have been getting MORE or LESS accurate over time, or to spot when a backtest sMAPE was systematically optimistic vs. realised performance.","inputSchema":{"type":"object","required":["forecast_id"],"properties":{"forecast_id":{"type":"string","format":"uuid"}},"additionalProperties":false},"outputSchema":{"type":"object","properties":{"runs":{"type":"array","description":"Per-past-run accuracy ordered oldest-first. Each row compares one prior run's forecast against actuals that have since materialized.","items":{"type":"object","properties":{"run_id":{"type":"string","format":"uuid"},"created_at":{"type":["string","null"],"format":"date-time"},"method":{"type":["string","null"]},"horizon":{"type":"integer"},"observed_count":{"type":"integer","description":"How many of the forecast points now have an actual observation to compare against."},"smape_actual":{"type":"number","description":"sMAPE between the run's forecast and what actually happened. Lower is better; [0, 200]."},"smape_backtest":{"type":"number","description":"The run's own backtest sMAPE at the time it was generated. Compare against actual to spot drift over time."}}}}},"required":["runs"]},"annotations":{"readOnlyHint":true,"idempotentHint":true,"openWorldHint":false}},{"name":"get_report","description":"Fetch one generated report by ID.","inputSchema":{"type":"object","required":["report_id"],"properties":{"report_id":{"type":"string","format":"uuid","description":"UUID of the report to fetch."}},"additionalProperties":false},"outputSchema":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"title":{"type":"string"},"status":{"type":"string"},"output_format":{"type":"string"},"created_at":{"type":["string","null"],"format":"date-time"},"completed_at":{"type":["string","null"],"format":"date-time"},"web_url":{"type":"string","format":"uri"},"download_url":{"type":["string","null"],"description":"Present only once status is \"completed\"."},"description":{"type":"string"},"insights":{"type":"object","description":"Narrative insight blocks, when generated."},"data_quality_metrics":{"type":"object","description":"Per-source data-quality stats captured at generation time."},"report_period_start":{"type":["string","null"],"format":"date-time"},"report_period_end":{"type":["string","null"],"format":"date-time"},"output_file_path":{"type":"string"}},"required":["id","title","status","web_url"]},"annotations":{"readOnlyHint":true,"idempotentHint":true,"openWorldHint":false}},{"name":"get_usage","description":"Get the organization's current AI credit usage, data source count, user count, and rate-limit headroom.","inputSchema":{"type":"object","properties":{},"additionalProperties":false},"outputSchema":{"type":"object","properties":{"subscription_tier":{"type":"string"},"subscription_status":{"type":"string"},"ai_credits_used":{"type":"integer"},"ai_credits_limit":{"type":"integer"},"ai_credits_remaining":{"type":"integer"},"data_sources_used":{"type":"integer"},"data_sources_limit":{"type":"integer"},"storage_gb_limit":{"type":"number"},"max_users":{"type":"integer"},"trial_ends_at":{"type":["string","null"],"format":"date-time"}},"required":["subscription_tier","subscription_status","ai_credits_used","ai_credits_limit","ai_credits_remaining"]},"annotations":{"readOnlyHint":true,"idempotentHint":true,"openWorldHint":false}},{"name":"ingest_url_data_source","description":"Create a new data source by fetching a public URL on the server side. Handles CSV, TSV, JSON, Excel, TXT, and PDF. Private networks (RFC 1918, loopback, cloud metadata) are blocked. Returns the data_source_id once preprocessing has started. Use this for files larger than the 25 MB inline upload cap.","inputSchema":{"type":"object","required":["name","url"],"properties":{"name":{"type":"string","minLength":2,"maxLength":200,"description":"Display name for the new data source."},"url":{"type":"string","description":"Public http(s) URL of the file to ingest. The server fetches it once at call time; the URL is not re-fetched on subsequent analyses. Private networks (RFC 1918, loopback, link-local, cloud metadata) are blocked."},"format":{"type":"string","enum":["csv","tsv","json","xlsx","xls","txt","pdf"],"description":"Optional format hint. If omitted, the server infers it from the Content-Type header and URL extension."},"description":{"type":"string","maxLength":1000,"description":"Optional human note stored on the data source."},"wait_seconds":{"type":"integer","minimum":0,"maximum":60,"default":0,"description":"Seconds to block waiting for preprocessing before returning. 0 returns immediately."}},"additionalProperties":false},"outputSchema":{"type":"object","properties":{"data_source_id":{"type":"string","format":"uuid"},"raw_data_id":{"type":"string"},"name":{"type":"string"},"format":{"type":"string","description":"Detected file format (csv, json, xlsx, ...)."},"status":{"type":"string","description":"Preprocessing status. Poll get_data_source_schema until \"active\"."},"bytes_fetched":{"type":"integer"},"web_url":{"type":["string","null"],"format":"uri"}},"required":["data_source_id","raw_data_id","name","format","status","bytes_fetched"]},"annotations":{"readOnlyHint":false,"idempotentHint":false,"destructiveHint":false,"openWorldHint":true}},{"name":"list_dashboards","description":"List dashboards in your clariBI organization. Returns id, name, status, last refresh, and a URL you can open in a browser.","inputSchema":{"type":"object","properties":{"limit":{"type":"integer","minimum":1,"maximum":100,"default":20,"description":"Page size (1–100)."},"offset":{"type":"integer","minimum":0,"default":0,"description":"Row offset for pagination."},"search":{"type":"string","description":"Optional substring match against dashboard name."}},"additionalProperties":false},"outputSchema":{"type":"object","properties":{"total":{"type":"integer","description":"Total dashboards matching the query."},"offset":{"type":"integer"},"limit":{"type":"integer"},"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string"},"status":{"type":"string","description":"Dashboard lifecycle status."},"created_at":{"type":["string","null"],"format":"date-time"},"updated_at":{"type":["string","null"],"format":"date-time"},"last_refresh":{"type":["string","null"],"format":"date-time"},"web_url":{"type":"string","format":"uri"},"is_public":{"type":"boolean"}},"required":["id","name","status","web_url","is_public"]}}},"required":["total","offset","limit","items"]},"annotations":{"readOnlyHint":true,"idempotentHint":true,"openWorldHint":false}},{"name":"list_data_sources","description":"List the data sources connected to your clariBI organization. Returns id, name, source_type, status, last sync time, and the number of rows (when known).","inputSchema":{"type":"object","properties":{"limit":{"type":"integer","minimum":1,"maximum":100,"default":50,"description":"Page size (1-100)."},"offset":{"type":"integer","minimum":0,"default":0,"description":"Row offset for pagination."},"source_type":{"type":"string","description":"Filter by source_type (csv, postgresql, google_ads, meta_ads, jira, mcp, …)."}},"additionalProperties":false},"outputSchema":{"type":"object","properties":{"total":{"type":"integer","description":"Total data sources matching the query."},"offset":{"type":"integer"},"limit":{"type":"integer"},"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string"},"source_type":{"type":"string"},"status":{"type":"string","description":"Sync/preprocessing status."},"last_sync_at":{"type":["string","null"],"format":"date-time"},"row_count":{"type":["integer","null"],"description":"Row count when preprocessing recorded one, else null."},"created_at":{"type":["string","null"],"format":"date-time"}},"required":["id","name","source_type","status"]}}},"required":["total","offset","limit","items"]},"annotations":{"readOnlyHint":true,"idempotentHint":true,"openWorldHint":false}},{"name":"list_forecasts","description":"List metric forecasts in your clariBI organization. Each row covers one metric: its source binding, horizon, schedule, and the latest run status. Use get_forecast_run to fetch the full forecast result.","inputSchema":{"type":"object","properties":{"limit":{"type":"integer","minimum":1,"maximum":100,"default":20,"description":"Page size (1-100)."},"offset":{"type":"integer","minimum":0,"default":0,"description":"Row offset for pagination."},"is_active":{"type":"boolean","description":"Filter by active forecasts. Omit to include both active and paused."}},"additionalProperties":false},"outputSchema":{"type":"object","properties":{"total":{"type":"integer"},"offset":{"type":"integer"},"limit":{"type":"integer"},"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string"},"source_type":{"type":"string","description":"One of: report, dashboard, goal, data_source."},"source_id":{"type":"string"},"metric_path":{"type":"string"},"metric_label":{"type":"string"},"granularity":{"type":"string","description":"One of: hourly, daily, weekly, monthly, quarterly, annual."},"horizon_days":{"type":"integer"},"is_active":{"type":"boolean"},"created_at":{"type":["string","null"],"format":"date-time"},"web_url":{"type":"string","format":"uri"},"schedule_frequency":{"type":["string","null"],"description":"daily, weekly, monthly, or manual."},"next_run_at":{"type":["string","null"],"format":"date-time"},"latest_run_status":{"type":["string","null"],"description":"pending, running, completed, failed, refunded."},"latest_run_id":{"type":["string","null"],"format":"uuid"},"narration_enabled":{"type":"boolean"},"aggregation":{"type":"string","description":"auto / sum / mean / last / max"},"transform":{"type":"string","description":"auto / none / log"},"non_negative":{"type":"boolean"},"non_negative_auto":{"type":"boolean"},"method_override":{"type":"string"}},"required":["id","name","source_type","metric_path","horizon_days","web_url"]}}},"required":["total","offset","limit","items"]},"annotations":{"readOnlyHint":true,"idempotentHint":true,"openWorldHint":false}},{"name":"list_reports","description":"List generated reports in your clariBI organization. Returns id, title, status, output format, and download URL.","inputSchema":{"type":"object","properties":{"limit":{"type":"integer","minimum":1,"maximum":100,"default":20,"description":"Page size (1-100)."},"offset":{"type":"integer","minimum":0,"default":0,"description":"Row offset for pagination."},"status":{"type":"string","description":"Filter by status (pending, generating, completed, failed, cancelled)."}},"additionalProperties":false},"outputSchema":{"type":"object","properties":{"total":{"type":"integer","description":"Total reports matching the query."},"offset":{"type":"integer"},"limit":{"type":"integer"},"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"title":{"type":"string"},"status":{"type":"string"},"output_format":{"type":"string"},"created_at":{"type":["string","null"],"format":"date-time"},"completed_at":{"type":["string","null"],"format":"date-time"},"web_url":{"type":"string","format":"uri"},"download_url":{"type":["string","null"],"description":"Present only once status is \"completed\"."}},"required":["id","title","status","web_url"]}}},"required":["total","offset","limit","items"]},"annotations":{"readOnlyHint":true,"idempotentHint":true,"openWorldHint":false}},{"name":"regenerate_forecast_narrative","description":"Re-run ONLY the AI narration step against an existing completed forecast run. Costs 1-2 AI credits (no engine work). Returns the new narration; the old one is overwritten in the run record. Refuses when the run is not yet complete or when narration_enabled=false on the forecast.","inputSchema":{"type":"object","required":["forecast_id","run_id"],"properties":{"forecast_id":{"type":"string","format":"uuid"},"run_id":{"type":"string","format":"uuid","description":"UUID of a COMPLETED run. Use get_forecast_run with run_id='latest' first if you want the most recent."}},"additionalProperties":false},"outputSchema":{"type":"object","properties":{"narration":{"type":"object","description":"Narration payload (summary, highlights, risks, recommendations, methodology_note, credits_consumed, model_used, generated_at, fallback_reason). fallback_reason is null on success; one of 'insufficient_credits', 'llm_failed', 'disabled', 'org_disabled' when narration was skipped."}},"required":["narration"]},"annotations":{"readOnlyHint":false,"idempotentHint":false,"destructiveHint":false,"openWorldHint":false}},{"name":"register_account","description":"Begin clariBI account signup. Validates the email + organization name, emails a 6-digit verification code, and returns a pending_id. Call verify_email(pending_id, code) within 10 minutes to finish signup and receive an API key.","inputSchema":{"type":"object","required":["email","organization_name","accept_terms"],"properties":{"email":{"type":"string","format":"email","description":"Work email for the new account."},"organization_name":{"type":"string","minLength":2,"maxLength":200,"description":"Display name for the organization workspace."},"first_name":{"type":"string","maxLength":100,"description":"User's first name (optional)."},"last_name":{"type":"string","maxLength":100,"description":"User's last name (optional)."},"accept_terms":{"type":"boolean","description":"Must be true. By passing true the user agrees to https://claribi.com/terms and https://claribi.com/privacy."}},"additionalProperties":false},"outputSchema":{"type":"object","properties":{"pending_id":{"type":["string","null"],"description":"Pass to verify_email. Null when no new registration was created."},"email":{"type":"string"},"expires_in_seconds":{"type":"integer"},"next_step":{"type":"string","description":"Next tool to call: \"verify_email\" for a fresh signup, else \"check_inbox\"."}},"required":["pending_id","next_step","expires_in_seconds"]},"annotations":{"destructiveHint":false,"idempotentHint":false,"openWorldHint":false,"readOnlyHint":false}},{"name":"request_oauth_integration_url","description":"Initiate an OAuth handoff to a vendor integration (Google Ads, GA4, Search Console, Sheets, Drive, BigQuery, Meta Ads, Jira, Confluence). Returns an authorization URL the user opens in a browser. After the user clicks Allow, the connection is created and you can poll check_integration_status(handoff_id) to find out when the data is ready.","inputSchema":{"type":"object","required":["provider"],"properties":{"provider":{"type":"string","enum":["google","meta","jira","confluence"],"description":"OAuth provider to authorize. Currently supports the native-OAuth catalog: Google (Ads, Analytics 4, Search Console, Sheets, Drive, BigQuery), Meta Ads, and Atlassian Jira / Confluence."},"integration_type":{"type":"string","description":"Per-provider sub-type. Google accepts google_ads, gsheets, ga4, gsc, gdrive, bigquery, gcs, gcp, basic. Meta accepts ads or basic. Jira and Confluence accept basic. Defaults to basic."}},"additionalProperties":false},"outputSchema":{"type":"object","properties":{"handoff_id":{"type":"string","format":"uuid"},"authorize_url":{"type":"string","format":"uri","description":"Open in a browser to grant consent."},"provider":{"type":"string"},"integration_type":{"type":"string"},"expires_in_seconds":{"type":"integer"},"next_step":{"type":"string","description":"Tool to call next, normally \"check_integration_status\"."}},"required":["handoff_id","authorize_url","provider","integration_type","expires_in_seconds","next_step"]},"annotations":{"readOnlyHint":false,"idempotentHint":false,"destructiveHint":false,"openWorldHint":true}},{"name":"run_analysis","description":"Run a natural-language analytics question against your connected data sources. Consumes AI credits. Returns either the completed analysis result inline OR a job_id you can poll with get_analysis_status. If list_data_sources returns an empty list, ingest data first with upload_data_source (inline base64), ingest_url_data_source (public URL), or request_oauth_integration_url (Google / Meta / Jira / Confluence).","inputSchema":{"type":"object","required":["question"],"properties":{"question":{"type":"string","minLength":3,"maxLength":1000,"description":"Natural language question to analyze. E.g. \"What was revenue last quarter by region?\"."},"session_id":{"type":"string","description":"Optional existing conversation session UUID."},"wait_seconds":{"type":"integer","minimum":0,"maximum":60,"default":30,"description":"How long (seconds) to wait for the job to finish before returning a job_id for polling. 0 = always return immediately."}},"additionalProperties":false},"outputSchema":{"type":"object","properties":{"job_id":{"type":"string","format":"uuid"},"status":{"type":"string","description":"Job status, e.g. \"completed\", \"running\", \"queued\"."},"result":{"type":"object","description":"Analysis envelope (headline metric, chart data, follow-ups). Present when status is \"completed\"."},"ai_credits_used":{"type":"integer"},"ai_credits_limit":{"type":"integer"},"poll_url":{"type":"string","format":"uri","description":"Present when the job is still running. Poll get_analysis_status instead for structured progress."}},"required":["job_id","status"]},"annotations":{"readOnlyHint":false,"idempotentHint":false,"destructiveHint":false,"openWorldHint":false}},{"name":"run_forecast","description":"Run a forecast now. Reserves AI credits up front, dispatches the backtest + projection + correlation pipeline, and returns either the completed result inline (wait_seconds > 0 and the run finishes in time) or a run_id you can poll with get_forecast_run.","inputSchema":{"type":"object","required":["forecast_id"],"properties":{"forecast_id":{"type":"string","format":"uuid"},"wait_seconds":{"type":"integer","minimum":0,"maximum":60,"default":30,"description":"Seconds to wait for the run to finish before returning a poll handle. 0 = return immediately with the run_id."}},"additionalProperties":false},"outputSchema":{"type":"object","properties":{"run_id":{"type":"string","format":"uuid"},"status":{"type":"string","description":"pending while queued, running mid-execution, completed/failed/refunded when terminal."},"credits_reserved":{"type":"integer"},"credits_consumed":{"type":"integer"},"credits_refunded":{"type":"integer"},"result":{"type":"object","description":"Present when status reaches \"completed\"."},"poll_tool":{"type":"string","description":"Tool to poll if the run is still running (\"get_forecast_run\")."}},"required":["run_id","status"]},"annotations":{"readOnlyHint":false,"idempotentHint":false,"destructiveHint":false,"openWorldHint":false}},{"name":"upload_data_source","description":"Create a new data source from an inline base64-encoded file (CSV, TSV, JSON, Excel, TXT, PDF). The file goes through the same validation and preprocessing as a web upload. Returns the data_source_id you can pass to run_analysis as soon as preprocessing completes (poll get_data_source_schema for readiness or pass wait_seconds to block here).","inputSchema":{"type":"object","required":["name","format","data_base64"],"properties":{"name":{"type":"string","minLength":2,"maxLength":200,"description":"Display name for the new data source. Shown in the web app and in subsequent list_data_sources calls."},"format":{"type":"string","enum":["csv","tsv","json","xlsx","xls","txt","pdf"],"description":"File format. Drives MIME detection and the preprocessing route inside clariBI. csv covers comma-separated; tsv is tab-separated; xlsx is modern Excel; json must be a top-level array of objects or a single object."},"data_base64":{"type":"string","description":"Base64-encoded file contents. Maximum 25 MB encoded (~18 MB raw). For larger payloads, host the file at a public URL and use ingest_url_data_source."},"description":{"type":"string","maxLength":1000,"description":"Optional human-readable description. Surfaces in the web app and in get_data_source_schema."},"wait_seconds":{"type":"integer","minimum":0,"maximum":60,"default":0,"description":"How long (seconds) to wait for preprocessing to finish before returning. 0 returns immediately with status=\"preprocessing\"; the caller polls get_data_source_schema or list_data_sources."}},"additionalProperties":false},"outputSchema":{"type":"object","properties":{"data_source_id":{"type":"string","format":"uuid"},"raw_data_id":{"type":"string"},"name":{"type":"string"},"format":{"type":"string","description":"Detected file format (csv, json, xlsx, ...)."},"status":{"type":"string","description":"Preprocessing status. Poll get_data_source_schema until \"active\"."},"bytes_uploaded":{"type":"integer"},"web_url":{"type":["string","null"],"format":"uri"}},"required":["data_source_id","raw_data_id","name","format","status","bytes_uploaded"]},"annotations":{"readOnlyHint":false,"idempotentHint":false,"destructiveHint":false,"openWorldHint":false}},{"name":"verify_email","description":"Complete clariBI signup by submitting the verification code plus a password. Returns an OAuth access_token for immediate use AND a long-lived MCP API key for persistent configuration. The new organization lands on the Trial tier (50 AI credits, 14 days).","inputSchema":{"type":"object","required":["pending_id","code","password"],"properties":{"pending_id":{"type":"string","format":"uuid","description":"The pending_id returned by register_account."},"code":{"type":"string","pattern":"^[0-9]{6}$","description":"6-digit verification code from the email."},"password":{"type":"string","minLength":8,"description":"A password for the new account. Must be at least 8 characters and pass Django's standard validators."}},"additionalProperties":false},"outputSchema":{"type":"object","properties":{"access_token":{"type":"string","description":"OAuth bearer token for this conversation."},"token_type":{"type":"string","description":"Always \"Bearer\"."},"expires_in":{"type":"integer","description":"Access-token lifetime in seconds."},"scope":{"type":"string","description":"Space-separated granted scopes."},"mcp_api_key":{"type":"string","description":"Long-lived API key (claribi_mcp_...) for persistent client config."},"mcp_api_key_id":{"type":"string","format":"uuid"},"user_id":{"type":"string"},"organization_id":{"type":"string"},"tier":{"type":"string","description":"New organization tier, always \"trial\"."},"next_steps":{"type":"array","items":{"type":"string"}}},"required":["access_token","token_type","expires_in","scope","mcp_api_key","mcp_api_key_id","user_id","organization_id","tier"]},"annotations":{"destructiveHint":false,"idempotentHint":false,"openWorldHint":false,"readOnlyHint":false}}]}},"http_status":200,"headers":{"content-type":"application/json; charset=utf-8","strict-transport-security":"max-age=31536000; includeSubDomains, max-age=63072000","x-ratelimit-limit":"100","x-ratelimit-remaining":"96","x-ratelimit-reset":"1786766215"}}},"prompts_list":{"status":"ok","latency_ms":112.32,"details":{"url":"https://claribi.com/mcp/v1/","payload":{"jsonrpc":"2.0","id":3,"result":{"prompts":[]}},"http_status":200,"headers":{"content-type":"application/json; charset=utf-8","strict-transport-security":"max-age=31536000; includeSubDomains, max-age=63072000","x-ratelimit-limit":"100","x-ratelimit-remaining":"95","x-ratelimit-reset":"1786766215"}}},"prompt_get":{"status":"missing","latency_ms":null,"details":{"reason":"not_advertised"}},"resources_list":{"status":"ok","latency_ms":109.85,"details":{"url":"https://claribi.com/mcp/v1/","payload":{"jsonrpc":"2.0","id":5,"result":{"resources":[]}},"http_status":200,"headers":{"content-type":"application/json; charset=utf-8","strict-transport-security":"max-age=31536000; includeSubDomains, max-age=63072000","x-ratelimit-limit":"100","x-ratelimit-remaining":"94","x-ratelimit-reset":"1786766215"}}},"resource_read":{"status":"missing","latency_ms":null,"details":{"reason":"not_advertised"}},"determinism_probe":{"status":"ok","latency_ms":114.77,"details":{"attempts":2,"successful":2,"matches":2,"stable_ratio":1.0,"baseline_signature":"677ec65f4c15e94b23be580efd488dbfa49d5c005f4c76087286a57c8a73b0fa","errors":[]}},"instruction_tool_reference_probe":{"status":"ok","latency_ms":null,"details":{"referenced_tools":["register_account"],"missing_tools":[],"observed_tool_count":26}},"session_resume_probe":{"status":"warning","latency_ms":null,"details":{"reason":"no_session_id","transport":"streamable-http","resume_expected":true,"protocol_version":"2025-03-26"}},"step_up_auth_probe":{"status":"missing","latency_ms":null,"details":{"oauth_present":false,"auth_required_checks":[],"supported_scopes":[],"scope_specificity_ratio":0.0,"broad_scopes":[],"challenge_headers":[],"step_up_signals":[],"minimal_scope_documented":false}},"transport_compliance_probe":{"status":"error","latency_ms":115.17,"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":200,"bad_protocol_payload":{"jsonrpc":"2.0","id":410,"result":{"tools":[{"name":"check_integration_status","description":"Poll an OAuth handoff initiated by request_oauth_integration_url. Returns the current status (pending, connected, failed, expired) and, when connected, the data_source_id you can pass to run_analysis.","inputSchema":{"type":"object","required":["handoff_id"],"properties":{"handoff_id":{"type":"string","format":"uuid","description":"The id returned by request_oauth_integration_url."}},"additionalProperties":false},"outputSchema":{"type":"object","properties":{"handoff_id":{"type":"string","format":"uuid"},"provider":{"type":"string"},"integration_type":{"type":"string"},"status":{"type":"string","description":"One of pending, connected, failed, expired."},"created_at":{"type":["string","null"],"format":"date-time"},"completed_at":{"type":["string","null"],"format":"date-time"},"data_source_id":{"type":["string","null"],"description":"The created data source, present once status is \"connected\"."},"connection_id":{"type":["string","null"]},"error":{"type":["string","null"],"description":"Failure reason when status is \"failed\"."}},"required":["handoff_id","provider","integration_type","status"]},"annotations":{"readOnlyHint":true,"idempotentHint":true,"openWorldHint":false}},{"name":"check_pricing","description":"List clariBI subscription tiers with prices, AI credits, data source limits, user limits, and headline features. No authentication required.","inputSchema":{"type":"object","properties":{"tier":{"type":"string","description":"Optional. Return only this tier (free, trial, lite, starter, professional, enterprise)."}},"additionalProperties":false},"outputSchema":{"type":"object","properties":{"currency":{"type":"string","description":"ISO currency code, always \"USD\"."},"tiers":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string","description":"Display name of the tier."},"price_monthly_usd":{"type":"number"},"price_yearly_usd":{"type":"number"},"ai_credits":{"type":"integer"},"data_sources":{"type":"integer"},"max_users":{"type":"integer"},"storage_gb":{"type":"number"},"duration_days":{"type":"integer","description":"Trial length in days; 0 for paid tiers."},"headline_features":{"type":"array","items":{"type":"string"}}},"required":["id","name","price_monthly_usd","price_yearly_usd"]}},"billing_url":{"type":"string","format":"uri"}},"required":["currency","tiers","billing_url"]},"annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":true}},{"name":"create_checkout_session","description":"Create a Stripe Checkout URL the user can open in a browser to upgrade their clariBI subscription. Payment cannot happen inside the LLM; this tool returns a URL.","inputSchema":{"type":"object","required":["tier"],"properties":{"tier":{"type":"string","enum":["starter","professional","enterprise"],"description":"Target subscription tier."},"billing_period":{"type":"string","enum":["monthly","yearly"],"default":"monthly","description":"Billing cadence for the checkout. Defaults to monthly."}},"additionalProperties":false},"outputSchema":{"type":"object","properties":{"checkout_url":{"type":"string","format":"uri","description":"Stripe Checkout URL. Open in a browser to complete payment."},"session_id":{"type":"string","description":"Stripe Checkout Session id."},"tier":{"type":"string"},"billing_period":{"type":"string","description":"monthly or yearly."}},"required":["checkout_url","session_id","tier","billing_period"]},"annotations":{"readOnlyHint":false,"idempotentHint":false,"destructiveHint":false,"openWorldHint":true}},{"name":"create_forecast","description":"Bind a forecast to a metric in your workspace. Stores the configuration, sets up the schedule, and resolves the source binding immediately so a bad source_id or metric_path errors out before any credits are spent. Run the forecast with run_forecast.","inputSchema":{"type":"object","required":["name","source_type","source_id","metric_path"],"properties":{"name":{"type":"string","minLength":1,"maxLength":255},"description":{"type":"string","maxLength":5000},"source_type":{"type":"string","enum":["report","dashboard","goal","data_source"],"description":"Which clariBI artifact the metric lives on. Most callers should start with data_source for raw connector metrics or goal to forecast a tracked KPI."},"source_id":{"type":"string","description":"UUID of the report, dashboard, goal, or data source."},"metric_path":{"type":"string","description":"Dot-path to the numeric column. For data_source: the metric key (e.g. \"revenue\"). For goal: \"value\" or \"percentage\". For report: the path inside the insights JSON. For dashboard: \"widget_id:metric_name\"."},"granularity":{"type":"string","enum":["hourly","daily","weekly","monthly","quarterly","annual"],"default":"daily","description":"Bucket size for the time series. Hourly requires an hourly data source; the engine refuses to fabricate hourly buckets from daily data."},"horizon_days":{"type":"integer","minimum":1,"maximum":168,"default":30,"description":"How many BUCKETS ahead to project. The per-granularity cap applies: hourly 168, daily 90, weekly 52, monthly 24, quarterly 8, annual 5. The field name is \"_days\" for backwards compatibility — it counts buckets of the chosen granularity."},"include_correlations":{"type":"boolean","default":true},"include_anomalies":{"type":"boolean","default":true},"include_changepoints":{"type":"boolean","default":true},"narration_enabled":{"type":"boolean","default":true,"description":"When true, every completed run gets an AI-generated narrative attached (summary, highlights, risks, recommendations, methodology). Costs 1-2 extra AI credits per run."},"aggregation":{"type":"string","enum":["auto","sum","mean","last","max"],"default":"auto","description":"How multiple raw points falling into the same bucket are combined. Auto picks sum for additive metrics, mean otherwise. Use Mean for rates (CTR, conversion, latency)."},"transform":{"type":"string","enum":["auto","none","log"],"default":"auto","description":"Series transform applied before fitting. Log helps revenue/traffic series with growing variance. Auto detects when log is beneficial; none forces raw scale."},"non_negative":{"type":"boolean","description":"When true, point + lower band clamped at zero. Omit to let the engine heuristic decide (via non_negative_auto=true)."},"non_negative_auto":{"type":"boolean","default":true,"description":"When true (default), the backend heuristic owns non_negative and re-evaluates per run based on the metric path. Set false alongside non_negative to lock the choice."},"method_override":{"type":"string","maxLength":40,"description":"Force a specific forecasting method instead of auto-selecting via walk-forward CV. Valid names: naive, seasonal_naive, moving_average, drift, linear_trend, ar_p, holt_winters, holt_winters_multiplicative, holt_winters_damped, theta, gradient_boost, ensemble_top3. Empty = auto."},"schedule_frequency":{"type":"string","enum":["daily","weekly","monthly","manual"],"default":"monthly","description":"How often the forecast re-runs. Manual schedules only run when called explicitly via run_forecast."},"schedule_day_of_week":{"type":"integer","minimum":0,"maximum":6},"schedule_day_of_month":{"type":"integer","minimum":1,"maximum":31}},"additionalProperties":false},"outputSchema":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string"},"metric_label":{"type":"string"},"horizon_days":{"type":"integer"},"granularity":{"type":"string"},"schedule_frequency":{"type":"string"},"next_run_at":{"type":["string","null"],"format":"date-time"},"web_url":{"type":"string","format":"uri"}},"required":["id","name","horizon_days","web_url"]},"annotations":{"readOnlyHint":false,"idempotentHint":false,"destructiveHint":false,"openWorldHint":false}},{"name":"generate_report","description":"Create a new generated report in your clariBI organization. Returns the report id you can poll via get_report, plus a download URL once status reaches \"completed\".","inputSchema":{"type":"object","required":["title"],"properties":{"title":{"type":"string","minLength":2,"maxLength":200,"description":"Display title for the generated report."},"template_id":{"type":"string","description":"Optional registry ID of the marketplace template to render. If omitted, an empty report shell is created and you can attach a template later from the web app."},"output_format":{"type":"string","enum":["json","pdf","html","excel","csv"],"default":"pdf","description":"Output format. Must match one of ``GeneratedReport.OUTPUT_FORMATS``."}},"additionalProperties":false},"outputSchema":{"type":"object","properties":{"report_id":{"type":"string","format":"uuid"},"status":{"type":"string","description":"Initial status, normally \"pending\". Poll get_report for progress."},"web_url":{"type":"string","format":"uri"}},"required":["report_id","status","web_url"]},"annotations":{"readOnlyHint":false,"idempotentHint":false,"destructiveHint":false,"openWorldHint":false}},{"name":"get_analysis_status","description":"Check the status of a previously-dispatched run_analysis job. Returns the analysis result if completed.","inputSchema":{"type":"object","required":["job_id"],"properties":{"job_id":{"type":"string","format":"uuid","description":"job_id returned by a prior run_analysis call."}},"additionalProperties":false},"outputSchema":{"type":"object","properties":{"job_id":{"type":"string","format":"uuid"},"status":{"type":"string"},"current_step":{"type":"string"},"progress":{"type":"number","description":"Completion fraction or percentage reported by the job."},"result":{"type":"object","description":"Analysis envelope. Present when status is \"completed\"."},"error":{"type":"string","description":"Failure reason. Present when status is \"failed\"."}},"required":["job_id","status","current_step","progress"]},"annotations":{"readOnlyHint":true,"idempotentHint":true,"openWorldHint":false}},{"name":"get_billing_status","description":"Get the organization's billing status — tier, renewal date, and upgrade options.","inputSchema":{"type":"object","properties":{},"additionalProperties":false},"outputSchema":{"type":"object","properties":{"subscription_tier":{"type":"string"},"subscription_status":{"type":"string"},"price_monthly_usd":{"type":"number"},"price_yearly_usd":{"type":"number"},"trial_ends_at":{"type":["string","null"],"format":"date-time"},"billing_url":{"type":"string","format":"uri"}},"required":["subscription_tier","subscription_status","price_monthly_usd","price_yearly_usd","billing_url"]},"annotations":{"readOnlyHint":true,"idempotentHint":true,"openWorldHint":false}},{"name":"get_dashboard","description":"Fetch one dashboard by ID. Includes widget definitions, the most recent refresh data, and the web URL.","inputSchema":{"type":"object","required":["dashboard_id"],"properties":{"dashboard_id":{"type":"string","format":"uuid","description":"UUID of the dashboard to fetch."}},"additionalProperties":false},"outputSchema":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string"},"status":{"type":"string","description":"Dashboard lifecycle status."},"created_at":{"type":["string","null"],"format":"date-time"},"updated_at":{"type":["string","null"],"format":"date-time"},"last_refresh":{"type":["string","null"],"format":"date-time"},"web_url":{"type":"string","format":"uri"},"is_public":{"type":"boolean"},"description":{"type":"string"},"configuration":{"type":"object","description":"Dashboard layout and widget configuration."},"analysis_metadata":{"type":"object","description":"AnalysisEngine envelope captured when the dashboard was created."}},"required":["id","name","status","web_url","is_public"]},"annotations":{"readOnlyHint":true,"idempotentHint":true,"openWorldHint":false}},{"name":"get_data_source_schema","description":"Fetch the column schema for a data source. Useful before asking run_analysis about specific columns. The schema is derived from the preprocessing metadata clariBI extracted when the source was last synced. Poll this after upload_data_source / ingest_url_data_source until the returned status flips to \"active\" — that means preprocessing has finished and run_analysis will see the data.","inputSchema":{"type":"object","required":["data_source_id"],"properties":{"data_source_id":{"type":"string","format":"uuid","description":"UUID of the data source to fetch the schema for."}},"additionalProperties":false},"outputSchema":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string"},"source_type":{"type":"string"},"status":{"type":"string"},"schema":{"type":"object","description":"Schema-shaped fields the preprocessing pipeline wrote into the source metadata (columns, column_types, sample_rows, row_count, ...). Empty until preprocessing has run or for source types with no column inventory."},"last_sync_at":{"type":["string","null"],"format":"date-time"}},"required":["id","name","source_type","status","schema"]},"annotations":{"readOnlyHint":true,"idempotentHint":true,"openWorldHint":false}},{"name":"get_forecast","description":"Fetch one forecast configuration by ID.","inputSchema":{"type":"object","required":["forecast_id"],"properties":{"forecast_id":{"type":"string","format":"uuid","description":"UUID of the forecast to fetch."}},"additionalProperties":false},"outputSchema":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string"},"source_type":{"type":"string","description":"One of: report, dashboard, goal, data_source."},"source_id":{"type":"string"},"metric_path":{"type":"string"},"metric_label":{"type":"string"},"granularity":{"type":"string","description":"One of: hourly, daily, weekly, monthly, quarterly, annual."},"horizon_days":{"type":"integer"},"is_active":{"type":"boolean"},"created_at":{"type":["string","null"],"format":"date-time"},"web_url":{"type":"string","format":"uri"},"schedule_frequency":{"type":["string","null"],"description":"daily, weekly, monthly, or manual."},"next_run_at":{"type":["string","null"],"format":"date-time"},"latest_run_status":{"type":["string","null"],"description":"pending, running, completed, failed, refunded."},"latest_run_id":{"type":["string","null"],"format":"uuid"},"narration_enabled":{"type":"boolean"},"aggregation":{"type":"string","description":"auto / sum / mean / last / max"},"transform":{"type":"string","description":"auto / none / log"},"non_negative":{"type":"boolean"},"non_negative_auto":{"type":"boolean"},"method_override":{"type":"string"},"description":{"type":"string"},"include_correlations":{"type":"boolean"},"include_anomalies":{"type":"boolean"},"include_changepoints":{"type":"boolean"},"updated_at":{"type":["string","null"],"format":"date-time"}},"required":["id","name","source_type","metric_path","horizon_days","web_url"]},"annotations":{"readOnlyHint":true,"idempotentHint":true,"openWorldHint":false}},{"name":"get_forecast_run","description":"Fetch one run of a forecast by ID, or pass run_id=\"latest\" for the most recent run. Returns the full forecast envelope: target series + 30-day projection, correlated drivers (with lag and bootstrap stability), anomalies, structural changes, and credit accounting.","inputSchema":{"type":"object","required":["forecast_id","run_id"],"properties":{"forecast_id":{"type":"string","format":"uuid"},"run_id":{"type":"string","format":"uuid","description":"UUID of the run. Pass 'latest' to fetch the most recent run for the forecast."}},"additionalProperties":false},"outputSchema":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"forecast_id":{"type":"string","format":"uuid"},"status":{"type":"string"},"trigger":{"type":"string"},"credits_consumed":{"type":"integer"},"credits_refunded":{"type":"integer"},"duration_ms":{"type":"integer"},"created_at":{"type":["string","null"],"format":"date-time"},"completed_at":{"type":["string","null"],"format":"date-time"},"error_message":{"type":"string"},"result":{"type":"object","description":"Forecast envelope. Contains keys: target, correlations, anomalies, changepoints, meta, and (when narration ran) narration. `target` carries lower/upper plus calibrated lower_50/upper_50, lower_80/upper_80, lower_95/upper_95 bands, the winning method, exogenous_driver when a leading-indicator was used, ensemble_components when the ensemble method won, transform applied, and non_negative flag. See docs/MCP_SERVER.md for the shape."},"narration":{"type":["object","null"],"description":"Peer of result.narration for convenience. Null when the run pre-dates narration OR was gated out (insufficient credits, org disabled, etc.)."}},"required":["id","forecast_id","status"]},"annotations":{"readOnlyHint":true,"idempotentHint":true,"openWorldHint":false}},{"name":"get_forecast_trust","description":"Returns per-past-run accuracy for a forecast. Each row compares a prior run's projection against the actuals that have materialized since. Use this to see whether your forecasts have been getting MORE or LESS accurate over time, or to spot when a backtest sMAPE was systematically optimistic vs. realised performance.","inputSchema":{"type":"object","required":["forecast_id"],"properties":{"forecast_id":{"type":"string","format":"uuid"}},"additionalProperties":false},"outputSchema":{"type":"object","properties":{"runs":{"type":"array","description":"Per-past-run accuracy ordered oldest-first. Each row compares one prior run's forecast against actuals that have since materialized.","items":{"type":"object","properties":{"run_id":{"type":"string","format":"uuid"},"created_at":{"type":["string","null"],"format":"date-time"},"method":{"type":["string","null"]},"horizon":{"type":"integer"},"observed_count":{"type":"integer","description":"How many of the forecast points now have an actual observation to compare against."},"smape_actual":{"type":"number","description":"sMAPE between the run's forecast and what actually happened. Lower is better; [0, 200]."},"smape_backtest":{"type":"number","description":"The run's own backtest sMAPE at the time it was generated. Compare against actual to spot drift over time."}}}}},"required":["runs"]},"annotations":{"readOnlyHint":true,"idempotentHint":true,"openWorldHint":false}},{"name":"get_report","description":"Fetch one generated report by ID.","inputSchema":{"type":"object","required":["report_id"],"properties":{"report_id":{"type":"string","format":"uuid","description":"UUID of the report to fetch."}},"additionalProperties":false},"outputSchema":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"title":{"type":"string"},"status":{"type":"string"},"output_format":{"type":"string"},"created_at":{"type":["string","null"],"format":"date-time"},"completed_at":{"type":["string","null"],"format":"date-time"},"web_url":{"type":"string","format":"uri"},"download_url":{"type":["string","null"],"description":"Present only once status is \"completed\"."},"description":{"type":"string"},"insights":{"type":"object","description":"Narrative insight blocks, when generated."},"data_quality_metrics":{"type":"object","description":"Per-source data-quality stats captured at generation time."},"report_period_start":{"type":["string","null"],"format":"date-time"},"report_period_end":{"type":["string","null"],"format":"date-time"},"output_file_path":{"type":"string"}},"required":["id","title","status","web_url"]},"annotations":{"readOnlyHint":true,"idempotentHint":true,"openWorldHint":false}},{"name":"get_usage","description":"Get the organization's current AI credit usage, data source count, user count, and rate-limit headroom.","inputSchema":{"type":"object","properties":{},"additionalProperties":false},"outputSchema":{"type":"object","properties":{"subscription_tier":{"type":"string"},"subscription_status":{"type":"string"},"ai_credits_used":{"type":"integer"},"ai_credits_limit":{"type":"integer"},"ai_credits_remaining":{"type":"integer"},"data_sources_used":{"type":"integer"},"data_sources_limit":{"type":"integer"},"storage_gb_limit":{"type":"number"},"max_users":{"type":"integer"},"trial_ends_at":{"type":["string","null"],"format":"date-time"}},"required":["subscription_tier","subscription_status","ai_credits_used","ai_credits_limit","ai_credits_remaining"]},"annotations":{"readOnlyHint":true,"idempotentHint":true,"openWorldHint":false}},{"name":"ingest_url_data_source","description":"Create a new data source by fetching a public URL on the server side. Handles CSV, TSV, JSON, Excel, TXT, and PDF. Private networks (RFC 1918, loopback, cloud metadata) are blocked. Returns the data_source_id once preprocessing has started. Use this for files larger than the 25 MB inline upload cap.","inputSchema":{"type":"object","required":["name","url"],"properties":{"name":{"type":"string","minLength":2,"maxLength":200,"description":"Display name for the new data source."},"url":{"type":"string","description":"Public http(s) URL of the file to ingest. The server fetches it once at call time; the URL is not re-fetched on subsequent analyses. Private networks (RFC 1918, loopback, link-local, cloud metadata) are blocked."},"format":{"type":"string","enum":["csv","tsv","json","xlsx","xls","txt","pdf"],"description":"Optional format hint. If omitted, the server infers it from the Content-Type header and URL extension."},"description":{"type":"string","maxLength":1000,"description":"Optional human note stored on the data source."},"wait_seconds":{"type":"integer","minimum":0,"maximum":60,"default":0,"description":"Seconds to block waiting for preprocessing before returning. 0 returns immediately."}},"additionalProperties":false},"outputSchema":{"type":"object","properties":{"data_source_id":{"type":"string","format":"uuid"},"raw_data_id":{"type":"string"},"name":{"type":"string"},"format":{"type":"string","description":"Detected file format (csv, json, xlsx, ...)."},"status":{"type":"string","description":"Preprocessing status. Poll get_data_source_schema until \"active\"."},"bytes_fetched":{"type":"integer"},"web_url":{"type":["string","null"],"format":"uri"}},"required":["data_source_id","raw_data_id","name","format","status","bytes_fetched"]},"annotations":{"readOnlyHint":false,"idempotentHint":false,"destructiveHint":false,"openWorldHint":true}},{"name":"list_dashboards","description":"List dashboards in your clariBI organization. Returns id, name, status, last refresh, and a URL you can open in a browser.","inputSchema":{"type":"object","properties":{"limit":{"type":"integer","minimum":1,"maximum":100,"default":20,"description":"Page size (1–100)."},"offset":{"type":"integer","minimum":0,"default":0,"description":"Row offset for pagination."},"search":{"type":"string","description":"Optional substring match against dashboard name."}},"additionalProperties":false},"outputSchema":{"type":"object","properties":{"total":{"type":"integer","description":"Total dashboards matching the query."},"offset":{"type":"integer"},"limit":{"type":"integer"},"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string"},"status":{"type":"string","description":"Dashboard lifecycle status."},"created_at":{"type":["string","null"],"format":"date-time"},"updated_at":{"type":["string","null"],"format":"date-time"},"last_refresh":{"type":["string","null"],"format":"date-time"},"web_url":{"type":"string","format":"uri"},"is_public":{"type":"boolean"}},"required":["id","name","status","web_url","is_public"]}}},"required":["total","offset","limit","items"]},"annotations":{"readOnlyHint":true,"idempotentHint":true,"openWorldHint":false}},{"name":"list_data_sources","description":"List the data sources connected to your clariBI organization. Returns id, name, source_type, status, last sync time, and the number of rows (when known).","inputSchema":{"type":"object","properties":{"limit":{"type":"integer","minimum":1,"maximum":100,"default":50,"description":"Page size (1-100)."},"offset":{"type":"integer","minimum":0,"default":0,"description":"Row offset for pagination."},"source_type":{"type":"string","description":"Filter by source_type (csv, postgresql, google_ads, meta_ads, jira, mcp, …)."}},"additionalProperties":false},"outputSchema":{"type":"object","properties":{"total":{"type":"integer","description":"Total data sources matching the query."},"offset":{"type":"integer"},"limit":{"type":"integer"},"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string"},"source_type":{"type":"string"},"status":{"type":"string","description":"Sync/preprocessing status."},"last_sync_at":{"type":["string","null"],"format":"date-time"},"row_count":{"type":["integer","null"],"description":"Row count when preprocessing recorded one, else null."},"created_at":{"type":["string","null"],"format":"date-time"}},"required":["id","name","source_type","status"]}}},"required":["total","offset","limit","items"]},"annotations":{"readOnlyHint":true,"idempotentHint":true,"openWorldHint":false}},{"name":"list_forecasts","description":"List metric forecasts in your clariBI organization. Each row covers one metric: its source binding, horizon, schedule, and the latest run status. Use get_forecast_run to fetch the full forecast result.","inputSchema":{"type":"object","properties":{"limit":{"type":"integer","minimum":1,"maximum":100,"default":20,"description":"Page size (1-100)."},"offset":{"type":"integer","minimum":0,"default":0,"description":"Row offset for pagination."},"is_active":{"type":"boolean","description":"Filter by active forecasts. Omit to include both active and paused."}},"additionalProperties":false},"outputSchema":{"type":"object","properties":{"total":{"type":"integer"},"offset":{"type":"integer"},"limit":{"type":"integer"},"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string"},"source_type":{"type":"string","description":"One of: report, dashboard, goal, data_source."},"source_id":{"type":"string"},"metric_path":{"type":"string"},"metric_label":{"type":"string"},"granularity":{"type":"string","description":"One of: hourly, daily, weekly, monthly, quarterly, annual."},"horizon_days":{"type":"integer"},"is_active":{"type":"boolean"},"created_at":{"type":["string","null"],"format":"date-time"},"web_url":{"type":"string","format":"uri"},"schedule_frequency":{"type":["string","null"],"description":"daily, weekly, monthly, or manual."},"next_run_at":{"type":["string","null"],"format":"date-time"},"latest_run_status":{"type":["string","null"],"description":"pending, running, completed, failed, refunded."},"latest_run_id":{"type":["string","null"],"format":"uuid"},"narration_enabled":{"type":"boolean"},"aggregation":{"type":"string","description":"auto / sum / mean / last / max"},"transform":{"type":"string","description":"auto / none / log"},"non_negative":{"type":"boolean"},"non_negative_auto":{"type":"boolean"},"method_override":{"type":"string"}},"required":["id","name","source_type","metric_path","horizon_days","web_url"]}}},"required":["total","offset","limit","items"]},"annotations":{"readOnlyHint":true,"idempotentHint":true,"openWorldHint":false}},{"name":"list_reports","description":"List generated reports in your clariBI organization. Returns id, title, status, output format, and download URL.","inputSchema":{"type":"object","properties":{"limit":{"type":"integer","minimum":1,"maximum":100,"default":20,"description":"Page size (1-100)."},"offset":{"type":"integer","minimum":0,"default":0,"description":"Row offset for pagination."},"status":{"type":"string","description":"Filter by status (pending, generating, completed, failed, cancelled)."}},"additionalProperties":false},"outputSchema":{"type":"object","properties":{"total":{"type":"integer","description":"Total reports matching the query."},"offset":{"type":"integer"},"limit":{"type":"integer"},"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"title":{"type":"string"},"status":{"type":"string"},"output_format":{"type":"string"},"created_at":{"type":["string","null"],"format":"date-time"},"completed_at":{"type":["string","null"],"format":"date-time"},"web_url":{"type":"string","format":"uri"},"download_url":{"type":["string","null"],"description":"Present only once status is \"completed\"."}},"required":["id","title","status","web_url"]}}},"required":["total","offset","limit","items"]},"annotations":{"readOnlyHint":true,"idempotentHint":true,"openWorldHint":false}},{"name":"regenerate_forecast_narrative","description":"Re-run ONLY the AI narration step against an existing completed forecast run. Costs 1-2 AI credits (no engine work). Returns the new narration; the old one is overwritten in the run record. Refuses when the run is not yet complete or when narration_enabled=false on the forecast.","inputSchema":{"type":"object","required":["forecast_id","run_id"],"properties":{"forecast_id":{"type":"string","format":"uuid"},"run_id":{"type":"string","format":"uuid","description":"UUID of a COMPLETED run. Use get_forecast_run with run_id='latest' first if you want the most recent."}},"additionalProperties":false},"outputSchema":{"type":"object","properties":{"narration":{"type":"object","description":"Narration payload (summary, highlights, risks, recommendations, methodology_note, credits_consumed, model_used, generated_at, fallback_reason). fallback_reason is null on success; one of 'insufficient_credits', 'llm_failed', 'disabled', 'org_disabled' when narration was skipped."}},"required":["narration"]},"annotations":{"readOnlyHint":false,"idempotentHint":false,"destructiveHint":false,"openWorldHint":false}},{"name":"register_account","description":"Begin clariBI account signup. Validates the email + organization name, emails a 6-digit verification code, and returns a pending_id. Call verify_email(pending_id, code) within 10 minutes to finish signup and receive an API key.","inputSchema":{"type":"object","required":["email","organization_name","accept_terms"],"properties":{"email":{"type":"string","format":"email","description":"Work email for the new account."},"organization_name":{"type":"string","minLength":2,"maxLength":200,"description":"Display name for the organization workspace."},"first_name":{"type":"string","maxLength":100,"description":"User's first name (optional)."},"last_name":{"type":"string","maxLength":100,"description":"User's last name (optional)."},"accept_terms":{"type":"boolean","description":"Must be true. By passing true the user agrees to https://claribi.com/terms and https://claribi.com/privacy."}},"additionalProperties":false},"outputSchema":{"type":"object","properties":{"pending_id":{"type":["string","null"],"description":"Pass to verify_email. Null when no new registration was created."},"email":{"type":"string"},"expires_in_seconds":{"type":"integer"},"next_step":{"type":"string","description":"Next tool to call: \"verify_email\" for a fresh signup, else \"check_inbox\"."}},"required":["pending_id","next_step","expires_in_seconds"]},"annotations":{"destructiveHint":false,"idempotentHint":false,"openWorldHint":false,"readOnlyHint":false}},{"name":"request_oauth_integration_url","description":"Initiate an OAuth handoff to a vendor integration (Google Ads, GA4, Search Console, Sheets, Drive, BigQuery, Meta Ads, Jira, Confluence). Returns an authorization URL the user opens in a browser. After the user clicks Allow, the connection is created and you can poll check_integration_status(handoff_id) to find out when the data is ready.","inputSchema":{"type":"object","required":["provider"],"properties":{"provider":{"type":"string","enum":["google","meta","jira","confluence"],"description":"OAuth provider to authorize. Currently supports the native-OAuth catalog: Google (Ads, Analytics 4, Search Console, Sheets, Drive, BigQuery), Meta Ads, and Atlassian Jira / Confluence."},"integration_type":{"type":"string","description":"Per-provider sub-type. Google accepts google_ads, gsheets, ga4, gsc, gdrive, bigquery, gcs, gcp, basic. Meta accepts ads or basic. Jira and Confluence accept basic. Defaults to basic."}},"additionalProperties":false},"outputSchema":{"type":"object","properties":{"handoff_id":{"type":"string","format":"uuid"},"authorize_url":{"type":"string","format":"uri","description":"Open in a browser to grant consent."},"provider":{"type":"string"},"integration_type":{"type":"string"},"expires_in_seconds":{"type":"integer"},"next_step":{"type":"string","description":"Tool to call next, normally \"check_integration_status\"."}},"required":["handoff_id","authorize_url","provider","integration_type","expires_in_seconds","next_step"]},"annotations":{"readOnlyHint":false,"idempotentHint":false,"destructiveHint":false,"openWorldHint":true}},{"name":"run_analysis","description":"Run a natural-language analytics question against your connected data sources. Consumes AI credits. Returns either the completed analysis result inline OR a job_id you can poll with get_analysis_status. If list_data_sources returns an empty list, ingest data first with upload_data_source (inline base64), ingest_url_data_source (public URL), or request_oauth_integration_url (Google / Meta / Jira / Confluence).","inputSchema":{"type":"object","required":["question"],"properties":{"question":{"type":"string","minLength":3,"maxLength":1000,"description":"Natural language question to analyze. E.g. \"What was revenue last quarter by region?\"."},"session_id":{"type":"string","description":"Optional existing conversation session UUID."},"wait_seconds":{"type":"integer","minimum":0,"maximum":60,"default":30,"description":"How long (seconds) to wait for the job to finish before returning a job_id for polling. 0 = always return immediately."}},"additionalProperties":false},"outputSchema":{"type":"object","properties":{"job_id":{"type":"string","format":"uuid"},"status":{"type":"string","description":"Job status, e.g. \"completed\", \"running\", \"queued\"."},"result":{"type":"object","description":"Analysis envelope (headline metric, chart data, follow-ups). Present when status is \"completed\"."},"ai_credits_used":{"type":"integer"},"ai_credits_limit":{"type":"integer"},"poll_url":{"type":"string","format":"uri","description":"Present when the job is still running. Poll get_analysis_status instead for structured progress."}},"required":["job_id","status"]},"annotations":{"readOnlyHint":false,"idempotentHint":false,"destructiveHint":false,"openWorldHint":false}},{"name":"run_forecast","description":"Run a forecast now. Reserves AI credits up front, dispatches the backtest + projection + correlation pipeline, and returns either the completed result inline (wait_seconds > 0 and the run finishes in time) or a run_id you can poll with get_forecast_run.","inputSchema":{"type":"object","required":["forecast_id"],"properties":{"forecast_id":{"type":"string","format":"uuid"},"wait_seconds":{"type":"integer","minimum":0,"maximum":60,"default":30,"description":"Seconds to wait for the run to finish before returning a poll handle. 0 = return immediately with the run_id."}},"additionalProperties":false},"outputSchema":{"type":"object","properties":{"run_id":{"type":"string","format":"uuid"},"status":{"type":"string","description":"pending while queued, running mid-execution, completed/failed/refunded when terminal."},"credits_reserved":{"type":"integer"},"credits_consumed":{"type":"integer"},"credits_refunded":{"type":"integer"},"result":{"type":"object","description":"Present when status reaches \"completed\"."},"poll_tool":{"type":"string","description":"Tool to poll if the run is still running (\"get_forecast_run\")."}},"required":["run_id","status"]},"annotations":{"readOnlyHint":false,"idempotentHint":false,"destructiveHint":false,"openWorldHint":false}},{"name":"upload_data_source","description":"Create a new data source from an inline base64-encoded file (CSV, TSV, JSON, Excel, TXT, PDF). The file goes through the same validation and preprocessing as a web upload. Returns the data_source_id you can pass to run_analysis as soon as preprocessing completes (poll get_data_source_schema for readiness or pass wait_seconds to block here).","inputSchema":{"type":"object","required":["name","format","data_base64"],"properties":{"name":{"type":"string","minLength":2,"maxLength":200,"description":"Display name for the new data source. Shown in the web app and in subsequent list_data_sources calls."},"format":{"type":"string","enum":["csv","tsv","json","xlsx","xls","txt","pdf"],"description":"File format. Drives MIME detection and the preprocessing route inside clariBI. csv covers comma-separated; tsv is tab-separated; xlsx is modern Excel; json must be a top-level array of objects or a single object."},"data_base64":{"type":"string","description":"Base64-encoded file contents. Maximum 25 MB encoded (~18 MB raw). For larger payloads, host the file at a public URL and use ingest_url_data_source."},"description":{"type":"string","maxLength":1000,"description":"Optional human-readable description. Surfaces in the web app and in get_data_source_schema."},"wait_seconds":{"type":"integer","minimum":0,"maximum":60,"default":0,"description":"How long (seconds) to wait for preprocessing to finish before returning. 0 returns immediately with status=\"preprocessing\"; the caller polls get_data_source_schema or list_data_sources."}},"additionalProperties":false},"outputSchema":{"type":"object","properties":{"data_source_id":{"type":"string","format":"uuid"},"raw_data_id":{"type":"string"},"name":{"type":"string"},"format":{"type":"string","description":"Detected file format (csv, json, xlsx, ...)."},"status":{"type":"string","description":"Preprocessing status. Poll get_data_source_schema until \"active\"."},"bytes_uploaded":{"type":"integer"},"web_url":{"type":["string","null"],"format":"uri"}},"required":["data_source_id","raw_data_id","name","format","status","bytes_uploaded"]},"annotations":{"readOnlyHint":false,"idempotentHint":false,"destructiveHint":false,"openWorldHint":false}},{"name":"verify_email","description":"Complete clariBI signup by submitting the verification code plus a password. Returns an OAuth access_token for immediate use AND a long-lived MCP API key for persistent configuration. The new organization lands on the Trial tier (50 AI credits, 14 days).","inputSchema":{"type":"object","required":["pending_id","code","password"],"properties":{"pending_id":{"type":"string","format":"uuid","description":"The pending_id returned by register_account."},"code":{"type":"string","pattern":"^[0-9]{6}$","description":"6-digit verification code from the email."},"password":{"type":"string","minLength":8,"description":"A password for the new account. Must be at least 8 characters and pass Django's standard validators."}},"additionalProperties":false},"outputSchema":{"type":"object","properties":{"access_token":{"type":"string","description":"OAuth bearer token for this conversation."},"token_type":{"type":"string","description":"Always \"Bearer\"."},"expires_in":{"type":"integer","description":"Access-token lifetime in seconds."},"scope":{"type":"string","description":"Space-separated granted scopes."},"mcp_api_key":{"type":"string","description":"Long-lived API key (claribi_mcp_...) for persistent client config."},"mcp_api_key_id":{"type":"string","format":"uuid"},"user_id":{"type":"string"},"organization_id":{"type":"string"},"tier":{"type":"string","description":"New organization tier, always \"trial\"."},"next_steps":{"type":"array","items":{"type":"string"}}},"required":["access_token","token_type","expires_in","scope","mcp_api_key","mcp_api_key_id","user_id","organization_id","tier"]},"annotations":{"destructiveHint":false,"idempotentHint":false,"openWorldHint":false,"readOnlyHint":false}}]}},"bad_protocol_headers":{"content-type":"application/json; charset=utf-8","strict-transport-security":"max-age=31536000; includeSubDomains, max-age=63072000","x-ratelimit-limit":"100","x-ratelimit-remaining":"91","x-ratelimit-reset":"1786766216"},"bad_protocol_error":null,"delete_status_code":null,"delete_error":null,"expired_session_status_code":null,"expired_session_error":null,"issues":["missing_session_id","missing_protocol_header","bad_protocol_not_rejected"]}},"utility_coverage_probe":{"status":"missing","latency_ms":112.81,"details":{"completions":{"advertised":false,"sample_target":null,"live_probe":"not_executed"},"pagination":{"supported":false,"next_cursor_methods":[],"metadata_signal":false},"tasks":{"advertised":false,"probe_status":"missing","http_status":200},"initialize_capability_keys":["prompts","resources","tools"]}},"advanced_capabilities_probe":{"status":"warning","latency_ms":null,"details":{"capabilities":{"prompts":true,"resources":true,"completions":false,"roots":false,"sampling":false,"elicitation":false,"structured_outputs":true,"resource_links":false},"enabled_count":3,"enabled":["prompts","resources","structured_outputs"],"initialize_capability_keys":["prompts","resources","tools"]}},"tool_snapshot_probe":{"status":"ok","latency_ms":null,"details":{"current_tool_count":26,"previous_tool_count":26,"similarity":1.0,"added":[],"removed":[],"changed_outputs":[]}},"connector_replay_probe":{"status":"ok","latency_ms":null,"details":{"backward_compatible":true,"would_break_after_refresh":false,"added_tools":[],"removed_tools":[],"required_arg_breaks":[],"output_breaks":[],"additive_output_changes":[]}},"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","browser"],"oauth_supported":false,"prompt_available":false}},"action_safety_probe":{"status":"error","latency_ms":null,"details":{"summary":{"tool_count":26,"high_risk_tools":3,"destructive_tools":0,"exec_tools":3,"egress_tools":3,"secret_tools":2,"bulk_access_tools":0,"declared_non_read_only_tools":11,"annotation_conflict_tools":0,"risk_distribution":{"low":18,"medium":5,"high":3,"critical":0},"capability_distribution":{"read":15,"write":5,"network":3,"financial":1,"exec":3,"filesystem":1,"undetermined":3,"secrets":2},"has_mutating_capability":true,"has_non_read_capability":true},"auth_present":false,"safeguard_count":4,"confirmation_signals":[],"reason":null}},"official_registry_probe":{"status":"missing","latency_ms":null,"details":{"registry_source":"glama_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":null,"registry_version":null,"server_card_version":null,"registry_homepage":null,"server_card_homepage":null,"registry_repository":null,"server_card_repository":null,"drift_fields":[],"metadata_document_count":1,"compared_fields":["title","version","homepage","repository"],"readable_sources":[],"comparable_field_count":0}},"schema_divergence_probe":{"status":"missing","latency_ms":null,"details":{"reason":"no_server_card_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":null,"live_server_name":"clariBI MCP Server","server_version_mismatch":false,"card_server_version":null,"live_server_version":"1.0.0","auth_scheme_mismatch":false}},"connector_publishability_probe":{"status":"warning","latency_ms":null,"details":{"transport":"streamable-http","tool_count":26,"high_risk_tools":3,"blockers":["protocol_version","session_resume","step_up_auth","transport_compliance","request_association","action_safety","server_card"],"criteria":{"remote_transport":true,"initialize":true,"tools_list":true,"protocol_version":false,"session_resume":false,"step_up_auth":false,"transport_compliance":false,"connector_replay":true,"request_association":false,"action_safety":false,"server_card":false,"tool_surface":true,"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_1611d07a529088e3","generated_at":"2026-08-15T05:34:33.722976+00:00","trust_evaluated_at":"2026-08-15T05:34:33.722976+00:00","evidence_revision":"aa9f8271be84e924dbc59327","source":"current_snapshot","server":"ICS-cz/claribi-mcp","last_validated_at":"2026-08-15T03:56:56.818686+00:00","validation_age_hours":1.63,"freshness":{"schema_version":"verify.freshness_profile.v1","last_validated_at":"2026-08-15T03:56:56.818686+00:00","age_hours":1.63,"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":58.33,"raw_score":58.33,"confidence_score":100.0,"confidence_weighted_score":58.3,"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":"healthy","current_score":58.33,"display_score":58.33,"stale_score_suppressed":false,"production_trust_decision":{"schema_version":"verify.executive_verdict.v1","decision":"Block for production","why":"write/admin actions need confirmation safeguards + score below evaluation threshold","next_action":"revalidate, add safeguards, export policy","reason_count":2},"production_readiness_class":{"code":"needs_remediation","label":"Needs remediation","reason":"Current validation evidence shows operational or discovery gaps that should be fixed first."},"evidence_confidence":{"score":100.0,"label":"high","validation_age_hours":1.63,"live_check_count":14,"basis":{"evidence_bearing_validations":20,"affirmative_live_check_count":14,"validation_age_hours":1.63,"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-08-15T05:34:33.722976+00:00"}},"trust_snapshot":{"schema_version":"verify.trust_snapshot.v1","snapshot_id":"trustsnap_1611d07a529088e3","generated_at":"2026-08-15T05:34:33.722976+00:00","trust_evaluated_at":"2026-08-15T05:34:33.722976+00:00","evidence_revision":"aa9f8271be84e924dbc59327","source":"current_snapshot","server":"ICS-cz/claribi-mcp","last_validated_at":"2026-08-15T03:56:56.818686+00:00","validation_age_hours":1.63,"freshness":{"schema_version":"verify.freshness_profile.v1","last_validated_at":"2026-08-15T03:56:56.818686+00:00","age_hours":1.63,"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":58.33,"raw_score":58.33,"confidence_score":100.0,"confidence_weighted_score":58.3,"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":"healthy","current_score":58.33,"display_score":58.33,"stale_score_suppressed":false,"production_trust_decision":{"schema_version":"verify.executive_verdict.v1","decision":"Block for production","why":"write/admin actions need confirmation safeguards + score below evaluation threshold","next_action":"revalidate, add safeguards, export policy","reason_count":2},"production_readiness_class":{"code":"needs_remediation","label":"Needs remediation","reason":"Current validation evidence shows operational or discovery gaps that should be fixed first."},"evidence_confidence":{"score":100.0,"label":"high","validation_age_hours":1.63,"live_check_count":14,"basis":{"evidence_bearing_validations":20,"affirmative_live_check_count":14,"validation_age_hours":1.63,"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-08-15T05:34:33.722976+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-08-15T05:34:33.722976+00:00","evidence_revision":"aa9f8271be84e924dbc59327","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-08-15T05:34:33.722976+00:00"},"owner_opted_out":false,"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"},"snapshot_id":"trustsnap_1611d07a529088e3"}],"rows":[{"label":"Snapshot ID","values":["trustsnap_1611d07a529088e3"]},{"label":"Status","values":["healthy"]},{"label":"Score","values":[58.33]},{"label":"Production readiness","values":["Needs remediation"]},{"label":"Production trust decision","values":["Block for production"]},{"label":"Recommended policy","values":["Block"]},{"label":"Observed Attention","values":["No observed attention"]},{"label":"Evidence confidence","values":[100.0]},{"label":"Freshness","values":["n/a"]},{"label":"Latency","values":["n/a"]},{"label":"Spec recency","values":[2.0]},{"label":"Session resume","values":[3.0]},{"label":"Step-up auth","values":[0.0]},{"label":"Transport compliance","values":[0.0]},{"label":"Utility coverage","values":[0.0]},{"label":"Publishability","values":[1.0]},{"label":"Connector replay","values":[4.0]},{"label":"Request association","values":[0.0]},{"label":"Action safety","values":[1.0]},{"label":"Registry presence","values":[2.0]},{"label":"Provenance divergence","values":[null]},{"label":"Client compatibility: ChatGPT","values":["unknown"]},{"label":"Client compatibility: Claude","values":["unknown"]},{"label":"Write-action publishing","values":["unknown"]},{"label":"Snapshot churn risk","values":["unknown"]},{"label":"Transport","values":["streamable-http"]},{"label":"Auth","values":["Unauthenticated / none"]},{"label":"Tools","values":[26]},{"label":"Prompts","values":[0]},{"label":"Resources","values":[0]},{"label":"OAuth","values":[false]},{"label":"DCR","values":[false]},{"label":"Taxonomy","values":[""]},{"label":"Recommended for","values":["none"]},{"label":"Top alerts","values":["none"]}],"partial":true,"fields_unavailable":["tool_security_inventory","security_posture_summary","write_action_governance","capability_taxonomy","remediations"],"cache_note":"Compact compare fallback response; deep compare evidence is deferred to protect web capacity.","trust_evaluated_at":"2026-08-15T05:34:33.722976+00:00","materialization":{"state":"partial","trust_core_complete":true,"fields_unavailable":["tool_security_inventory","security_posture_summary","write_action_governance","capability_taxonomy","remediations"],"materialized_at":"2026-08-15T05:34:33.763876+00:00"}}