{"schema_version":"verify.report.v1","generated_at":"2026-07-31T11:06:40.294519+00:00","snapshot_id":"trustsnap_69fee57bf5cd1ad8","server":{"namespace":"ac.tandem","name":"docs-mcp","title":"ac.tandem/docs-mcp","description":"Remote MCP server for Tandem docs, install guides, SDKs, workflows, and agent setup help.","homepage_url":"https://tandem.ac/docs-mcp","docs_url":null,"icon_url":null,"support_url":null,"remote_url":"https://tandem.ac/mcp","server_card_url":null,"latest_version":"0.3.2","current_status":"healthy","current_score":70.41,"transport_type":"streamable-http","has_oauth":false,"has_dcr":false,"has_prompts":true,"tool_count":13,"current_validation_schema_version":"16d1d270090d6c8f","last_validated_at":"2026-07-31T05:33:13.962771+00:00","registry_source":"official_registry","registry_identifier":"ac.tandem/docs-mcp","canonical_identifier":"ac.tandem/docs-mcp","current_score_components":{"auth_operability_score":2.0,"error_contract_score":0.0,"rate_limit_semantics_score":2.0,"schema_completeness_score":3.0,"backward_compatibility_score":2.0,"slo_health_score":3.0,"security_hygiene_score":4.0,"task_success_score":4.0,"trust_confidence_score":1.75,"abuse_noise_ratio_score":4.0,"prompt_contract_score":2.0,"resource_contract_score":4.0,"discovery_metadata_score":4.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":3.0,"freshness_confidence_score":3.0,"transport_fidelity_score":4.0,"spec_recency_score":3.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":3.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":2.0,"tool_capability_clarity_score":4.0,"destructive_operation_safety_score":3.0,"egress_ssrf_resilience_score":2.0,"execution_sandbox_safety_score":3.75,"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","cloud","read","exec","admin","export","network","filesystem","automation","other","prompts","resources","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":"high"},"taxonomy_tags":["development","search","web","cloud"],"score_decomposition":[{"key":"access_protocol","label":"Access & Protocol","score":31.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":3.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":35.0,"max_score":56.0,"hint":"How well the tool/resource interface communicates and behaves under automation.","components":[{"key":"error_contract_score","score":0.0},{"key":"rate_limit_semantics_score","score":2.0},{"key":"schema_completeness_score","score":3.0},{"key":"prompt_contract_score","score":2.0},{"key":"resource_contract_score","score":4.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":3.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":26.75,"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":4.0},{"key":"destructive_operation_safety_score","score":3.0},{"key":"egress_ssrf_resilience_score","score":2.0},{"key":"execution_sandbox_safety_score","score":3.75},{"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":17.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":3.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":21.5,"max_score":28.0,"hint":"How well the server is documented, listed, and governed in public registries.","components":[{"key":"discovery_metadata_score","score":4.0},{"key":"registry_consistency_score","score":2.0},{"key":"maintenance_signal_score","score":3.0},{"key":"safety_transparency_score","score":2.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":6.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":3.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 80."},{"label":"Generic Streamable HTTP","reason":"Generic Streamable HTTP is marked compatible with score 100."}],"history_summary":{"points":[{"timestamp":"2026-07-31T05:33:13.962771+00:00","score":70.41,"status":"healthy","latency_ms":2808.29,"tool_count":13,"prompt_count":3,"resource_count":50}],"status_counts":{"healthy":1},"score_delta_7d":null,"score_delta_30d":null,"avg_latency_ms":2808.29,"healthy_ratio_recent":1.0,"freshness_hours":5.56,"latest_status":"healthy"},"validation_timeline":[{"timestamp":"2026-07-31T05:33:13.962771+00:00","summary_status":"healthy","score":70.41,"protocol_version":"2025-06-18","auth_mode":"public","tool_count":13,"prompt_count":3,"resource_count":50,"high_risk_tools":1,"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 5.6 hours.","live_check_count":26,"validation_age_hours":5.56},"incident_feed":[{"type":"validation_snapshot","timestamp":"2026-07-31T05:33:13.962771+00:00","title":"Latest validation: healthy","message":"Score 70.4 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":"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://tandem.ac/mcp\n# No OAuth metadata detected.\n# Server: ac.tandem/docs-mcp"},{"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    \"docs-mcp\": {\n      \"command\": \"npx\",\n      \"args\": [\"mcp-remote\", \"https://tandem.ac/mcp\"]\n    }\n  }\n}"},{"key":"smithery","label":"Smithery","score":80.0,"compatibility":"compatible","missing_requirements":["Machine-readable failure semantics should be present."],"snippet":"smithery mcp add \"https://tandem.ac/mcp\""},{"key":"generic_streamable_http","label":"Generic Streamable HTTP","score":100.0,"compatibility":"compatible","missing_requirements":[],"snippet":"curl -sS https://tandem.ac/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://tandem.ac/mcp\n# No OAuth metadata detected.\n# Server: ac.tandem/docs-mcp","claude_desktop":"{\n  \"mcpServers\": {\n    \"docs-mcp\": {\n      \"command\": \"npx\",\n      \"args\": [\"mcp-remote\", \"https://tandem.ac/mcp\"]\n    }\n  }\n}","smithery":"smithery mcp add \"https://tandem.ac/mcp\"","generic_http":"curl -sS https://tandem.ac/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":"ac.tandem/docs-mcp","registry_source":"official_registry","remote_url":"https://tandem.ac/mcp","canonical":true,"score":70.41}],"raw_evidence":{"server_identifier":"ac.tandem/docs-mcp","remote_url":"https://tandem.ac/mcp","server_card_payload":null,"checks":{"server_card":{"status":"error","latency_ms":499.64,"details":{"url":"https://tandem.ac/.well-known/mcp/server-card.json","error":"Client error '404 Not Found' for url 'https://tandem.ac/.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":179.53,"details":{"url":"https://tandem.ac/.well-known/oauth-protected-resource","error":"Client error '404 Not Found' for url 'https://tandem.ac/.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":370.78,"details":{"url":"https://tandem.ac/mcp","payload":{"jsonrpc":"2.0","id":1,"result":{"protocolVersion":"2025-06-18","capabilities":{"tools":{},"resources":{},"prompts":{}},"serverInfo":{"name":"ac.tandem/docs-mcp","title":"Tandem Docs MCP","version":"0.3.2"},"instructions":"Use tools/list and tools/call to retrieve Tandem documentation guidance."}},"http_status":200,"headers":{"content-type":"application/json"}}},"protocol_version_probe":{"status":"warning","latency_ms":null,"details":{"claimed_version":"2025-06-18","validator_protocol_version":"2025-03-26","latest_known_version":"2025-11-25","releases_behind":1,"lag_days":160}},"tools_list":{"status":"ok","latency_ms":363.45,"details":{"url":"https://tandem.ac/mcp","payload":{"jsonrpc":"2.0","id":2,"result":{"tools":[{"name":"search_docs","description":"Search the published Tandem docs index for relevant pages.","annotations":{"title":"Search Tandem docs","readOnlyHint":true,"idempotentHint":true,"openWorldHint":true},"inputSchema":{"type":"object","properties":{"query":{"type":"string","description":"The Tandem question, task, or keyword query to search for."},"docs_ref":{"type":"string","description":"Docs channel or immutable ref. Defaults to stable. Use next, refs/<sha>, or releases/<version> only when explicitly needed."},"engine_version":{"type":"string","description":"Optional Tandem engine version hint. If supplied without docs_ref, the MCP still defaults to stable unless a matching versioned docs ref is configured."},"limit":{"type":"integer","minimum":1,"maximum":20,"description":"Maximum number of matching docs pages to return."},"audience":{"type":"string","description":"Optional audience filter such as developer, desktop user, or operator."}},"required":["query"]}},{"name":"get_doc","description":"Fetch and normalize a published Tandem docs page by path or URL.","annotations":{"title":"Fetch a docs page","readOnlyHint":true,"idempotentHint":true,"openWorldHint":true},"inputSchema":{"type":"object","properties":{"path":{"type":"string","description":"Docs path like /sdk/python/ or a full Tandem docs URL."},"docs_ref":{"type":"string","description":"Docs channel or immutable ref. Defaults to stable."},"engine_version":{"type":"string","description":"Optional Tandem engine version hint for compatibility checks."}},"required":["path"]}},{"name":"get_start_path","description":"Recommend the best Tandem docs starting path for a desktop user, server admin, or developer.","annotations":{"title":"Get a starting docs path","readOnlyHint":true,"idempotentHint":true,"openWorldHint":false},"inputSchema":{"type":"object","properties":{"role":{"type":"string","enum":["desktop","server_admin","developer"],"description":"The user role to optimize the docs starting point for."},"docs_ref":{"type":"string","description":"Docs channel or immutable ref. Defaults to stable."}},"required":["role"]}},{"name":"recommend_next_docs","description":"Recommend the next Tandem docs to read after a current page, optionally biased toward a goal.","annotations":{"title":"Recommend next docs","readOnlyHint":true,"idempotentHint":true,"openWorldHint":true},"inputSchema":{"type":"object","properties":{"current_path":{"type":"string","description":"Current Tandem docs path the user has already read."},"docs_ref":{"type":"string","description":"Docs channel or immutable ref. Defaults to stable."},"goal":{"type":"string","description":"Optional goal such as install Tandem, use the Python SDK, or build workflows."},"limit":{"type":"integer","minimum":1,"maximum":10,"description":"Maximum number of next-doc recommendations to return."}},"required":["current_path"]}},{"name":"answer_how_to","description":"Answer how to install or use Tandem, build workflows, or use the SDKs by synthesizing relevant published docs.","annotations":{"title":"Answer a Tandem how-to question","readOnlyHint":true,"idempotentHint":true,"openWorldHint":true},"inputSchema":{"type":"object","properties":{"task":{"type":"string","description":"The Tandem task or question that needs a docs-grounded answer."},"docs_ref":{"type":"string","description":"Docs channel or immutable ref. Defaults to stable."},"engine_version":{"type":"string","description":"Optional Tandem engine version hint. Prefer stable docs for installed engines."},"audience":{"type":"string","description":"Optional audience hint such as developer, desktop user, or operator."},"limit":{"type":"integer","minimum":1,"maximum":10,"description":"Maximum number of supporting docs recommendations to include."}},"required":["task"]}},{"name":"get_tandem_guide","description":"Return a structured Tandem learning guide for install-engine, python-sdk, typescript-sdk, build-workflows, or headless-deploy.","annotations":{"title":"Get a Tandem guide","readOnlyHint":true,"idempotentHint":true,"openWorldHint":false},"inputSchema":{"type":"object","properties":{"topic":{"type":"string","enum":["install-engine","python-sdk","typescript-sdk","build-workflows","headless-deploy"],"description":"Named Tandem learning guide to return."},"docs_ref":{"type":"string","description":"Docs channel or immutable ref. Defaults to stable."}},"required":["topic"]}},{"name":"warmup_docs_cache","description":"Refresh the docs index and preload the most important Tandem docs pages into cache.","annotations":{"title":"Warm docs cache","idempotentHint":true,"destructiveHint":false,"openWorldHint":true},"inputSchema":{"type":"object","properties":{"force_refresh":{"type":"boolean","description":"Whether to bypass cache and force fresh upstream fetches first."},"docs_ref":{"type":"string","description":"Docs channel or immutable ref. Defaults to stable."}}}},{"name":"get_docs_cache_status","description":"Inspect the current docs cache state for index sources and warmed pages.","annotations":{"title":"Inspect docs cache status","readOnlyHint":true,"idempotentHint":true,"openWorldHint":false},"inputSchema":{"type":"object","properties":{}}},{"name":"refresh_docs_index","description":"Force-refresh docs indexes and report whether data came from the network, cache, or stale fallback.","annotations":{"title":"Refresh docs index","idempotentHint":true,"destructiveHint":false,"openWorldHint":true},"inputSchema":{"type":"object","properties":{"force_refresh":{"type":"boolean","description":"Whether to bypass cache and force a network refresh attempt."},"docs_ref":{"type":"string","description":"Docs channel or immutable ref. Defaults to stable."}}}},{"name":"refresh_doc_page","description":"Force-refresh a docs page and report whether content came from the network, cache, or stale fallback.","annotations":{"title":"Refresh one docs page","idempotentHint":true,"destructiveHint":false,"openWorldHint":true},"inputSchema":{"type":"object","properties":{"path":{"type":"string","description":"Docs path like /start-here/ or /sdk/python/ to refresh."},"docs_ref":{"type":"string","description":"Docs channel or immutable ref. Defaults to stable."},"force_refresh":{"type":"boolean","description":"Whether to bypass cache and force a network refresh attempt."}},"required":["path"]}},{"name":"invalidate_docs_cache","description":"Invalidate docs cache entries for index data, all pages, or a specific page path.","annotations":{"title":"Invalidate docs cache","idempotentHint":true,"destructiveHint":false,"openWorldHint":false},"inputSchema":{"type":"object","properties":{"target":{"type":"string","enum":["all","index","pages","page"],"description":"Which cache area to invalidate."},"path":{"type":"string","description":"Required when target is page; identifies the specific docs path to invalidate."},"docs_ref":{"type":"string","description":"Optional docs ref to scope page/index cache invalidation."}}}},{"name":"compare_docs_index_refresh","description":"Force-refresh the docs indexes and return before/after hashes so content changes can be proven.","annotations":{"title":"Compare docs index refresh","idempotentHint":true,"destructiveHint":false,"openWorldHint":true},"inputSchema":{"type":"object","properties":{"docs_ref":{"type":"string","description":"Docs channel or immutable ref. Defaults to stable."}}}},{"name":"compare_doc_page_refresh","description":"Force-refresh a docs page and return before/after hashes so page content changes can be proven.","annotations":{"title":"Compare page refresh","idempotentHint":true,"destructiveHint":false,"openWorldHint":true},"inputSchema":{"type":"object","properties":{"path":{"type":"string","description":"Docs path like /start-here/ or /sdk/python/ to compare before and after refresh."},"docs_ref":{"type":"string","description":"Docs channel or immutable ref. Defaults to stable."}},"required":["path"]}}]}},"http_status":200,"headers":{"content-type":"application/json"}}},"prompts_list":{"status":"ok","latency_ms":100.51,"details":{"url":"https://tandem.ac/mcp","payload":{"jsonrpc":"2.0","id":3,"result":{"prompts":[{"name":"install_tandem_engine","title":"Install Tandem Engine","description":"Prompt template for teaching an agent how to install Tandem Engine safely from the docs."},{"name":"use_python_sdk","title":"Use the Python SDK","description":"Prompt template for helping an agent learn the Tandem Python SDK and prerequisites."},{"name":"build_workflows","title":"Build Tandem workflows","description":"Prompt template for helping an agent learn workflow building and orchestration patterns in Tandem."}]}},"http_status":200,"headers":{"content-type":"application/json"}}},"prompt_get":{"status":"ok","latency_ms":112.46,"details":{"url":"https://tandem.ac/mcp","payload":{"jsonrpc":"2.0","id":4,"result":{"description":"Guide an agent through installing Tandem Engine using the official Tandem docs and return the most relevant pages first.","messages":[{"role":"user","content":{"type":"text","text":"Guide an agent through installing Tandem Engine using the official Tandem docs and return the most relevant pages first."}}]}},"http_status":200,"headers":{"content-type":"application/json"},"prompt_name":"install_tandem_engine"}},"resources_list":{"status":"ok","latency_ms":107.81,"details":{"url":"https://tandem.ac/mcp","payload":{"jsonrpc":"2.0","id":5,"result":{"resources":[{"uri":"tandem-docs://stable/reference/agent-team-api/","name":"Agent Team Api","title":"Agent Team Api","description":"Agent-team HTTP API.","mimeType":"text/plain","annotations":{"audience":["assistant"],"priority":100}},{"uri":"tandem-docs://stable/reference/agent-team-events/","name":"Agent Team Events","title":"Agent Team Events","description":"Agent-team event stream contract.","mimeType":"text/plain","annotations":{"audience":["assistant"],"priority":100}},{"uri":"tandem-docs://stable/architecture/","name":"Architecture","title":"Architecture","description":"System architecture overview.","mimeType":"text/plain","annotations":{"audience":["assistant"],"priority":100}},{"uri":"tandem-docs://stable/reference/engine-commands/","name":"Engine Commands","title":"Engine Commands","description":"Engine CLI commands.","mimeType":"text/plain","annotations":{"audience":["assistant"],"priority":100}},{"uri":"tandem-docs://stable/engine-testing/","name":"Engine Testing","title":"Engine Testing","description":"Engine testing guidance.","mimeType":"text/plain","annotations":{"audience":["assistant"],"priority":100}},{"uri":"tandem-docs://stable/eval-runner/","name":"Eval Runner","title":"Eval Runner","description":"Eval Runner CLI reference for AI quality datasets and regression checks.","mimeType":"text/plain","annotations":{"audience":["assistant"],"priority":100}},{"uri":"tandem-docs://stable/how-tandem-works/","name":"How Tandem Works","title":"How Tandem Works","description":"Canonical runtime reference for sessions, runs, context, memory, and channels.","mimeType":"text/plain","annotations":{"audience":["assistant"],"priority":100}},{"uri":"tandem-docs://stable/protocol-matrix/","name":"Protocol Matrix","title":"Protocol Matrix","description":"Protocol and compatibility matrix.","mimeType":"text/plain","annotations":{"audience":["assistant"],"priority":100}},{"uri":"tandem-docs://stable/reference/spawn-policy/","name":"Spawn Policy","title":"Spawn Policy","description":"Spawn policy and safety rules.","mimeType":"text/plain","annotations":{"audience":["assistant"],"priority":100}},{"uri":"tandem-docs://stable/reference/tools/","name":"Tools","title":"Tools","description":"Tool API reference.","mimeType":"text/plain","annotations":{"audience":["assistant"],"priority":100}},{"uri":"tandem-docs://stable/reference/tui-commands/","name":"Tui Commands","title":"Tui Commands","description":"TUI commands.","mimeType":"text/plain","annotations":{"audience":["assistant"],"priority":100}},{"uri":"tandem-docs://stable/agent-teams/","name":"Agent Teams","title":"Agent Teams","description":"Agent team architecture and behavior.","mimeType":"text/plain","annotations":{"audience":["assistant"],"priority":100}},{"uri":"tandem-docs://stable/agents-and-sessions/","name":"Agents And Sessions","title":"Agents And Sessions","description":"Sessions, context, and execution model.","mimeType":"text/plain","annotations":{"audience":["assistant"],"priority":100}},{"uri":"tandem-docs://stable/channel-integrations/","name":"Channel Integrations","title":"Channel Integrations","description":"Slack, Discord, Telegram, and related integrations.","mimeType":"text/plain","annotations":{"audience":["assistant"],"priority":100}},{"uri":"tandem-docs://stable/configuration/","name":"Configuration","title":"Configuration","description":"Providers, keys, and system instructions.","mimeType":"text/plain","annotations":{"audience":["assistant"],"priority":100}},{"uri":"tandem-docs://stable/control-panel/","name":"Control Panel","title":"Control Panel","description":"Browser control panel and scaffolded app guidance.","mimeType":"text/plain","annotations":{"audience":["assistant"],"priority":100}},{"uri":"tandem-docs://stable/desktop/first-10-minutes/","name":"First 10 Minutes","title":"First 10 Minutes","description":"First 10 minutes with Tandem Desktop.","mimeType":"text/plain","annotations":{"audience":["assistant"],"priority":100}},{"uri":"tandem-docs://stable/desktop/headless-deployment/","name":"Headless Deployment","title":"Headless Deployment","description":"Headless deployment from desktop workflows.","mimeType":"text/plain","annotations":{"audience":["assistant"],"priority":100}},{"uri":"tandem-docs://stable/headless-service/","name":"Headless Service","title":"Headless Service","description":"Headless engine service mode.","mimeType":"text/plain","annotations":{"audience":["assistant"],"priority":100}},{"uri":"tandem-docs://stable/desktop/learn-walkthroughs/","name":"Learn Walkthroughs","title":"Learn Walkthroughs","description":"Interactive Learn walkthroughs.","mimeType":"text/plain","annotations":{"audience":["assistant"],"priority":100}},{"uri":"tandem-docs://stable/desktop/overview/","name":"Overview","title":"Overview","description":"Desktop overview.","mimeType":"text/plain","annotations":{"audience":["assistant"],"priority":100}},{"uri":"tandem-docs://stable/desktop/settings-and-safety/","name":"Settings And Safety","title":"Settings And Safety","description":"Settings and safety.","mimeType":"text/plain","annotations":{"audience":["assistant"],"priority":100}},{"uri":"tandem-docs://stable/desktop/troubleshooting/","name":"Troubleshooting","title":"Troubleshooting","description":"Desktop troubleshooting.","mimeType":"text/plain","annotations":{"audience":["assistant"],"priority":100}},{"uri":"tandem-docs://stable/tui-guide/","name":"Tui Guide","title":"Tui Guide","description":"Terminal UI guide.","mimeType":"text/plain","annotations":{"audience":["assistant"],"priority":100}},{"uri":"tandem-docs://stable/desktop/workflows/","name":"Workflows","title":"Workflows","description":"Desktop workflows.","mimeType":"text/plain","annotations":{"audience":["assistant"],"priority":100}},{"uri":"tandem-docs://stable/incident-monitor/agent-runtime-guide/","name":"Agent Runtime Guide","title":"Agent Runtime Guide","description":"Safe Incident Monitor operating sequence for MCP-connected agents, SDK clients, and HTTP callers.","mimeType":"text/plain","annotations":{"audience":["assistant"],"priority":100}},{"uri":"tandem-docs://stable/agent-workflow-mission-quickstart/","name":"Agent Workflow Mission Quickstart","title":"Agent Workflow Mission Quickstart","description":"Short checklist for agents creating, running, and maintaining Tandem workflows or missions.","mimeType":"text/plain","annotations":{"audience":["assistant"],"priority":100}},{"uri":"tandem-docs://stable/automation-examples-for-teams/","name":"Automation Examples For Teams","title":"Automation Examples For Teams","description":"End-to-end workflow examples, including the Linear repair-loop guard template for ACA-triggering issue webhooks.","mimeType":"text/plain","annotations":{"audience":["assistant"],"priority":100}},{"uri":"tandem-docs://stable/automation-v2-webhooks/","name":"Automation V2 Webhooks","title":"Automation V2 Webhooks","description":"Direct webhook trigger setup for Automation V2, including Notion verification tokens and Linear issue webhook setup.","mimeType":"text/plain","annotations":{"audience":["assistant"],"priority":100}},{"uri":"tandem-docs://stable/autonomous-coding-agents-github-projects/","name":"Autonomous Coding Agents Github Projects","title":"Autonomous Coding Agents Github Projects","description":"GitHub Projects coding-agent workflows.","mimeType":"text/plain","annotations":{"audience":["assistant"],"priority":100}},{"uri":"tandem-docs://stable/browser-setup-and-testing/","name":"Browser Setup And Testing","title":"Browser Setup And Testing","description":"Browser setup, install, and validation.","mimeType":"text/plain","annotations":{"audience":["assistant"],"priority":100}},{"uri":"tandem-docs://stable/choosing-providers-and-models-for-agents/","name":"Choosing Providers And Models For Agents","title":"Choosing Providers And Models For Agents","description":"How agents should choose providers, defaults, and per-stage model overrides.","mimeType":"text/plain","annotations":{"audience":["assistant"],"priority":100}},{"uri":"tandem-docs://stable/creating-and-running-workflows-and-missions/","name":"Creating And Running Workflows And Missions","title":"Creating And Running Workflows And Missions","description":"Which Tandem path to use and how to create, apply, schedule, and run it.","mimeType":"text/plain","annotations":{"audience":["assistant"],"priority":100}},{"uri":"tandem-docs://stable/incident-monitor/destination-router/","name":"Destination Router","title":"Destination Router","description":"Destination router model for GitHub, Linear, webhooks, telemetry, MCP tools, and memory.","mimeType":"text/plain","annotations":{"audience":["assistant"],"priority":100}},{"uri":"tandem-docs://stable/incident-monitor/destinations/","name":"Destinations","title":"Destinations","description":"Destination adapter coverage and readiness requirements for governed Incident Monitor publishing.","mimeType":"text/plain","annotations":{"audience":["assistant"],"priority":100}},{"uri":"tandem-docs://stable/engine-authentication-for-agents/","name":"Engine Authentication For Agents","title":"Engine Authentication For Agents","description":"How to obtain an engine token and authenticate SDK or HTTP calls.","mimeType":"text/plain","annotations":{"audience":["assistant"],"priority":100}},{"uri":"tandem-docs://stable/enterprise-client-onboarding-runbook/","name":"Enterprise Client Onboarding Runbook","title":"Enterprise Client Onboarding Runbook","description":"Agent-facing onboarding order for client pilots, go-live smoke tests, and enterprise hardening.","mimeType":"text/plain","annotations":{"audience":["assistant"],"priority":100}},{"uri":"tandem-docs://stable/enterprise-data-governance/","name":"Enterprise Data Governance","title":"Enterprise Data Governance","description":"Agent-facing enterprise setup guide for tenant-scoped memory, governed MCP setup, source bindings, connector credentials, and quarantine review.","mimeType":"text/plain","annotations":{"audience":["assistant"],"priority":100}},{"uri":"tandem-docs://stable/incident-monitor/external-sources/","name":"External Sources","title":"External Sources","description":"External source identity, monitored source bindings, and destination routing context.","mimeType":"text/plain","annotations":{"audience":["assistant"],"priority":100}},{"uri":"tandem-docs://stable/reference/incident-monitor/","name":"Incident Monitor","title":"Incident Monitor","description":"Incident Monitor API and behavior reference for governed failure intake, drafts, approvals, routing, receipts, and destination publishes.","mimeType":"text/plain","annotations":{"audience":["assistant"],"priority":100}},{"uri":"tandem-docs://stable/incident-monitor-external-log-intake/","name":"Incident Monitor External Log Intake","title":"Incident Monitor External Log Intake","description":"Configure external project log intake, scoped report keys, reset/replay debug actions, and monitored project setup.","mimeType":"text/plain","annotations":{"audience":["assistant"],"priority":100}},{"uri":"tandem-docs://stable/long-running-multi-workflow-goals/","name":"Long Running Multi Workflow Goals","title":"Long Running Multi Workflow Goals","description":"Author, publish, operate, replay, and recover version-pinned goals spanning multiple Automation V2 workflow runs.","mimeType":"text/plain","annotations":{"audience":["assistant"],"priority":100}},{"uri":"tandem-docs://stable/mcp-automated-agents/","name":"Mcp Automated Agents","title":"Mcp Automated Agents","description":"Automated agent workflows and MCP patterns.","mimeType":"text/plain","annotations":{"audience":["assistant"],"priority":100}},{"uri":"tandem-docs://stable/incident-monitor/overview/","name":"Overview","title":"Overview","description":"Incident Monitor overview for governed intake, triage, routing, evidence, destination readiness, and receipts.","mimeType":"text/plain","annotations":{"audience":["assistant"],"priority":100}},{"uri":"tandem-docs://stable/incident-monitor/production-governance/","name":"Production Governance","title":"Production Governance","description":"Production governance guidance for deployment cards, posture checks, assessment reports, protected evidence, and receipts.","mimeType":"text/plain","annotations":{"audience":["assistant"],"priority":100}},{"uri":"tandem-docs://stable/prompting-workflows-and-missions/","name":"Prompting Workflows And Missions","title":"Prompting Workflows And Missions","description":"How to prompt Tandem workflows, missions, and staged recurring operations.","mimeType":"text/plain","annotations":{"audience":["assistant"],"priority":100}},{"uri":"tandem-docs://stable/sdk/python/","name":"Python","title":"Python","description":"Python SDK.","mimeType":"text/plain","annotations":{"audience":["assistant"],"priority":100}},{"uri":"tandem-docs://stable/sdk/scheduling-automations/","name":"Scheduling Automations","title":"Scheduling Automations","description":"SDK automation scheduling.","mimeType":"text/plain","annotations":{"audience":["assistant"],"priority":100}},{"uri":"tandem-docs://stable/sdk/","name":"Sdk","title":"Sdk","description":"SDK landing page.","mimeType":"text/plain","annotations":{"audience":["assistant"],"priority":100}},{"uri":"tandem-docs://stable/incident-monitor/security-posture/","name":"Security Posture","title":"Security Posture","description":"Read-only authority inventory, posture assessment, scenario packs, and remediation routing.","mimeType":"text/plain","annotations":{"audience":["assistant"],"priority":100}}]}},"http_status":200,"headers":{"content-type":"application/json"}}},"resource_read":{"status":"ok","latency_ms":280.68,"details":{"url":"https://tandem.ac/mcp","payload":{"jsonrpc":"2.0","id":6,"result":{"contents":[{"uri":"tandem-docs://stable/reference/agent-team-api/","mimeType":"text/plain","text":"Agent Team API Endpoints Section titled “Endpoints” GET /agent-team/templates Section titled “GET /agent-team/templates” Returns loaded agent templates. GET /agent-team/instances Section titled “GET /agent-team/instances” Query params: missionID (optional) parentInstanceID (optional) status (optional: queued|running|completed|failed|cancelled ) GET /agent-team/missions Section titled “GET /agent-team/missions” Returns mission-level rollups across instances: instanceCount runningCount completedCount failedCount cancelledCount queuedCount tokenUsedTotal toolCallsUsedTotal stepsUsedTotal costUsedUsdTotal GET /agent-team/approvals Section titled “GET /agent-team/approvals” Returns: spawnApprovals : queued spawn approvals (request-only edges / approval-required paths) toolApprovals : pending permission requests scoped to agent-team sessions POST /agent-team/spawn Section titled “POST /agent-team/spawn” Request body: { \"missionID\" : \" m1 \" , \"parentInstanceID\" : \" ins_parent \" , \"templateID\" : \" worker-default \" , \"role\" : \" worker \" , \"source\" : \" ui_action \" , \"justification\" : \" Implement focused task \" , \"budget_override\" : { \"max_tokens\" : 8000 , \"max_steps\" : 4 , \"max_tool_calls\" : 10 , \"max_duration_ms\" : 240000 , \"max_cost_usd\" : 1.25 } } Success response: { \"ok\" : true , \"missionID\" : \" m1 \" , \"instanceID\" : \" ins_... \" , \"sessionID\" : \" ses_... \" , \"runID\" : null , \"status\" : \" running \" , \"skillHash\" : \" sha256:... \" } Error response: { \"ok\" : false , \"code\" : \" spawn_policy_missing \" , \"error\" : \" spawn policy file missing \" , \"requiresUserApproval\" : false } If policy requires user approval, response shape is still 200 with: { \"ok\" : false , \"code\" : \" spawn_requires_approval \" , \"requiresUserApproval\" : true } Tool-driven spawn ( spawn_agent ) Section titled “Tool-driven spawn (spawn_agent)” spawn_agent uses the same server-side policy/runtime gate as POST /agent-team/spawn . Invoke it through a session prompt: /tool spawn_agent {\"missionID\":\"m1\",\"role\":\"worker\",\"templateID\":\"worker-default\",\"source\":\"tool_call\",\"justification\":\"parallelize implementation\"} Tool response metadata shape: { \"ok\" : true , \"missionID\" : \" m1 \" , \"instanceID\" : \" ins_... \" , \"sessionID\" : \" ses_... \" , \"runID\" : null , \"status\" : \" running \" , \"skillHash\" : \" sha256:... \" } POST /agent-team/instance/{id}/cancel Section titled “POST /agent-team/instance/{id}/cancel” Request body: { \"reason\" : \" manual stop \" } POST /agent-team/approvals/spawn/{id}/approve Section titled “POST /agent-team/approvals/spawn/{id}/approve” Request body: { \"reason\" : \" approved from command center \" } Response: { \"ok\" : true , \"approvalID\" : \" appr_... \" , \"decision\" : \" approved \" , \"instanceID\" : \" ins_... \" , \"missionID\" : \" m1 \" , \"status\" : \" running \" } POST /agent-team/approvals/spawn/{id}/deny Section titled “POST /agent-team/approvals/spawn/{id}/deny” Request body: { \"reason\" : \" not aligned with mission scope \" } Response: { \"ok\" : true , \"approvalID\" : \" appr_... \" , \"decision\" : \" denied \" , \"reason\" : \" not aligned with mission scope \" } Response: { \"ok\" : true , \"instanceID\" : \" ins_... \" , \"sessionID\" : \" ses_... \" , \"status\" : \" cancelled \" } POST /agent-team/mission/{id}/cancel Section titled “POST /agent-team/mission/{id}/cancel” Request body: { \"reason\" : \" stop all mission agents \" } Response: { \"ok\" : true , \"missionID\" : \" m1 \" , \"cancelledInstances\" : 3 } POST /mission/{id}/event (orchestrator bridge fields) Section titled “POST /mission/{id}/event (orchestrator bridge fields)” When mission runtime bridge is active, mission event responses include additive fields: orchestratorSpawns : spawn results triggered by mission_started orchestratorCancellations : cancellation summary triggered by mission_canceled Edit page Previous Spawn Policy Reference Next Agent Team Events"}]}},"http_status":200,"headers":{"content-type":"application/json"},"resource_uri":"tandem-docs://stable/reference/agent-team-api/"}},"probe_noise_resilience":{"status":"ok","latency_ms":373.02,"details":{"url":"https://tandem.ac/robots.txt","http_status":200,"headers":{"content-type":"text/plain; charset=utf-8"}}},"determinism_probe":{"status":"ok","latency_ms":102.0,"details":{"attempts":2,"successful":2,"matches":2,"stable_ratio":1.0,"baseline_signature":"73dd9c8626a0051e0ab5c91ee42ba2a2c2e8668b24da92fb9f76ed0744013bb3","errors":[]}},"session_resume_probe":{"status":"warning","latency_ms":null,"details":{"reason":"no_session_id","transport":"streamable-http","resume_expected":true,"protocol_version":"2025-06-18"}},"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":101.8,"details":{"transport":"streamable-http","session_id_present":false,"protocol_header_present":false,"last_event_id_visible":false,"requested_protocol_version":"2025-06-18","bad_protocol_status_code":200,"bad_protocol_payload":{"jsonrpc":"2.0","id":410,"result":{"tools":[{"name":"search_docs","description":"Search the published Tandem docs index for relevant pages.","annotations":{"title":"Search Tandem docs","readOnlyHint":true,"idempotentHint":true,"openWorldHint":true},"inputSchema":{"type":"object","properties":{"query":{"type":"string","description":"The Tandem question, task, or keyword query to search for."},"docs_ref":{"type":"string","description":"Docs channel or immutable ref. Defaults to stable. Use next, refs/<sha>, or releases/<version> only when explicitly needed."},"engine_version":{"type":"string","description":"Optional Tandem engine version hint. If supplied without docs_ref, the MCP still defaults to stable unless a matching versioned docs ref is configured."},"limit":{"type":"integer","minimum":1,"maximum":20,"description":"Maximum number of matching docs pages to return."},"audience":{"type":"string","description":"Optional audience filter such as developer, desktop user, or operator."}},"required":["query"]}},{"name":"get_doc","description":"Fetch and normalize a published Tandem docs page by path or URL.","annotations":{"title":"Fetch a docs page","readOnlyHint":true,"idempotentHint":true,"openWorldHint":true},"inputSchema":{"type":"object","properties":{"path":{"type":"string","description":"Docs path like /sdk/python/ or a full Tandem docs URL."},"docs_ref":{"type":"string","description":"Docs channel or immutable ref. Defaults to stable."},"engine_version":{"type":"string","description":"Optional Tandem engine version hint for compatibility checks."}},"required":["path"]}},{"name":"get_start_path","description":"Recommend the best Tandem docs starting path for a desktop user, server admin, or developer.","annotations":{"title":"Get a starting docs path","readOnlyHint":true,"idempotentHint":true,"openWorldHint":false},"inputSchema":{"type":"object","properties":{"role":{"type":"string","enum":["desktop","server_admin","developer"],"description":"The user role to optimize the docs starting point for."},"docs_ref":{"type":"string","description":"Docs channel or immutable ref. Defaults to stable."}},"required":["role"]}},{"name":"recommend_next_docs","description":"Recommend the next Tandem docs to read after a current page, optionally biased toward a goal.","annotations":{"title":"Recommend next docs","readOnlyHint":true,"idempotentHint":true,"openWorldHint":true},"inputSchema":{"type":"object","properties":{"current_path":{"type":"string","description":"Current Tandem docs path the user has already read."},"docs_ref":{"type":"string","description":"Docs channel or immutable ref. Defaults to stable."},"goal":{"type":"string","description":"Optional goal such as install Tandem, use the Python SDK, or build workflows."},"limit":{"type":"integer","minimum":1,"maximum":10,"description":"Maximum number of next-doc recommendations to return."}},"required":["current_path"]}},{"name":"answer_how_to","description":"Answer how to install or use Tandem, build workflows, or use the SDKs by synthesizing relevant published docs.","annotations":{"title":"Answer a Tandem how-to question","readOnlyHint":true,"idempotentHint":true,"openWorldHint":true},"inputSchema":{"type":"object","properties":{"task":{"type":"string","description":"The Tandem task or question that needs a docs-grounded answer."},"docs_ref":{"type":"string","description":"Docs channel or immutable ref. Defaults to stable."},"engine_version":{"type":"string","description":"Optional Tandem engine version hint. Prefer stable docs for installed engines."},"audience":{"type":"string","description":"Optional audience hint such as developer, desktop user, or operator."},"limit":{"type":"integer","minimum":1,"maximum":10,"description":"Maximum number of supporting docs recommendations to include."}},"required":["task"]}},{"name":"get_tandem_guide","description":"Return a structured Tandem learning guide for install-engine, python-sdk, typescript-sdk, build-workflows, or headless-deploy.","annotations":{"title":"Get a Tandem guide","readOnlyHint":true,"idempotentHint":true,"openWorldHint":false},"inputSchema":{"type":"object","properties":{"topic":{"type":"string","enum":["install-engine","python-sdk","typescript-sdk","build-workflows","headless-deploy"],"description":"Named Tandem learning guide to return."},"docs_ref":{"type":"string","description":"Docs channel or immutable ref. Defaults to stable."}},"required":["topic"]}},{"name":"warmup_docs_cache","description":"Refresh the docs index and preload the most important Tandem docs pages into cache.","annotations":{"title":"Warm docs cache","idempotentHint":true,"destructiveHint":false,"openWorldHint":true},"inputSchema":{"type":"object","properties":{"force_refresh":{"type":"boolean","description":"Whether to bypass cache and force fresh upstream fetches first."},"docs_ref":{"type":"string","description":"Docs channel or immutable ref. Defaults to stable."}}}},{"name":"get_docs_cache_status","description":"Inspect the current docs cache state for index sources and warmed pages.","annotations":{"title":"Inspect docs cache status","readOnlyHint":true,"idempotentHint":true,"openWorldHint":false},"inputSchema":{"type":"object","properties":{}}},{"name":"refresh_docs_index","description":"Force-refresh docs indexes and report whether data came from the network, cache, or stale fallback.","annotations":{"title":"Refresh docs index","idempotentHint":true,"destructiveHint":false,"openWorldHint":true},"inputSchema":{"type":"object","properties":{"force_refresh":{"type":"boolean","description":"Whether to bypass cache and force a network refresh attempt."},"docs_ref":{"type":"string","description":"Docs channel or immutable ref. Defaults to stable."}}}},{"name":"refresh_doc_page","description":"Force-refresh a docs page and report whether content came from the network, cache, or stale fallback.","annotations":{"title":"Refresh one docs page","idempotentHint":true,"destructiveHint":false,"openWorldHint":true},"inputSchema":{"type":"object","properties":{"path":{"type":"string","description":"Docs path like /start-here/ or /sdk/python/ to refresh."},"docs_ref":{"type":"string","description":"Docs channel or immutable ref. Defaults to stable."},"force_refresh":{"type":"boolean","description":"Whether to bypass cache and force a network refresh attempt."}},"required":["path"]}},{"name":"invalidate_docs_cache","description":"Invalidate docs cache entries for index data, all pages, or a specific page path.","annotations":{"title":"Invalidate docs cache","idempotentHint":true,"destructiveHint":false,"openWorldHint":false},"inputSchema":{"type":"object","properties":{"target":{"type":"string","enum":["all","index","pages","page"],"description":"Which cache area to invalidate."},"path":{"type":"string","description":"Required when target is page; identifies the specific docs path to invalidate."},"docs_ref":{"type":"string","description":"Optional docs ref to scope page/index cache invalidation."}}}},{"name":"compare_docs_index_refresh","description":"Force-refresh the docs indexes and return before/after hashes so content changes can be proven.","annotations":{"title":"Compare docs index refresh","idempotentHint":true,"destructiveHint":false,"openWorldHint":true},"inputSchema":{"type":"object","properties":{"docs_ref":{"type":"string","description":"Docs channel or immutable ref. Defaults to stable."}}}},{"name":"compare_doc_page_refresh","description":"Force-refresh a docs page and return before/after hashes so page content changes can be proven.","annotations":{"title":"Compare page refresh","idempotentHint":true,"destructiveHint":false,"openWorldHint":true},"inputSchema":{"type":"object","properties":{"path":{"type":"string","description":"Docs path like /start-here/ or /sdk/python/ to compare before and after refresh."},"docs_ref":{"type":"string","description":"Docs channel or immutable ref. Defaults to stable."}},"required":["path"]}}]}},"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":104.48,"details":{"completions":{"advertised":false,"sample_target":{"type":"resource","uri":"tandem-docs://stable/reference/agent-team-api/"},"live_probe":"not_executed"},"pagination":{"supported":false,"next_cursor_methods":[],"metadata_signal":false},"tasks":{"advertised":false,"probe_status":"missing","http_status":404},"initialize_capability_keys":["prompts","resources","tools"]}},"advanced_capabilities_probe":{"status":"warning","latency_ms":null,"details":{"capabilities":{"prompts":true,"resources":true,"completions":false,"roots":false,"sampling":false,"elicitation":false,"structured_outputs":false,"resource_links":true},"enabled_count":3,"enabled":["prompts","resource_links","resources"],"initialize_capability_keys":["prompts","resources","tools"]}},"tool_snapshot_probe":{"status":"missing","latency_ms":null,"details":{"reason":"no_historical_snapshot","current_tool_count":13}},"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":true}},"action_safety_probe":{"status":"error","latency_ms":null,"details":{"summary":{"tool_count":13,"high_risk_tools":1,"destructive_tools":0,"exec_tools":1,"egress_tools":1,"secret_tools":0,"bulk_access_tools":3,"risk_distribution":{"low":7,"medium":5,"high":1,"critical":0},"capability_distribution":{"read":8,"exec":1,"admin":4,"export":3,"network":2,"filesystem":6,"other":2}},"auth_present":false,"safeguard_count":0,"confirmation_signals":[]}},"official_registry_probe":{"status":"ok","latency_ms":null,"details":{"registry_source":"official_registry","registry_identifier":"ac.tandem/docs-mcp","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":2}},"connector_publishability_probe":{"status":"warning","latency_ms":null,"details":{"transport":"streamable-http","tool_count":13,"high_risk_tools":1,"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://tandem.ac/.well-known/mcp/server-card.json","error":"Client error '404 Not Found' for url 'https://tandem.ac/.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://tandem.ac/.well-known/oauth-protected-resource","error":"Client error '404 Not Found' for url 'https://tandem.ac/.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-06-18","bad_protocol_status_code":200,"bad_protocol_payload":{"jsonrpc":"2.0","id":410,"result":{"tools":[{"name":"search_docs","description":"Search the published Tandem docs index for relevant pages.","annotations":{"title":"Search Tandem docs","readOnlyHint":true,"idempotentHint":true,"openWorldHint":true},"inputSchema":{"type":"object","properties":{"query":{"type":"string","description":"The Tandem question, task, or keyword query to search for."},"docs_ref":{"type":"string","description":"Docs channel or immutable ref. Defaults to stable. Use next, refs/<sha>, or releases/<version> only when explicitly needed."},"engine_version":{"type":"string","description":"Optional Tandem engine version hint. If supplied without docs_ref, the MCP still defaults to stable unless a matching versioned docs ref is configured."},"limit":{"type":"integer","minimum":1,"maximum":20,"description":"Maximum number of matching docs pages to return."},"audience":{"type":"string","description":"Optional audience filter such as developer, desktop user, or operator."}},"required":["query"]}},{"name":"get_doc","description":"Fetch and normalize a published Tandem docs page by path or URL.","annotations":{"title":"Fetch a docs page","readOnlyHint":true,"idempotentHint":true,"openWorldHint":true},"inputSchema":{"type":"object","properties":{"path":{"type":"string","description":"Docs path like /sdk/python/ or a full Tandem docs URL."},"docs_ref":{"type":"string","description":"Docs channel or immutable ref. Defaults to stable."},"engine_version":{"type":"string","description":"Optional Tandem engine version hint for compatibility checks."}},"required":["path"]}},{"name":"get_start_path","description":"Recommend the best Tandem docs starting path for a desktop user, server admin, or developer.","annotations":{"title":"Get a starting docs path","readOnlyHint":true,"idempotentHint":true,"openWorldHint":false},"inputSchema":{"type":"object","properties":{"role":{"type":"string","enum":["desktop","server_admin","developer"],"description":"The user role to optimize the docs starting point for."},"docs_ref":{"type":"string","description":"Docs channel or immutable ref. Defaults to stable."}},"required":["role"]}},{"name":"recommend_next_docs","description":"Recommend the next Tandem docs to read after a current page, optionally biased toward a goal.","annotations":{"title":"Recommend next docs","readOnlyHint":true,"idempotentHint":true,"openWorldHint":true},"inputSchema":{"type":"object","properties":{"current_path":{"type":"string","description":"Current Tandem docs path the user has already read."},"docs_ref":{"type":"string","description":"Docs channel or immutable ref. Defaults to stable."},"goal":{"type":"string","description":"Optional goal such as install Tandem, use the Python SDK, or build workflows."},"limit":{"type":"integer","minimum":1,"maximum":10,"description":"Maximum number of next-doc recommendations to return."}},"required":["current_path"]}},{"name":"answer_how_to","description":"Answer how to install or use Tandem, build workflows, or use the SDKs by synthesizing relevant published docs.","annotations":{"title":"Answer a Tandem how-to question","readOnlyHint":true,"idempotentHint":true,"openWorldHint":true},"inputSchema":{"type":"object","properties":{"task":{"type":"string","description":"The Tandem task or question that needs a docs-grounded answer."},"docs_ref":{"type":"string","description":"Docs channel or immutable ref. Defaults to stable."},"engine_version":{"type":"string","description":"Optional Tandem engine version hint. Prefer stable docs for installed engines."},"audience":{"type":"string","description":"Optional audience hint such as developer, desktop user, or operator."},"limit":{"type":"integer","minimum":1,"maximum":10,"description":"Maximum number of supporting docs recommendations to include."}},"required":["task"]}},{"name":"get_tandem_guide","description":"Return a structured Tandem learning guide for install-engine, python-sdk, typescript-sdk, build-workflows, or headless-deploy.","annotations":{"title":"Get a Tandem guide","readOnlyHint":true,"idempotentHint":true,"openWorldHint":false},"inputSchema":{"type":"object","properties":{"topic":{"type":"string","enum":["install-engine","python-sdk","typescript-sdk","build-workflows","headless-deploy"],"description":"Named Tandem learning guide to return."},"docs_ref":{"type":"string","description":"Docs channel or immutable ref. Defaults to stable."}},"required":["topic"]}},{"name":"warmup_docs_cache","description":"Refresh the docs index and preload the most important Tandem docs pages into cache.","annotations":{"title":"Warm docs cache","idempotentHint":true,"destructiveHint":false,"openWorldHint":true},"inputSchema":{"type":"object","properties":{"force_refresh":{"type":"boolean","description":"Whether to bypass cache and force fresh upstream fetches first."},"docs_ref":{"type":"string","description":"Docs channel or immutable ref. Defaults to stable."}}}},{"name":"get_docs_cache_status","description":"Inspect the current docs cache state for index sources and warmed pages.","annotations":{"title":"Inspect docs cache status","readOnlyHint":true,"idempotentHint":true,"openWorldHint":false},"inputSchema":{"type":"object","properties":{}}},{"name":"refresh_docs_index","description":"Force-refresh docs indexes and report whether data came from the network, cache, or stale fallback.","annotations":{"title":"Refresh docs index","idempotentHint":true,"destructiveHint":false,"openWorldHint":true},"inputSchema":{"type":"object","properties":{"force_refresh":{"type":"boolean","description":"Whether to bypass cache and force a network refresh attempt."},"docs_ref":{"type":"string","description":"Docs channel or immutable ref. Defaults to stable."}}}},{"name":"refresh_doc_page","description":"Force-refresh a docs page and report whether content came from the network, cache, or stale fallback.","annotations":{"title":"Refresh one docs page","idempotentHint":true,"destructiveHint":false,"openWorldHint":true},"inputSchema":{"type":"object","properties":{"path":{"type":"string","description":"Docs path like /start-here/ or /sdk/python/ to refresh."},"docs_ref":{"type":"string","description":"Docs channel or immutable ref. Defaults to stable."},"force_refresh":{"type":"boolean","description":"Whether to bypass cache and force a network refresh attempt."}},"required":["path"]}},{"name":"invalidate_docs_cache","description":"Invalidate docs cache entries for index data, all pages, or a specific page path.","annotations":{"title":"Invalidate docs cache","idempotentHint":true,"destructiveHint":false,"openWorldHint":false},"inputSchema":{"type":"object","properties":{"target":{"type":"string","enum":["all","index","pages","page"],"description":"Which cache area to invalidate."},"path":{"type":"string","description":"Required when target is page; identifies the specific docs path to invalidate."},"docs_ref":{"type":"string","description":"Optional docs ref to scope page/index cache invalidation."}}}},{"name":"compare_docs_index_refresh","description":"Force-refresh the docs indexes and return before/after hashes so content changes can be proven.","annotations":{"title":"Compare docs index refresh","idempotentHint":true,"destructiveHint":false,"openWorldHint":true},"inputSchema":{"type":"object","properties":{"docs_ref":{"type":"string","description":"Docs channel or immutable ref. Defaults to stable."}}}},{"name":"compare_doc_page_refresh","description":"Force-refresh a docs page and return before/after hashes so page content changes can be proven.","annotations":{"title":"Compare page refresh","idempotentHint":true,"destructiveHint":false,"openWorldHint":true},"inputSchema":{"type":"object","properties":{"path":{"type":"string","description":"Docs path like /start-here/ or /sdk/python/ to compare before and after refresh."},"docs_ref":{"type":"string","description":"Docs channel or immutable ref. Defaults to stable."}},"required":["path"]}}]}},"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":2808.29,"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","cloud"],"score_trend":[70.41],"remediation_count":16,"high_risk_tool_count":1,"destructive_tool_count":0,"exec_tool_count":1},"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":13,"high_risk_tools":1,"destructive_tools":0,"exec_tools":1,"egress_tools":1,"secret_tools":0,"bulk_access_tools":3,"risk_distribution":{"low":7,"medium":5,"high":1,"critical":0},"capability_distribution":{"read":8,"exec":1,"admin":4,"export":3,"network":2,"filesystem":6,"other":2}},"tool_security_inventory":[{"name":"search_docs","description":"Search the published Tandem docs index for relevant pages.","capabilities":["read","exec","admin","export"],"risk_flags":["command_execution","bulk_data_access","freeform_input_surface"],"risk_level":"high","has_safeguards":false,"capability_taxonomy":["read","exec","admin","export","search","web"]},{"name":"get_doc","description":"Fetch and normalize a published Tandem docs page by path or URL.","capabilities":["read","network","filesystem"],"risk_flags":["freeform_input_surface"],"risk_level":"medium","has_safeguards":false,"capability_taxonomy":["read","network","filesystem","web"]},{"name":"get_start_path","description":"Recommend the best Tandem docs starting path for a desktop user, server admin, or developer.","capabilities":["read","filesystem","admin"],"risk_flags":[],"risk_level":"medium","has_safeguards":false,"capability_taxonomy":["read","filesystem","admin","development"]},{"name":"recommend_next_docs","description":"Recommend the next Tandem docs to read after a current page, optionally biased toward a goal.","capabilities":["read","filesystem","admin","export"],"risk_flags":["bulk_data_access","freeform_input_surface"],"risk_level":"medium","has_safeguards":false,"capability_taxonomy":["read","filesystem","admin","export","web"]},{"name":"answer_how_to","description":"Answer how to install or use Tandem, build workflows, or use the SDKs by synthesizing relevant published docs.","capabilities":["admin","export"],"risk_flags":["bulk_data_access"],"risk_level":"medium","has_safeguards":false,"capability_taxonomy":["admin","export","development","automation"]},{"name":"get_tandem_guide","description":"Return a structured Tandem learning guide for install-engine, python-sdk, typescript-sdk, build-workflows, or headless-deploy.","capabilities":["read"],"risk_flags":[],"risk_level":"low","has_safeguards":false,"capability_taxonomy":["read","development","cloud","automation"]},{"name":"warmup_docs_cache","description":"Refresh the docs index and preload the most important Tandem docs pages into cache.","capabilities":["read"],"risk_flags":[],"risk_level":"low","has_safeguards":false,"capability_taxonomy":["read","search","web"]},{"name":"get_docs_cache_status","description":"Inspect the current docs cache state for index sources and warmed pages.","capabilities":["read"],"risk_flags":[],"risk_level":"low","has_safeguards":false,"capability_taxonomy":["read","search","web"]},{"name":"refresh_docs_index","description":"Force-refresh docs indexes and report whether data came from the network, cache, or stale fallback.","capabilities":["other"],"risk_flags":[],"risk_level":"low","has_safeguards":false,"capability_taxonomy":["other","search"]},{"name":"refresh_doc_page","description":"Force-refresh a docs page and report whether content came from the network, cache, or stale fallback.","capabilities":["filesystem"],"risk_flags":["freeform_input_surface"],"risk_level":"low","has_safeguards":false,"capability_taxonomy":["filesystem","web"]},{"name":"invalidate_docs_cache","description":"Invalidate docs cache entries for index data, all pages, or a specific page path.","capabilities":["read","network","filesystem"],"risk_flags":["arbitrary_network_egress","freeform_input_surface"],"risk_level":"medium","has_safeguards":false,"capability_taxonomy":["read","network","filesystem","development","search","web"]},{"name":"compare_docs_index_refresh","description":"Force-refresh the docs indexes and return before/after hashes so content changes can be proven.","capabilities":["other"],"risk_flags":[],"risk_level":"low","has_safeguards":false,"capability_taxonomy":["other","search"]},{"name":"compare_doc_page_refresh","description":"Force-refresh a docs page and return before/after hashes so page content changes can be proven.","capabilities":["filesystem"],"risk_flags":["freeform_input_surface"],"risk_level":"low","has_safeguards":false,"capability_taxonomy":["filesystem","web"]}],"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":{"type":"resource","uri":"tandem-docs://stable/reference/agent-team-api/"},"live_probe":"not_executed"},"pagination":{"supported":false,"next_cursor_methods":[],"metadata_signal":false},"tasks":{"advertised":false,"probe_status":"missing","http_status":404},"initialize_capability_keys":["prompts","resources","tools"]},"write_action_governance":{"status":"error","safe_to_publish":false,"auth_boundary":"public_or_unclear","blast_radius":"high","summary":{"tool_count":13,"high_risk_tools":1,"destructive_tools":0,"exec_tools":1,"egress_tools":1,"secret_tools":0,"bulk_access_tools":3,"risk_distribution":{"low":7,"medium":5,"high":1,"critical":0},"capability_distribution":{"read":8,"exec":1,"admin":4,"export":3,"network":2,"filesystem":6,"other":2}},"high_risk_tools":[{"name":"search_docs","risk_level":"high","risk_flags":["command_execution","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":"ac.tandem/docs-mcp","duplicate_count":0,"registry_sources":["official_registry"],"registry_identifiers":["ac.tandem/docs-mcp"],"remote_urls":["https://tandem.ac/mcp"],"homepages":["https://tandem.ac/docs-mcp"],"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":"ac.tandem/docs-mcp","tier":"community","readiness":{"allowed_to_activate":true,"blockers":[],"score":70.41,"min_score":70.0,"freshness_hours":5.557149734722222,"max_freshness_hours":168.0,"latest_validation_run_id":"4035da53-485a-4c1c-a9ae-01430a5b069f"},"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":"passes","evidence":[{"check":"resource_read","status":"ok","source":"live_validation","note":"resources/read is a strong read-path signal","http_status":200},{"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":13,"prompt_count":3,"resource_count":50},"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":"error_contract_score","label":"Error Contract","score":0.0,"max_score":4.0,"gap":4.0},{"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":"safety_transparency_score","label":"Safety Transparency","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":"registry_consistency_score","label":"Registry Consistency","score":2.0,"max_score":4.0,"gap":2.0},{"key":"rate_limit_semantics_score","label":"Rate Limit Semantics","score":2.0,"max_score":4.0,"gap":2.0},{"key":"prompt_contract_score","label":"Prompt Contract","score":2.0,"max_score":4.0,"gap":2.0},{"key":"least_privilege_scope_score","label":"Least Privilege Scope","score":2.0,"max_score":4.0,"gap":2.0},{"key":"egress_ssrf_resilience_score","label":"Egress SSRF Resilience","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_69fee57bf5cd1ad8","generated_at":"2026-07-31T11:06:39.916450+00:00","source":"current_snapshot","server":"ac.tandem/docs-mcp","last_validated_at":"2026-07-31T05:33:13.962771+00:00","validation_age_hours":5.56,"freshness":{"schema_version":"verify.freshness_profile.v1","last_validated_at":"2026-07-31T05:33:13.962771+00:00","age_hours":5.56,"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":70.41,"raw_score":70.41,"confidence_score":76.2,"confidence_weighted_score":53.7,"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":70.41,"display_score":70.41,"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":5.56,"live_check_count":26},"active_alerts":[]},"trust_snapshot":{"schema_version":"verify.trust_snapshot.v1","snapshot_id":"trustsnap_69fee57bf5cd1ad8","generated_at":"2026-07-31T11:06:39.916450+00:00","source":"current_snapshot","server":"ac.tandem/docs-mcp","last_validated_at":"2026-07-31T05:33:13.962771+00:00","validation_age_hours":5.56,"freshness":{"schema_version":"verify.freshness_profile.v1","last_validated_at":"2026-07-31T05:33:13.962771+00:00","age_hours":5.56,"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":70.41,"raw_score":70.41,"confidence_score":76.2,"confidence_weighted_score":53.7,"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":70.41,"display_score":70.41,"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":5.56,"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":"administrative","tool_risk_score":70,"pricing_transparency":"unknown","schema_change_detected":"unknown","delegation_level":"none","evidence_level":"inferred","confidence":"low","highest_risk_tools":[{"name":"search_docs","risk_level":"administrative"},{"name":"get_start_path","risk_level":"administrative"},{"name":"recommend_next_docs","risk_level":"administrative"},{"name":"answer_how_to","risk_level":"administrative"}],"skipped_unsafe_tools":["search_docs","get_start_path","recommend_next_docs","answer_how_to","get_tandem_guide"],"last_checked_at":"2026-07-31T11:06:39.909507+00:00","evidence":[{"field":"commerce_signal","value":"weak","evidence_level":"inferred","source":"tool_schema","matched_terms":["limit","rate"],"sample":"search_docs","confidence":"low","last_checked_at":"2026-07-31T11:06:39.909507+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":10,"tool_risk_score":70,"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":"4035da53-485a-4c1c-a9ae-01430a5b069f","validation_profile":"remote_mcp","status":"completed","summary_status":"healthy","transport_type":"streamable-http","latency_ms":2808.29,"failures":{"server_card":{"url":"https://tandem.ac/.well-known/mcp/server-card.json","error":"Client error '404 Not Found' for url 'https://tandem.ac/.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://tandem.ac/.well-known/oauth-protected-resource","error":"Client error '404 Not Found' for url 'https://tandem.ac/.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-06-18","bad_protocol_status_code":200,"bad_protocol_payload":{"jsonrpc":"2.0","id":410,"result":{"tools":[{"name":"search_docs","description":"Search the published Tandem docs index for relevant pages.","annotations":{"title":"Search Tandem docs","readOnlyHint":true,"idempotentHint":true,"openWorldHint":true},"inputSchema":{"type":"object","properties":{"query":{"type":"string","description":"The Tandem question, task, or keyword query to search for."},"docs_ref":{"type":"string","description":"Docs channel or immutable ref. Defaults to stable. Use next, refs/<sha>, or releases/<version> only when explicitly needed."},"engine_version":{"type":"string","description":"Optional Tandem engine version hint. If supplied without docs_ref, the MCP still defaults to stable unless a matching versioned docs ref is configured."},"limit":{"type":"integer","minimum":1,"maximum":20,"description":"Maximum number of matching docs pages to return."},"audience":{"type":"string","description":"Optional audience filter such as developer, desktop user, or operator."}},"required":["query"]}},{"name":"get_doc","description":"Fetch and normalize a published Tandem docs page by path or URL.","annotations":{"title":"Fetch a docs page","readOnlyHint":true,"idempotentHint":true,"openWorldHint":true},"inputSchema":{"type":"object","properties":{"path":{"type":"string","description":"Docs path like /sdk/python/ or a full Tandem docs URL."},"docs_ref":{"type":"string","description":"Docs channel or immutable ref. Defaults to stable."},"engine_version":{"type":"string","description":"Optional Tandem engine version hint for compatibility checks."}},"required":["path"]}},{"name":"get_start_path","description":"Recommend the best Tandem docs starting path for a desktop user, server admin, or developer.","annotations":{"title":"Get a starting docs path","readOnlyHint":true,"idempotentHint":true,"openWorldHint":false},"inputSchema":{"type":"object","properties":{"role":{"type":"string","enum":["desktop","server_admin","developer"],"description":"The user role to optimize the docs starting point for."},"docs_ref":{"type":"string","description":"Docs channel or immutable ref. Defaults to stable."}},"required":["role"]}},{"name":"recommend_next_docs","description":"Recommend the next Tandem docs to read after a current page, optionally biased toward a goal.","annotations":{"title":"Recommend next docs","readOnlyHint":true,"idempotentHint":true,"openWorldHint":true},"inputSchema":{"type":"object","properties":{"current_path":{"type":"string","description":"Current Tandem docs path the user has already read."},"docs_ref":{"type":"string","description":"Docs channel or immutable ref. Defaults to stable."},"goal":{"type":"string","description":"Optional goal such as install Tandem, use the Python SDK, or build workflows."},"limit":{"type":"integer","minimum":1,"maximum":10,"description":"Maximum number of next-doc recommendations to return."}},"required":["current_path"]}},{"name":"answer_how_to","description":"Answer how to install or use Tandem, build workflows, or use the SDKs by synthesizing relevant published docs.","annotations":{"title":"Answer a Tandem how-to question","readOnlyHint":true,"idempotentHint":true,"openWorldHint":true},"inputSchema":{"type":"object","properties":{"task":{"type":"string","description":"The Tandem task or question that needs a docs-grounded answer."},"docs_ref":{"type":"string","description":"Docs channel or immutable ref. Defaults to stable."},"engine_version":{"type":"string","description":"Optional Tandem engine version hint. Prefer stable docs for installed engines."},"audience":{"type":"string","description":"Optional audience hint such as developer, desktop user, or operator."},"limit":{"type":"integer","minimum":1,"maximum":10,"description":"Maximum number of supporting docs recommendations to include."}},"required":["task"]}},{"name":"get_tandem_guide","description":"Return a structured Tandem learning guide for install-engine, python-sdk, typescript-sdk, build-workflows, or headless-deploy.","annotations":{"title":"Get a Tandem guide","readOnlyHint":true,"idempotentHint":true,"openWorldHint":false},"inputSchema":{"type":"object","properties":{"topic":{"type":"string","enum":["install-engine","python-sdk","typescript-sdk","build-workflows","headless-deploy"],"description":"Named Tandem learning guide to return."},"docs_ref":{"type":"string","description":"Docs channel or immutable ref. Defaults to stable."}},"required":["topic"]}},{"name":"warmup_docs_cache","description":"Refresh the docs index and preload the most important Tandem docs pages into cache.","annotations":{"title":"Warm docs cache","idempotentHint":true,"destructiveHint":false,"openWorldHint":true},"inputSchema":{"type":"object","properties":{"force_refresh":{"type":"boolean","description":"Whether to bypass cache and force fresh upstream fetches first."},"docs_ref":{"type":"string","description":"Docs channel or immutable ref. Defaults to stable."}}}},{"name":"get_docs_cache_status","description":"Inspect the current docs cache state for index sources and warmed pages.","annotations":{"title":"Inspect docs cache status","readOnlyHint":true,"idempotentHint":true,"openWorldHint":false},"inputSchema":{"type":"object","properties":{}}},{"name":"refresh_docs_index","description":"Force-refresh docs indexes and report whether data came from the network, cache, or stale fallback.","annotations":{"title":"Refresh docs index","idempotentHint":true,"destructiveHint":false,"openWorldHint":true},"inputSchema":{"type":"object","properties":{"force_refresh":{"type":"boolean","description":"Whether to bypass cache and force a network refresh attempt."},"docs_ref":{"type":"string","description":"Docs channel or immutable ref. Defaults to stable."}}}},{"name":"refresh_doc_page","description":"Force-refresh a docs page and report whether content came from the network, cache, or stale fallback.","annotations":{"title":"Refresh one docs page","idempotentHint":true,"destructiveHint":false,"openWorldHint":true},"inputSchema":{"type":"object","properties":{"path":{"type":"string","description":"Docs path like /start-here/ or /sdk/python/ to refresh."},"docs_ref":{"type":"string","description":"Docs channel or immutable ref. Defaults to stable."},"force_refresh":{"type":"boolean","description":"Whether to bypass cache and force a network refresh attempt."}},"required":["path"]}},{"name":"invalidate_docs_cache","description":"Invalidate docs cache entries for index data, all pages, or a specific page path.","annotations":{"title":"Invalidate docs cache","idempotentHint":true,"destructiveHint":false,"openWorldHint":false},"inputSchema":{"type":"object","properties":{"target":{"type":"string","enum":["all","index","pages","page"],"description":"Which cache area to invalidate."},"path":{"type":"string","description":"Required when target is page; identifies the specific docs path to invalidate."},"docs_ref":{"type":"string","description":"Optional docs ref to scope page/index cache invalidation."}}}},{"name":"compare_docs_index_refresh","description":"Force-refresh the docs indexes and return before/after hashes so content changes can be proven.","annotations":{"title":"Compare docs index refresh","idempotentHint":true,"destructiveHint":false,"openWorldHint":true},"inputSchema":{"type":"object","properties":{"docs_ref":{"type":"string","description":"Docs channel or immutable ref. Defaults to stable."}}}},{"name":"compare_doc_page_refresh","description":"Force-refresh a docs page and return before/after hashes so page content changes can be proven.","annotations":{"title":"Compare page refresh","idempotentHint":true,"destructiveHint":false,"openWorldHint":true},"inputSchema":{"type":"object","properties":{"path":{"type":"string","description":"Docs path like /start-here/ or /sdk/python/ to compare before and after refresh."},"docs_ref":{"type":"string","description":"Docs channel or immutable ref. Defaults to stable."}},"required":["path"]}}]}},"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":499.64,"details":{"url":"https://tandem.ac/.well-known/mcp/server-card.json","error":"Client error '404 Not Found' for url 'https://tandem.ac/.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":179.53,"details":{"url":"https://tandem.ac/.well-known/oauth-protected-resource","error":"Client error '404 Not Found' for url 'https://tandem.ac/.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":370.78,"details":{"url":"https://tandem.ac/mcp","payload":{"jsonrpc":"2.0","id":1,"result":{"protocolVersion":"2025-06-18","capabilities":{"tools":{},"resources":{},"prompts":{}},"serverInfo":{"name":"ac.tandem/docs-mcp","title":"Tandem Docs MCP","version":"0.3.2"},"instructions":"Use tools/list and tools/call to retrieve Tandem documentation guidance."}},"http_status":200,"headers":{"content-type":"application/json"}}},"protocol_version_probe":{"status":"warning","latency_ms":null,"details":{"claimed_version":"2025-06-18","validator_protocol_version":"2025-03-26","latest_known_version":"2025-11-25","releases_behind":1,"lag_days":160}},"tools_list":{"status":"ok","latency_ms":363.45,"details":{"url":"https://tandem.ac/mcp","payload":{"jsonrpc":"2.0","id":2,"result":{"tools":[{"name":"search_docs","description":"Search the published Tandem docs index for relevant pages.","annotations":{"title":"Search Tandem docs","readOnlyHint":true,"idempotentHint":true,"openWorldHint":true},"inputSchema":{"type":"object","properties":{"query":{"type":"string","description":"The Tandem question, task, or keyword query to search for."},"docs_ref":{"type":"string","description":"Docs channel or immutable ref. Defaults to stable. Use next, refs/<sha>, or releases/<version> only when explicitly needed."},"engine_version":{"type":"string","description":"Optional Tandem engine version hint. If supplied without docs_ref, the MCP still defaults to stable unless a matching versioned docs ref is configured."},"limit":{"type":"integer","minimum":1,"maximum":20,"description":"Maximum number of matching docs pages to return."},"audience":{"type":"string","description":"Optional audience filter such as developer, desktop user, or operator."}},"required":["query"]}},{"name":"get_doc","description":"Fetch and normalize a published Tandem docs page by path or URL.","annotations":{"title":"Fetch a docs page","readOnlyHint":true,"idempotentHint":true,"openWorldHint":true},"inputSchema":{"type":"object","properties":{"path":{"type":"string","description":"Docs path like /sdk/python/ or a full Tandem docs URL."},"docs_ref":{"type":"string","description":"Docs channel or immutable ref. Defaults to stable."},"engine_version":{"type":"string","description":"Optional Tandem engine version hint for compatibility checks."}},"required":["path"]}},{"name":"get_start_path","description":"Recommend the best Tandem docs starting path for a desktop user, server admin, or developer.","annotations":{"title":"Get a starting docs path","readOnlyHint":true,"idempotentHint":true,"openWorldHint":false},"inputSchema":{"type":"object","properties":{"role":{"type":"string","enum":["desktop","server_admin","developer"],"description":"The user role to optimize the docs starting point for."},"docs_ref":{"type":"string","description":"Docs channel or immutable ref. Defaults to stable."}},"required":["role"]}},{"name":"recommend_next_docs","description":"Recommend the next Tandem docs to read after a current page, optionally biased toward a goal.","annotations":{"title":"Recommend next docs","readOnlyHint":true,"idempotentHint":true,"openWorldHint":true},"inputSchema":{"type":"object","properties":{"current_path":{"type":"string","description":"Current Tandem docs path the user has already read."},"docs_ref":{"type":"string","description":"Docs channel or immutable ref. Defaults to stable."},"goal":{"type":"string","description":"Optional goal such as install Tandem, use the Python SDK, or build workflows."},"limit":{"type":"integer","minimum":1,"maximum":10,"description":"Maximum number of next-doc recommendations to return."}},"required":["current_path"]}},{"name":"answer_how_to","description":"Answer how to install or use Tandem, build workflows, or use the SDKs by synthesizing relevant published docs.","annotations":{"title":"Answer a Tandem how-to question","readOnlyHint":true,"idempotentHint":true,"openWorldHint":true},"inputSchema":{"type":"object","properties":{"task":{"type":"string","description":"The Tandem task or question that needs a docs-grounded answer."},"docs_ref":{"type":"string","description":"Docs channel or immutable ref. Defaults to stable."},"engine_version":{"type":"string","description":"Optional Tandem engine version hint. Prefer stable docs for installed engines."},"audience":{"type":"string","description":"Optional audience hint such as developer, desktop user, or operator."},"limit":{"type":"integer","minimum":1,"maximum":10,"description":"Maximum number of supporting docs recommendations to include."}},"required":["task"]}},{"name":"get_tandem_guide","description":"Return a structured Tandem learning guide for install-engine, python-sdk, typescript-sdk, build-workflows, or headless-deploy.","annotations":{"title":"Get a Tandem guide","readOnlyHint":true,"idempotentHint":true,"openWorldHint":false},"inputSchema":{"type":"object","properties":{"topic":{"type":"string","enum":["install-engine","python-sdk","typescript-sdk","build-workflows","headless-deploy"],"description":"Named Tandem learning guide to return."},"docs_ref":{"type":"string","description":"Docs channel or immutable ref. Defaults to stable."}},"required":["topic"]}},{"name":"warmup_docs_cache","description":"Refresh the docs index and preload the most important Tandem docs pages into cache.","annotations":{"title":"Warm docs cache","idempotentHint":true,"destructiveHint":false,"openWorldHint":true},"inputSchema":{"type":"object","properties":{"force_refresh":{"type":"boolean","description":"Whether to bypass cache and force fresh upstream fetches first."},"docs_ref":{"type":"string","description":"Docs channel or immutable ref. Defaults to stable."}}}},{"name":"get_docs_cache_status","description":"Inspect the current docs cache state for index sources and warmed pages.","annotations":{"title":"Inspect docs cache status","readOnlyHint":true,"idempotentHint":true,"openWorldHint":false},"inputSchema":{"type":"object","properties":{}}},{"name":"refresh_docs_index","description":"Force-refresh docs indexes and report whether data came from the network, cache, or stale fallback.","annotations":{"title":"Refresh docs index","idempotentHint":true,"destructiveHint":false,"openWorldHint":true},"inputSchema":{"type":"object","properties":{"force_refresh":{"type":"boolean","description":"Whether to bypass cache and force a network refresh attempt."},"docs_ref":{"type":"string","description":"Docs channel or immutable ref. Defaults to stable."}}}},{"name":"refresh_doc_page","description":"Force-refresh a docs page and report whether content came from the network, cache, or stale fallback.","annotations":{"title":"Refresh one docs page","idempotentHint":true,"destructiveHint":false,"openWorldHint":true},"inputSchema":{"type":"object","properties":{"path":{"type":"string","description":"Docs path like /start-here/ or /sdk/python/ to refresh."},"docs_ref":{"type":"string","description":"Docs channel or immutable ref. Defaults to stable."},"force_refresh":{"type":"boolean","description":"Whether to bypass cache and force a network refresh attempt."}},"required":["path"]}},{"name":"invalidate_docs_cache","description":"Invalidate docs cache entries for index data, all pages, or a specific page path.","annotations":{"title":"Invalidate docs cache","idempotentHint":true,"destructiveHint":false,"openWorldHint":false},"inputSchema":{"type":"object","properties":{"target":{"type":"string","enum":["all","index","pages","page"],"description":"Which cache area to invalidate."},"path":{"type":"string","description":"Required when target is page; identifies the specific docs path to invalidate."},"docs_ref":{"type":"string","description":"Optional docs ref to scope page/index cache invalidation."}}}},{"name":"compare_docs_index_refresh","description":"Force-refresh the docs indexes and return before/after hashes so content changes can be proven.","annotations":{"title":"Compare docs index refresh","idempotentHint":true,"destructiveHint":false,"openWorldHint":true},"inputSchema":{"type":"object","properties":{"docs_ref":{"type":"string","description":"Docs channel or immutable ref. Defaults to stable."}}}},{"name":"compare_doc_page_refresh","description":"Force-refresh a docs page and return before/after hashes so page content changes can be proven.","annotations":{"title":"Compare page refresh","idempotentHint":true,"destructiveHint":false,"openWorldHint":true},"inputSchema":{"type":"object","properties":{"path":{"type":"string","description":"Docs path like /start-here/ or /sdk/python/ to compare before and after refresh."},"docs_ref":{"type":"string","description":"Docs channel or immutable ref. Defaults to stable."}},"required":["path"]}}]}},"http_status":200,"headers":{"content-type":"application/json"}}},"prompts_list":{"status":"ok","latency_ms":100.51,"details":{"url":"https://tandem.ac/mcp","payload":{"jsonrpc":"2.0","id":3,"result":{"prompts":[{"name":"install_tandem_engine","title":"Install Tandem Engine","description":"Prompt template for teaching an agent how to install Tandem Engine safely from the docs."},{"name":"use_python_sdk","title":"Use the Python SDK","description":"Prompt template for helping an agent learn the Tandem Python SDK and prerequisites."},{"name":"build_workflows","title":"Build Tandem workflows","description":"Prompt template for helping an agent learn workflow building and orchestration patterns in Tandem."}]}},"http_status":200,"headers":{"content-type":"application/json"}}},"prompt_get":{"status":"ok","latency_ms":112.46,"details":{"url":"https://tandem.ac/mcp","payload":{"jsonrpc":"2.0","id":4,"result":{"description":"Guide an agent through installing Tandem Engine using the official Tandem docs and return the most relevant pages first.","messages":[{"role":"user","content":{"type":"text","text":"Guide an agent through installing Tandem Engine using the official Tandem docs and return the most relevant pages first."}}]}},"http_status":200,"headers":{"content-type":"application/json"},"prompt_name":"install_tandem_engine"}},"resources_list":{"status":"ok","latency_ms":107.81,"details":{"url":"https://tandem.ac/mcp","payload":{"jsonrpc":"2.0","id":5,"result":{"resources":[{"uri":"tandem-docs://stable/reference/agent-team-api/","name":"Agent Team Api","title":"Agent Team Api","description":"Agent-team HTTP API.","mimeType":"text/plain","annotations":{"audience":["assistant"],"priority":100}},{"uri":"tandem-docs://stable/reference/agent-team-events/","name":"Agent Team Events","title":"Agent Team Events","description":"Agent-team event stream contract.","mimeType":"text/plain","annotations":{"audience":["assistant"],"priority":100}},{"uri":"tandem-docs://stable/architecture/","name":"Architecture","title":"Architecture","description":"System architecture overview.","mimeType":"text/plain","annotations":{"audience":["assistant"],"priority":100}},{"uri":"tandem-docs://stable/reference/engine-commands/","name":"Engine Commands","title":"Engine Commands","description":"Engine CLI commands.","mimeType":"text/plain","annotations":{"audience":["assistant"],"priority":100}},{"uri":"tandem-docs://stable/engine-testing/","name":"Engine Testing","title":"Engine Testing","description":"Engine testing guidance.","mimeType":"text/plain","annotations":{"audience":["assistant"],"priority":100}},{"uri":"tandem-docs://stable/eval-runner/","name":"Eval Runner","title":"Eval Runner","description":"Eval Runner CLI reference for AI quality datasets and regression checks.","mimeType":"text/plain","annotations":{"audience":["assistant"],"priority":100}},{"uri":"tandem-docs://stable/how-tandem-works/","name":"How Tandem Works","title":"How Tandem Works","description":"Canonical runtime reference for sessions, runs, context, memory, and channels.","mimeType":"text/plain","annotations":{"audience":["assistant"],"priority":100}},{"uri":"tandem-docs://stable/protocol-matrix/","name":"Protocol Matrix","title":"Protocol Matrix","description":"Protocol and compatibility matrix.","mimeType":"text/plain","annotations":{"audience":["assistant"],"priority":100}},{"uri":"tandem-docs://stable/reference/spawn-policy/","name":"Spawn Policy","title":"Spawn Policy","description":"Spawn policy and safety rules.","mimeType":"text/plain","annotations":{"audience":["assistant"],"priority":100}},{"uri":"tandem-docs://stable/reference/tools/","name":"Tools","title":"Tools","description":"Tool API reference.","mimeType":"text/plain","annotations":{"audience":["assistant"],"priority":100}},{"uri":"tandem-docs://stable/reference/tui-commands/","name":"Tui Commands","title":"Tui Commands","description":"TUI commands.","mimeType":"text/plain","annotations":{"audience":["assistant"],"priority":100}},{"uri":"tandem-docs://stable/agent-teams/","name":"Agent Teams","title":"Agent Teams","description":"Agent team architecture and behavior.","mimeType":"text/plain","annotations":{"audience":["assistant"],"priority":100}},{"uri":"tandem-docs://stable/agents-and-sessions/","name":"Agents And Sessions","title":"Agents And Sessions","description":"Sessions, context, and execution model.","mimeType":"text/plain","annotations":{"audience":["assistant"],"priority":100}},{"uri":"tandem-docs://stable/channel-integrations/","name":"Channel Integrations","title":"Channel Integrations","description":"Slack, Discord, Telegram, and related integrations.","mimeType":"text/plain","annotations":{"audience":["assistant"],"priority":100}},{"uri":"tandem-docs://stable/configuration/","name":"Configuration","title":"Configuration","description":"Providers, keys, and system instructions.","mimeType":"text/plain","annotations":{"audience":["assistant"],"priority":100}},{"uri":"tandem-docs://stable/control-panel/","name":"Control Panel","title":"Control Panel","description":"Browser control panel and scaffolded app guidance.","mimeType":"text/plain","annotations":{"audience":["assistant"],"priority":100}},{"uri":"tandem-docs://stable/desktop/first-10-minutes/","name":"First 10 Minutes","title":"First 10 Minutes","description":"First 10 minutes with Tandem Desktop.","mimeType":"text/plain","annotations":{"audience":["assistant"],"priority":100}},{"uri":"tandem-docs://stable/desktop/headless-deployment/","name":"Headless Deployment","title":"Headless Deployment","description":"Headless deployment from desktop workflows.","mimeType":"text/plain","annotations":{"audience":["assistant"],"priority":100}},{"uri":"tandem-docs://stable/headless-service/","name":"Headless Service","title":"Headless Service","description":"Headless engine service mode.","mimeType":"text/plain","annotations":{"audience":["assistant"],"priority":100}},{"uri":"tandem-docs://stable/desktop/learn-walkthroughs/","name":"Learn Walkthroughs","title":"Learn Walkthroughs","description":"Interactive Learn walkthroughs.","mimeType":"text/plain","annotations":{"audience":["assistant"],"priority":100}},{"uri":"tandem-docs://stable/desktop/overview/","name":"Overview","title":"Overview","description":"Desktop overview.","mimeType":"text/plain","annotations":{"audience":["assistant"],"priority":100}},{"uri":"tandem-docs://stable/desktop/settings-and-safety/","name":"Settings And Safety","title":"Settings And Safety","description":"Settings and safety.","mimeType":"text/plain","annotations":{"audience":["assistant"],"priority":100}},{"uri":"tandem-docs://stable/desktop/troubleshooting/","name":"Troubleshooting","title":"Troubleshooting","description":"Desktop troubleshooting.","mimeType":"text/plain","annotations":{"audience":["assistant"],"priority":100}},{"uri":"tandem-docs://stable/tui-guide/","name":"Tui Guide","title":"Tui Guide","description":"Terminal UI guide.","mimeType":"text/plain","annotations":{"audience":["assistant"],"priority":100}},{"uri":"tandem-docs://stable/desktop/workflows/","name":"Workflows","title":"Workflows","description":"Desktop workflows.","mimeType":"text/plain","annotations":{"audience":["assistant"],"priority":100}},{"uri":"tandem-docs://stable/incident-monitor/agent-runtime-guide/","name":"Agent Runtime Guide","title":"Agent Runtime Guide","description":"Safe Incident Monitor operating sequence for MCP-connected agents, SDK clients, and HTTP callers.","mimeType":"text/plain","annotations":{"audience":["assistant"],"priority":100}},{"uri":"tandem-docs://stable/agent-workflow-mission-quickstart/","name":"Agent Workflow Mission Quickstart","title":"Agent Workflow Mission Quickstart","description":"Short checklist for agents creating, running, and maintaining Tandem workflows or missions.","mimeType":"text/plain","annotations":{"audience":["assistant"],"priority":100}},{"uri":"tandem-docs://stable/automation-examples-for-teams/","name":"Automation Examples For Teams","title":"Automation Examples For Teams","description":"End-to-end workflow examples, including the Linear repair-loop guard template for ACA-triggering issue webhooks.","mimeType":"text/plain","annotations":{"audience":["assistant"],"priority":100}},{"uri":"tandem-docs://stable/automation-v2-webhooks/","name":"Automation V2 Webhooks","title":"Automation V2 Webhooks","description":"Direct webhook trigger setup for Automation V2, including Notion verification tokens and Linear issue webhook setup.","mimeType":"text/plain","annotations":{"audience":["assistant"],"priority":100}},{"uri":"tandem-docs://stable/autonomous-coding-agents-github-projects/","name":"Autonomous Coding Agents Github Projects","title":"Autonomous Coding Agents Github Projects","description":"GitHub Projects coding-agent workflows.","mimeType":"text/plain","annotations":{"audience":["assistant"],"priority":100}},{"uri":"tandem-docs://stable/browser-setup-and-testing/","name":"Browser Setup And Testing","title":"Browser Setup And Testing","description":"Browser setup, install, and validation.","mimeType":"text/plain","annotations":{"audience":["assistant"],"priority":100}},{"uri":"tandem-docs://stable/choosing-providers-and-models-for-agents/","name":"Choosing Providers And Models For Agents","title":"Choosing Providers And Models For Agents","description":"How agents should choose providers, defaults, and per-stage model overrides.","mimeType":"text/plain","annotations":{"audience":["assistant"],"priority":100}},{"uri":"tandem-docs://stable/creating-and-running-workflows-and-missions/","name":"Creating And Running Workflows And Missions","title":"Creating And Running Workflows And Missions","description":"Which Tandem path to use and how to create, apply, schedule, and run it.","mimeType":"text/plain","annotations":{"audience":["assistant"],"priority":100}},{"uri":"tandem-docs://stable/incident-monitor/destination-router/","name":"Destination Router","title":"Destination Router","description":"Destination router model for GitHub, Linear, webhooks, telemetry, MCP tools, and memory.","mimeType":"text/plain","annotations":{"audience":["assistant"],"priority":100}},{"uri":"tandem-docs://stable/incident-monitor/destinations/","name":"Destinations","title":"Destinations","description":"Destination adapter coverage and readiness requirements for governed Incident Monitor publishing.","mimeType":"text/plain","annotations":{"audience":["assistant"],"priority":100}},{"uri":"tandem-docs://stable/engine-authentication-for-agents/","name":"Engine Authentication For Agents","title":"Engine Authentication For Agents","description":"How to obtain an engine token and authenticate SDK or HTTP calls.","mimeType":"text/plain","annotations":{"audience":["assistant"],"priority":100}},{"uri":"tandem-docs://stable/enterprise-client-onboarding-runbook/","name":"Enterprise Client Onboarding Runbook","title":"Enterprise Client Onboarding Runbook","description":"Agent-facing onboarding order for client pilots, go-live smoke tests, and enterprise hardening.","mimeType":"text/plain","annotations":{"audience":["assistant"],"priority":100}},{"uri":"tandem-docs://stable/enterprise-data-governance/","name":"Enterprise Data Governance","title":"Enterprise Data Governance","description":"Agent-facing enterprise setup guide for tenant-scoped memory, governed MCP setup, source bindings, connector credentials, and quarantine review.","mimeType":"text/plain","annotations":{"audience":["assistant"],"priority":100}},{"uri":"tandem-docs://stable/incident-monitor/external-sources/","name":"External Sources","title":"External Sources","description":"External source identity, monitored source bindings, and destination routing context.","mimeType":"text/plain","annotations":{"audience":["assistant"],"priority":100}},{"uri":"tandem-docs://stable/reference/incident-monitor/","name":"Incident Monitor","title":"Incident Monitor","description":"Incident Monitor API and behavior reference for governed failure intake, drafts, approvals, routing, receipts, and destination publishes.","mimeType":"text/plain","annotations":{"audience":["assistant"],"priority":100}},{"uri":"tandem-docs://stable/incident-monitor-external-log-intake/","name":"Incident Monitor External Log Intake","title":"Incident Monitor External Log Intake","description":"Configure external project log intake, scoped report keys, reset/replay debug actions, and monitored project setup.","mimeType":"text/plain","annotations":{"audience":["assistant"],"priority":100}},{"uri":"tandem-docs://stable/long-running-multi-workflow-goals/","name":"Long Running Multi Workflow Goals","title":"Long Running Multi Workflow Goals","description":"Author, publish, operate, replay, and recover version-pinned goals spanning multiple Automation V2 workflow runs.","mimeType":"text/plain","annotations":{"audience":["assistant"],"priority":100}},{"uri":"tandem-docs://stable/mcp-automated-agents/","name":"Mcp Automated Agents","title":"Mcp Automated Agents","description":"Automated agent workflows and MCP patterns.","mimeType":"text/plain","annotations":{"audience":["assistant"],"priority":100}},{"uri":"tandem-docs://stable/incident-monitor/overview/","name":"Overview","title":"Overview","description":"Incident Monitor overview for governed intake, triage, routing, evidence, destination readiness, and receipts.","mimeType":"text/plain","annotations":{"audience":["assistant"],"priority":100}},{"uri":"tandem-docs://stable/incident-monitor/production-governance/","name":"Production Governance","title":"Production Governance","description":"Production governance guidance for deployment cards, posture checks, assessment reports, protected evidence, and receipts.","mimeType":"text/plain","annotations":{"audience":["assistant"],"priority":100}},{"uri":"tandem-docs://stable/prompting-workflows-and-missions/","name":"Prompting Workflows And Missions","title":"Prompting Workflows And Missions","description":"How to prompt Tandem workflows, missions, and staged recurring operations.","mimeType":"text/plain","annotations":{"audience":["assistant"],"priority":100}},{"uri":"tandem-docs://stable/sdk/python/","name":"Python","title":"Python","description":"Python SDK.","mimeType":"text/plain","annotations":{"audience":["assistant"],"priority":100}},{"uri":"tandem-docs://stable/sdk/scheduling-automations/","name":"Scheduling Automations","title":"Scheduling Automations","description":"SDK automation scheduling.","mimeType":"text/plain","annotations":{"audience":["assistant"],"priority":100}},{"uri":"tandem-docs://stable/sdk/","name":"Sdk","title":"Sdk","description":"SDK landing page.","mimeType":"text/plain","annotations":{"audience":["assistant"],"priority":100}},{"uri":"tandem-docs://stable/incident-monitor/security-posture/","name":"Security Posture","title":"Security Posture","description":"Read-only authority inventory, posture assessment, scenario packs, and remediation routing.","mimeType":"text/plain","annotations":{"audience":["assistant"],"priority":100}}]}},"http_status":200,"headers":{"content-type":"application/json"}}},"resource_read":{"status":"ok","latency_ms":280.68,"details":{"url":"https://tandem.ac/mcp","payload":{"jsonrpc":"2.0","id":6,"result":{"contents":[{"uri":"tandem-docs://stable/reference/agent-team-api/","mimeType":"text/plain","text":"Agent Team API Endpoints Section titled “Endpoints” GET /agent-team/templates Section titled “GET /agent-team/templates” Returns loaded agent templates. GET /agent-team/instances Section titled “GET /agent-team/instances” Query params: missionID (optional) parentInstanceID (optional) status (optional: queued|running|completed|failed|cancelled ) GET /agent-team/missions Section titled “GET /agent-team/missions” Returns mission-level rollups across instances: instanceCount runningCount completedCount failedCount cancelledCount queuedCount tokenUsedTotal toolCallsUsedTotal stepsUsedTotal costUsedUsdTotal GET /agent-team/approvals Section titled “GET /agent-team/approvals” Returns: spawnApprovals : queued spawn approvals (request-only edges / approval-required paths) toolApprovals : pending permission requests scoped to agent-team sessions POST /agent-team/spawn Section titled “POST /agent-team/spawn” Request body: { \"missionID\" : \" m1 \" , \"parentInstanceID\" : \" ins_parent \" , \"templateID\" : \" worker-default \" , \"role\" : \" worker \" , \"source\" : \" ui_action \" , \"justification\" : \" Implement focused task \" , \"budget_override\" : { \"max_tokens\" : 8000 , \"max_steps\" : 4 , \"max_tool_calls\" : 10 , \"max_duration_ms\" : 240000 , \"max_cost_usd\" : 1.25 } } Success response: { \"ok\" : true , \"missionID\" : \" m1 \" , \"instanceID\" : \" ins_... \" , \"sessionID\" : \" ses_... \" , \"runID\" : null , \"status\" : \" running \" , \"skillHash\" : \" sha256:... \" } Error response: { \"ok\" : false , \"code\" : \" spawn_policy_missing \" , \"error\" : \" spawn policy file missing \" , \"requiresUserApproval\" : false } If policy requires user approval, response shape is still 200 with: { \"ok\" : false , \"code\" : \" spawn_requires_approval \" , \"requiresUserApproval\" : true } Tool-driven spawn ( spawn_agent ) Section titled “Tool-driven spawn (spawn_agent)” spawn_agent uses the same server-side policy/runtime gate as POST /agent-team/spawn . Invoke it through a session prompt: /tool spawn_agent {\"missionID\":\"m1\",\"role\":\"worker\",\"templateID\":\"worker-default\",\"source\":\"tool_call\",\"justification\":\"parallelize implementation\"} Tool response metadata shape: { \"ok\" : true , \"missionID\" : \" m1 \" , \"instanceID\" : \" ins_... \" , \"sessionID\" : \" ses_... \" , \"runID\" : null , \"status\" : \" running \" , \"skillHash\" : \" sha256:... \" } POST /agent-team/instance/{id}/cancel Section titled “POST /agent-team/instance/{id}/cancel” Request body: { \"reason\" : \" manual stop \" } POST /agent-team/approvals/spawn/{id}/approve Section titled “POST /agent-team/approvals/spawn/{id}/approve” Request body: { \"reason\" : \" approved from command center \" } Response: { \"ok\" : true , \"approvalID\" : \" appr_... \" , \"decision\" : \" approved \" , \"instanceID\" : \" ins_... \" , \"missionID\" : \" m1 \" , \"status\" : \" running \" } POST /agent-team/approvals/spawn/{id}/deny Section titled “POST /agent-team/approvals/spawn/{id}/deny” Request body: { \"reason\" : \" not aligned with mission scope \" } Response: { \"ok\" : true , \"approvalID\" : \" appr_... \" , \"decision\" : \" denied \" , \"reason\" : \" not aligned with mission scope \" } Response: { \"ok\" : true , \"instanceID\" : \" ins_... \" , \"sessionID\" : \" ses_... \" , \"status\" : \" cancelled \" } POST /agent-team/mission/{id}/cancel Section titled “POST /agent-team/mission/{id}/cancel” Request body: { \"reason\" : \" stop all mission agents \" } Response: { \"ok\" : true , \"missionID\" : \" m1 \" , \"cancelledInstances\" : 3 } POST /mission/{id}/event (orchestrator bridge fields) Section titled “POST /mission/{id}/event (orchestrator bridge fields)” When mission runtime bridge is active, mission event responses include additive fields: orchestratorSpawns : spawn results triggered by mission_started orchestratorCancellations : cancellation summary triggered by mission_canceled Edit page Previous Spawn Policy Reference Next Agent Team Events"}]}},"http_status":200,"headers":{"content-type":"application/json"},"resource_uri":"tandem-docs://stable/reference/agent-team-api/"}},"probe_noise_resilience":{"status":"ok","latency_ms":373.02,"details":{"url":"https://tandem.ac/robots.txt","http_status":200,"headers":{"content-type":"text/plain; charset=utf-8"}}},"determinism_probe":{"status":"ok","latency_ms":102.0,"details":{"attempts":2,"successful":2,"matches":2,"stable_ratio":1.0,"baseline_signature":"73dd9c8626a0051e0ab5c91ee42ba2a2c2e8668b24da92fb9f76ed0744013bb3","errors":[]}},"session_resume_probe":{"status":"warning","latency_ms":null,"details":{"reason":"no_session_id","transport":"streamable-http","resume_expected":true,"protocol_version":"2025-06-18"}},"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":101.8,"details":{"transport":"streamable-http","session_id_present":false,"protocol_header_present":false,"last_event_id_visible":false,"requested_protocol_version":"2025-06-18","bad_protocol_status_code":200,"bad_protocol_payload":{"jsonrpc":"2.0","id":410,"result":{"tools":[{"name":"search_docs","description":"Search the published Tandem docs index for relevant pages.","annotations":{"title":"Search Tandem docs","readOnlyHint":true,"idempotentHint":true,"openWorldHint":true},"inputSchema":{"type":"object","properties":{"query":{"type":"string","description":"The Tandem question, task, or keyword query to search for."},"docs_ref":{"type":"string","description":"Docs channel or immutable ref. Defaults to stable. Use next, refs/<sha>, or releases/<version> only when explicitly needed."},"engine_version":{"type":"string","description":"Optional Tandem engine version hint. If supplied without docs_ref, the MCP still defaults to stable unless a matching versioned docs ref is configured."},"limit":{"type":"integer","minimum":1,"maximum":20,"description":"Maximum number of matching docs pages to return."},"audience":{"type":"string","description":"Optional audience filter such as developer, desktop user, or operator."}},"required":["query"]}},{"name":"get_doc","description":"Fetch and normalize a published Tandem docs page by path or URL.","annotations":{"title":"Fetch a docs page","readOnlyHint":true,"idempotentHint":true,"openWorldHint":true},"inputSchema":{"type":"object","properties":{"path":{"type":"string","description":"Docs path like /sdk/python/ or a full Tandem docs URL."},"docs_ref":{"type":"string","description":"Docs channel or immutable ref. Defaults to stable."},"engine_version":{"type":"string","description":"Optional Tandem engine version hint for compatibility checks."}},"required":["path"]}},{"name":"get_start_path","description":"Recommend the best Tandem docs starting path for a desktop user, server admin, or developer.","annotations":{"title":"Get a starting docs path","readOnlyHint":true,"idempotentHint":true,"openWorldHint":false},"inputSchema":{"type":"object","properties":{"role":{"type":"string","enum":["desktop","server_admin","developer"],"description":"The user role to optimize the docs starting point for."},"docs_ref":{"type":"string","description":"Docs channel or immutable ref. Defaults to stable."}},"required":["role"]}},{"name":"recommend_next_docs","description":"Recommend the next Tandem docs to read after a current page, optionally biased toward a goal.","annotations":{"title":"Recommend next docs","readOnlyHint":true,"idempotentHint":true,"openWorldHint":true},"inputSchema":{"type":"object","properties":{"current_path":{"type":"string","description":"Current Tandem docs path the user has already read."},"docs_ref":{"type":"string","description":"Docs channel or immutable ref. Defaults to stable."},"goal":{"type":"string","description":"Optional goal such as install Tandem, use the Python SDK, or build workflows."},"limit":{"type":"integer","minimum":1,"maximum":10,"description":"Maximum number of next-doc recommendations to return."}},"required":["current_path"]}},{"name":"answer_how_to","description":"Answer how to install or use Tandem, build workflows, or use the SDKs by synthesizing relevant published docs.","annotations":{"title":"Answer a Tandem how-to question","readOnlyHint":true,"idempotentHint":true,"openWorldHint":true},"inputSchema":{"type":"object","properties":{"task":{"type":"string","description":"The Tandem task or question that needs a docs-grounded answer."},"docs_ref":{"type":"string","description":"Docs channel or immutable ref. Defaults to stable."},"engine_version":{"type":"string","description":"Optional Tandem engine version hint. Prefer stable docs for installed engines."},"audience":{"type":"string","description":"Optional audience hint such as developer, desktop user, or operator."},"limit":{"type":"integer","minimum":1,"maximum":10,"description":"Maximum number of supporting docs recommendations to include."}},"required":["task"]}},{"name":"get_tandem_guide","description":"Return a structured Tandem learning guide for install-engine, python-sdk, typescript-sdk, build-workflows, or headless-deploy.","annotations":{"title":"Get a Tandem guide","readOnlyHint":true,"idempotentHint":true,"openWorldHint":false},"inputSchema":{"type":"object","properties":{"topic":{"type":"string","enum":["install-engine","python-sdk","typescript-sdk","build-workflows","headless-deploy"],"description":"Named Tandem learning guide to return."},"docs_ref":{"type":"string","description":"Docs channel or immutable ref. Defaults to stable."}},"required":["topic"]}},{"name":"warmup_docs_cache","description":"Refresh the docs index and preload the most important Tandem docs pages into cache.","annotations":{"title":"Warm docs cache","idempotentHint":true,"destructiveHint":false,"openWorldHint":true},"inputSchema":{"type":"object","properties":{"force_refresh":{"type":"boolean","description":"Whether to bypass cache and force fresh upstream fetches first."},"docs_ref":{"type":"string","description":"Docs channel or immutable ref. Defaults to stable."}}}},{"name":"get_docs_cache_status","description":"Inspect the current docs cache state for index sources and warmed pages.","annotations":{"title":"Inspect docs cache status","readOnlyHint":true,"idempotentHint":true,"openWorldHint":false},"inputSchema":{"type":"object","properties":{}}},{"name":"refresh_docs_index","description":"Force-refresh docs indexes and report whether data came from the network, cache, or stale fallback.","annotations":{"title":"Refresh docs index","idempotentHint":true,"destructiveHint":false,"openWorldHint":true},"inputSchema":{"type":"object","properties":{"force_refresh":{"type":"boolean","description":"Whether to bypass cache and force a network refresh attempt."},"docs_ref":{"type":"string","description":"Docs channel or immutable ref. Defaults to stable."}}}},{"name":"refresh_doc_page","description":"Force-refresh a docs page and report whether content came from the network, cache, or stale fallback.","annotations":{"title":"Refresh one docs page","idempotentHint":true,"destructiveHint":false,"openWorldHint":true},"inputSchema":{"type":"object","properties":{"path":{"type":"string","description":"Docs path like /start-here/ or /sdk/python/ to refresh."},"docs_ref":{"type":"string","description":"Docs channel or immutable ref. Defaults to stable."},"force_refresh":{"type":"boolean","description":"Whether to bypass cache and force a network refresh attempt."}},"required":["path"]}},{"name":"invalidate_docs_cache","description":"Invalidate docs cache entries for index data, all pages, or a specific page path.","annotations":{"title":"Invalidate docs cache","idempotentHint":true,"destructiveHint":false,"openWorldHint":false},"inputSchema":{"type":"object","properties":{"target":{"type":"string","enum":["all","index","pages","page"],"description":"Which cache area to invalidate."},"path":{"type":"string","description":"Required when target is page; identifies the specific docs path to invalidate."},"docs_ref":{"type":"string","description":"Optional docs ref to scope page/index cache invalidation."}}}},{"name":"compare_docs_index_refresh","description":"Force-refresh the docs indexes and return before/after hashes so content changes can be proven.","annotations":{"title":"Compare docs index refresh","idempotentHint":true,"destructiveHint":false,"openWorldHint":true},"inputSchema":{"type":"object","properties":{"docs_ref":{"type":"string","description":"Docs channel or immutable ref. Defaults to stable."}}}},{"name":"compare_doc_page_refresh","description":"Force-refresh a docs page and return before/after hashes so page content changes can be proven.","annotations":{"title":"Compare page refresh","idempotentHint":true,"destructiveHint":false,"openWorldHint":true},"inputSchema":{"type":"object","properties":{"path":{"type":"string","description":"Docs path like /start-here/ or /sdk/python/ to compare before and after refresh."},"docs_ref":{"type":"string","description":"Docs channel or immutable ref. Defaults to stable."}},"required":["path"]}}]}},"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":104.48,"details":{"completions":{"advertised":false,"sample_target":{"type":"resource","uri":"tandem-docs://stable/reference/agent-team-api/"},"live_probe":"not_executed"},"pagination":{"supported":false,"next_cursor_methods":[],"metadata_signal":false},"tasks":{"advertised":false,"probe_status":"missing","http_status":404},"initialize_capability_keys":["prompts","resources","tools"]}},"advanced_capabilities_probe":{"status":"warning","latency_ms":null,"details":{"capabilities":{"prompts":true,"resources":true,"completions":false,"roots":false,"sampling":false,"elicitation":false,"structured_outputs":false,"resource_links":true},"enabled_count":3,"enabled":["prompts","resource_links","resources"],"initialize_capability_keys":["prompts","resources","tools"]}},"tool_snapshot_probe":{"status":"missing","latency_ms":null,"details":{"reason":"no_historical_snapshot","current_tool_count":13}},"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":true}},"action_safety_probe":{"status":"error","latency_ms":null,"details":{"summary":{"tool_count":13,"high_risk_tools":1,"destructive_tools":0,"exec_tools":1,"egress_tools":1,"secret_tools":0,"bulk_access_tools":3,"risk_distribution":{"low":7,"medium":5,"high":1,"critical":0},"capability_distribution":{"read":8,"exec":1,"admin":4,"export":3,"network":2,"filesystem":6,"other":2}},"auth_present":false,"safeguard_count":0,"confirmation_signals":[]}},"official_registry_probe":{"status":"ok","latency_ms":null,"details":{"registry_source":"official_registry","registry_identifier":"ac.tandem/docs-mcp","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":2}},"connector_publishability_probe":{"status":"warning","latency_ms":null,"details":{"transport":"streamable-http","tool_count":13,"high_risk_tools":1,"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":0.0,"rate_limit_semantics_score":2.0,"schema_completeness_score":3.0,"backward_compatibility_score":2.0,"slo_health_score":3.0,"security_hygiene_score":4.0,"task_success_score":4.0,"trust_confidence_score":1.75,"abuse_noise_ratio_score":4.0,"prompt_contract_score":2.0,"resource_contract_score":4.0,"discovery_metadata_score":4.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":3.0,"freshness_confidence_score":3.0,"transport_fidelity_score":4.0,"spec_recency_score":3.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":3.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":2.0,"tool_capability_clarity_score":4.0,"destructive_operation_safety_score":3.0,"egress_ssrf_resilience_score":2.0,"execution_sandbox_safety_score":3.75,"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:33:11.153151+00:00","completed_at":"2026-07-31T05:33:13.962771+00:00"},"current_snapshot":{"schema_version":"verify.trust_snapshot.v1","snapshot_id":"trustsnap_69fee57bf5cd1ad8","generated_at":"2026-07-31T11:06:39.916450+00:00","source":"current_snapshot","server":"ac.tandem/docs-mcp","last_validated_at":"2026-07-31T05:33:13.962771+00:00","validation_age_hours":5.56,"freshness":{"schema_version":"verify.freshness_profile.v1","last_validated_at":"2026-07-31T05:33:13.962771+00:00","age_hours":5.56,"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":70.41,"raw_score":70.41,"confidence_score":76.2,"confidence_weighted_score":53.7,"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":70.41,"display_score":70.41,"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":5.56,"live_check_count":26},"active_alerts":[]},"trust_snapshot":{"schema_version":"verify.trust_snapshot.v1","snapshot_id":"trustsnap_69fee57bf5cd1ad8","generated_at":"2026-07-31T11:06:39.916450+00:00","source":"current_snapshot","server":"ac.tandem/docs-mcp","last_validated_at":"2026-07-31T05:33:13.962771+00:00","validation_age_hours":5.56,"freshness":{"schema_version":"verify.freshness_profile.v1","last_validated_at":"2026-07-31T05:33:13.962771+00:00","age_hours":5.56,"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":70.41,"raw_score":70.41,"confidence_score":76.2,"confidence_weighted_score":53.7,"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":70.41,"display_score":70.41,"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":5.56,"live_check_count":26},"active_alerts":[]},"snapshot_invariant":{"schema_version":"verify.snapshot_invariant.v1","server":"ac.tandem/docs-mcp","ok":true,"surface_snapshot_ids":{"page":"trustsnap_69fee57bf5cd1ad8","badge":null,"report":"trustsnap_69fee57bf5cd1ad8","policy":null},"checked_at":"2026-07-31T11:06:40.297907+00:00"},"history":{"points":[{"timestamp":"2026-07-31T05:33:13.962771+00:00","score":70.41,"status":"healthy","latency_ms":2808.29,"tool_count":13,"prompt_count":3,"resource_count":50}],"status_counts":{"healthy":1},"score_delta_7d":null,"score_delta_30d":null,"avg_latency_ms":2808.29,"healthy_ratio_recent":1.0,"freshness_hours":5.56,"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":"administrative","tool_risk_score":70,"pricing_transparency":"unknown","schema_change_detected":"unknown","delegation_level":"none","evidence_level":"inferred","confidence":"low","highest_risk_tools":[{"name":"search_docs","risk_level":"administrative"},{"name":"get_start_path","risk_level":"administrative"},{"name":"recommend_next_docs","risk_level":"administrative"},{"name":"answer_how_to","risk_level":"administrative"}],"skipped_unsafe_tools":["search_docs","get_start_path","recommend_next_docs","answer_how_to","get_tandem_guide"],"last_checked_at":"2026-07-31T11:06:39.909507+00:00","evidence":[{"field":"commerce_signal","value":"weak","evidence_level":"inferred","source":"tool_schema","matched_terms":["limit","rate"],"sample":"search_docs","confidence":"low","last_checked_at":"2026-07-31T11:06:39.909507+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":10,"tool_risk_score":70,"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 5.6 hours.","live_check_count":26,"validation_age_hours":5.56},"recommended_for":[{"label":"Claude Desktop","reason":"Claude Desktop is marked compatible with score 83."},{"label":"Smithery","reason":"Smithery is marked compatible with score 80."},{"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":"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=ac.tandem%2Fdocs-mcp&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":"high","label":"High 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":"moderate","observed":true,"description":"Synthetic sessions inspecting multiple trust surfaces such as report, policy, ledger, badge, trust-summary, or compare."},"possible_agent_or_script":{"level":"moderate","observed":true,"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":"moderate","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":true,"compare_json":false,"compare_api":true,"report_json":true,"policy":true,"ledger":true,"badge_metadata":true,"badge_svg":true,"trust_summary":true,"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=ac.tandem%2Fdocs-mcp&source=report_json","trust_summary_url":"https://verify.sentinelsignal.io/v1/servers/ac.tandem/docs-mcp/trust-summary"},"related_machine_surfaces":{"compare_index":"/compare.json","compare_api":"/v1/compare?server=ac.tandem%2Fdocs-mcp","trust_summary":"/v1/servers/ac.tandem/docs-mcp/trust-summary","ledger":"/v1/servers/ac.tandem/docs-mcp/ledger","policy":"/v1/servers/ac.tandem/docs-mcp/policy","report":"/v1/servers/ac.tandem/docs-mcp/report"},"intelligence_api":{"available":true,"signup_url":"https://verify.sentinelsignal.io/verify-intelligence-api","use_case":"Programmatic MCP server trust, comparison, policy, and evidence enrichment."}}