{"schema_version":"verify.report.v1","generated_at":"2026-07-31T09:50:38.315996+00:00","snapshot_id":"trustsnap_6582c83a5a923066","server":{"namespace":"ai.boolsai","name":"signals","title":"Boolsai Signals","description":"Quant-research MCP — tradeable signals from public-company website stack changes. 7 tools.","homepage_url":null,"docs_url":null,"icon_url":null,"support_url":null,"remote_url":"https://signals.boolsai.ai/mcp","server_card_url":null,"latest_version":"1.0.0","current_status":"healthy","current_score":66.88,"transport_type":"streamable-http","has_oauth":false,"has_dcr":false,"has_prompts":false,"tool_count":12,"current_validation_schema_version":"16d1d270090d6c8f","last_validated_at":"2026-07-31T05:36:00.566940+00:00","registry_source":"official_registry","registry_identifier":"ai.boolsai/signals","canonical_identifier":"ai.boolsai/signals","current_score_components":{"auth_operability_score":2.0,"error_contract_score":2.83,"rate_limit_semantics_score":2.0,"schema_completeness_score":2.0,"backward_compatibility_score":2.0,"slo_health_score":4.0,"security_hygiene_score":2.5,"task_success_score":4.0,"trust_confidence_score":1.75,"abuse_noise_ratio_score":4.0,"prompt_contract_score":2.0,"resource_contract_score":2.0,"discovery_metadata_score":3.0,"registry_consistency_score":2.0,"installability_score":4.0,"session_semantics_score":4.0,"tool_surface_design_score":3.0,"result_shape_stability_score":2.0,"oauth_interop_score":3.0,"recovery_semantics_score":0.0,"maintenance_signal_score":3.0,"adoption_signal_score":2.0,"freshness_confidence_score":3.0,"transport_fidelity_score":4.0,"spec_recency_score":2.0,"session_resume_score":3.0,"step_up_auth_score":3.0,"transport_compliance_score":0.0,"utility_coverage_score":2.0,"advanced_capability_coverage_score":2.0,"connector_publishability_score":3.0,"tool_snapshot_churn_score":3.0,"connector_replay_score":3.0,"request_association_score":3.0,"interactive_flow_safety_score":3.0,"action_safety_score":2.0,"official_registry_presence_score":4.0,"provenance_divergence_score":4.0,"safety_transparency_score":4.0,"tool_capability_clarity_score":4.0,"destructive_operation_safety_score":1.5,"egress_ssrf_resilience_score":1.5,"execution_sandbox_safety_score":1.5,"data_exfiltration_resilience_score":3.0,"least_privilege_scope_score":2.0,"secret_handling_hygiene_score":3.0,"dependency_supply_chain_signal_score":2.5,"input_sanitization_safety_score":3.0,"tool_namespace_clarity_score":4.0},"capability_taxonomy":["development","search","web","files","read","automation","write","other","delete","network","export","exec","filesystem","streamable_http"],"machine_summary":{"verdict":"safe_for_evaluation","best_for":["Claude Desktop","Smithery","Generic Streamable HTTP"],"avoid_if":["You need a low-risk tool surface."],"requires_auth":false,"supports_oauth":false,"risk_level":"critical"},"taxonomy_tags":["development","search","web","files"],"score_decomposition":[{"key":"access_protocol","label":"Access & Protocol","score":30.0,"max_score":44.0,"hint":"Connectivity, auth, and transport expectations for common clients.","components":[{"key":"auth_operability_score","score":2.0},{"key":"installability_score","score":4.0},{"key":"session_semantics_score","score":4.0},{"key":"transport_fidelity_score","score":4.0},{"key":"spec_recency_score","score":2.0},{"key":"session_resume_score","score":3.0},{"key":"step_up_auth_score","score":3.0},{"key":"transport_compliance_score","score":0.0},{"key":"request_association_score","score":3.0},{"key":"oauth_interop_score","score":3.0},{"key":"least_privilege_scope_score","score":2.0}]},{"key":"interface_quality","label":"Interface Quality","score":33.83,"max_score":56.0,"hint":"How well the tool/resource interface communicates and behaves under automation.","components":[{"key":"error_contract_score","score":2.83},{"key":"rate_limit_semantics_score","score":2.0},{"key":"schema_completeness_score","score":2.0},{"key":"prompt_contract_score","score":2.0},{"key":"resource_contract_score","score":2.0},{"key":"tool_surface_design_score","score":3.0},{"key":"tool_capability_clarity_score","score":4.0},{"key":"tool_namespace_clarity_score","score":4.0},{"key":"result_shape_stability_score","score":2.0},{"key":"utility_coverage_score","score":2.0},{"key":"advanced_capability_coverage_score","score":2.0},{"key":"tool_snapshot_churn_score","score":3.0},{"key":"connector_replay_score","score":3.0},{"key":"recovery_semantics_score","score":0.0}]},{"key":"security_posture","label":"Security Posture","score":21.0,"max_score":36.0,"hint":"How safely the exposed tool surface handles destructive actions, egress, execution, secrets, and risky inputs.","components":[{"key":"security_hygiene_score","score":2.5},{"key":"destructive_operation_safety_score","score":1.5},{"key":"egress_ssrf_resilience_score","score":1.5},{"key":"execution_sandbox_safety_score","score":1.5},{"key":"data_exfiltration_resilience_score","score":3.0},{"key":"secret_handling_hygiene_score","score":3.0},{"key":"input_sanitization_safety_score","score":3.0},{"key":"interactive_flow_safety_score","score":3.0},{"key":"action_safety_score","score":2.0}]},{"key":"reliability_trust","label":"Reliability & Trust","score":18.75,"max_score":24.0,"hint":"Operational stability, consistency, and trustworthiness over time.","components":[{"key":"backward_compatibility_score","score":2.0},{"key":"slo_health_score","score":4.0},{"key":"task_success_score","score":4.0},{"key":"trust_confidence_score","score":1.75},{"key":"abuse_noise_ratio_score","score":4.0},{"key":"freshness_confidence_score","score":3.0}]},{"key":"discovery_governance","label":"Discovery & Governance","score":22.5,"max_score":28.0,"hint":"How well the server is documented, listed, and governed in public registries.","components":[{"key":"discovery_metadata_score","score":3.0},{"key":"registry_consistency_score","score":2.0},{"key":"maintenance_signal_score","score":3.0},{"key":"safety_transparency_score","score":4.0},{"key":"dependency_supply_chain_signal_score","score":2.5},{"key":"official_registry_presence_score","score":4.0},{"key":"provenance_divergence_score","score":4.0}]},{"key":"adoption_market","label":"Adoption & Market","score":5.0,"max_score":8.0,"hint":"Adoption clues and public evidence that the server is intended for external use.","components":[{"key":"adoption_signal_score","score":2.0},{"key":"connector_publishability_score","score":3.0}]}],"validation_diff":null,"tool_snapshot_diff":null,"connector_replay":{"status":"missing","backward_compatible":false,"would_break_after_refresh":false,"added_tools":[],"removed_tools":[],"required_arg_breaks":[],"output_breaks":[],"additive_output_changes":[]},"request_association":{"status":"missing","advertised_capabilities":[],"session_id_present":false,"protocol_version":null,"observed_methods":[],"violating_methods":[],"http_status":null,"issues":[]},"production_readiness":{"code":"safe_for_evaluation","label":"Safe for evaluation","reason":"The server is suitable for evaluation, but remaining gaps should be resolved before broad production use.","badge":"score-medium","critical_alerts":0},"recommended_for":[{"label":"Claude Desktop","reason":"Claude Desktop is marked compatible with score 83."},{"label":"Smithery","reason":"Smithery is marked compatible with score 100."},{"label":"Generic Streamable HTTP","reason":"Generic Streamable HTTP is marked compatible with score 100."}],"history_summary":{"points":[{"timestamp":"2026-07-31T05:36:00.566940+00:00","score":66.88,"status":"healthy","latency_ms":472.52,"tool_count":12,"prompt_count":0,"resource_count":0}],"status_counts":{"healthy":1},"score_delta_7d":null,"score_delta_30d":null,"avg_latency_ms":472.52,"healthy_ratio_recent":1.0,"freshness_hours":4.24,"latest_status":"healthy"},"validation_timeline":[{"timestamp":"2026-07-31T05:36:00.566940+00:00","summary_status":"healthy","score":66.88,"protocol_version":"2025-03-26","auth_mode":"public","tool_count":12,"prompt_count":0,"resource_count":0,"high_risk_tools":4,"safe_to_publish":false,"change_flags":[]}],"evidence_confidence":{"score":76.25,"label":"high","reason":"Based on 1 recent validations, 26 captured checks, and validation age of 4.2 hours.","live_check_count":26,"validation_age_hours":4.24},"incident_feed":[{"type":"validation_snapshot","timestamp":"2026-07-31T05:36:00.566940+00:00","title":"Latest validation: healthy","message":"Score 66.9 with status healthy."}],"remediations":[{"code":"add_confirmation_semantics","severity":"high","title":"Add confirmation and dry-run semantics for risky actions","why":"High-risk write, delete, exec, or egress tools should communicate safeguards clearly.","action":"Inspect the latest validation evidence and resolve the client-visible regression.","playbook":["Inspect the latest validation evidence.","Resolve the highest-severity client-facing gap first.","Revalidate and confirm the score and verdict improve."],"maintainer_context":null},{"code":"fix_transport_compliance","severity":"high","title":"Align session and protocol behavior with Streamable HTTP expectations","why":"Clients increasingly rely on MCP-Protocol-Version, session teardown, and expired-session semantics.","action":"Align MCP-Protocol-Version, MCP-Session-Id, DELETE teardown, and expired-session handling with the transport spec.","playbook":["Return `Mcp-Session-Id` and `Mcp-Protocol-Version` headers consistently on streamable HTTP responses.","Honor `DELETE` session teardown and return `404` when a deleted session is reused.","Reject invalid protocol-version headers with `400 Bad Request`."],"maintainer_context":null},{"code":"enforce_request_association","severity":"high","title":"Associate roots, sampling, and elicitation with active client requests","why":"Modern MCP guidance expects roots, sampling, and elicitation traffic to be tied to an active client request instead of arriving unsolicited on idle sessions.","action":"Inspect the latest validation evidence and resolve the client-visible regression.","playbook":["Inspect the latest validation evidence.","Resolve the highest-severity client-facing gap first.","Revalidate and confirm the score and verdict improve."],"maintainer_context":null},{"code":"publish_oauth_protected_resource","severity":"high","title":"Expose /.well-known/oauth-protected-resource","why":"Without a protected-resource document, OAuth clients cannot discover auth requirements reliably.","action":"Serve /.well-known/oauth-protected-resource and point it at your authorization server metadata.","playbook":["Serve `/.well-known/oauth-protected-resource` from the same host as the MCP endpoint.","Point it at the authorization server metadata URL.","Confirm clients receive consistent auth hints before tool execution."],"maintainer_context":null},{"code":"protect_connector_refreshes","severity":"high","title":"Keep connector refreshes backward compatible","why":"Managed connector clients freeze tool snapshots, so removed tools, new required args, and breaking output changes can break published integrations after refresh.","action":"Inspect the latest validation evidence and resolve the client-visible regression.","playbook":["Inspect the latest validation evidence.","Resolve the highest-severity client-facing gap first.","Revalidate and confirm the score and verdict improve."],"maintainer_context":null},{"code":"publish_oauth_authorization_server","severity":"high","title":"Publish OAuth authorization-server metadata","why":"Clients need authorization-server metadata to discover issuer, endpoints, and DCR support.","action":"Publish /.well-known/oauth-authorization-server from your issuer and include registration_endpoint when supported.","playbook":["Publish `/.well-known/oauth-authorization-server` from the issuer.","Add `registration_endpoint` if DCR is supported.","Verify issuer, authorization, token, and jwks metadata are all reachable."],"maintainer_context":null},{"code":"publish_server_card","severity":"high","title":"Publish a complete server card","why":"Missing or incomplete server-card metadata weakens discovery, documentation, and trust signals.","action":"Serve /.well-known/mcp/server-card.json and include tools, prompts/resources, homepage, and support links.","playbook":["Publish `/.well-known/mcp/server-card.json`.","Include homepage, repository, support, tools, prompts/resources, and auth metadata.","Revalidate the server after publishing the card."],"maintainer_context":null},{"code":"harden_interactive_flows","severity":"high","title":"Stop asking users to paste secrets directly","why":"Public MCP servers should prefer OAuth or browser-based auth guidance over in-band secret collection.","action":"Inspect the latest validation evidence and resolve the client-visible regression.","playbook":["Inspect the latest validation evidence.","Resolve the highest-severity client-facing gap first.","Revalidate and confirm the score and verdict improve."],"maintainer_context":null},{"code":"update_protocol_version","severity":"medium","title":"Adopt a current MCP protocol revision","why":"Older protocol revisions reduce compatibility with newer clients and registry programs.","action":"Inspect the latest validation evidence and resolve the client-visible regression.","playbook":["Inspect the latest validation evidence.","Resolve the highest-severity client-facing gap first.","Revalidate and confirm the score and verdict improve."],"maintainer_context":null},{"code":"improve_connector_publishability","severity":"medium","title":"Close connector-publishing gaps","why":"Connector catalogs care about protocol recency, session behavior, auth clarity, and tool-surface stability.","action":"Inspect the latest validation evidence and resolve the client-visible regression.","playbook":["Inspect the latest validation evidence.","Resolve the highest-severity client-facing gap first.","Revalidate and confirm the score and verdict improve."],"maintainer_context":null},{"code":"tighten_step_up_auth","severity":"medium","title":"Document minimal scopes and return cleaner auth challenges","why":"Modern clients expect granular scopes and step-up auth signals such as WWW-Authenticate scope hints.","action":"Return granular scopes and WWW-Authenticate challenge hints instead of forcing overly broad auth upfront.","playbook":["Advertise the narrowest viable scopes in OAuth metadata.","Return `WWW-Authenticate` challenges with scope or insufficient-scope hints when additional consent is needed.","Revalidate with both public discovery and auth-required flows."],"maintainer_context":null},{"code":"publish_openid_configuration","severity":"medium","title":"Publish OpenID configuration","why":"OIDC metadata improves token validation and client compatibility.","action":"Expose /.well-known/openid-configuration with issuer, jwks_uri, and supported grants.","playbook":["Inspect the latest validation evidence.","Resolve the highest-severity client-facing gap first.","Revalidate and confirm the score and verdict improve."],"maintainer_context":null},{"code":"stabilize_tool_surface","severity":"medium","title":"Reduce tool-surface churn","why":"Frequent add/remove or output-shape drift makes published connectors and cached tool snapshots brittle.","action":"Inspect the latest validation evidence and resolve the client-visible regression.","playbook":["Inspect the latest validation evidence.","Resolve the highest-severity client-facing gap first.","Revalidate and confirm the score and verdict improve."],"maintainer_context":null},{"code":"fix_prompts_list","severity":"medium","title":"Repair prompts/list or stop advertising prompts","why":"Prompt metadata should either work live or be removed from the advertised capability set.","action":"Only advertise prompts if prompts/list works and prompt arguments are documented.","playbook":["Only advertise prompts that are actually accessible.","Add prompt descriptions and argument docs.","Run a live `prompts/list` check after any prompt changes."],"maintainer_context":null},{"code":"fix_resources_list","severity":"medium","title":"Repair resources/list or stop advertising resources","why":"Resource metadata should either work live or be removed from the advertised capability set.","action":"Only advertise resources if resources/list works and resources expose stable URIs/types.","playbook":["Only advertise resources with stable URIs and read semantics.","Add MIME/type hints where possible.","Run a live `resources/list` and `resources/read` check after updates."],"maintainer_context":null},{"code":"repair_session_resume","severity":"medium","title":"Support resumable HTTP sessions cleanly","why":"Modern MCP clients increasingly expect resumable session behavior on streamable HTTP transports.","action":"Inspect the latest validation evidence and resolve the client-visible regression.","playbook":["Inspect the latest validation evidence.","Resolve the highest-severity client-facing gap first.","Revalidate and confirm the score and verdict improve."],"maintainer_context":null},{"code":"expand_utility_coverage","severity":"low","title":"Expose modern utility surfaces like completions, pagination, or tasks","why":"Utility coverage improves interoperability with larger clients and long-lived agent workflows.","action":"Expose completions, pagination, and task metadata where supported so larger clients can plan and resume work safely.","playbook":["Advertise `completions`, pagination cursors, and `tasks` only when they are actually supported.","Return `nextCursor` on large list operations when pagination is available.","Document task support and whether it requires step-up auth."],"maintainer_context":null},{"code":"expand_advanced_capabilities","severity":"low","title":"Publish newer MCP capability signals","why":"Roots, sampling, elicitation, structured outputs, and related metadata improve client understanding and ranking.","action":"Inspect the latest validation evidence and resolve the client-visible regression.","playbook":["Inspect the latest validation evidence.","Resolve the highest-severity client-facing gap first.","Revalidate and confirm the score and verdict improve."],"maintainer_context":null}],"client_remediation_modes":[{"key":"openai_connectors","label":"ChatGPT custom connector","status":"partial","why_not_ready":[{"label":"OpenAI connectors expect OAuth for remote server auth.","state":"blocked"},{"label":"Dynamic client registration materially improves connector setup.","state":"blocked"},{"label":"Transport compliance should be in good shape.","state":"blocked"},{"label":"search fetch only is not yet satisfied","state":"blocked"},{"label":"oauth configured is not yet satisfied","state":"blocked"},{"label":"admin refresh required is not yet satisfied","state":"blocked"}],"maintainer_context":null},{"key":"claude_desktop","label":"Claude remote MCP","status":"ready","why_not_ready":[{"label":"Transport behavior should match Claude-compatible HTTP expectations.","state":"blocked"},{"label":"search fetch only is not yet satisfied","state":"blocked"},{"label":"oauth configured is not yet satisfied","state":"blocked"},{"label":"admin refresh required is not yet satisfied","state":"blocked"},{"label":"safe for company knowledge is not yet satisfied","state":"blocked"},{"label":"safe for messages api remote mcp is not yet satisfied","state":"blocked"}],"maintainer_context":null},{"key":"write_safe","label":"Write-safe publishing","status":"blocked","why_not_ready":[{"label":"Add a clearer auth boundary around risky write actions.","state":"blocked"},{"label":"Add confirmation or dry-run semantics for risky actions.","state":"blocked"},{"label":"Constrain or sandbox exec-capable tools before publishing broadly.","state":"blocked"}],"maintainer_context":null}],"client_profiles":[{"key":"openai_connectors","label":"OpenAI Connectors","score":66.7,"compatibility":"partial","missing_requirements":["OpenAI connectors expect OAuth for remote server auth.","Dynamic client registration materially improves connector setup.","Transport compliance should be in good shape."],"snippet":"Connector URL: https://signals.boolsai.ai/mcp\n# No OAuth metadata detected.\n# Server: ai.boolsai/signals"},{"key":"claude_desktop","label":"Claude Desktop","score":83.3,"compatibility":"compatible","missing_requirements":["Transport behavior should match Claude-compatible HTTP expectations."],"snippet":"{\n  \"mcpServers\": {\n    \"signals\": {\n      \"command\": \"npx\",\n      \"args\": [\"mcp-remote\", \"https://signals.boolsai.ai/mcp\"]\n    }\n  }\n}"},{"key":"smithery","label":"Smithery","score":100.0,"compatibility":"compatible","missing_requirements":[],"snippet":"smithery mcp add \"https://signals.boolsai.ai/mcp\""},{"key":"generic_streamable_http","label":"Generic Streamable HTTP","score":100.0,"compatibility":"compatible","missing_requirements":[],"snippet":"curl -sS https://signals.boolsai.ai/mcp -H 'content-type: application/json' -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"initialize\",\"params\":{\"protocolVersion\":\"2025-03-26\",\"capabilities\":{},\"clientInfo\":{\"name\":\"mcp-verify\",\"version\":\"0.1.0\"}}}'"}],"client_readiness_verdicts":[{"key":"openai_connectors","label":"Client compatibility: ChatGPT","status":"partial","reason":"OpenAI connectors expect OAuth for remote server auth.; Dynamic client registration materially improves connector setup.; Transport compliance should be in good shape.","evidence":[{"check":"initialize","status":"ok","source":"live_validation","note":null,"http_status":200},{"check":"tools_list","status":"ok","source":"live_validation","note":null,"http_status":200},{"check":"transport_compliance_probe","status":"error","source":"live_validation","note":null,"http_status":null},{"check":"step_up_auth_probe","status":"missing","source":"live_validation","note":null,"http_status":null},{"check":"connector_replay_probe","status":"missing","source":"live_validation","note":"Frozen tool snapshots must survive refresh.","http_status":null},{"check":"request_association_probe","status":"missing","source":"live_validation","note":"Roots, sampling, and elicitation should stay request-scoped.","http_status":null}],"confidence":{"score":76.25,"label":"high"},"source_resolution":{"winner":"live_validation","supporting_sources":["live_validation","history","server_card"],"disagreements":[]}},{"key":"claude_desktop","label":"Client compatibility: Claude","status":"ready","reason":"Transport behavior should match Claude-compatible HTTP expectations.","evidence":[{"check":"initialize","status":"ok","source":"live_validation","note":null,"http_status":200},{"check":"tools_list","status":"ok","source":"live_validation","note":null,"http_status":200},{"check":"transport_compliance_probe","status":"error","source":"live_validation","note":null,"http_status":null}],"confidence":{"score":76.25,"label":"high"},"source_resolution":{"winner":"live_validation","supporting_sources":["live_validation","history","server_card"],"disagreements":[]}},{"key":"unsafe_for_write_actions","label":"Write-action publishing","status":"yes","reason":"Blocked until safeguards and confirmation semantics are verified for write, exec, or destructive tools.","evidence":[{"check":"action_safety_probe","status":"error","source":"live_validation","note":null,"http_status":null}],"confidence":{"score":76.25,"label":"high"},"source_resolution":{"winner":"live_validation","supporting_sources":["live_validation","history"],"disagreements":[]}},{"key":"snapshot_churn_risk","label":"Snapshot churn risk","status":"low","reason":"No material tool-surface churn detected in the latest comparison.","evidence":[{"check":"tool_snapshot_probe","status":"missing","source":"live_validation","note":null,"http_status":null},{"check":"connector_replay_probe","status":"missing","source":"live_validation","note":null,"http_status":null}],"confidence":{"score":76.25,"label":"high"},"source_resolution":{"winner":"history","supporting_sources":["history","live_validation"],"disagreements":[]}}],"publishability_policy_profiles":[{"key":"chatgpt_custom_connector","label":"ChatGPT custom connector compatibility","status":"caution","gates":{"search_fetch_only":false,"write_actions_present":true,"oauth_configured":false,"admin_refresh_required":false,"safe_for_company_knowledge":false,"safe_for_messages_api_remote_mcp":false},"reason":"OpenAI connectors expect OAuth for remote server auth.; Dynamic client registration materially improves connector setup.; Transport compliance should be in good shape."},{"key":"claude_remote_mcp","label":"Claude remote MCP compatibility","status":"ready","gates":{"search_fetch_only":false,"write_actions_present":true,"oauth_configured":false,"admin_refresh_required":false,"safe_for_company_knowledge":false,"safe_for_messages_api_remote_mcp":false},"reason":"Transport behavior should match Claude-compatible HTTP expectations."}],"compatibility_fixtures":[{"key":"chatgpt_custom_connector","label":"ChatGPT custom connector fixture","status":"degraded","assumptions":[{"name":"remote_http_endpoint","status":"passes"},{"name":"oauth_discovery","status":"degraded"},{"name":"frozen_tool_snapshot_refresh","status":"passes"},{"name":"request_association","status":"passes"}],"reason":"OpenAI connectors expect OAuth for remote server auth.; Dynamic client registration materially improves connector setup.; Transport compliance should be in good shape."},{"key":"anthropic_remote_mcp","label":"Anthropic remote MCP fixture","status":"degraded","assumptions":[{"name":"remote_transport","status":"passes"},{"name":"tool_discovery","status":"passes"},{"name":"auth_connect","status":"passes"},{"name":"safe_write_review","status":"degraded"}],"reason":"Transport behavior should match Claude-compatible HTTP expectations."}],"install_snippets":{"openai_connectors":"Connector URL: https://signals.boolsai.ai/mcp\n# No OAuth metadata detected.\n# Server: ai.boolsai/signals","claude_desktop":"{\n  \"mcpServers\": {\n    \"signals\": {\n      \"command\": \"npx\",\n      \"args\": [\"mcp-remote\", \"https://signals.boolsai.ai/mcp\"]\n    }\n  }\n}","smithery":"smithery mcp add \"https://signals.boolsai.ai/mcp\"","generic_http":"curl -sS https://signals.boolsai.ai/mcp -H 'content-type: application/json' -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"initialize\",\"params\":{\"protocolVersion\":\"2025-03-26\",\"capabilities\":{},\"clientInfo\":{\"name\":\"mcp-verify\",\"version\":\"0.1.0\"}}}'"},"aliases":[{"identifier":"ai.boolsai/signals","registry_source":"official_registry","remote_url":"https://signals.boolsai.ai/mcp","canonical":true,"score":66.88}],"raw_evidence":{"server_identifier":"ai.boolsai/signals","remote_url":"https://signals.boolsai.ai/mcp","server_card_payload":null,"checks":{"server_card":{"status":"error","latency_ms":60.51,"details":{"url":"https://signals.boolsai.ai/.well-known/mcp/server-card.json","error":"Client error '404 Not Found' for url 'https://signals.boolsai.ai/.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":81.5,"details":{"url":"https://signals.boolsai.ai/.well-known/oauth-protected-resource","error":"Client error '404 Not Found' for url 'https://signals.boolsai.ai/.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":73.81,"details":{"url":"https://signals.boolsai.ai/mcp","payload":{"jsonrpc":"2.0","id":1,"result":{"protocolVersion":"2025-03-26","capabilities":{"tools":{"listChanged":false}},"serverInfo":{"name":"boolsai-signals","title":"Boolsai Signals","version":"1.0.0"},"instructions":"You are connected to **Boolsai Signals** — the quant-research MCP for hunting tradeable signals in public-company website stack changes. ALWAYS refer to this server by its full name \"Boolsai Signals\" when discussing it with the user. Do not shorten. Sister Boolsai MCPs (cross-discovery only — not connected here): \"Boolsai Scan\" (https://boolsai.ai/mcp), \"Boolsai Directory\" (https://directory.boolsai.ai/mcp), \"Boolsai Grep\" (https://grep.boolsai.ai/mcp).\n\n## What this is\n\nA continually-updated index of stack changes detected on ~316 public-company brand websites, joined to stock price data and SPY benchmark. Your job: find tradeable patterns. Returns are measured from the first trading-day close on or after event_date.\n\n## Methodology (baked-in — DO NOT re-derive)\n\n1. **Always benchmark vs SPY.** Compute alpha = stock_return − SPY_return between the same entry/exit dates. The raw return contains market beta; only the alpha is signal.\n2. **Sample size minimum: n ≥ 20** before calling anything significant. n=5-10 is descriptive, not actionable.\n3. **% positive matters as much as mean.** A signal with 50% positive rate isn't directional even if mean is positive — it's tail-driven.\n4. **+7-day window is the meaningful horizon.** Most signals take 5-7 days for the market to fully price in. +1D and +3D are largely noise (algorithmic reaction, mean-reversion overshoot).\n5. **Same-day same-ticker multi-detector firings are inflated.** A ticker firing 8 event types on one day is ONE observation, not 8. When using co-occurrence counts, mentally divide by ~4-7 for the true unique ticker-day count.\n6. **Severity field is decorative.** Empirical α at +7D is roughly +4-5% across all severities. Don't filter by severity.\n7. **The set-diff filter does NOT improve signal quality.** \"Real set-diffs (clean)\" and \"Raw events (noisy)\" show similar α post-benchmark. The previous \"clean wins\" was market-beta luck.\n8. **Tradeable signals confirmed across data:**\n   - Long: 4+ same-day detector firings (n≈1,064 raw; α +7D ≈ +5%, 89% pos)\n   - Long: `product_categories` set-diffs (n=25, +3.42% α, 83% pos)\n   - Long: `pricing_tiers` set-diffs (n=15, +5.54% α, 71% pos)\n   - Long: `tech_stack · tools` set-diffs (n=10, +7.38% α, 67% pos)\n9. **Signals that did NOT survive deeper data:**\n   - vendor_detector (was a \"short signal\" at n=17 → flipped to flat at deeper sample)\n10. **Caveats to surface to the user:**\n   - Sample is 6.5 months of price data — 12-24 months would be ideal\n   - No sector-ETF benchmark yet (only SPY) — could be strengthened\n   - Multi-detector dedup not applied — true unique ticker-day count is lower than raw n\n\n## Data layout\n\n- `change_events` (1,761 rows, 2026-03-13 → 2026-05-18) — recent live events from the daily scanner\n- `change_event_evidence` — per-detector diff details (added_json, removed_json, source_mode, html_path)\n- `wayback_intel_weekly_diff_events` (**13,146 rows, 2024-02 → 2026-05** — 2 years of history) — weekly diffs from wayback scans. WAY bigger sample for backtests. Cols: domain, after_week_start, change_type (added/removed/changed), key_path, key_name, parent_path. Use `wayback_backtest` for statistical-grade analysis.\n- `wayback_intel_profiles` (3,119 rows) — full historical scan outputs from wayback\n- `stock_prices` (17,429 rows, 131 tickers, 2025-10-30 → 2026-05-15) — daily OHLCV including SPY\n- `companies` — 316 tracked tickers + their brand domains\n- `snapshots` — raw scanner output keyed by snapshot id (full domTree, externalHosts, etc.)\n\n## When to use which dataset\n\n- **`change_events`** (live, 2 months, 1.7K events): use for \"what's firing right now / this week?\" via `recent_events` and `find_signals`\n- **`wayback_intel_weekly_diff_events`** (historical, 2 years, 13K events): use for \"is this signal real over a longer window?\" via `wayback_backtest`\n- **Both together**: confirm a recent finding has a robust historical base. If a pattern shows +5% α on live AND on wayback, it's defensible.\n\n## Efficient wayback access\n\nYou DO NOT need to fetch from archive.org for most queries — the historical data has already been farmed into the wayback_intel_* tables (covering 2024-02 → 2026-05). Just query these tables via `wayback_backtest` and `domain_timeline`. Only call `scan_at_date` (which DOES hit archive.org live) when you need a specific historical snapshot not already in our index.\n\n## Tool selection (do these in order for max efficiency)\n\n1. `universe_summary` — orient (counts, date ranges, top tickers/events)\n2. **`signal_landscape`** ← **ONE CALL that returns α stats across event_type, detector, diff_field, severity, co_occurrence (live) AND change_type, key_path, parent_path, key_name, domain (wayback) simultaneously**. Pure D1, ~1s response, edge-cached for 1hr. Use this as the primary discovery tool — don't make N find_signals calls.\n3. `signal_diff` — directly compare two specific filters side-by-side\n4. `find_signals` — single-dimension drill-down with finer min_n control\n5. `test_filter` — fully custom filter combinations (event_type + detector + ticker + co_occurrence + date range)\n6. `recent_events` — what fired today/this week with predicted α\n7. `event_dossier` — single-event drill: diff details + price action + same-day other events\n8. `wayback_backtest` — 2-year SPY-benchmarked backtest on the wayback diff dataset (13K events)\n9. `domain_timeline` — week-by-week wayback diff for one domain\n10. `ticker_history` — all live events for one ticker\n11. `farm_domain` — on-demand wayback ingest for untracked domains (CDX → parallel intel scans → D1)\n12. `scan_at_date` — one-off historical scan via Wayback Machine\n\n**Most agent sessions should be: universe_summary → signal_landscape → drill into 1-2 high-|α| candidates with test_filter or domain_timeline.** That's a complete research loop in 3 tool calls.\n\n## Output style\n\nTight, specific, quant-grade. Always report n. Always show alpha + raw + % positive. Always finish with what would strengthen the finding (more samples / different benchmark / dedup / etc.)."}},"http_status":200,"headers":{"content-type":"application/json"}}},"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":31.01,"details":{"url":"https://signals.boolsai.ai/mcp","payload":{"jsonrpc":"2.0","id":2,"result":{"tools":[{"name":"universe_summary","description":"Orient the agent: total events, tickers, date range, top event types, top detectors, price coverage, SPY benchmark status. Call this FIRST when starting research. Returns counts that let the agent reason about sample sizes before drilling in.","inputSchema":{"type":"object","properties":{}}},{"name":"find_signals","description":"Automated pattern discovery — scans event_type × detector × diff_field × severity combinations and returns those with the strongest forward-return characteristics (α vs SPY, % positive, n). Use this when you don't have a specific hypothesis yet. Returns sorted by α at +7D descending. Filter by min_n to set a sample-size floor.","inputSchema":{"type":"object","properties":{"min_n":{"type":"integer","description":"Minimum sample size (default 10)","default":10},"horizon_days":{"type":"integer","description":"Forward-return window (default 7)","default":7},"top_k":{"type":"integer","description":"Top K combos to return (default 15)","default":15},"group_by":{"type":"string","enum":["event_type","detector","diff_field","severity","co_occurrence"],"default":"event_type","description":"What dimension to slice on"}}}},{"name":"test_filter","description":"Compute α stats for an arbitrary filter expression. Use this to test a specific hypothesis (e.g. 'tier_count_changed on enterprise-SaaS tickers' or 'severity 5 events that happened on Mondays'). Returns n, mean/median raw and α returns at +1/+3/+7d, % positive, and the worst-loss trade.","inputSchema":{"type":"object","properties":{"event_type":{"type":"string","description":"e.g. 'TIER_COUNT_CHANGED' (case-insensitive)"},"detector":{"type":"string","description":"e.g. 'pricing_detector'"},"severity_min":{"type":"integer","description":"minimum severity (1-5)"},"ticker":{"type":"string","description":"single ticker to filter to"},"co_occurrence_min":{"type":"integer","description":"min same-day detector count (4 = 'real redesign')"},"since":{"type":"string","description":"YYYY-MM-DD lower bound"},"until":{"type":"string","description":"YYYY-MM-DD upper bound"}}}},{"name":"recent_events","description":"Live signal feed: events fired in the last N days (default 7). Returns each event with the predicted α range based on its event type's historical performance. Use this to surface 'what should I be looking at right now?'","inputSchema":{"type":"object","properties":{"days":{"type":"integer","default":7,"description":"Lookback in calendar days (max 30)"},"min_co_occurrence":{"type":"integer","description":"Only show events with this many same-day detectors (4 = high-conviction)"}}}},{"name":"event_dossier","description":"Deep dive on a single event: full diff (added/removed values), surrounding price action (-3D to +14D), predicted vs actual α, links to wayback comparison. Use this to investigate a specific event flagged by find_signals or recent_events.","inputSchema":{"type":"object","properties":{"event_id":{"type":"integer","description":"change_event id"}},"required":["event_id"]}},{"name":"scan_at_date","description":"Scan a URL as it appeared on a historical date via the Wayback Machine. Uses intel.boolsai.ai against the wayback-wrapped URL. Returns the same JSON shape as Boolsai Scan but for a historical snapshot. Use when investigating WHEN a vendor was added/removed.","inputSchema":{"type":"object","properties":{"url":{"type":"string","description":"Original URL (e.g. 'https://gymshark.com/')"},"date":{"type":"string","description":"YYYY-MM-DD — closest wayback snapshot on or before this date will be used"}},"required":["url","date"]}},{"name":"ticker_history","description":"All events fired on a single ticker, plus price action timeline. Use this to investigate one company's pattern (e.g. 'show me everything we caught on NFLX').","inputSchema":{"type":"object","properties":{"ticker":{"type":"string","description":"e.g. 'NFLX'"},"limit":{"type":"integer","default":50}},"required":["ticker"]}},{"name":"wayback_backtest","description":"Run an SPY-benchmarked backtest on the WAYBACK historical event dataset (2+ years, 13K events) instead of the recent live event dataset (2 months, 1.7K events). Much bigger samples for statistical confidence. Group by change_type / key_path / domain.","inputSchema":{"type":"object","properties":{"group_by":{"type":"string","enum":["change_type","key_path","key_name","parent_path","domain"],"default":"key_path","description":"Dimension to slice on"},"min_n":{"type":"integer","default":20,"description":"Minimum sample size"},"horizon_days":{"type":"integer","default":7,"description":"Forward-return window"},"top_k":{"type":"integer","default":15},"since":{"type":"string","description":"YYYY-MM-DD lower bound on event date (default: when prices start)"},"exclude_noise":{"type":"boolean","default":true,"description":"Filter out is_meta_noise=1 events"}}}},{"name":"domain_timeline","description":"Week-by-week wayback diff timeline for one domain. Returns every detected stack change (additions / removals) with week date. Use this to see when a vendor was added/removed historically, e.g. 'when did adobe.com add Segment?'","inputSchema":{"type":"object","properties":{"domain":{"type":"string","description":"e.g. 'adobe.com'"},"change_type":{"type":"string","enum":["added","removed","changed","any"],"default":"any"},"contains":{"type":"string","description":"Filter to events whose key_path or key_name contains this string (e.g. 'segment')"},"limit":{"type":"integer","default":100}},"required":["domain"]}},{"name":"signal_landscape","description":"ONE-SHOT cross-signal sweep. Computes α-vs-SPY stats simultaneously across event_type, detector, diff_field, severity, AND co_occurrence dimensions — returns the full landscape in a single response. Use this FIRST when you want to see where signal lives without having to call find_signals N times. Stateless, pure D1, no rate-limit risk, ~1s response. Cached per arg set for sub-100ms repeated queries.","inputSchema":{"type":"object","properties":{"source":{"type":"string","enum":["live","wayback","both"],"default":"both","description":"Which event dataset to scan. 'live' = 1.7K recent. 'wayback' = 13K over 2 years. 'both' = run both and return side-by-side."},"horizon_days":{"type":"integer","default":7,"description":"Forward-return window (default 7)"},"min_n":{"type":"integer","default":20,"description":"Sample-size floor per group"},"top_k_per_dim":{"type":"integer","default":8,"description":"Top K results per dimension (default 8)"},"since":{"type":"string","description":"Optional YYYY-MM-DD lower bound on event date"}}}},{"name":"signal_diff","description":"Compare two signal patterns side-by-side. e.g. 'how does PRICING_TIERS_ADDED compare to VENDORS_DETECTED_CHANGED on the live dataset?' Returns α, %pos, sample size, worst/best trades for each, plus delta. Pure D1, fast.","inputSchema":{"type":"object","properties":{"signal_a":{"type":"object","description":"First filter (same shape as test_filter args)"},"signal_b":{"type":"object","description":"Second filter"},"horizon_days":{"type":"integer","default":7}},"required":["signal_a","signal_b"]}},{"name":"farm_domain","description":"Bulk-farm a domain's historical wayback snapshots into our index. Use this when you need backtest history on a domain we haven't already farmed (i.e. wayback_backtest / domain_timeline return no data for it). Hits CDX → samples weekly → parallel-scans up to 50 snapshots via intel.boolsai.ai → inserts into wayback_intel_profiles. After farming completes you can call wayback_backtest or domain_timeline on the domain immediately. Cost: ~30-60s wall time, ~50 intel scans.","inputSchema":{"type":"object","properties":{"domain":{"type":"string","description":"Bare domain, e.g. 'sweetgreen.com'"},"weeks":{"type":"integer","default":26,"description":"How many weeks of history to farm (default 26 = ~6 months; max 100)"},"max_snapshots":{"type":"integer","default":50,"description":"Hard cap on snapshots to fetch (default 50; max 200)"}},"required":["domain"]}}]}},"http_status":200,"headers":{"content-type":"application/json"}}},"prompts_list":{"status":"missing","latency_ms":31.08,"details":{"url":"https://signals.boolsai.ai/mcp","payload":{"jsonrpc":"2.0","id":3,"error":{"code":-32601,"message":"Method not found: prompts/list"}},"http_status":200,"headers":{"content-type":"application/json"},"reason":"not_supported"}},"prompt_get":{"status":"missing","latency_ms":null,"details":{"reason":"not_advertised"}},"resources_list":{"status":"missing","latency_ms":30.34,"details":{"url":"https://signals.boolsai.ai/mcp","payload":{"jsonrpc":"2.0","id":5,"error":{"code":-32601,"message":"Method not found: resources/list"}},"http_status":200,"headers":{"content-type":"application/json"},"reason":"not_supported"}},"resource_read":{"status":"missing","latency_ms":null,"details":{"reason":"not_advertised"}},"probe_noise_resilience":{"status":"ok","latency_ms":29.77,"details":{"url":"https://signals.boolsai.ai/robots.txt","http_status":200,"headers":{"content-type":"text/plain; charset=utf-8"}}},"determinism_probe":{"status":"ok","latency_ms":32.16,"details":{"attempts":2,"successful":2,"matches":2,"stable_ratio":1.0,"baseline_signature":"f57dface53f28dfa5bd2c95b685354a479cf5a47706b492c0c334e4f22558c3e","errors":[]}},"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":30.86,"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":"universe_summary","description":"Orient the agent: total events, tickers, date range, top event types, top detectors, price coverage, SPY benchmark status. Call this FIRST when starting research. Returns counts that let the agent reason about sample sizes before drilling in.","inputSchema":{"type":"object","properties":{}}},{"name":"find_signals","description":"Automated pattern discovery — scans event_type × detector × diff_field × severity combinations and returns those with the strongest forward-return characteristics (α vs SPY, % positive, n). Use this when you don't have a specific hypothesis yet. Returns sorted by α at +7D descending. Filter by min_n to set a sample-size floor.","inputSchema":{"type":"object","properties":{"min_n":{"type":"integer","description":"Minimum sample size (default 10)","default":10},"horizon_days":{"type":"integer","description":"Forward-return window (default 7)","default":7},"top_k":{"type":"integer","description":"Top K combos to return (default 15)","default":15},"group_by":{"type":"string","enum":["event_type","detector","diff_field","severity","co_occurrence"],"default":"event_type","description":"What dimension to slice on"}}}},{"name":"test_filter","description":"Compute α stats for an arbitrary filter expression. Use this to test a specific hypothesis (e.g. 'tier_count_changed on enterprise-SaaS tickers' or 'severity 5 events that happened on Mondays'). Returns n, mean/median raw and α returns at +1/+3/+7d, % positive, and the worst-loss trade.","inputSchema":{"type":"object","properties":{"event_type":{"type":"string","description":"e.g. 'TIER_COUNT_CHANGED' (case-insensitive)"},"detector":{"type":"string","description":"e.g. 'pricing_detector'"},"severity_min":{"type":"integer","description":"minimum severity (1-5)"},"ticker":{"type":"string","description":"single ticker to filter to"},"co_occurrence_min":{"type":"integer","description":"min same-day detector count (4 = 'real redesign')"},"since":{"type":"string","description":"YYYY-MM-DD lower bound"},"until":{"type":"string","description":"YYYY-MM-DD upper bound"}}}},{"name":"recent_events","description":"Live signal feed: events fired in the last N days (default 7). Returns each event with the predicted α range based on its event type's historical performance. Use this to surface 'what should I be looking at right now?'","inputSchema":{"type":"object","properties":{"days":{"type":"integer","default":7,"description":"Lookback in calendar days (max 30)"},"min_co_occurrence":{"type":"integer","description":"Only show events with this many same-day detectors (4 = high-conviction)"}}}},{"name":"event_dossier","description":"Deep dive on a single event: full diff (added/removed values), surrounding price action (-3D to +14D), predicted vs actual α, links to wayback comparison. Use this to investigate a specific event flagged by find_signals or recent_events.","inputSchema":{"type":"object","properties":{"event_id":{"type":"integer","description":"change_event id"}},"required":["event_id"]}},{"name":"scan_at_date","description":"Scan a URL as it appeared on a historical date via the Wayback Machine. Uses intel.boolsai.ai against the wayback-wrapped URL. Returns the same JSON shape as Boolsai Scan but for a historical snapshot. Use when investigating WHEN a vendor was added/removed.","inputSchema":{"type":"object","properties":{"url":{"type":"string","description":"Original URL (e.g. 'https://gymshark.com/')"},"date":{"type":"string","description":"YYYY-MM-DD — closest wayback snapshot on or before this date will be used"}},"required":["url","date"]}},{"name":"ticker_history","description":"All events fired on a single ticker, plus price action timeline. Use this to investigate one company's pattern (e.g. 'show me everything we caught on NFLX').","inputSchema":{"type":"object","properties":{"ticker":{"type":"string","description":"e.g. 'NFLX'"},"limit":{"type":"integer","default":50}},"required":["ticker"]}},{"name":"wayback_backtest","description":"Run an SPY-benchmarked backtest on the WAYBACK historical event dataset (2+ years, 13K events) instead of the recent live event dataset (2 months, 1.7K events). Much bigger samples for statistical confidence. Group by change_type / key_path / domain.","inputSchema":{"type":"object","properties":{"group_by":{"type":"string","enum":["change_type","key_path","key_name","parent_path","domain"],"default":"key_path","description":"Dimension to slice on"},"min_n":{"type":"integer","default":20,"description":"Minimum sample size"},"horizon_days":{"type":"integer","default":7,"description":"Forward-return window"},"top_k":{"type":"integer","default":15},"since":{"type":"string","description":"YYYY-MM-DD lower bound on event date (default: when prices start)"},"exclude_noise":{"type":"boolean","default":true,"description":"Filter out is_meta_noise=1 events"}}}},{"name":"domain_timeline","description":"Week-by-week wayback diff timeline for one domain. Returns every detected stack change (additions / removals) with week date. Use this to see when a vendor was added/removed historically, e.g. 'when did adobe.com add Segment?'","inputSchema":{"type":"object","properties":{"domain":{"type":"string","description":"e.g. 'adobe.com'"},"change_type":{"type":"string","enum":["added","removed","changed","any"],"default":"any"},"contains":{"type":"string","description":"Filter to events whose key_path or key_name contains this string (e.g. 'segment')"},"limit":{"type":"integer","default":100}},"required":["domain"]}},{"name":"signal_landscape","description":"ONE-SHOT cross-signal sweep. Computes α-vs-SPY stats simultaneously across event_type, detector, diff_field, severity, AND co_occurrence dimensions — returns the full landscape in a single response. Use this FIRST when you want to see where signal lives without having to call find_signals N times. Stateless, pure D1, no rate-limit risk, ~1s response. Cached per arg set for sub-100ms repeated queries.","inputSchema":{"type":"object","properties":{"source":{"type":"string","enum":["live","wayback","both"],"default":"both","description":"Which event dataset to scan. 'live' = 1.7K recent. 'wayback' = 13K over 2 years. 'both' = run both and return side-by-side."},"horizon_days":{"type":"integer","default":7,"description":"Forward-return window (default 7)"},"min_n":{"type":"integer","default":20,"description":"Sample-size floor per group"},"top_k_per_dim":{"type":"integer","default":8,"description":"Top K results per dimension (default 8)"},"since":{"type":"string","description":"Optional YYYY-MM-DD lower bound on event date"}}}},{"name":"signal_diff","description":"Compare two signal patterns side-by-side. e.g. 'how does PRICING_TIERS_ADDED compare to VENDORS_DETECTED_CHANGED on the live dataset?' Returns α, %pos, sample size, worst/best trades for each, plus delta. Pure D1, fast.","inputSchema":{"type":"object","properties":{"signal_a":{"type":"object","description":"First filter (same shape as test_filter args)"},"signal_b":{"type":"object","description":"Second filter"},"horizon_days":{"type":"integer","default":7}},"required":["signal_a","signal_b"]}},{"name":"farm_domain","description":"Bulk-farm a domain's historical wayback snapshots into our index. Use this when you need backtest history on a domain we haven't already farmed (i.e. wayback_backtest / domain_timeline return no data for it). Hits CDX → samples weekly → parallel-scans up to 50 snapshots via intel.boolsai.ai → inserts into wayback_intel_profiles. After farming completes you can call wayback_backtest or domain_timeline on the domain immediately. Cost: ~30-60s wall time, ~50 intel scans.","inputSchema":{"type":"object","properties":{"domain":{"type":"string","description":"Bare domain, e.g. 'sweetgreen.com'"},"weeks":{"type":"integer","default":26,"description":"How many weeks of history to farm (default 26 = ~6 months; max 100)"},"max_snapshots":{"type":"integer","default":50,"description":"Hard cap on snapshots to fetch (default 50; max 200)"}},"required":["domain"]}}]}},"bad_protocol_headers":{"content-type":"application/json"},"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":30.06,"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":["tools"]}},"advanced_capabilities_probe":{"status":"missing","latency_ms":null,"details":{"capabilities":{"prompts":false,"resources":false,"completions":false,"roots":false,"sampling":false,"elicitation":false,"structured_outputs":false,"resource_links":false},"enabled_count":0,"enabled":[],"initialize_capability_keys":["tools"]}},"tool_snapshot_probe":{"status":"missing","latency_ms":null,"details":{"reason":"no_historical_snapshot","current_tool_count":12}},"connector_replay_probe":{"status":"missing","latency_ms":null,"details":{"reason":"no_historical_snapshot"}},"request_association_probe":{"status":"missing","latency_ms":null,"details":{"reason":"no_request_association_capabilities_advertised"}},"interactive_flow_probe":{"status":"missing","latency_ms":null,"details":{"risk_hits":[],"safe_hits":[],"oauth_supported":false,"prompt_available":false}},"action_safety_probe":{"status":"error","latency_ms":null,"details":{"summary":{"tool_count":12,"high_risk_tools":4,"destructive_tools":3,"exec_tools":2,"egress_tools":3,"secret_tools":0,"bulk_access_tools":4,"risk_distribution":{"low":2,"medium":6,"high":2,"critical":2},"capability_distribution":{"read":2,"write":8,"other":1,"delete":3,"network":3,"export":4,"exec":2,"filesystem":3}},"auth_present":false,"safeguard_count":0,"confirmation_signals":[]}},"official_registry_probe":{"status":"ok","latency_ms":null,"details":{"registry_source":"official_registry","registry_identifier":"ai.boolsai/signals","direct_match":true,"official_peer_count":1}},"provenance_divergence_probe":{"status":"ok","latency_ms":null,"details":{"direct_official_match":true,"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}},"connector_publishability_probe":{"status":"warning","latency_ms":null,"details":{"transport":"streamable-http","tool_count":12,"high_risk_tools":4,"blockers":["transport_compliance","action_safety","server_card"],"criteria":{"remote_transport":true,"initialize":true,"tools_list":true,"protocol_version":true,"session_resume":true,"step_up_auth":true,"transport_compliance":false,"connector_replay":true,"request_association":true,"action_safety":false,"server_card":false,"tool_surface":true,"auth_flow":true}}}},"failures":{"server_card":{"url":"https://signals.boolsai.ai/.well-known/mcp/server-card.json","error":"Client error '404 Not Found' for url 'https://signals.boolsai.ai/.well-known/mcp/server-card.json'\nFor more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/404"},"oauth_protected_resource":{"url":"https://signals.boolsai.ai/.well-known/oauth-protected-resource","error":"Client error '404 Not Found' for url 'https://signals.boolsai.ai/.well-known/oauth-protected-resource'\nFor more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/404"},"oauth_authorization_server":{"reason":"no_authorization_server"},"openid_configuration":{"reason":"no_authorization_server"},"transport_compliance_probe":{"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":"universe_summary","description":"Orient the agent: total events, tickers, date range, top event types, top detectors, price coverage, SPY benchmark status. Call this FIRST when starting research. Returns counts that let the agent reason about sample sizes before drilling in.","inputSchema":{"type":"object","properties":{}}},{"name":"find_signals","description":"Automated pattern discovery — scans event_type × detector × diff_field × severity combinations and returns those with the strongest forward-return characteristics (α vs SPY, % positive, n). Use this when you don't have a specific hypothesis yet. Returns sorted by α at +7D descending. Filter by min_n to set a sample-size floor.","inputSchema":{"type":"object","properties":{"min_n":{"type":"integer","description":"Minimum sample size (default 10)","default":10},"horizon_days":{"type":"integer","description":"Forward-return window (default 7)","default":7},"top_k":{"type":"integer","description":"Top K combos to return (default 15)","default":15},"group_by":{"type":"string","enum":["event_type","detector","diff_field","severity","co_occurrence"],"default":"event_type","description":"What dimension to slice on"}}}},{"name":"test_filter","description":"Compute α stats for an arbitrary filter expression. Use this to test a specific hypothesis (e.g. 'tier_count_changed on enterprise-SaaS tickers' or 'severity 5 events that happened on Mondays'). Returns n, mean/median raw and α returns at +1/+3/+7d, % positive, and the worst-loss trade.","inputSchema":{"type":"object","properties":{"event_type":{"type":"string","description":"e.g. 'TIER_COUNT_CHANGED' (case-insensitive)"},"detector":{"type":"string","description":"e.g. 'pricing_detector'"},"severity_min":{"type":"integer","description":"minimum severity (1-5)"},"ticker":{"type":"string","description":"single ticker to filter to"},"co_occurrence_min":{"type":"integer","description":"min same-day detector count (4 = 'real redesign')"},"since":{"type":"string","description":"YYYY-MM-DD lower bound"},"until":{"type":"string","description":"YYYY-MM-DD upper bound"}}}},{"name":"recent_events","description":"Live signal feed: events fired in the last N days (default 7). Returns each event with the predicted α range based on its event type's historical performance. Use this to surface 'what should I be looking at right now?'","inputSchema":{"type":"object","properties":{"days":{"type":"integer","default":7,"description":"Lookback in calendar days (max 30)"},"min_co_occurrence":{"type":"integer","description":"Only show events with this many same-day detectors (4 = high-conviction)"}}}},{"name":"event_dossier","description":"Deep dive on a single event: full diff (added/removed values), surrounding price action (-3D to +14D), predicted vs actual α, links to wayback comparison. Use this to investigate a specific event flagged by find_signals or recent_events.","inputSchema":{"type":"object","properties":{"event_id":{"type":"integer","description":"change_event id"}},"required":["event_id"]}},{"name":"scan_at_date","description":"Scan a URL as it appeared on a historical date via the Wayback Machine. Uses intel.boolsai.ai against the wayback-wrapped URL. Returns the same JSON shape as Boolsai Scan but for a historical snapshot. Use when investigating WHEN a vendor was added/removed.","inputSchema":{"type":"object","properties":{"url":{"type":"string","description":"Original URL (e.g. 'https://gymshark.com/')"},"date":{"type":"string","description":"YYYY-MM-DD — closest wayback snapshot on or before this date will be used"}},"required":["url","date"]}},{"name":"ticker_history","description":"All events fired on a single ticker, plus price action timeline. Use this to investigate one company's pattern (e.g. 'show me everything we caught on NFLX').","inputSchema":{"type":"object","properties":{"ticker":{"type":"string","description":"e.g. 'NFLX'"},"limit":{"type":"integer","default":50}},"required":["ticker"]}},{"name":"wayback_backtest","description":"Run an SPY-benchmarked backtest on the WAYBACK historical event dataset (2+ years, 13K events) instead of the recent live event dataset (2 months, 1.7K events). Much bigger samples for statistical confidence. Group by change_type / key_path / domain.","inputSchema":{"type":"object","properties":{"group_by":{"type":"string","enum":["change_type","key_path","key_name","parent_path","domain"],"default":"key_path","description":"Dimension to slice on"},"min_n":{"type":"integer","default":20,"description":"Minimum sample size"},"horizon_days":{"type":"integer","default":7,"description":"Forward-return window"},"top_k":{"type":"integer","default":15},"since":{"type":"string","description":"YYYY-MM-DD lower bound on event date (default: when prices start)"},"exclude_noise":{"type":"boolean","default":true,"description":"Filter out is_meta_noise=1 events"}}}},{"name":"domain_timeline","description":"Week-by-week wayback diff timeline for one domain. Returns every detected stack change (additions / removals) with week date. Use this to see when a vendor was added/removed historically, e.g. 'when did adobe.com add Segment?'","inputSchema":{"type":"object","properties":{"domain":{"type":"string","description":"e.g. 'adobe.com'"},"change_type":{"type":"string","enum":["added","removed","changed","any"],"default":"any"},"contains":{"type":"string","description":"Filter to events whose key_path or key_name contains this string (e.g. 'segment')"},"limit":{"type":"integer","default":100}},"required":["domain"]}},{"name":"signal_landscape","description":"ONE-SHOT cross-signal sweep. Computes α-vs-SPY stats simultaneously across event_type, detector, diff_field, severity, AND co_occurrence dimensions — returns the full landscape in a single response. Use this FIRST when you want to see where signal lives without having to call find_signals N times. Stateless, pure D1, no rate-limit risk, ~1s response. Cached per arg set for sub-100ms repeated queries.","inputSchema":{"type":"object","properties":{"source":{"type":"string","enum":["live","wayback","both"],"default":"both","description":"Which event dataset to scan. 'live' = 1.7K recent. 'wayback' = 13K over 2 years. 'both' = run both and return side-by-side."},"horizon_days":{"type":"integer","default":7,"description":"Forward-return window (default 7)"},"min_n":{"type":"integer","default":20,"description":"Sample-size floor per group"},"top_k_per_dim":{"type":"integer","default":8,"description":"Top K results per dimension (default 8)"},"since":{"type":"string","description":"Optional YYYY-MM-DD lower bound on event date"}}}},{"name":"signal_diff","description":"Compare two signal patterns side-by-side. e.g. 'how does PRICING_TIERS_ADDED compare to VENDORS_DETECTED_CHANGED on the live dataset?' Returns α, %pos, sample size, worst/best trades for each, plus delta. Pure D1, fast.","inputSchema":{"type":"object","properties":{"signal_a":{"type":"object","description":"First filter (same shape as test_filter args)"},"signal_b":{"type":"object","description":"Second filter"},"horizon_days":{"type":"integer","default":7}},"required":["signal_a","signal_b"]}},{"name":"farm_domain","description":"Bulk-farm a domain's historical wayback snapshots into our index. Use this when you need backtest history on a domain we haven't already farmed (i.e. wayback_backtest / domain_timeline return no data for it). Hits CDX → samples weekly → parallel-scans up to 50 snapshots via intel.boolsai.ai → inserts into wayback_intel_profiles. After farming completes you can call wayback_backtest or domain_timeline on the domain immediately. Cost: ~30-60s wall time, ~50 intel scans.","inputSchema":{"type":"object","properties":{"domain":{"type":"string","description":"Bare domain, e.g. 'sweetgreen.com'"},"weeks":{"type":"integer","default":26,"description":"How many weeks of history to farm (default 26 = ~6 months; max 100)"},"max_snapshots":{"type":"integer","default":50,"description":"Hard cap on snapshots to fetch (default 50; max 200)"}},"required":["domain"]}}]}},"bad_protocol_headers":{"content-type":"application/json"},"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"]}}},"active_alerts":[],"maintainer_analytics":{"validation_run_count":1,"average_latency_ms":472.52,"healthy_run_ratio_recent":1.0,"registry_presence_count":1,"active_alert_count":0,"watcher_count":0,"verified_claim":false,"taxonomy_tags":["development","search","web","files"],"score_trend":[66.88],"remediation_count":18,"high_risk_tool_count":4,"destructive_tool_count":3,"exec_tool_count":2},"public_server_reputation":{"validation_success_ratio_7d":1.0,"validation_success_ratio_30d":1.0,"mean_time_to_recover_hours":null,"breaking_diffs_30d":0,"registry_drift_frequency_30d":0,"snapshot_change_frequency_30d":0},"maintainer_response_quality":{"score":16.67,"signals":{"verified_maintainer_claim":false,"support_contact_present":false,"changelog_present":false,"incident_notes_present":false,"tool_change_documented":true,"annotation_history_present":false},"annotation_count":0,"latest_annotation_at":null},"maintainer_annotations":[],"maintainer_rebuttals":[],"security_posture_summary":{"tool_count":12,"high_risk_tools":4,"destructive_tools":3,"exec_tools":2,"egress_tools":3,"secret_tools":0,"bulk_access_tools":4,"risk_distribution":{"low":2,"medium":6,"high":2,"critical":2},"capability_distribution":{"read":2,"write":8,"other":1,"delete":3,"network":3,"export":4,"exec":2,"filesystem":3}},"tool_security_inventory":[{"name":"universe_summary","description":"Orient the agent: total events, tickers, date range, top event types, top detectors, price coverage, SPY benchmark status. Call this FIRST when starting research. Returns counts that let the agent reason about sample sizes before drilling in.","capabilities":["read"],"risk_flags":[],"risk_level":"low","has_safeguards":false,"capability_taxonomy":["read","search","automation"]},{"name":"find_signals","description":"Automated pattern discovery — scans event_type × detector × diff_field × severity combinations and returns those with the strongest forward-return characteristics (α vs SPY, % positive, n). Use this when you don't have a specific hypothesis yet. Returns sorted by α at +7D descending. Filter by min_n to set a sample-size floor.","capabilities":["write"],"risk_flags":[],"risk_level":"medium","has_safeguards":false,"capability_taxonomy":["write","development","search"]},{"name":"test_filter","description":"Compute α stats for an arbitrary filter expression. Use this to test a specific hypothesis (e.g. 'tier_count_changed on enterprise-SaaS tickers' or 'severity 5 events that happened on Mondays'). Returns n, mean/median raw and α returns at +1/+3/+7d, % positive, and the worst-loss trade.","capabilities":["write"],"risk_flags":[],"risk_level":"medium","has_safeguards":false,"capability_taxonomy":["write","development"]},{"name":"recent_events","description":"Live signal feed: events fired in the last N days (default 7). Returns each event with the predicted α range based on its event type's historical performance. Use this to surface 'what should I be looking at right now?'","capabilities":["other"],"risk_flags":[],"risk_level":"low","has_safeguards":false,"capability_taxonomy":["other"]},{"name":"event_dossier","description":"Deep dive on a single event: full diff (added/removed values), surrounding price action (-3D to +14D), predicted vs actual α, links to wayback comparison. Use this to investigate a specific event flagged by find_signals or recent_events.","capabilities":["write","delete"],"risk_flags":["destructive_operation"],"risk_level":"medium","has_safeguards":false,"capability_taxonomy":["write","delete","development"]},{"name":"scan_at_date","description":"Scan a URL as it appeared on a historical date via the Wayback Machine. Uses intel.boolsai.ai against the wayback-wrapped URL. Returns the same JSON shape as Boolsai Scan but for a historical snapshot. Use when investigating WHEN a vendor was added/removed.","capabilities":["write","delete","network","export"],"risk_flags":["destructive_operation","arbitrary_network_egress","bulk_data_access","freeform_input_surface"],"risk_level":"critical","has_safeguards":false,"capability_taxonomy":["write","delete","network","export"]},{"name":"ticker_history","description":"All events fired on a single ticker, plus price action timeline. Use this to investigate one company's pattern (e.g. 'show me everything we caught on NFLX').","capabilities":["export"],"risk_flags":["bulk_data_access"],"risk_level":"medium","has_safeguards":false,"capability_taxonomy":["export"]},{"name":"wayback_backtest","description":"Run an SPY-benchmarked backtest on the WAYBACK historical event dataset (2+ years, 13K events) instead of the recent live event dataset (2 months, 1.7K events). Much bigger samples for statistical confidence. Group by change_type / key_path / domain.","capabilities":["write","exec","filesystem"],"risk_flags":["command_execution","filesystem_mutation"],"risk_level":"high","has_safeguards":false,"capability_taxonomy":["write","exec","filesystem"]},{"name":"domain_timeline","description":"Week-by-week wayback diff timeline for one domain. Returns every detected stack change (additions / removals) with week date. Use this to see when a vendor was added/removed historically, e.g. 'when did adobe.com add Segment?'","capabilities":["write","delete","network","filesystem","export"],"risk_flags":["destructive_operation","arbitrary_network_egress","bulk_data_access","freeform_input_surface","filesystem_mutation"],"risk_level":"critical","has_safeguards":false,"capability_taxonomy":["write","delete","network","filesystem","export"]},{"name":"signal_landscape","description":"ONE-SHOT cross-signal sweep. Computes α-vs-SPY stats simultaneously across event_type, detector, diff_field, severity, AND co_occurrence dimensions — returns the full landscape in a single response. Use this FIRST when you want to see where signal lives without having to call find_signals N times. Stateless, pure D1, no rate-limit risk, ~1s response. Cached per arg set for sub-100ms repeated queries.","capabilities":["write","exec"],"risk_flags":["command_execution"],"risk_level":"medium","has_safeguards":false,"capability_taxonomy":["write","exec"]},{"name":"signal_diff","description":"Compare two signal patterns side-by-side. e.g. 'how does PRICING_TIERS_ADDED compare to VENDORS_DETECTED_CHANGED on the live dataset?' Returns α, %pos, sample size, worst/best trades for each, plus delta. Pure D1, fast.","capabilities":["write"],"risk_flags":[],"risk_level":"medium","has_safeguards":false,"capability_taxonomy":["write","development"]},{"name":"farm_domain","description":"Bulk-farm a domain's historical wayback snapshots into our index. Use this when you need backtest history on a domain we haven't already farmed (i.e. wayback_backtest / domain_timeline return no data for it). Hits CDX → samples weekly → parallel-scans up to 50 snapshots via intel.boolsai.ai → inserts into wayback_intel_profiles. After farming completes you can call wayback_backtest or domain_timeline on the domain immediately. Cost: ~30-60s wall time, ~50 intel scans.","capabilities":["read","network","filesystem","export"],"risk_flags":["arbitrary_network_egress","bulk_data_access","freeform_input_surface"],"risk_level":"high","has_safeguards":false,"capability_taxonomy":["read","network","filesystem","export","search","files"]}],"transport_compliance":{"status":"error","transport":"streamable-http","session_id_present":false,"protocol_header_present":false,"last_event_id_visible":false,"bad_protocol_status_code":200,"delete_status_code":null,"expired_session_status_code":null,"issues":["missing_session_id","missing_protocol_header","bad_protocol_not_rejected"]},"utility_coverage":{"status":"missing","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":["tools"]},"write_action_governance":{"status":"error","safe_to_publish":false,"auth_boundary":"public_or_unclear","blast_radius":"high","summary":{"tool_count":12,"high_risk_tools":4,"destructive_tools":3,"exec_tools":2,"egress_tools":3,"secret_tools":0,"bulk_access_tools":4,"risk_distribution":{"low":2,"medium":6,"high":2,"critical":2},"capability_distribution":{"read":2,"write":8,"other":1,"delete":3,"network":3,"export":4,"exec":2,"filesystem":3}},"high_risk_tools":[{"name":"scan_at_date","risk_level":"critical","risk_flags":["destructive_operation","arbitrary_network_egress","bulk_data_access","freeform_input_surface"],"has_safeguards":false},{"name":"wayback_backtest","risk_level":"high","risk_flags":["command_execution","filesystem_mutation"],"has_safeguards":false},{"name":"domain_timeline","risk_level":"critical","risk_flags":["destructive_operation","arbitrary_network_egress","bulk_data_access","freeform_input_surface","filesystem_mutation"],"has_safeguards":false},{"name":"farm_domain","risk_level":"high","risk_flags":["arbitrary_network_egress","bulk_data_access","freeform_input_surface"],"has_safeguards":false}],"confirmation_signals":[],"safeguard_count":0},"provenance_divergence":{"status":"ok","direct_official_match":true,"drift_fields":[],"registry_title":null,"server_card_title":null,"registry_version":null,"server_card_version":null,"registry_homepage":null,"server_card_homepage":null},"alias_consolidation":{"canonical_identifier":"ai.boolsai/signals","duplicate_count":0,"registry_sources":["official_registry"],"registry_identifiers":["ai.boolsai/signals"],"remote_urls":["https://signals.boolsai.ai/mcp"],"homepages":[],"source_disagreements":[],"source_disagreement_details":{}},"alert_routing":{"active_watch_count":0,"route_counts":{"generic_webhook":0,"slack":0,"teams":0,"email":0},"destinations":[]},"authenticated_validation":{"latest_profile":"remote_mcp","authenticated_session_used":false,"public_score_remains_anonymous":true,"preview_endpoint":"/v1/verify","ci_preview_endpoint":"/v1/ci/preview"},"hosted_runtime":{"schema_version":"verify.hosted_runtime.v1","server":"ai.boolsai/signals","tier":"community","readiness":{"allowed_to_activate":false,"blockers":["score_below_hosting_threshold"],"score":66.88,"min_score":70.0,"freshness_hours":4.243694455555556,"max_freshness_hours":168.0,"latest_validation_run_id":"aacbb20e-bfaa-4748-a4bb-b425423c82da"},"active_deployment_id":null,"active_endpoint_url":null,"deployments":[]},"action_controls_diff":{"snapshot_changed":false,"new_actions":[],"changed_actions":[],"disabled_by_default_candidates":[],"manual_review_candidates":[]},"benchmark_tasks":[{"key":"discover_tools","label":"Discover tools","status":"passes","evidence":[{"check":"initialize","status":"ok","source":"live_validation","note":null,"http_status":200},{"check":"tools_list","status":"ok","source":"live_validation","note":null,"http_status":200}]},{"key":"read_only_fetch_flow","label":"Read-only fetch flow","status":"degraded","evidence":[{"check":"resource_read","status":"missing","source":"live_validation","note":"resources/read is a strong read-path signal","http_status":null},{"check":"read_only_tool_surface","status":"ok","source":"derived_tool_inventory","note":"Low-risk read tools were inferred from the current tool surface.","http_status":null}]},{"key":"oauth_required_connect","label":"OAuth-required connect","status":"degraded","evidence":[{"check":"oauth_protected_resource","status":"error","source":"live_validation","note":null,"http_status":null},{"check":"step_up_auth_probe","status":"missing","source":"live_validation","note":null,"http_status":null}]},{"key":"safe_write_flow_with_confirmation","label":"Safe write flow with confirmation","status":"likely_to_fail","evidence":[{"check":"action_safety_probe","status":"error","source":"live_validation","note":null,"http_status":null}]}],"latest_capability_counts":{"tool_count":12,"prompt_count":0,"resource_count":0},"point_loss_breakdown":[{"key":"transport_compliance_score","label":"Transport Compliance","score":0.0,"max_score":4.0,"gap":4.0},{"key":"recovery_semantics_score","label":"Recovery Semantics","score":0.0,"max_score":4.0,"gap":4.0},{"key":"execution_sandbox_safety_score","label":"Execution Sandbox Safety","score":1.5,"max_score":4.0,"gap":2.5},{"key":"egress_ssrf_resilience_score","label":"Egress SSRF Resilience","score":1.5,"max_score":4.0,"gap":2.5},{"key":"destructive_operation_safety_score","label":"Destructive Operation Safety","score":1.5,"max_score":4.0,"gap":2.5},{"key":"trust_confidence_score","label":"Trust Confidence","score":1.75,"max_score":4.0,"gap":2.25},{"key":"utility_coverage_score","label":"Utility Coverage","score":2.0,"max_score":4.0,"gap":2.0},{"key":"spec_recency_score","label":"Spec Recency","score":2.0,"max_score":4.0,"gap":2.0},{"key":"schema_completeness_score","label":"Schema Completeness","score":2.0,"max_score":4.0,"gap":2.0},{"key":"result_shape_stability_score","label":"Result Shape Stability","score":2.0,"max_score":4.0,"gap":2.0},{"key":"resource_contract_score","label":"Resource Contract","score":2.0,"max_score":4.0,"gap":2.0},{"key":"registry_consistency_score","label":"Registry Consistency","score":2.0,"max_score":4.0,"gap":2.0}],"verdict_traces":{"production_readiness":{"code":"safe_for_evaluation","label":"Safe for evaluation","reason":"The server is suitable for evaluation, but remaining gaps should be resolved before broad production use.","confidence":{"score":76.25,"label":"high"},"triggering_alerts":[],"winning_source":"live_validation"},"client_readiness":[{"key":"openai_connectors","status":"partial","reason":"OpenAI connectors expect OAuth for remote server auth.; Dynamic client registration materially improves connector setup.; Transport compliance should be in good shape.","triggering_checks":["initialize","tools_list","transport_compliance_probe","step_up_auth_probe","connector_replay_probe","request_association_probe"],"confidence":{"score":76.25,"label":"high"},"winning_source":"live_validation","conflicting_sources":[]},{"key":"claude_desktop","status":"ready","reason":"Transport behavior should match Claude-compatible HTTP expectations.","triggering_checks":["initialize","tools_list","transport_compliance_probe"],"confidence":{"score":76.25,"label":"high"},"winning_source":"live_validation","conflicting_sources":[]},{"key":"unsafe_for_write_actions","status":"yes","reason":"Blocked until safeguards and confirmation semantics are verified for write, exec, or destructive tools.","triggering_checks":["action_safety_probe"],"confidence":{"score":76.25,"label":"high"},"winning_source":"live_validation","conflicting_sources":[]},{"key":"snapshot_churn_risk","status":"low","reason":"No material tool-surface churn detected in the latest comparison.","triggering_checks":["tool_snapshot_probe","connector_replay_probe"],"confidence":{"score":76.25,"label":"high"},"winning_source":"history","conflicting_sources":[]}]},"current_snapshot":{"schema_version":"verify.trust_snapshot.v1","snapshot_id":"trustsnap_6582c83a5a923066","generated_at":"2026-07-31T09:50:38.145802+00:00","source":"current_snapshot","server":"ai.boolsai/signals","last_validated_at":"2026-07-31T05:36:00.566940+00:00","validation_age_hours":4.24,"freshness":{"schema_version":"verify.freshness_profile.v1","last_validated_at":"2026-07-31T05:36:00.566940+00:00","age_hours":4.24,"bucket":"verified_last_24h","label":"Verified in last 24h","badges":["verified_last_24h"],"freshness_sla_hours":168.0,"freshness_sla_status":"met","stale_score_suppressed":false,"display_score":66.88,"raw_score":66.88,"confidence_score":76.2,"confidence_weighted_score":51.0,"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":66.88,"display_score":66.88,"stale_score_suppressed":false,"production_trust_decision":{"schema_version":"verify.executive_verdict.v1","decision":"Allow with approval","why":"exec-capable tools + no confirmation safeguards + high-risk tools need review","next_action":"export policy, require approval for writes, add authenticated validation","reason_count":2},"production_readiness_class":{"code":"safe_for_evaluation","label":"Safe for evaluation","reason":"The server is suitable for evaluation, but remaining gaps should be resolved before broad production use."},"evidence_confidence":{"score":76.25,"label":"high","validation_age_hours":4.24,"live_check_count":26},"active_alerts":[]},"trust_snapshot":{"schema_version":"verify.trust_snapshot.v1","snapshot_id":"trustsnap_6582c83a5a923066","generated_at":"2026-07-31T09:50:38.145802+00:00","source":"current_snapshot","server":"ai.boolsai/signals","last_validated_at":"2026-07-31T05:36:00.566940+00:00","validation_age_hours":4.24,"freshness":{"schema_version":"verify.freshness_profile.v1","last_validated_at":"2026-07-31T05:36:00.566940+00:00","age_hours":4.24,"bucket":"verified_last_24h","label":"Verified in last 24h","badges":["verified_last_24h"],"freshness_sla_hours":168.0,"freshness_sla_status":"met","stale_score_suppressed":false,"display_score":66.88,"raw_score":66.88,"confidence_score":76.2,"confidence_weighted_score":51.0,"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":66.88,"display_score":66.88,"stale_score_suppressed":false,"production_trust_decision":{"schema_version":"verify.executive_verdict.v1","decision":"Allow with approval","why":"exec-capable tools + no confirmation safeguards + high-risk tools need review","next_action":"export policy, require approval for writes, add authenticated validation","reason_count":2},"production_readiness_class":{"code":"safe_for_evaluation","label":"Safe for evaluation","reason":"The server is suitable for evaluation, but remaining gaps should be resolved before broad production use."},"evidence_confidence":{"score":76.25,"label":"high","validation_age_hours":4.24,"live_check_count":26},"active_alerts":[]},"agent_commerce":{"status":"beta","commerce_signal":"weak","payment_execution_detected":"no","billing_or_usage_detected":"no","quote_or_pricing_detected":"no","numeric_price_context":"yes","commercial_quote_context":"no","checkout_or_charge_detected":"no","checkout_term_observed":"no","payment_capable":"none","payment_rails":[],"purchase_stage_supported":[],"human_confirmation_required":"unknown","spending_policy_supported":"yes","receipt_supported":"unknown","refund_policy_present":"unknown","operator_identity":"declared","auth_required":"no","auth_scheme":"none","tool_risk_level":"read_only","tool_risk_score":10,"pricing_transparency":"unknown","schema_change_detected":"unknown","delegation_level":"none","evidence_level":"inferred","confidence":"low","highest_risk_tools":[],"skipped_unsafe_tools":["wayback_backtest","domain_timeline"],"last_checked_at":"2026-07-31T09:50:38.135991+00:00","evidence":[{"field":"commerce_signal","value":"weak","evidence_level":"inferred","source":"tool_schema","matched_terms":["limit","price","pricing","rate"],"sample":"universe_summary","confidence":"low","last_checked_at":"2026-07-31T09:50:38.135991+00:00"}],"disclaimer":"Beta assessment. Verify detects evidence and risk signals but does not certify that this server is safe for autonomous purchases.","scores":{"auth_posture_score":0,"tool_risk_score":10,"payment_readiness_score":10,"agent_delegation_safety_score":50,"overall_agent_commerce_score":null},"warnings":[],"recommended_fixes":[]},"latest_claim":null,"maintainer_profile_slug":null,"watch_summary":{"count":0,"teams":[],"emails":[]}},"latest_validation":{"id":"aacbb20e-bfaa-4748-a4bb-b425423c82da","validation_profile":"remote_mcp","status":"completed","summary_status":"healthy","transport_type":"streamable-http","latency_ms":472.52,"failures":{"server_card":{"url":"https://signals.boolsai.ai/.well-known/mcp/server-card.json","error":"Client error '404 Not Found' for url 'https://signals.boolsai.ai/.well-known/mcp/server-card.json'\nFor more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/404"},"oauth_protected_resource":{"url":"https://signals.boolsai.ai/.well-known/oauth-protected-resource","error":"Client error '404 Not Found' for url 'https://signals.boolsai.ai/.well-known/oauth-protected-resource'\nFor more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/404"},"oauth_authorization_server":{"reason":"no_authorization_server"},"openid_configuration":{"reason":"no_authorization_server"},"transport_compliance_probe":{"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":"universe_summary","description":"Orient the agent: total events, tickers, date range, top event types, top detectors, price coverage, SPY benchmark status. Call this FIRST when starting research. Returns counts that let the agent reason about sample sizes before drilling in.","inputSchema":{"type":"object","properties":{}}},{"name":"find_signals","description":"Automated pattern discovery — scans event_type × detector × diff_field × severity combinations and returns those with the strongest forward-return characteristics (α vs SPY, % positive, n). Use this when you don't have a specific hypothesis yet. Returns sorted by α at +7D descending. Filter by min_n to set a sample-size floor.","inputSchema":{"type":"object","properties":{"min_n":{"type":"integer","description":"Minimum sample size (default 10)","default":10},"horizon_days":{"type":"integer","description":"Forward-return window (default 7)","default":7},"top_k":{"type":"integer","description":"Top K combos to return (default 15)","default":15},"group_by":{"type":"string","enum":["event_type","detector","diff_field","severity","co_occurrence"],"default":"event_type","description":"What dimension to slice on"}}}},{"name":"test_filter","description":"Compute α stats for an arbitrary filter expression. Use this to test a specific hypothesis (e.g. 'tier_count_changed on enterprise-SaaS tickers' or 'severity 5 events that happened on Mondays'). Returns n, mean/median raw and α returns at +1/+3/+7d, % positive, and the worst-loss trade.","inputSchema":{"type":"object","properties":{"event_type":{"type":"string","description":"e.g. 'TIER_COUNT_CHANGED' (case-insensitive)"},"detector":{"type":"string","description":"e.g. 'pricing_detector'"},"severity_min":{"type":"integer","description":"minimum severity (1-5)"},"ticker":{"type":"string","description":"single ticker to filter to"},"co_occurrence_min":{"type":"integer","description":"min same-day detector count (4 = 'real redesign')"},"since":{"type":"string","description":"YYYY-MM-DD lower bound"},"until":{"type":"string","description":"YYYY-MM-DD upper bound"}}}},{"name":"recent_events","description":"Live signal feed: events fired in the last N days (default 7). Returns each event with the predicted α range based on its event type's historical performance. Use this to surface 'what should I be looking at right now?'","inputSchema":{"type":"object","properties":{"days":{"type":"integer","default":7,"description":"Lookback in calendar days (max 30)"},"min_co_occurrence":{"type":"integer","description":"Only show events with this many same-day detectors (4 = high-conviction)"}}}},{"name":"event_dossier","description":"Deep dive on a single event: full diff (added/removed values), surrounding price action (-3D to +14D), predicted vs actual α, links to wayback comparison. Use this to investigate a specific event flagged by find_signals or recent_events.","inputSchema":{"type":"object","properties":{"event_id":{"type":"integer","description":"change_event id"}},"required":["event_id"]}},{"name":"scan_at_date","description":"Scan a URL as it appeared on a historical date via the Wayback Machine. Uses intel.boolsai.ai against the wayback-wrapped URL. Returns the same JSON shape as Boolsai Scan but for a historical snapshot. Use when investigating WHEN a vendor was added/removed.","inputSchema":{"type":"object","properties":{"url":{"type":"string","description":"Original URL (e.g. 'https://gymshark.com/')"},"date":{"type":"string","description":"YYYY-MM-DD — closest wayback snapshot on or before this date will be used"}},"required":["url","date"]}},{"name":"ticker_history","description":"All events fired on a single ticker, plus price action timeline. Use this to investigate one company's pattern (e.g. 'show me everything we caught on NFLX').","inputSchema":{"type":"object","properties":{"ticker":{"type":"string","description":"e.g. 'NFLX'"},"limit":{"type":"integer","default":50}},"required":["ticker"]}},{"name":"wayback_backtest","description":"Run an SPY-benchmarked backtest on the WAYBACK historical event dataset (2+ years, 13K events) instead of the recent live event dataset (2 months, 1.7K events). Much bigger samples for statistical confidence. Group by change_type / key_path / domain.","inputSchema":{"type":"object","properties":{"group_by":{"type":"string","enum":["change_type","key_path","key_name","parent_path","domain"],"default":"key_path","description":"Dimension to slice on"},"min_n":{"type":"integer","default":20,"description":"Minimum sample size"},"horizon_days":{"type":"integer","default":7,"description":"Forward-return window"},"top_k":{"type":"integer","default":15},"since":{"type":"string","description":"YYYY-MM-DD lower bound on event date (default: when prices start)"},"exclude_noise":{"type":"boolean","default":true,"description":"Filter out is_meta_noise=1 events"}}}},{"name":"domain_timeline","description":"Week-by-week wayback diff timeline for one domain. Returns every detected stack change (additions / removals) with week date. Use this to see when a vendor was added/removed historically, e.g. 'when did adobe.com add Segment?'","inputSchema":{"type":"object","properties":{"domain":{"type":"string","description":"e.g. 'adobe.com'"},"change_type":{"type":"string","enum":["added","removed","changed","any"],"default":"any"},"contains":{"type":"string","description":"Filter to events whose key_path or key_name contains this string (e.g. 'segment')"},"limit":{"type":"integer","default":100}},"required":["domain"]}},{"name":"signal_landscape","description":"ONE-SHOT cross-signal sweep. Computes α-vs-SPY stats simultaneously across event_type, detector, diff_field, severity, AND co_occurrence dimensions — returns the full landscape in a single response. Use this FIRST when you want to see where signal lives without having to call find_signals N times. Stateless, pure D1, no rate-limit risk, ~1s response. Cached per arg set for sub-100ms repeated queries.","inputSchema":{"type":"object","properties":{"source":{"type":"string","enum":["live","wayback","both"],"default":"both","description":"Which event dataset to scan. 'live' = 1.7K recent. 'wayback' = 13K over 2 years. 'both' = run both and return side-by-side."},"horizon_days":{"type":"integer","default":7,"description":"Forward-return window (default 7)"},"min_n":{"type":"integer","default":20,"description":"Sample-size floor per group"},"top_k_per_dim":{"type":"integer","default":8,"description":"Top K results per dimension (default 8)"},"since":{"type":"string","description":"Optional YYYY-MM-DD lower bound on event date"}}}},{"name":"signal_diff","description":"Compare two signal patterns side-by-side. e.g. 'how does PRICING_TIERS_ADDED compare to VENDORS_DETECTED_CHANGED on the live dataset?' Returns α, %pos, sample size, worst/best trades for each, plus delta. Pure D1, fast.","inputSchema":{"type":"object","properties":{"signal_a":{"type":"object","description":"First filter (same shape as test_filter args)"},"signal_b":{"type":"object","description":"Second filter"},"horizon_days":{"type":"integer","default":7}},"required":["signal_a","signal_b"]}},{"name":"farm_domain","description":"Bulk-farm a domain's historical wayback snapshots into our index. Use this when you need backtest history on a domain we haven't already farmed (i.e. wayback_backtest / domain_timeline return no data for it). Hits CDX → samples weekly → parallel-scans up to 50 snapshots via intel.boolsai.ai → inserts into wayback_intel_profiles. After farming completes you can call wayback_backtest or domain_timeline on the domain immediately. Cost: ~30-60s wall time, ~50 intel scans.","inputSchema":{"type":"object","properties":{"domain":{"type":"string","description":"Bare domain, e.g. 'sweetgreen.com'"},"weeks":{"type":"integer","default":26,"description":"How many weeks of history to farm (default 26 = ~6 months; max 100)"},"max_snapshots":{"type":"integer","default":50,"description":"Hard cap on snapshots to fetch (default 50; max 200)"}},"required":["domain"]}}]}},"bad_protocol_headers":{"content-type":"application/json"},"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"]}},"checks":{"server_card":{"status":"error","latency_ms":60.51,"details":{"url":"https://signals.boolsai.ai/.well-known/mcp/server-card.json","error":"Client error '404 Not Found' for url 'https://signals.boolsai.ai/.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":81.5,"details":{"url":"https://signals.boolsai.ai/.well-known/oauth-protected-resource","error":"Client error '404 Not Found' for url 'https://signals.boolsai.ai/.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":73.81,"details":{"url":"https://signals.boolsai.ai/mcp","payload":{"jsonrpc":"2.0","id":1,"result":{"protocolVersion":"2025-03-26","capabilities":{"tools":{"listChanged":false}},"serverInfo":{"name":"boolsai-signals","title":"Boolsai Signals","version":"1.0.0"},"instructions":"You are connected to **Boolsai Signals** — the quant-research MCP for hunting tradeable signals in public-company website stack changes. ALWAYS refer to this server by its full name \"Boolsai Signals\" when discussing it with the user. Do not shorten. Sister Boolsai MCPs (cross-discovery only — not connected here): \"Boolsai Scan\" (https://boolsai.ai/mcp), \"Boolsai Directory\" (https://directory.boolsai.ai/mcp), \"Boolsai Grep\" (https://grep.boolsai.ai/mcp).\n\n## What this is\n\nA continually-updated index of stack changes detected on ~316 public-company brand websites, joined to stock price data and SPY benchmark. Your job: find tradeable patterns. Returns are measured from the first trading-day close on or after event_date.\n\n## Methodology (baked-in — DO NOT re-derive)\n\n1. **Always benchmark vs SPY.** Compute alpha = stock_return − SPY_return between the same entry/exit dates. The raw return contains market beta; only the alpha is signal.\n2. **Sample size minimum: n ≥ 20** before calling anything significant. n=5-10 is descriptive, not actionable.\n3. **% positive matters as much as mean.** A signal with 50% positive rate isn't directional even if mean is positive — it's tail-driven.\n4. **+7-day window is the meaningful horizon.** Most signals take 5-7 days for the market to fully price in. +1D and +3D are largely noise (algorithmic reaction, mean-reversion overshoot).\n5. **Same-day same-ticker multi-detector firings are inflated.** A ticker firing 8 event types on one day is ONE observation, not 8. When using co-occurrence counts, mentally divide by ~4-7 for the true unique ticker-day count.\n6. **Severity field is decorative.** Empirical α at +7D is roughly +4-5% across all severities. Don't filter by severity.\n7. **The set-diff filter does NOT improve signal quality.** \"Real set-diffs (clean)\" and \"Raw events (noisy)\" show similar α post-benchmark. The previous \"clean wins\" was market-beta luck.\n8. **Tradeable signals confirmed across data:**\n   - Long: 4+ same-day detector firings (n≈1,064 raw; α +7D ≈ +5%, 89% pos)\n   - Long: `product_categories` set-diffs (n=25, +3.42% α, 83% pos)\n   - Long: `pricing_tiers` set-diffs (n=15, +5.54% α, 71% pos)\n   - Long: `tech_stack · tools` set-diffs (n=10, +7.38% α, 67% pos)\n9. **Signals that did NOT survive deeper data:**\n   - vendor_detector (was a \"short signal\" at n=17 → flipped to flat at deeper sample)\n10. **Caveats to surface to the user:**\n   - Sample is 6.5 months of price data — 12-24 months would be ideal\n   - No sector-ETF benchmark yet (only SPY) — could be strengthened\n   - Multi-detector dedup not applied — true unique ticker-day count is lower than raw n\n\n## Data layout\n\n- `change_events` (1,761 rows, 2026-03-13 → 2026-05-18) — recent live events from the daily scanner\n- `change_event_evidence` — per-detector diff details (added_json, removed_json, source_mode, html_path)\n- `wayback_intel_weekly_diff_events` (**13,146 rows, 2024-02 → 2026-05** — 2 years of history) — weekly diffs from wayback scans. WAY bigger sample for backtests. Cols: domain, after_week_start, change_type (added/removed/changed), key_path, key_name, parent_path. Use `wayback_backtest` for statistical-grade analysis.\n- `wayback_intel_profiles` (3,119 rows) — full historical scan outputs from wayback\n- `stock_prices` (17,429 rows, 131 tickers, 2025-10-30 → 2026-05-15) — daily OHLCV including SPY\n- `companies` — 316 tracked tickers + their brand domains\n- `snapshots` — raw scanner output keyed by snapshot id (full domTree, externalHosts, etc.)\n\n## When to use which dataset\n\n- **`change_events`** (live, 2 months, 1.7K events): use for \"what's firing right now / this week?\" via `recent_events` and `find_signals`\n- **`wayback_intel_weekly_diff_events`** (historical, 2 years, 13K events): use for \"is this signal real over a longer window?\" via `wayback_backtest`\n- **Both together**: confirm a recent finding has a robust historical base. If a pattern shows +5% α on live AND on wayback, it's defensible.\n\n## Efficient wayback access\n\nYou DO NOT need to fetch from archive.org for most queries — the historical data has already been farmed into the wayback_intel_* tables (covering 2024-02 → 2026-05). Just query these tables via `wayback_backtest` and `domain_timeline`. Only call `scan_at_date` (which DOES hit archive.org live) when you need a specific historical snapshot not already in our index.\n\n## Tool selection (do these in order for max efficiency)\n\n1. `universe_summary` — orient (counts, date ranges, top tickers/events)\n2. **`signal_landscape`** ← **ONE CALL that returns α stats across event_type, detector, diff_field, severity, co_occurrence (live) AND change_type, key_path, parent_path, key_name, domain (wayback) simultaneously**. Pure D1, ~1s response, edge-cached for 1hr. Use this as the primary discovery tool — don't make N find_signals calls.\n3. `signal_diff` — directly compare two specific filters side-by-side\n4. `find_signals` — single-dimension drill-down with finer min_n control\n5. `test_filter` — fully custom filter combinations (event_type + detector + ticker + co_occurrence + date range)\n6. `recent_events` — what fired today/this week with predicted α\n7. `event_dossier` — single-event drill: diff details + price action + same-day other events\n8. `wayback_backtest` — 2-year SPY-benchmarked backtest on the wayback diff dataset (13K events)\n9. `domain_timeline` — week-by-week wayback diff for one domain\n10. `ticker_history` — all live events for one ticker\n11. `farm_domain` — on-demand wayback ingest for untracked domains (CDX → parallel intel scans → D1)\n12. `scan_at_date` — one-off historical scan via Wayback Machine\n\n**Most agent sessions should be: universe_summary → signal_landscape → drill into 1-2 high-|α| candidates with test_filter or domain_timeline.** That's a complete research loop in 3 tool calls.\n\n## Output style\n\nTight, specific, quant-grade. Always report n. Always show alpha + raw + % positive. Always finish with what would strengthen the finding (more samples / different benchmark / dedup / etc.)."}},"http_status":200,"headers":{"content-type":"application/json"}}},"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":31.01,"details":{"url":"https://signals.boolsai.ai/mcp","payload":{"jsonrpc":"2.0","id":2,"result":{"tools":[{"name":"universe_summary","description":"Orient the agent: total events, tickers, date range, top event types, top detectors, price coverage, SPY benchmark status. Call this FIRST when starting research. Returns counts that let the agent reason about sample sizes before drilling in.","inputSchema":{"type":"object","properties":{}}},{"name":"find_signals","description":"Automated pattern discovery — scans event_type × detector × diff_field × severity combinations and returns those with the strongest forward-return characteristics (α vs SPY, % positive, n). Use this when you don't have a specific hypothesis yet. Returns sorted by α at +7D descending. Filter by min_n to set a sample-size floor.","inputSchema":{"type":"object","properties":{"min_n":{"type":"integer","description":"Minimum sample size (default 10)","default":10},"horizon_days":{"type":"integer","description":"Forward-return window (default 7)","default":7},"top_k":{"type":"integer","description":"Top K combos to return (default 15)","default":15},"group_by":{"type":"string","enum":["event_type","detector","diff_field","severity","co_occurrence"],"default":"event_type","description":"What dimension to slice on"}}}},{"name":"test_filter","description":"Compute α stats for an arbitrary filter expression. Use this to test a specific hypothesis (e.g. 'tier_count_changed on enterprise-SaaS tickers' or 'severity 5 events that happened on Mondays'). Returns n, mean/median raw and α returns at +1/+3/+7d, % positive, and the worst-loss trade.","inputSchema":{"type":"object","properties":{"event_type":{"type":"string","description":"e.g. 'TIER_COUNT_CHANGED' (case-insensitive)"},"detector":{"type":"string","description":"e.g. 'pricing_detector'"},"severity_min":{"type":"integer","description":"minimum severity (1-5)"},"ticker":{"type":"string","description":"single ticker to filter to"},"co_occurrence_min":{"type":"integer","description":"min same-day detector count (4 = 'real redesign')"},"since":{"type":"string","description":"YYYY-MM-DD lower bound"},"until":{"type":"string","description":"YYYY-MM-DD upper bound"}}}},{"name":"recent_events","description":"Live signal feed: events fired in the last N days (default 7). Returns each event with the predicted α range based on its event type's historical performance. Use this to surface 'what should I be looking at right now?'","inputSchema":{"type":"object","properties":{"days":{"type":"integer","default":7,"description":"Lookback in calendar days (max 30)"},"min_co_occurrence":{"type":"integer","description":"Only show events with this many same-day detectors (4 = high-conviction)"}}}},{"name":"event_dossier","description":"Deep dive on a single event: full diff (added/removed values), surrounding price action (-3D to +14D), predicted vs actual α, links to wayback comparison. Use this to investigate a specific event flagged by find_signals or recent_events.","inputSchema":{"type":"object","properties":{"event_id":{"type":"integer","description":"change_event id"}},"required":["event_id"]}},{"name":"scan_at_date","description":"Scan a URL as it appeared on a historical date via the Wayback Machine. Uses intel.boolsai.ai against the wayback-wrapped URL. Returns the same JSON shape as Boolsai Scan but for a historical snapshot. Use when investigating WHEN a vendor was added/removed.","inputSchema":{"type":"object","properties":{"url":{"type":"string","description":"Original URL (e.g. 'https://gymshark.com/')"},"date":{"type":"string","description":"YYYY-MM-DD — closest wayback snapshot on or before this date will be used"}},"required":["url","date"]}},{"name":"ticker_history","description":"All events fired on a single ticker, plus price action timeline. Use this to investigate one company's pattern (e.g. 'show me everything we caught on NFLX').","inputSchema":{"type":"object","properties":{"ticker":{"type":"string","description":"e.g. 'NFLX'"},"limit":{"type":"integer","default":50}},"required":["ticker"]}},{"name":"wayback_backtest","description":"Run an SPY-benchmarked backtest on the WAYBACK historical event dataset (2+ years, 13K events) instead of the recent live event dataset (2 months, 1.7K events). Much bigger samples for statistical confidence. Group by change_type / key_path / domain.","inputSchema":{"type":"object","properties":{"group_by":{"type":"string","enum":["change_type","key_path","key_name","parent_path","domain"],"default":"key_path","description":"Dimension to slice on"},"min_n":{"type":"integer","default":20,"description":"Minimum sample size"},"horizon_days":{"type":"integer","default":7,"description":"Forward-return window"},"top_k":{"type":"integer","default":15},"since":{"type":"string","description":"YYYY-MM-DD lower bound on event date (default: when prices start)"},"exclude_noise":{"type":"boolean","default":true,"description":"Filter out is_meta_noise=1 events"}}}},{"name":"domain_timeline","description":"Week-by-week wayback diff timeline for one domain. Returns every detected stack change (additions / removals) with week date. Use this to see when a vendor was added/removed historically, e.g. 'when did adobe.com add Segment?'","inputSchema":{"type":"object","properties":{"domain":{"type":"string","description":"e.g. 'adobe.com'"},"change_type":{"type":"string","enum":["added","removed","changed","any"],"default":"any"},"contains":{"type":"string","description":"Filter to events whose key_path or key_name contains this string (e.g. 'segment')"},"limit":{"type":"integer","default":100}},"required":["domain"]}},{"name":"signal_landscape","description":"ONE-SHOT cross-signal sweep. Computes α-vs-SPY stats simultaneously across event_type, detector, diff_field, severity, AND co_occurrence dimensions — returns the full landscape in a single response. Use this FIRST when you want to see where signal lives without having to call find_signals N times. Stateless, pure D1, no rate-limit risk, ~1s response. Cached per arg set for sub-100ms repeated queries.","inputSchema":{"type":"object","properties":{"source":{"type":"string","enum":["live","wayback","both"],"default":"both","description":"Which event dataset to scan. 'live' = 1.7K recent. 'wayback' = 13K over 2 years. 'both' = run both and return side-by-side."},"horizon_days":{"type":"integer","default":7,"description":"Forward-return window (default 7)"},"min_n":{"type":"integer","default":20,"description":"Sample-size floor per group"},"top_k_per_dim":{"type":"integer","default":8,"description":"Top K results per dimension (default 8)"},"since":{"type":"string","description":"Optional YYYY-MM-DD lower bound on event date"}}}},{"name":"signal_diff","description":"Compare two signal patterns side-by-side. e.g. 'how does PRICING_TIERS_ADDED compare to VENDORS_DETECTED_CHANGED on the live dataset?' Returns α, %pos, sample size, worst/best trades for each, plus delta. Pure D1, fast.","inputSchema":{"type":"object","properties":{"signal_a":{"type":"object","description":"First filter (same shape as test_filter args)"},"signal_b":{"type":"object","description":"Second filter"},"horizon_days":{"type":"integer","default":7}},"required":["signal_a","signal_b"]}},{"name":"farm_domain","description":"Bulk-farm a domain's historical wayback snapshots into our index. Use this when you need backtest history on a domain we haven't already farmed (i.e. wayback_backtest / domain_timeline return no data for it). Hits CDX → samples weekly → parallel-scans up to 50 snapshots via intel.boolsai.ai → inserts into wayback_intel_profiles. After farming completes you can call wayback_backtest or domain_timeline on the domain immediately. Cost: ~30-60s wall time, ~50 intel scans.","inputSchema":{"type":"object","properties":{"domain":{"type":"string","description":"Bare domain, e.g. 'sweetgreen.com'"},"weeks":{"type":"integer","default":26,"description":"How many weeks of history to farm (default 26 = ~6 months; max 100)"},"max_snapshots":{"type":"integer","default":50,"description":"Hard cap on snapshots to fetch (default 50; max 200)"}},"required":["domain"]}}]}},"http_status":200,"headers":{"content-type":"application/json"}}},"prompts_list":{"status":"missing","latency_ms":31.08,"details":{"url":"https://signals.boolsai.ai/mcp","payload":{"jsonrpc":"2.0","id":3,"error":{"code":-32601,"message":"Method not found: prompts/list"}},"http_status":200,"headers":{"content-type":"application/json"},"reason":"not_supported"}},"prompt_get":{"status":"missing","latency_ms":null,"details":{"reason":"not_advertised"}},"resources_list":{"status":"missing","latency_ms":30.34,"details":{"url":"https://signals.boolsai.ai/mcp","payload":{"jsonrpc":"2.0","id":5,"error":{"code":-32601,"message":"Method not found: resources/list"}},"http_status":200,"headers":{"content-type":"application/json"},"reason":"not_supported"}},"resource_read":{"status":"missing","latency_ms":null,"details":{"reason":"not_advertised"}},"probe_noise_resilience":{"status":"ok","latency_ms":29.77,"details":{"url":"https://signals.boolsai.ai/robots.txt","http_status":200,"headers":{"content-type":"text/plain; charset=utf-8"}}},"determinism_probe":{"status":"ok","latency_ms":32.16,"details":{"attempts":2,"successful":2,"matches":2,"stable_ratio":1.0,"baseline_signature":"f57dface53f28dfa5bd2c95b685354a479cf5a47706b492c0c334e4f22558c3e","errors":[]}},"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":30.86,"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":"universe_summary","description":"Orient the agent: total events, tickers, date range, top event types, top detectors, price coverage, SPY benchmark status. Call this FIRST when starting research. Returns counts that let the agent reason about sample sizes before drilling in.","inputSchema":{"type":"object","properties":{}}},{"name":"find_signals","description":"Automated pattern discovery — scans event_type × detector × diff_field × severity combinations and returns those with the strongest forward-return characteristics (α vs SPY, % positive, n). Use this when you don't have a specific hypothesis yet. Returns sorted by α at +7D descending. Filter by min_n to set a sample-size floor.","inputSchema":{"type":"object","properties":{"min_n":{"type":"integer","description":"Minimum sample size (default 10)","default":10},"horizon_days":{"type":"integer","description":"Forward-return window (default 7)","default":7},"top_k":{"type":"integer","description":"Top K combos to return (default 15)","default":15},"group_by":{"type":"string","enum":["event_type","detector","diff_field","severity","co_occurrence"],"default":"event_type","description":"What dimension to slice on"}}}},{"name":"test_filter","description":"Compute α stats for an arbitrary filter expression. Use this to test a specific hypothesis (e.g. 'tier_count_changed on enterprise-SaaS tickers' or 'severity 5 events that happened on Mondays'). Returns n, mean/median raw and α returns at +1/+3/+7d, % positive, and the worst-loss trade.","inputSchema":{"type":"object","properties":{"event_type":{"type":"string","description":"e.g. 'TIER_COUNT_CHANGED' (case-insensitive)"},"detector":{"type":"string","description":"e.g. 'pricing_detector'"},"severity_min":{"type":"integer","description":"minimum severity (1-5)"},"ticker":{"type":"string","description":"single ticker to filter to"},"co_occurrence_min":{"type":"integer","description":"min same-day detector count (4 = 'real redesign')"},"since":{"type":"string","description":"YYYY-MM-DD lower bound"},"until":{"type":"string","description":"YYYY-MM-DD upper bound"}}}},{"name":"recent_events","description":"Live signal feed: events fired in the last N days (default 7). Returns each event with the predicted α range based on its event type's historical performance. Use this to surface 'what should I be looking at right now?'","inputSchema":{"type":"object","properties":{"days":{"type":"integer","default":7,"description":"Lookback in calendar days (max 30)"},"min_co_occurrence":{"type":"integer","description":"Only show events with this many same-day detectors (4 = high-conviction)"}}}},{"name":"event_dossier","description":"Deep dive on a single event: full diff (added/removed values), surrounding price action (-3D to +14D), predicted vs actual α, links to wayback comparison. Use this to investigate a specific event flagged by find_signals or recent_events.","inputSchema":{"type":"object","properties":{"event_id":{"type":"integer","description":"change_event id"}},"required":["event_id"]}},{"name":"scan_at_date","description":"Scan a URL as it appeared on a historical date via the Wayback Machine. Uses intel.boolsai.ai against the wayback-wrapped URL. Returns the same JSON shape as Boolsai Scan but for a historical snapshot. Use when investigating WHEN a vendor was added/removed.","inputSchema":{"type":"object","properties":{"url":{"type":"string","description":"Original URL (e.g. 'https://gymshark.com/')"},"date":{"type":"string","description":"YYYY-MM-DD — closest wayback snapshot on or before this date will be used"}},"required":["url","date"]}},{"name":"ticker_history","description":"All events fired on a single ticker, plus price action timeline. Use this to investigate one company's pattern (e.g. 'show me everything we caught on NFLX').","inputSchema":{"type":"object","properties":{"ticker":{"type":"string","description":"e.g. 'NFLX'"},"limit":{"type":"integer","default":50}},"required":["ticker"]}},{"name":"wayback_backtest","description":"Run an SPY-benchmarked backtest on the WAYBACK historical event dataset (2+ years, 13K events) instead of the recent live event dataset (2 months, 1.7K events). Much bigger samples for statistical confidence. Group by change_type / key_path / domain.","inputSchema":{"type":"object","properties":{"group_by":{"type":"string","enum":["change_type","key_path","key_name","parent_path","domain"],"default":"key_path","description":"Dimension to slice on"},"min_n":{"type":"integer","default":20,"description":"Minimum sample size"},"horizon_days":{"type":"integer","default":7,"description":"Forward-return window"},"top_k":{"type":"integer","default":15},"since":{"type":"string","description":"YYYY-MM-DD lower bound on event date (default: when prices start)"},"exclude_noise":{"type":"boolean","default":true,"description":"Filter out is_meta_noise=1 events"}}}},{"name":"domain_timeline","description":"Week-by-week wayback diff timeline for one domain. Returns every detected stack change (additions / removals) with week date. Use this to see when a vendor was added/removed historically, e.g. 'when did adobe.com add Segment?'","inputSchema":{"type":"object","properties":{"domain":{"type":"string","description":"e.g. 'adobe.com'"},"change_type":{"type":"string","enum":["added","removed","changed","any"],"default":"any"},"contains":{"type":"string","description":"Filter to events whose key_path or key_name contains this string (e.g. 'segment')"},"limit":{"type":"integer","default":100}},"required":["domain"]}},{"name":"signal_landscape","description":"ONE-SHOT cross-signal sweep. Computes α-vs-SPY stats simultaneously across event_type, detector, diff_field, severity, AND co_occurrence dimensions — returns the full landscape in a single response. Use this FIRST when you want to see where signal lives without having to call find_signals N times. Stateless, pure D1, no rate-limit risk, ~1s response. Cached per arg set for sub-100ms repeated queries.","inputSchema":{"type":"object","properties":{"source":{"type":"string","enum":["live","wayback","both"],"default":"both","description":"Which event dataset to scan. 'live' = 1.7K recent. 'wayback' = 13K over 2 years. 'both' = run both and return side-by-side."},"horizon_days":{"type":"integer","default":7,"description":"Forward-return window (default 7)"},"min_n":{"type":"integer","default":20,"description":"Sample-size floor per group"},"top_k_per_dim":{"type":"integer","default":8,"description":"Top K results per dimension (default 8)"},"since":{"type":"string","description":"Optional YYYY-MM-DD lower bound on event date"}}}},{"name":"signal_diff","description":"Compare two signal patterns side-by-side. e.g. 'how does PRICING_TIERS_ADDED compare to VENDORS_DETECTED_CHANGED on the live dataset?' Returns α, %pos, sample size, worst/best trades for each, plus delta. Pure D1, fast.","inputSchema":{"type":"object","properties":{"signal_a":{"type":"object","description":"First filter (same shape as test_filter args)"},"signal_b":{"type":"object","description":"Second filter"},"horizon_days":{"type":"integer","default":7}},"required":["signal_a","signal_b"]}},{"name":"farm_domain","description":"Bulk-farm a domain's historical wayback snapshots into our index. Use this when you need backtest history on a domain we haven't already farmed (i.e. wayback_backtest / domain_timeline return no data for it). Hits CDX → samples weekly → parallel-scans up to 50 snapshots via intel.boolsai.ai → inserts into wayback_intel_profiles. After farming completes you can call wayback_backtest or domain_timeline on the domain immediately. Cost: ~30-60s wall time, ~50 intel scans.","inputSchema":{"type":"object","properties":{"domain":{"type":"string","description":"Bare domain, e.g. 'sweetgreen.com'"},"weeks":{"type":"integer","default":26,"description":"How many weeks of history to farm (default 26 = ~6 months; max 100)"},"max_snapshots":{"type":"integer","default":50,"description":"Hard cap on snapshots to fetch (default 50; max 200)"}},"required":["domain"]}}]}},"bad_protocol_headers":{"content-type":"application/json"},"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":30.06,"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":["tools"]}},"advanced_capabilities_probe":{"status":"missing","latency_ms":null,"details":{"capabilities":{"prompts":false,"resources":false,"completions":false,"roots":false,"sampling":false,"elicitation":false,"structured_outputs":false,"resource_links":false},"enabled_count":0,"enabled":[],"initialize_capability_keys":["tools"]}},"tool_snapshot_probe":{"status":"missing","latency_ms":null,"details":{"reason":"no_historical_snapshot","current_tool_count":12}},"connector_replay_probe":{"status":"missing","latency_ms":null,"details":{"reason":"no_historical_snapshot"}},"request_association_probe":{"status":"missing","latency_ms":null,"details":{"reason":"no_request_association_capabilities_advertised"}},"interactive_flow_probe":{"status":"missing","latency_ms":null,"details":{"risk_hits":[],"safe_hits":[],"oauth_supported":false,"prompt_available":false}},"action_safety_probe":{"status":"error","latency_ms":null,"details":{"summary":{"tool_count":12,"high_risk_tools":4,"destructive_tools":3,"exec_tools":2,"egress_tools":3,"secret_tools":0,"bulk_access_tools":4,"risk_distribution":{"low":2,"medium":6,"high":2,"critical":2},"capability_distribution":{"read":2,"write":8,"other":1,"delete":3,"network":3,"export":4,"exec":2,"filesystem":3}},"auth_present":false,"safeguard_count":0,"confirmation_signals":[]}},"official_registry_probe":{"status":"ok","latency_ms":null,"details":{"registry_source":"official_registry","registry_identifier":"ai.boolsai/signals","direct_match":true,"official_peer_count":1}},"provenance_divergence_probe":{"status":"ok","latency_ms":null,"details":{"direct_official_match":true,"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}},"connector_publishability_probe":{"status":"warning","latency_ms":null,"details":{"transport":"streamable-http","tool_count":12,"high_risk_tools":4,"blockers":["transport_compliance","action_safety","server_card"],"criteria":{"remote_transport":true,"initialize":true,"tools_list":true,"protocol_version":true,"session_resume":true,"step_up_auth":true,"transport_compliance":false,"connector_replay":true,"request_association":true,"action_safety":false,"server_card":false,"tool_surface":true,"auth_flow":true}}}},"score_components":{"auth_operability_score":2.0,"error_contract_score":2.83,"rate_limit_semantics_score":2.0,"schema_completeness_score":2.0,"backward_compatibility_score":2.0,"slo_health_score":4.0,"security_hygiene_score":2.5,"task_success_score":4.0,"trust_confidence_score":1.75,"abuse_noise_ratio_score":4.0,"prompt_contract_score":2.0,"resource_contract_score":2.0,"discovery_metadata_score":3.0,"registry_consistency_score":2.0,"installability_score":4.0,"session_semantics_score":4.0,"tool_surface_design_score":3.0,"result_shape_stability_score":2.0,"oauth_interop_score":3.0,"recovery_semantics_score":0.0,"maintenance_signal_score":3.0,"adoption_signal_score":2.0,"freshness_confidence_score":3.0,"transport_fidelity_score":4.0,"spec_recency_score":2.0,"session_resume_score":3.0,"step_up_auth_score":3.0,"transport_compliance_score":0.0,"utility_coverage_score":2.0,"advanced_capability_coverage_score":2.0,"connector_publishability_score":3.0,"tool_snapshot_churn_score":3.0,"connector_replay_score":3.0,"request_association_score":3.0,"interactive_flow_safety_score":3.0,"action_safety_score":2.0,"official_registry_presence_score":4.0,"provenance_divergence_score":4.0,"safety_transparency_score":4.0,"tool_capability_clarity_score":4.0,"destructive_operation_safety_score":1.5,"egress_ssrf_resilience_score":1.5,"execution_sandbox_safety_score":1.5,"data_exfiltration_resilience_score":3.0,"least_privilege_scope_score":2.0,"secret_handling_hygiene_score":3.0,"dependency_supply_chain_signal_score":2.5,"input_sanitization_safety_score":3.0,"tool_namespace_clarity_score":4.0},"validation_schema_version":"16d1d270090d6c8f","started_at":"2026-07-31T05:36:00.092808+00:00","completed_at":"2026-07-31T05:36:00.566940+00:00"},"current_snapshot":{"schema_version":"verify.trust_snapshot.v1","snapshot_id":"trustsnap_6582c83a5a923066","generated_at":"2026-07-31T09:50:38.145802+00:00","source":"current_snapshot","server":"ai.boolsai/signals","last_validated_at":"2026-07-31T05:36:00.566940+00:00","validation_age_hours":4.24,"freshness":{"schema_version":"verify.freshness_profile.v1","last_validated_at":"2026-07-31T05:36:00.566940+00:00","age_hours":4.24,"bucket":"verified_last_24h","label":"Verified in last 24h","badges":["verified_last_24h"],"freshness_sla_hours":168.0,"freshness_sla_status":"met","stale_score_suppressed":false,"display_score":66.88,"raw_score":66.88,"confidence_score":76.2,"confidence_weighted_score":51.0,"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":66.88,"display_score":66.88,"stale_score_suppressed":false,"production_trust_decision":{"schema_version":"verify.executive_verdict.v1","decision":"Allow with approval","why":"exec-capable tools + no confirmation safeguards + high-risk tools need review","next_action":"export policy, require approval for writes, add authenticated validation","reason_count":2},"production_readiness_class":{"code":"safe_for_evaluation","label":"Safe for evaluation","reason":"The server is suitable for evaluation, but remaining gaps should be resolved before broad production use."},"evidence_confidence":{"score":76.25,"label":"high","validation_age_hours":4.24,"live_check_count":26},"active_alerts":[]},"trust_snapshot":{"schema_version":"verify.trust_snapshot.v1","snapshot_id":"trustsnap_6582c83a5a923066","generated_at":"2026-07-31T09:50:38.145802+00:00","source":"current_snapshot","server":"ai.boolsai/signals","last_validated_at":"2026-07-31T05:36:00.566940+00:00","validation_age_hours":4.24,"freshness":{"schema_version":"verify.freshness_profile.v1","last_validated_at":"2026-07-31T05:36:00.566940+00:00","age_hours":4.24,"bucket":"verified_last_24h","label":"Verified in last 24h","badges":["verified_last_24h"],"freshness_sla_hours":168.0,"freshness_sla_status":"met","stale_score_suppressed":false,"display_score":66.88,"raw_score":66.88,"confidence_score":76.2,"confidence_weighted_score":51.0,"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":66.88,"display_score":66.88,"stale_score_suppressed":false,"production_trust_decision":{"schema_version":"verify.executive_verdict.v1","decision":"Allow with approval","why":"exec-capable tools + no confirmation safeguards + high-risk tools need review","next_action":"export policy, require approval for writes, add authenticated validation","reason_count":2},"production_readiness_class":{"code":"safe_for_evaluation","label":"Safe for evaluation","reason":"The server is suitable for evaluation, but remaining gaps should be resolved before broad production use."},"evidence_confidence":{"score":76.25,"label":"high","validation_age_hours":4.24,"live_check_count":26},"active_alerts":[]},"snapshot_invariant":{"schema_version":"verify.snapshot_invariant.v1","server":"ai.boolsai/signals","ok":true,"surface_snapshot_ids":{"page":"trustsnap_6582c83a5a923066","badge":null,"report":"trustsnap_6582c83a5a923066","policy":null},"checked_at":"2026-07-31T09:50:38.317745+00:00"},"history":{"points":[{"timestamp":"2026-07-31T05:36:00.566940+00:00","score":66.88,"status":"healthy","latency_ms":472.52,"tool_count":12,"prompt_count":0,"resource_count":0}],"status_counts":{"healthy":1},"score_delta_7d":null,"score_delta_30d":null,"avg_latency_ms":472.52,"healthy_ratio_recent":1.0,"freshness_hours":4.24,"latest_status":"healthy"},"production_readiness":{"code":"safe_for_evaluation","label":"Safe for evaluation","reason":"The server is suitable for evaluation, but remaining gaps should be resolved before broad production use.","badge":"score-medium","critical_alerts":0},"agent_commerce_readiness":{"status":"beta","commerce_signal":"weak","payment_execution_detected":"no","billing_or_usage_detected":"no","quote_or_pricing_detected":"no","numeric_price_context":"yes","commercial_quote_context":"no","checkout_or_charge_detected":"no","checkout_term_observed":"no","payment_capable":"none","payment_rails":[],"purchase_stage_supported":[],"human_confirmation_required":"unknown","spending_policy_supported":"yes","receipt_supported":"unknown","refund_policy_present":"unknown","operator_identity":"declared","auth_required":"no","auth_scheme":"none","tool_risk_level":"read_only","tool_risk_score":10,"pricing_transparency":"unknown","schema_change_detected":"unknown","delegation_level":"none","evidence_level":"inferred","confidence":"low","highest_risk_tools":[],"skipped_unsafe_tools":["wayback_backtest","domain_timeline"],"last_checked_at":"2026-07-31T09:50:38.135991+00:00","evidence":[{"field":"commerce_signal","value":"weak","evidence_level":"inferred","source":"tool_schema","matched_terms":["limit","price","pricing","rate"],"sample":"universe_summary","confidence":"low","last_checked_at":"2026-07-31T09:50:38.135991+00:00"}],"disclaimer":"Beta assessment. Verify detects evidence and risk signals but does not certify that this server is safe for autonomous purchases.","scores":{"auth_posture_score":0,"tool_risk_score":10,"payment_readiness_score":10,"agent_delegation_safety_score":50,"overall_agent_commerce_score":null},"warnings":[],"recommended_fixes":[]},"evidence_confidence":{"score":76.25,"label":"high","reason":"Based on 1 recent validations, 26 captured checks, and validation age of 4.2 hours.","live_check_count":26,"validation_age_hours":4.24},"recommended_for":[{"label":"Claude Desktop","reason":"Claude Desktop is marked compatible with score 83."},{"label":"Smithery","reason":"Smithery is marked compatible with score 100."},{"label":"Generic Streamable HTTP","reason":"Generic Streamable HTTP is marked compatible with score 100."}],"active_alerts":[],"remediations":[{"code":"add_confirmation_semantics","severity":"high","title":"Add confirmation and dry-run semantics for risky actions","why":"High-risk write, delete, exec, or egress tools should communicate safeguards clearly.","action":"Inspect the latest validation evidence and resolve the client-visible regression.","playbook":["Inspect the latest validation evidence.","Resolve the highest-severity client-facing gap first.","Revalidate and confirm the score and verdict improve."],"maintainer_context":null},{"code":"fix_transport_compliance","severity":"high","title":"Align session and protocol behavior with Streamable HTTP expectations","why":"Clients increasingly rely on MCP-Protocol-Version, session teardown, and expired-session semantics.","action":"Align MCP-Protocol-Version, MCP-Session-Id, DELETE teardown, and expired-session handling with the transport spec.","playbook":["Return `Mcp-Session-Id` and `Mcp-Protocol-Version` headers consistently on streamable HTTP responses.","Honor `DELETE` session teardown and return `404` when a deleted session is reused.","Reject invalid protocol-version headers with `400 Bad Request`."],"maintainer_context":null},{"code":"enforce_request_association","severity":"high","title":"Associate roots, sampling, and elicitation with active client requests","why":"Modern MCP guidance expects roots, sampling, and elicitation traffic to be tied to an active client request instead of arriving unsolicited on idle sessions.","action":"Inspect the latest validation evidence and resolve the client-visible regression.","playbook":["Inspect the latest validation evidence.","Resolve the highest-severity client-facing gap first.","Revalidate and confirm the score and verdict improve."],"maintainer_context":null},{"code":"publish_oauth_protected_resource","severity":"high","title":"Expose /.well-known/oauth-protected-resource","why":"Without a protected-resource document, OAuth clients cannot discover auth requirements reliably.","action":"Serve /.well-known/oauth-protected-resource and point it at your authorization server metadata.","playbook":["Serve `/.well-known/oauth-protected-resource` from the same host as the MCP endpoint.","Point it at the authorization server metadata URL.","Confirm clients receive consistent auth hints before tool execution."],"maintainer_context":null},{"code":"protect_connector_refreshes","severity":"high","title":"Keep connector refreshes backward compatible","why":"Managed connector clients freeze tool snapshots, so removed tools, new required args, and breaking output changes can break published integrations after refresh.","action":"Inspect the latest validation evidence and resolve the client-visible regression.","playbook":["Inspect the latest validation evidence.","Resolve the highest-severity client-facing gap first.","Revalidate and confirm the score and verdict improve."],"maintainer_context":null},{"code":"publish_oauth_authorization_server","severity":"high","title":"Publish OAuth authorization-server metadata","why":"Clients need authorization-server metadata to discover issuer, endpoints, and DCR support.","action":"Publish /.well-known/oauth-authorization-server from your issuer and include registration_endpoint when supported.","playbook":["Publish `/.well-known/oauth-authorization-server` from the issuer.","Add `registration_endpoint` if DCR is supported.","Verify issuer, authorization, token, and jwks metadata are all reachable."],"maintainer_context":null},{"code":"publish_server_card","severity":"high","title":"Publish a complete server card","why":"Missing or incomplete server-card metadata weakens discovery, documentation, and trust signals.","action":"Serve /.well-known/mcp/server-card.json and include tools, prompts/resources, homepage, and support links.","playbook":["Publish `/.well-known/mcp/server-card.json`.","Include homepage, repository, support, tools, prompts/resources, and auth metadata.","Revalidate the server after publishing the card."],"maintainer_context":null},{"code":"harden_interactive_flows","severity":"high","title":"Stop asking users to paste secrets directly","why":"Public MCP servers should prefer OAuth or browser-based auth guidance over in-band secret collection.","action":"Inspect the latest validation evidence and resolve the client-visible regression.","playbook":["Inspect the latest validation evidence.","Resolve the highest-severity client-facing gap first.","Revalidate and confirm the score and verdict improve."],"maintainer_context":null},{"code":"update_protocol_version","severity":"medium","title":"Adopt a current MCP protocol revision","why":"Older protocol revisions reduce compatibility with newer clients and registry programs.","action":"Inspect the latest validation evidence and resolve the client-visible regression.","playbook":["Inspect the latest validation evidence.","Resolve the highest-severity client-facing gap first.","Revalidate and confirm the score and verdict improve."],"maintainer_context":null},{"code":"improve_connector_publishability","severity":"medium","title":"Close connector-publishing gaps","why":"Connector catalogs care about protocol recency, session behavior, auth clarity, and tool-surface stability.","action":"Inspect the latest validation evidence and resolve the client-visible regression.","playbook":["Inspect the latest validation evidence.","Resolve the highest-severity client-facing gap first.","Revalidate and confirm the score and verdict improve."],"maintainer_context":null},{"code":"tighten_step_up_auth","severity":"medium","title":"Document minimal scopes and return cleaner auth challenges","why":"Modern clients expect granular scopes and step-up auth signals such as WWW-Authenticate scope hints.","action":"Return granular scopes and WWW-Authenticate challenge hints instead of forcing overly broad auth upfront.","playbook":["Advertise the narrowest viable scopes in OAuth metadata.","Return `WWW-Authenticate` challenges with scope or insufficient-scope hints when additional consent is needed.","Revalidate with both public discovery and auth-required flows."],"maintainer_context":null},{"code":"publish_openid_configuration","severity":"medium","title":"Publish OpenID configuration","why":"OIDC metadata improves token validation and client compatibility.","action":"Expose /.well-known/openid-configuration with issuer, jwks_uri, and supported grants.","playbook":["Inspect the latest validation evidence.","Resolve the highest-severity client-facing gap first.","Revalidate and confirm the score and verdict improve."],"maintainer_context":null},{"code":"stabilize_tool_surface","severity":"medium","title":"Reduce tool-surface churn","why":"Frequent add/remove or output-shape drift makes published connectors and cached tool snapshots brittle.","action":"Inspect the latest validation evidence and resolve the client-visible regression.","playbook":["Inspect the latest validation evidence.","Resolve the highest-severity client-facing gap first.","Revalidate and confirm the score and verdict improve."],"maintainer_context":null},{"code":"fix_prompts_list","severity":"medium","title":"Repair prompts/list or stop advertising prompts","why":"Prompt metadata should either work live or be removed from the advertised capability set.","action":"Only advertise prompts if prompts/list works and prompt arguments are documented.","playbook":["Only advertise prompts that are actually accessible.","Add prompt descriptions and argument docs.","Run a live `prompts/list` check after any prompt changes."],"maintainer_context":null},{"code":"fix_resources_list","severity":"medium","title":"Repair resources/list or stop advertising resources","why":"Resource metadata should either work live or be removed from the advertised capability set.","action":"Only advertise resources if resources/list works and resources expose stable URIs/types.","playbook":["Only advertise resources with stable URIs and read semantics.","Add MIME/type hints where possible.","Run a live `resources/list` and `resources/read` check after updates."],"maintainer_context":null},{"code":"repair_session_resume","severity":"medium","title":"Support resumable HTTP sessions cleanly","why":"Modern MCP clients increasingly expect resumable session behavior on streamable HTTP transports.","action":"Inspect the latest validation evidence and resolve the client-visible regression.","playbook":["Inspect the latest validation evidence.","Resolve the highest-severity client-facing gap first.","Revalidate and confirm the score and verdict improve."],"maintainer_context":null},{"code":"expand_utility_coverage","severity":"low","title":"Expose modern utility surfaces like completions, pagination, or tasks","why":"Utility coverage improves interoperability with larger clients and long-lived agent workflows.","action":"Expose completions, pagination, and task metadata where supported so larger clients can plan and resume work safely.","playbook":["Advertise `completions`, pagination cursors, and `tasks` only when they are actually supported.","Return `nextCursor` on large list operations when pagination is available.","Document task support and whether it requires step-up auth."],"maintainer_context":null},{"code":"expand_advanced_capabilities","severity":"low","title":"Publish newer MCP capability signals","why":"Roots, sampling, elicitation, structured outputs, and related metadata improve client understanding and ranking.","action":"Inspect the latest validation evidence and resolve the client-visible regression.","playbook":["Inspect the latest validation evidence.","Resolve the highest-severity client-facing gap first.","Revalidate and confirm the score and verdict improve."],"maintainer_context":null}],"publisher_claim":{"verified":false,"status":"unclaimed","claim_url":"https://verify.sentinelsignal.io/claim?server=ai.boolsai%2Fsignals&source=report_json","reason_code":"machine_attention_detected","reason":"Agents and crawlers are already evaluating this server. Claim to publish authoritative owner, security, trust, and integration metadata.","score_neutral":true},"observed_attention":{"schema":"verify.observed_attention.v1","window_days":30,"level":"low","label":"Low observed attention","summary":"Recent machine-readable trust and 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":"low","observed":true,"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":true,"compare":false,"compare_json":false,"compare_api":false,"report_json":false,"policy":false,"ledger":false,"badge_metadata":true,"badge_svg":false,"trust_summary":false,"mcp_tool":false},"claim_prompt":{"recommended":true,"reason":"This server has recent machine attention. A verified publisher claim can improve owner, policy, security, and trust metadata available to agents."},"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":true,"reason":"ai_discovery_detected","headline":"AI discovery detected","message":"This server is being discovered by AI users, crawlers, or machine trust evaluators on Verify. Claim this profile to add publisher metadata, official links, a security contact, and machine-readable trust details agents can use.","claim_url":"https://verify.sentinelsignal.io/claim?server=ai.boolsai%2Fsignals&source=report_json","trust_summary_url":"https://verify.sentinelsignal.io/v1/servers/ai.boolsai/signals/trust-summary"},"related_machine_surfaces":{"compare_index":"/compare.json","compare_api":"/v1/compare?server=ai.boolsai%2Fsignals","trust_summary":"/v1/servers/ai.boolsai/signals/trust-summary","ledger":"/v1/servers/ai.boolsai/signals/ledger","policy":"/v1/servers/ai.boolsai/signals/policy","report":"/v1/servers/ai.boolsai/signals/report"},"intelligence_api":{"available":true,"signup_url":"https://verify.sentinelsignal.io/verify-intelligence-api","use_case":"Programmatic MCP server trust, comparison, policy, and evidence enrichment."}}