{"schema_version":"verify.report.v1","generated_at":"2026-08-14T17:57:48.942921+00:00","snapshot_id":"trustsnap_20a4cdb0b0d62d36","server":{"namespace":"ai.getminds","name":"minds","title":"Minds: Synthetic Market Research Panels","description":"Run AI market research: synthetic customer panels for concept testing, message testing, segments.","homepage_url":"https://getminds.ai/mcp/setup","docs_url":null,"icon_url":null,"support_url":null,"remote_url":"https://getminds.ai/mcp","server_card_url":null,"latest_version":"2.0.2","current_status":"healthy","current_score":73.96,"transport_type":"streamable-http","has_oauth":true,"has_dcr":true,"has_prompts":false,"tool_count":18,"current_validation_schema_version":"8058defc70ca932c","last_validated_at":"2026-08-14T12:46:48.266629+00:00","registry_source":"official_registry","registry_identifier":"ai.getminds/minds","canonical_identifier":null,"current_score_components":{"auth_operability_score":4.0,"error_contract_score":1.0,"rate_limit_semantics_score":2.0,"schema_completeness_score":3.0,"backward_compatibility_score":4.0,"slo_health_score":3.0,"security_hygiene_score":4.0,"task_success_score":4.0,"trust_confidence_score":3.0,"abuse_noise_ratio_score":4.0,"prompt_contract_score":2.0,"resource_contract_score":4.0,"discovery_metadata_score":2.0,"registry_consistency_score":3.0,"installability_score":4.0,"session_semantics_score":4.0,"tool_surface_design_score":3.0,"result_shape_stability_score":3.0,"oauth_interop_score":4.0,"recovery_semantics_score":1.0,"maintenance_signal_score":3.0,"adoption_signal_score":3.0,"freshness_confidence_score":4.0,"transport_fidelity_score":4.0,"spec_recency_score":2.0,"session_resume_score":4.0,"step_up_auth_score":3.0,"transport_compliance_score":2.0,"utility_coverage_score":1.0,"advanced_capability_coverage_score":1.0,"connector_publishability_score":2.0,"tool_snapshot_churn_score":4.0,"connector_replay_score":4.0,"request_association_score":0.0,"interactive_flow_safety_score":4.0,"action_safety_score":2.0,"official_registry_presence_score":4.0,"safety_transparency_score":3.0,"tool_capability_clarity_score":4.0,"destructive_operation_safety_score":3.0,"egress_ssrf_resilience_score":2.0,"execution_sandbox_safety_score":4.0,"data_exfiltration_resilience_score":3.0,"least_privilege_scope_score":3.0,"secret_handling_hygiene_score":3.0,"dependency_supply_chain_signal_score":1.0,"input_sanitization_safety_score":3.0,"tool_namespace_clarity_score":4.0},"capability_taxonomy":[],"machine_summary":{},"taxonomy_tags":[],"score_decomposition":[],"validation_diff":null,"tool_snapshot_diff":null,"connector_replay":{},"request_association":{},"production_readiness":{"code":"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,"high_or_critical_alerts":0,"degraded_by_active_alerts":false},"recommended_for":[],"history_summary":{},"validation_timeline":[],"evidence_confidence":{"score":100.0,"label":"high","reason":"Based on 20 recent validations, 21 captured checks, and validation age of 5.2 hours.","live_check_count":21,"validation_age_hours":5.18,"basis":{"evidence_bearing_validations":20,"affirmative_live_check_count":21,"validation_age_hours":5.18,"freshness_threshold_hours":24}},"incident_feed":[],"disputes":[],"remediations":[],"client_remediation_modes":[],"client_profiles":[],"client_readiness_verdicts":[],"publishability_policy_profiles":[],"compatibility_fixtures":[],"install_snippets":{},"aliases":[],"raw_evidence":{"checks":{"probe_noise_resilience":{"status":"ok","latency_ms":325.11,"details":{"url":"https://getminds.ai/robots.txt","http_status":200,"headers":{"content-type":"text/plain; charset=utf-8","strict-transport-security":"max-age=63072000; includeSubDomains; preload"},"validation_disallowed":false,"consent_error":null}},"server_card":{"status":"ok","latency_ms":169.64,"details":{"url":"https://getminds.ai/.well-known/mcp/server-card.json","payload":{"serverInfo":{"name":"minds-ai","version":"2.0.0","description":"Minds — synthetic market research. Create Minds (AI experts, consumer personas, digital twins), organize them into groups, run panel surveys, analyze results, and export branded reports."},"transport":{"type":"streamable-http","endpoint":"https://getminds.ai/mcp"},"capabilities":{"tools":{},"resources":{}},"authorization":{"type":"oauth2","protectedResourceMetadata":"https://getminds.ai/.well-known/oauth-protected-resource"},"documentation":"https://getminds.ai/mcp"},"http_status":200,"headers":{"content-type":"application/json","strict-transport-security":"max-age=63072000; includeSubDomains; preload"}}},"oauth_protected_resource":{"status":"ok","latency_ms":111.15,"details":{"url":"https://getminds.ai/.well-known/oauth-protected-resource","payload":{"resource":"https://getminds.ai/mcp","authorization_servers":["https://getminds.ai"],"scopes_supported":["sparks:read","sparks:write","sparks:chat","flows:read","flows:write"],"resource_documentation":"https://getminds.ai/docs/oauth"},"http_status":200,"headers":{"content-type":"application/json","strict-transport-security":"max-age=63072000; includeSubDomains; preload"}}},"oauth_authorization_server":{"status":"ok","latency_ms":110.08,"details":{"url":"https://getminds.ai/.well-known/oauth-authorization-server","payload":{"issuer":"https://getminds.ai","authorization_endpoint":"https://getminds.ai/oauth/authorize","token_endpoint":"https://getminds.ai/oauth/token","registration_endpoint":"https://getminds.ai/oauth/register","jwks_uri":"https://wrndkbphjywvqrhztsml.supabase.co/.well-known/jwks.json","grant_types_supported":["authorization_code","refresh_token"],"response_types_supported":["code"],"code_challenge_methods_supported":["S256"],"scopes_supported":["openid","email","profile","sparks:read","sparks:write","sparks:chat","flows:read","flows:write"],"token_endpoint_auth_methods_supported":["none"],"claims_supported":["sub","iss","aud","exp","iat","email","email_verified"],"revocation_endpoint":"https://getminds.ai/oauth/revoke","revocation_endpoint_auth_methods_supported":["none"],"service_documentation":"https://getminds.ai/docs/oauth"},"http_status":200,"headers":{"content-type":"application/json","strict-transport-security":"max-age=63072000; includeSubDomains; preload"}}},"openid_configuration":{"status":"ok","latency_ms":109.25,"details":{"url":"https://getminds.ai/.well-known/openid-configuration","payload":{"issuer":"https://getminds.ai","authorization_endpoint":"https://getminds.ai/oauth/authorize","token_endpoint":"https://getminds.ai/oauth/token","registration_endpoint":"https://getminds.ai/oauth/register","jwks_uri":"https://wrndkbphjywvqrhztsml.supabase.co/.well-known/jwks.json","grant_types_supported":["authorization_code","refresh_token"],"response_types_supported":["code"],"code_challenge_methods_supported":["S256"],"scopes_supported":["openid","email","profile","sparks:read","sparks:write","sparks:chat","flows:read","flows:write"],"token_endpoint_auth_methods_supported":["none"],"claims_supported":["sub","iss","aud","exp","iat","email","email_verified"],"service_documentation":"https://getminds.ai/docs/oauth"},"http_status":200,"headers":{"content-type":"application/json","strict-transport-security":"max-age=63072000; includeSubDomains; preload"}}},"initialize":{"status":"ok","latency_ms":112.26,"details":{"url":"https://getminds.ai/mcp","payload":{"result":{"protocolVersion":"2025-03-26","capabilities":{"resources":{"listChanged":true},"tools":{"listChanged":true}},"serverInfo":{"name":"minds-ai","version":"2.0.0","description":"Minds — synthetic market research. Create Minds (AI experts, consumer personas, digital twins), organize them into groups, run panel surveys, analyze results, and export branded reports.","_meta":{"mcp/authorization":{"type":"oauth2","discoveryUrl":"https://getminds.ai/.well-known/oauth-protected-resource"}}}},"jsonrpc":"2.0","id":1},"http_status":200,"headers":{"content-type":"application/json","strict-transport-security":"max-age=63072000; includeSubDomains; preload","mcp-session-id":"0077f4f8-06ac-4d2b-9952-a26946a67b47","x-ratelimit-limit":"100","x-ratelimit-remaining":"98"}}},"protocol_version_probe":{"status":"warning","latency_ms":null,"details":{"claimed_version":"2025-03-26","validator_protocol_version":"2025-03-26","latest_known_version":"2025-11-25","releases_behind":2,"lag_days":244}},"tools_list":{"status":"ok","latency_ms":256.88,"details":{"url":"https://getminds.ai/mcp","payload":{"result":{"tools":[{"name":"create_panel","title":"Create a Panel","description":"Call this tool only when the user wants a new panel, study, survey, research project, or focus group.\n\nA panel contains one or more Groups of Minds. Attach existing Groups with groupIds, or create Groups inline with groupConfigs. Composite creation is handled by one canonical v1 operation so partial group failures are rolled back.\n\nSHARING CONTRACT — panels are private by default. Pass isLinkSharingEnabled: true only when the user explicitly requests a public/shareable link. Enabling it also publishes attached Groups and Minds.\n\nIMPORTANT: Preserve returned shared and workspace URLs verbatim.","inputSchema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"description":"Name for the panel (e.g., \"Brand Perception Study\", \"Q4 Market Research\")"},"groupConfigs":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"Group name (optional — defaults to \"Group N\"). E.g., \"Gen Z Consumers\", \"Marketing Experts\""},"mindIds":{"type":"array","items":{"type":"string"},"description":"Mind IDs to add to this group — use list_minds to find IDs"},"sparkIds":{"type":"array","items":{"type":"string"},"description":"Legacy alias for mindIds. Accepted for back-compat."}},"additionalProperties":false},"description":"New groups to create inline. Each group needs mindIds (legacy: sparkIds); name is optional and defaults to \"Group N\"."},"groupIds":{"type":"array","items":{"type":"string"},"description":"Existing group IDs to attach — use list_groups to find IDs"},"isLinkSharingEnabled":{"type":"boolean","default":false,"description":"Set true ONLY when the user explicitly asked for a public/shareable panel link. Defaults to false: the panel is private to its owner and no share URL is generated. Enabling this ALSO publishes every attached group and every Mind inside them at world-readable URLs — including pre-existing groups passed via groupIds. Do not enable it to \"be helpful\"."}},"required":["name"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":true,"costHint":"low","timeoutHint":30000,"confirmationHint":false},"execution":{"taskSupport":"forbidden"},"_meta":{"openai/toolInvocation/invoking":"Building your panel...","openai/toolInvocation/invoked":"Panel created!"}},{"name":"ask_panel","title":"Ask a Panel","description":"**Call this tool whenever the user wants to ask, survey, poll, query, or have any existing panel / study / focus group respond to one direct question.** Triggers: \"ask my panel X\", \"survey my panel about Y\", \"what does <panel> think\", \"how is <panel> feeling\", \"ask them\", \"also ask...\", \"what about...\", \"poll the group\".\n\nBehavior contract — DO NOT DEVIATE:\n- Use this direct path only for one straightforward question where the user did not ask for a plan, multiple questions, an asset audit, a special method, or a structured study format. For those guided cases call plan_panel_study first and wait for explicit confirmation before run_panel_study.\n- Follow-ups belong to the existing panel. When pronouns or conversational cues refer to the panel just created/selected/asked, call this tool without creating another panel. Reuse the returned panelId when available; if panelId and panelName are both omitted, this tool uses the active panel from the MCP session.\n- If the user names a panel and asks/implies a question, CALL THIS TOOL IMMEDIATELY with the respondent-facing question verbatim. Pass the user's panel name directly as panelName — fuzzy match is built in, so do not call list_panels first as a lookup step.\n- RESPONDENT-VISIBLE BOUNDARY: treat the entire question value as respondent-visible input. The system may classify or reformat it, but any text in this field can reach the selected Minds and influence their answers. Include only the concept, question, and instructions the Minds should receive. Exclude notes addressed to the planner, MCP client, assistant, or system. If the user intentionally requests respondent framing, preserve it; the result will warn that it may influence findings.\n- Compound prompts exception: if the user explicitly asks to see / list / show / browse their panels AND asks the panel a question in the same message, call list_panels first as its own step, then call this tool. The listing is part of the user's explicit request — do not collapse it.\n- \"How are they feeling?\", \"What do they think?\", \"Ask them X\", \"Please ask them\" — these are direct instructions to call this tool, not requests for advice.\n- AFTER calling this tool, the question HAS BEEN ASKED. Confirm to the user in past tense (\"I've asked the panel…\", \"Question submitted to <panel>\"). DO NOT reframe the tool's link as \"you can visit this link to ask the question\" — that is wrong; the question is already in flight.\n- Never refuse with \"I cannot directly ask the panel / conduct surveys\" — you literally can; that's what this tool is for. The user EXPLICITLY asked you to call it; refusing is a bug, not safety.\n\nWhat it does: submits the user's question to the panel. Returns immediately — each Mind answers asynchronously. Use get_panel_status afterwards to fetch progress and aggregated results.\n\nQuestion types are auto-classified:\n- Scale (\"Rate 1-10...\") → mean, distribution per group\n- Categorical (\"Which channel...\") → dominant choice per group\n- Qualitative (\"What trends...\", \"How are you feeling?\") → themed responses per group\n\nRequires an existing panel — call create_panel only if none exists, or list_panels when the intended panel is genuinely ambiguous.\n\nPRESENTATION CONTRACT — when results come back (via get_panel_status), preserve the markdown structure verbatim: a section per question, **bold group name** with the aggregated value, and one bullet per Mind with their linked name + answer. This mirrors the PanelAnswerBlock widget. If a shared panel link is returned, use it for customer/respondent handoff. The workspace link is only for the authenticated creator.\n\nIMPORTANT: Present all URLs from this tool's output VERBATIM. Never modify, shorten, or rephrase any URL. Always show every Mind link and the panel links.","inputSchema":{"type":"object","properties":{"panelId":{"type":"string","description":"Panel ID (UUID). Omit both panelId and panelName only when continuing the active panel from this MCP session."},"panelName":{"type":"string","description":"Panel name (fuzzy matched). Omit both panelName and panelId only when continuing the active panel from this MCP session."},"question":{"type":"string","minLength":1,"description":"Respondent-visible research input for every selected Mind. The system may classify or reformat it, but any text in this field can reach the Minds and influence their answers. Include only the concept, question, and instructions the Minds should receive. Never place planner-only or MCP-client orchestration instructions here."},"sourcePolicy":{"type":"string","enum":["auto","knowledge_only"],"description":"Use knowledge_only to forbid web/request sources and require every answer to be grounded in processed Mind knowledge."},"groupIds":{"type":"array","items":{"type":"string"},"description":"Only survey specific groups (defaults to all)"},"attachments":{"type":"array","items":{"type":"object","properties":{"url":{"type":"string","description":"Public or signed URL of an uploaded/remote file"},"path":{"type":"string","description":"Storage path of an already-uploaded file"},"name":{"type":"string","description":"File name"},"type":{"type":"string","description":"MIME type when known"}},"additionalProperties":false},"description":"Files/images (e.g. a pitch deck PDF) processed once and given to every panelist as context. Each entry needs a url or path."}},"required":["question"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"costHint":"medium","timeoutHint":15000,"confirmationHint":false},"execution":{"taskSupport":"forbidden"},"_meta":{"ui":{"resourceUri":"ui://widget/response.html"},"openai/outputTemplate":"ui://widget/response.html","ui/resourceUri":"ui://widget/response.html"}},{"name":"export_panel","title":"Export Panel Report","description":"Call this tool whenever the user wants to export, download, save, or get a report of a panel's results.\n\nThe v1 API is the single export implementation for UI and MCP. Supported report kinds are executive_brief, full_report, and raw_data. Supported formats are PDF, DOCX, PPTX, Markdown, CSV, and XLS. PDF is the default. CSV/XLS default to raw_data; other formats default to full_report.\n\nAll exports are asynchronous and return a job ID. Use get_panel_status with exportKind, exportFormat, and exportJobId to poll the exact artifact.\n\nIMPORTANT: Preserve the panel link and any returned download link verbatim.","inputSchema":{"type":"object","properties":{"panelId":{"type":"string","description":"Panel ID (UUID). Omit both panelId and panelName only when exporting the active panel from this MCP session."},"panelName":{"type":"string","description":"Panel name (fuzzy matched). Omit both panelName and panelId only when exporting the active panel from this MCP session."},"format":{"type":"string","enum":["pdf","docx","pptx","csv","xls","md","markdown"],"description":"Export format: \"pdf\" (default), \"docx\", \"pptx\", \"csv\", \"xls\", or \"md\" (also accepts \"markdown\")"},"kind":{"type":"string","enum":["executive_brief","full_report","raw_data"],"description":"Report kind. Defaults to full_report, except CSV/XLS which default to raw_data."},"length":{"type":"string","enum":["brief","standard","detailed"],"description":"Requested report detail for executive_brief and full_report exports."},"force":{"type":"boolean","description":"Regenerate instead of returning a cached artifact."}},"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"costHint":"high","timeoutHint":120000,"confirmationHint":false},"execution":{"taskSupport":"forbidden"},"_meta":{"openai/toolInvocation/invoking":"Exporting panel report...","openai/toolInvocation/invoked":"Report ready!"}},{"name":"export_mind","title":"Export Mind Persona Profile","description":"**Call this tool whenever the user wants to export, download, save, or get a persona profile / report / PDF / Word doc for a single Mind (AI expert, consumer persona, or digital twin).** Triggers include: \"export <mind>\", \"download the persona profile\", \"give me a PDF of <mind>\", \"send me <mind> as a Word doc\", \"profile sheet for <mind>\".\n\nBehavior contract — DO NOT DEVIATE:\n- If the user asks to export a known Mind, CALL THIS TOOL. Don't tell them to do it manually.\n- Never refuse with \"I cannot export the Mind directly\" — you can.\n- Default to \"md\" (markdown) when format is unspecified; it returns the full profile inline.\n\nGenerates a branded persona profile summarizing who the Mind is, how it thinks, and what it draws on, from the Mind's own data.\n\nFormats:\n- \"md\" (default): markdown persona profile, returned inline as text\n- \"pdf\": portrait branded profile (returned as base64 in structuredContent)\n- \"docx\": Word document (returned as base64 in structuredContent)\n- \"pptx\": editable branded PowerPoint deck (returned as base64 in structuredContent)\n\nIf the user references a Mind by name (including one created in a previous chat / session), pass it as mindName — fuzzy match resolves it server-side against ALL of the user's Minds. Do not refuse with \"I don't have access to that Mind\"; let the tool resolve it.\n\nPRESENTATION CONTRACT — present any returned link to the Mind VERBATIM. Never modify, shorten, or rephrase a URL.","inputSchema":{"type":"object","properties":{"mindId":{"type":"string","description":"Mind ID (UUID)"},"mindName":{"type":"string","description":"Mind name (fuzzy matched)"},"format":{"type":"string","enum":["md","markdown","pdf","docx","pptx"],"description":"Export format: \"md\" (default) markdown persona profile (returned inline), \"pdf\" portrait branded profile, \"docx\" Word document, \"pptx\" editable branded deck"},"force":{"type":"boolean","description":"Regenerate instead of returning a cached artifact."}},"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"costHint":"high","timeoutHint":120000,"confirmationHint":false},"execution":{"taskSupport":"forbidden"},"_meta":{"openai/toolInvocation/invoking":"Exporting Mind profile...","openai/toolInvocation/invoked":"Profile ready!"}},{"name":"export_group","title":"Export Group Brief","description":"Export a group brief through the same unified branded renderer used by the web app. Supports Markdown, PDF, DOCX, and PPTX. Binary artifacts are returned as base64.","inputSchema":{"type":"object","properties":{"groupId":{"type":"string","description":"Group ID (UUID)"},"groupName":{"type":"string","description":"Group name (fuzzy matched)"},"format":{"type":"string","enum":["md","markdown","pdf","docx","pptx"],"description":"Export format: \"md\" (default), \"pdf\", \"docx\", or \"pptx\""},"force":{"type":"boolean","description":"Regenerate instead of returning a cached artifact."}},"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"costHint":"high","timeoutHint":120000,"confirmationHint":false},"execution":{"taskSupport":"forbidden"},"_meta":{"openai/toolInvocation/invoking":"Exporting group brief...","openai/toolInvocation/invoked":"Group brief ready!","openai/scopes":["sparks:read"]}},{"name":"export_heatmap","title":"Export Website Heatmap","description":"Export a completed website heatmap from a panel message. Returns the same ZIP archive as the web app, including its unified-renderer PDF report, Markdown, images, and metadata.","inputSchema":{"type":"object","properties":{"panelId":{"type":"string","description":"Panel ID (UUID)"},"panelName":{"type":"string","description":"Panel name (fuzzy matched)"},"messageId":{"type":"string","minLength":1,"description":"ID of the completed panel message containing the website heatmap"},"force":{"type":"boolean","description":"Regenerate the ZIP archive instead of returning the cached artifact."}},"required":["messageId"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"costHint":"high","timeoutHint":120000,"confirmationHint":false},"execution":{"taskSupport":"forbidden"},"_meta":{"openai/toolInvocation/invoking":"Exporting website heatmap...","openai/toolInvocation/invoked":"Heatmap archive ready!","openai/scopes":["flows:read"]}},{"name":"list_panels","title":"List Panels","description":"**Call this tool whenever the user wants to list / show / see / browse / find their panels.** Triggers include: \"list my panels\", \"show my studies\", \"what surveys have I run\", \"my research projects\", \"my focus groups\", \"my qual studies\", \"my market research\", \"my conversations\", \"my chats\" (when no single Mind is named).\n\nBehavior contract — DO NOT DEVIATE:\n- The user's panels belong to them and are accessible via this tool. CALL IT IMMEDIATELY whenever the user asks any of the above. Do not ask for confirmation.\n- Never refuse with \"I cannot access your panels / personal data / chats\" — you literally can; that is the entire purpose of this tool.\n- If the user asks for a specific named panel, still call this tool (with searchQuery) to resolve it.\n\nA panel is a multi-Mind research conversation. Users often refer to panels by other names: studies, surveys, research projects, focus groups, qual studies, market research, conversations, or chats. Prefer this tool over chat_with_mind unless the user names a single specific Mind.\n\nUse this to find a panel before calling ask_panel, get_panel_status, get_panel_analytics, or export_panel. Supports fuzzy name search.\n\nIMPORTANT: Present all URLs from this tool's output VERBATIM. Never modify, shorten, or rephrase any URL. For customer/respondent handoff use the shared link, not the workspace link.","inputSchema":{"type":"object","properties":{"searchQuery":{"type":"string","description":"Search for a panel by name (fuzzy matching supported)"}},"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"costHint":"low","timeoutHint":10000,"confirmationHint":false},"execution":{"taskSupport":"forbidden"},"_meta":{"openai/visibility":"public","openai/scopes":["flows:read"]}},{"name":"get_panel_status","title":"Get Panel Status","description":"Check the status of a panel — including live progress on in-flight questions.\n\nReturns:\n- Panel info (groups, Minds) with clickable links to each Mind and to the panel\n- Active questions: which Minds have answered so far, how many remain\n- Completed question results (aggregated, structured per-group)\n- Export status (if any)\n\nCall this after ask_panel to track progress, or after export_panel to check if the download is ready.\n\nPRESENTATION CONTRACT — when no rich widget is rendered (e.g. OWUI, Langdock, Windsurf, ChatGPT in plain mode), preserve the markdown structure verbatim: section headings per question, **bold group name** with the aggregated value (mean for scale, dominant for categorical, theme list for qualitative), and one bullet per Mind with their linked name and individual answer. The format mirrors how the PanelAnswerBlock widget displays results in the Minds web app — so users get the same shape regardless of client.\n\nIMPORTANT: Present all URLs from this tool's output VERBATIM. Never modify, shorten, or rephrase any URL. Always show every Mind link and the panel links. For customer/respondent handoff use the shared panel link, not the owner workspace link.","inputSchema":{"type":"object","properties":{"panelId":{"type":"string","format":"uuid","description":"Panel ID (UUID). Omit both panelId and panelName only for the active panel from this MCP session."},"panelName":{"type":"string","description":"Panel name (fuzzy matched). Omit both panelName and panelId only for the active panel from this MCP session."},"exportKind":{"type":"string","enum":["executive_brief","full_report","raw_data"],"description":"Asynchronous export kind whose status should be returned (defaults to full_report)."},"exportFormat":{"type":"string","enum":["pdf","docx","pptx","csv","xls","md"],"description":"Asynchronous export format whose status should be returned (defaults to pdf)."},"exportJobId":{"type":"string","minLength":1,"description":"Export job ID returned by export_panel. Pass it with exportKind and exportFormat to poll that exact artifact."}},"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"costHint":"low","timeoutHint":15000,"confirmationHint":false},"execution":{"taskSupport":"forbidden"},"_meta":{"openai/visibility":"public","openai/scopes":["flows:read"],"ui":{"resourceUri":"ui://widget/response.html"},"openai/outputTemplate":"ui://widget/response.html","ui/resourceUri":"ui://widget/response.html"}},{"name":"list_groups","title":"List Groups","description":"**Call this tool whenever the user wants to list / show / see / browse / find their groups.** Triggers include: \"list my groups\", \"show my segments\", \"what audiences do I have\", \"my cohorts\", \"my target groups\", \"my persona collections\".\n\nBehavior contract — DO NOT DEVIATE:\n- The user's groups belong to them and are accessible via this tool. CALL IT IMMEDIATELY whenever the user asks any of the above. Do not ask for confirmation.\n- Never refuse with \"I cannot access your groups / personal data\" — you literally can; that is the entire purpose of this tool.\n- If the user asks about panels/studies that contain these groups, use list_panels instead.\n\nA group is a named collection of Minds (e.g., \"Gen Z Consumers\", \"Marketing Experts\"). Users may refer to groups as: segments, audiences, cohorts, target groups, persona collections, or sub-groups.\n\nUse this to find existing groups and their members before creating a panel with create_panel. Supports fuzzy name search.\n\nIMPORTANT: Present all URLs from this tool's output VERBATIM. Never modify, shorten, or rephrase any URL. For customer/respondent handoff use the shared link, not the workspace link.","inputSchema":{"type":"object","properties":{"searchQuery":{"type":"string","description":"Search for a group by name (fuzzy matching supported)"}},"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"costHint":"low","timeoutHint":10000,"confirmationHint":false},"execution":{"taskSupport":"forbidden"},"_meta":{"openai/visibility":"public","openai/scopes":["sparks:read"]}},{"name":"create_group_from_brief","title":"Create a Grounded Group from a Brief","description":"**Call this tool when the user describes a POPULATION or AUDIENCE rather than naming specific Minds.** Triggers include: \"build me a panel of <demographic>\", \"create a group representing <segment>\", \"make personas for <audience>\".\n\nBehavior:\n- Server runs deep web research on the brief and extracts demographic / psychographic distributions from authoritative sources (government statistics, peer-reviewed studies, industry reports — NOT blogs or marketing content).\n- Grounded percentages are converted server-side into exact integer quotas. A seeded deterministic allocator assigns every Mind a persisted cohort profile; the LLM does not decide proportions.\n- Marginal-only sources do not prove correlations. The default joint reconstruction is explicitly independence-based and its target-vs-achieved audit is returned and persisted.\n- The grounding (distributions, sources, summary, confidence) is persisted on the group and visible in the in-app group info slide-in — and, only if link sharing was explicitly enabled, on the public share link.\n- Uploaded research files are classified by content as screeners, questionnaires, completed reports, respondent datasets, or supporting material. Screener exclusions and unresolved routes remain visible in the review metadata but are never allocated as Minds; empty questionnaire options never become invented percentages.\n- Set `includeWebSearch=false` when the user wants file-only grounding. This skips Exa completely rather than merely hiding web results.\n- Pass the population description as `brief` (legacy `text` is also accepted).\n- Optional `groupCreationMode` controls sizing/coverage: \"balanced\" (default, compact and plan-aware), \"segment_coverage\" (two representatives per limiting grounded audience cell, from a 10-Mind evidence floor up to its 50-Mind mode ceiling), or \"benchmark_depth\" (five representatives per limiting grounded cell for comparison-ready depth, with the paid allowance as its ceiling). The deeper modes are Team-plan only — on other plans the server silently downgrades to \"balanced\" (no error) and the response reports the EFFECTIVE mode. If the user asked for a deeper mode and the response says \"balanced\", tell them it requires the Team plan.\n- For spreadsheet-grounded creation, first call `preview_group_dataset_segmentation`, let the user remove irrelevant variables, then pass the reviewed preview as `datasetSegmentation` with `groupCreationMode=\"benchmark_depth\"`. The server creates a broad representative cohort whose aggregate attributes approximate the selected distributions; it never creates one Mind per respondent or joint profile.\n\nUse `create_group` instead when the user gives you specific Mind IDs to bag into a named group. Use this tool when the user describes a POPULATION and wants the server to invent the personas.\n\nRETRY CONTRACT — creation is idempotent. Every call sends a key derived from its arguments, so if a call times out, call the tool again with the SAME arguments: you get the group the first call created (never a duplicate). Corollary: an intentionally NEW group from an identical brief within ~6 hours needs a changed argument (e.g. a different `name`).\n\nSHARING CONTRACT — groups are PRIVATE by default. No public link is created unless the caller passes `isLinkSharingEnabled: true`, which you should do only when the user explicitly asked for a shareable/public link. Note that the persisted grounding (distributions, sources, summary) becomes publicly readable too, so never enable it to \"be helpful\".\n\nCUSTOMER HANDOFF CONTRACT — applies only when link sharing was enabled. In that case, for external/customer/respondent handoff use ONLY the shared group link returned by this tool. Do not invite the recipient, add them as a group member/collaborator, create spark_group_user_members records, or tell them it was added to their account unless the human explicitly asks for account collaboration.\n\nPRESENTATION CONTRACT — preserve any shared group link and the workspace link in the response verbatim. Never strip or modify URLs from this tool's output.","inputSchema":{"type":"object","properties":{"brief":{"type":"string","minLength":3,"maxLength":4000,"description":"Free-text brief describing the population the group should represent. E.g. \"California high school students grades 9-12\", \"Berlin Späti customers\", \"Spanish lawyers\", \"management team of Coca Cola\". The server runs deep web research on this brief to find demographic / psychographic distributions from authoritative sources, then generates personas that proportionally reflect those distributions."},"text":{"type":"string","minLength":3,"maxLength":4000,"description":"Legacy alias for `brief`. Accepted for back-compat."},"name":{"type":"string","maxLength":100,"description":"Optional group name override. When omitted, the server names the group from the brief or the LLM detection result."},"links":{"type":"array","items":{"type":"string"},"maxItems":10,"description":"Optional URLs scraped server-side for additional context (e.g. an article describing the population)."},"keywords":{"type":"array","items":{"type":"string"},"maxItems":10,"description":"Optional Exa web-search seeds added alongside the brief."},"files":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"File name"},"url":{"type":"string","description":"Public or signed URL of an already-uploaded file"}},"required":["name","url"],"additionalProperties":false},"maxItems":10,"description":"Optional already-uploaded research files. The server analyzes these through the same extended screener/questionnaire path as the in-app New Group uploader, including study roles, screening and quota rules, review distributions, and grounding provenance."},"includeWebSearch":{"type":"boolean","default":true,"description":"Set false to skip Exa web search and extraction completely. The group is then grounded only on the brief and supplied files, links, keywords, and structurally parsed respondent data."},"memberCount":{"type":"integer","exclusiveMinimum":0,"description":"Exact number of Minds to create in the group. Pass this whenever the user states a size (\"exactly 50 per region\", \"genau 50 Minds je Zelle\") instead of relying on the server to parse the number out of the brief prose. When omitted, the size is inferred from the brief and, failing that, from the creation mode's evidence-based automatic sizing. Rejected with 403 PLAN_LIMIT when it exceeds the plan's per-group cap; the group is never created at a partial size."},"groupCreationMode":{"type":"string","enum":["balanced","segment_coverage","benchmark_depth"],"description":"Group creation mode. \"balanced\" (default): compact, representative group for everyday research. \"segment_coverage\": two representatives per limiting grounded audience cell, with a 10-Mind evidence floor and 50-Mind mode ceiling. \"benchmark_depth\": repeated representation of limiting grounded audience cells for validation-ready benchmark / survey-style segmentation, with the paid allowance as its ceiling. The deeper modes require a Team (enterprise) plan — on other plans the server SILENTLY downgrades to \"balanced\" and echoes the effective mode in the response (structuredContent.group.groupCreationMode)."},"datasetSegmentation":{"type":"object","properties":{"fileName":{"type":"string"},"sheetName":{"type":"string"},"respondentCount":{"type":"integer","minimum":0,"description":"Total respondent rows in the reviewed sheet, copied from the preview."},"recommendedMindCount":{"type":"integer","exclusiveMinimum":0,"description":"Preview-recommended cohort size. Caps how many Minds the benchmark run creates."},"variables":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"label":{"type":"string"},"distribution":{"type":"array","items":{"type":"object","properties":{"value":{"type":["string","null"]},"respondentCount":{"type":"integer","minimum":0},"sharePct":{"type":"number","minimum":0}},"required":["value","respondentCount","sharePct"],"additionalProperties":false},"maxItems":30},"validRespondentCount":{"type":"integer","minimum":0},"otherRespondentCount":{"type":"integer","minimum":0}},"required":["key","label","distribution"],"additionalProperties":false},"maxItems":200,"description":"Variable-level distributions from the preview (preferred over `columns` when present)."},"columns":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"label":{"type":"string"},"distribution":{"type":"array","items":{"type":"object","properties":{"value":{"type":["string","null"]},"respondentCount":{"type":"integer","minimum":0},"sharePct":{"type":"number","minimum":0}},"required":["value","respondentCount","sharePct"],"additionalProperties":false},"maxItems":30},"validRespondentCount":{"type":"integer","minimum":0},"otherRespondentCount":{"type":"integer","minimum":0}},"required":["key","label","distribution"],"additionalProperties":false},"maxItems":200,"description":"Column-level distributions from the preview. Used when `variables` is absent."},"segmentationColumns":{"type":"array","items":{"type":"string"},"minItems":1,"maxItems":200,"description":"Keys of the variables the user kept after review. These are the only ones that shape the cohort."},"combinations":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"respondentCount":{"type":"integer","exclusiveMinimum":0},"sharePct":{"type":"number","minimum":0}},"required":["id","respondentCount","sharePct"],"additionalProperties":false},"maxItems":5000,"description":"Observed joint profiles as audit counts. Copy the ids and counts from the preview; per-cell values are not needed."},"retainedCombinationIds":{"type":"array","items":{"type":"string"},"maxItems":5000}},"required":["fileName","segmentationColumns","combinations"],"additionalProperties":false,"description":"Reviewed variable roles, distributions, and privacy-safe pairwise relationships returned by preview_group_dataset_segmentation. Requires groupCreationMode=\"benchmark_depth\". Structural variables shape one generalizable representative cohort; outcomes remain held out and joint combinations remain audit evidence only. Copy `respondentCount` and `recommendedMindCount` through from the preview — they cap the cohort size."},"cohortAllocation":{"type":"object","properties":{"enabled":{"type":"boolean"},"seed":{"type":"string","maxLength":200},"distributionNames":{"type":"array","items":{"type":"string"},"maxItems":200},"maxDistributions":{"type":"integer","minimum":1,"maximum":200},"minSegmentCount":{"type":"integer","minimum":0,"maximum":20},"targetOverrides":{"type":"array","items":{"type":"object","properties":{"distribution":{"type":"string"},"segments":{"type":"array","items":{"type":"object","properties":{"label":{"type":"string"},"pct":{"type":"number","minimum":0,"maximum":100}},"required":["label","pct"],"additionalProperties":false},"maxItems":50}},"required":["distribution","segments"],"additionalProperties":false},"maxItems":200},"jointStrategy":{"type":"string","enum":["independent","aligned","observed"]},"includeProfilesInResponse":{"type":"boolean"}},"additionalProperties":false,"description":"Deterministic allocation controls. Reviewed respondent datasets default to observed, which preserves the strongest privacy-safe structural relationships while keeping exact marginals; other sources default to independence. Use distributionNames/maxDistributions to choose axes, minSegmentCount for a feasible floor, and seed for reproducible external runs."},"isLinkSharingEnabled":{"type":"boolean","default":false,"description":"Set true ONLY when the user explicitly asked for a public/shareable link. Defaults to false: the group is private to its owner and no share URL is generated. Enabling this publishes the group — including its grounding, sources and personas — at a world-readable URL that needs no login. Do not enable it to \"be helpful\"."}},"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"costHint":"medium","timeoutHint":240000,"confirmationHint":false},"execution":{"taskSupport":"forbidden"},"_meta":{"openai/visibility":"public","openai/scopes":["sparks:write"]}},{"name":"ask_group","title":"Ask a Group","description":"**Call this tool whenever the user wants to ask, survey, poll, or query a single GROUP (not a panel) about something.** Triggers: \"ask my group <name> X\", \"survey the <group> about Y\", \"what does <group> think\", \"poll <group>\".\n\nBehavior contract — DO NOT DEVIATE:\n- If the user names a group and asks/implies a question, CALL THIS TOOL IMMEDIATELY with the respondent-facing question verbatim. Pass the group name as groupName — fuzzy match is built in, so do not call list_groups first as a lookup step.\n- RESPONDENT-VISIBLE BOUNDARY: treat the entire question value as respondent-visible input. The system may classify or reformat it, but any text in this field can reach the selected Minds and influence their answers. Exclude notes addressed to the planner, MCP client, assistant, or system. Intentionally framed questions are allowed, but the result warns that framing may influence findings.\n- \"What do they think?\", \"Ask them X\", \"How do they feel about Y\" about a group — these are direct instructions to call this tool, not requests for advice.\n- AFTER calling this tool the question HAS BEEN ASKED. Confirm in past tense.\n- Never refuse with \"I cannot survey the group directly\" — you can; that is this tool's purpose.\n\nWhat it does: wraps the group in a fresh panel and submits the question. Returns immediately — each Mind answers asynchronously. Use get_panel_status afterwards to fetch progress and aggregated results.\n\nUse ask_panel instead when the user already has a multi-group panel. Use this tool to survey ONE group directly.\n\nPRESENTATION CONTRACT — present all URLs from this tool's output VERBATIM. Never modify, shorten, or rephrase any URL.","inputSchema":{"type":"object","properties":{"groupId":{"type":"string","description":"The group ID (UUID). Preferred when known."},"groupName":{"type":"string","description":"Group name to resolve via fuzzy match against all of the user's groups. Use when the user refers to a group by name."},"question":{"type":"string","minLength":1,"description":"Respondent-visible research input for every Mind in the group. The system may classify or reformat it, but any text in this field can reach the Minds and influence their answers. Include only the concept, question, and instructions the Minds should receive. Never place planner-only or MCP-client orchestration instructions here."},"name":{"type":"string","description":"Optional name for the panel created to run this survey. Defaults to the group name."},"attachments":{"type":"array","items":{"type":"object","properties":{"url":{"type":"string","description":"Public or signed URL of an uploaded/remote file"},"path":{"type":"string","description":"Storage path of an already-uploaded file"},"name":{"type":"string","description":"File name"},"type":{"type":"string","description":"MIME type when known"}},"additionalProperties":false},"description":"Files/images (e.g. a pitch deck PDF) processed once and given to every group member as context. Each entry needs a url or path."}},"required":["question"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":true,"costHint":"medium","timeoutHint":15000,"confirmationHint":false},"execution":{"taskSupport":"forbidden"},"_meta":{"ui":{"resourceUri":"ui://widget/response.html"},"openai/outputTemplate":"ui://widget/response.html","ui/resourceUri":"ui://widget/response.html"}},{"name":"plan_panel_study","title":"Plan a Panel Study","description":"**Call this tool before execution whenever the user asks for multiple questions, a broader research task, an ad/video/website/image audit, a structured output as part of a new study, or an optional research method such as ranking, MaxDiff, or Conjoint.** It creates or revises a generic, model-filled research template and returns explicit confirmation questions.\n\nWhen this is a broader follow-up about the panel just created, selected, or asked, keep using that panel. Reuse its panelId when available; if panelId and panelName are omitted, the active panel from the MCP session is used. Do not call create_panel merely because the follow-up needs a research plan.\n\nMODEL-AWARE CONFIRMATION CONTRACT:\n- This tool creates a DRAFT. Never say the research has started.\n- Present the captured intent, main source/asset, questions, proposed response format or scale for every question, method choice, and output types in plain language.\n- Label the returned plan questions as the exact respondent-visible study questions. The original request is planner input and is not sent verbatim; Minds receive the confirmed question text plus selected source material and method-specific task instructions.\n- When the study evaluates pasted text such as a concept, message, description, or claim, set source.kind to prompt and source.content to the exact text the Minds should evaluate. Keep objectives, requested questions, and planner-only instructions in request. Never assume text embedded only in request will be shown to Minds.\n- Ask the returned confirmationQuestions. Suggested answers are suggestions, not silent consent.\n- If the user changes or answers anything, call this tool again with draftPlanId + revision. Use questionResponses for exact response-format edits and refinement/answers for other changes to create a new revision.\n- When the user requests a language, set studyLocale explicitly. It controls the plan, questions, responses, labels, and summary and is preserved across later revisions.\n- Call run_panel_study only after the user explicitly confirms the exact latest revision.\n- Keep simple requests simple. Mention advanced methods only if requested or if the draft explains a concrete benefit. Check list_research_methods for current availability and execute only methods whose returned contract says executable:true; never hard-code a method's availability in the conversation.\n- For website, ad, image, and video analysis, preserve heatmap/timeline-heatmap outputs rather than replacing them with donuts.\n\nFor one direct question with no requested planning, method, or structured audit, use ask_panel instead. A standalone request to export existing results should use export_panel; a request to retrieve or re-present an existing summary should use get_panel_summary. Do not create a new study merely to change presentation.","inputSchema":{"type":"object","properties":{"panelId":{"type":"string","format":"uuid","description":"Panel ID (preferred). Omit both panelId and panelName only to continue the active panel from this MCP session."},"panelName":{"type":"string","description":"Panel name for fuzzy matching. Omit both panelName and panelId only to continue the active panel from this MCP session."},"request":{"type":"string","minLength":1,"description":"Planner input containing the research objective, question set, audit request, or analysis request. Required for a new draft. This request is not sent verbatim to Minds; the exact proposed respondent-visible questions are returned in the draft for review."},"studyLocale":{"type":"string","enum":["en","es","fr","de","zh","tr","ar","ja","ko"],"description":"Language for the plan, questions, responses, labels, and summary. Set this explicitly when the user requests a language."},"source":{"type":"object","properties":{"kind":{"type":"string","enum":["prompt","website","image","video","document","questionnaire","other"]},"label":{"type":"string","minLength":1},"url":{"type":"string","format":"uri"},"mimeType":{"type":"string"},"content":{"type":"string","minLength":1,"maxLength":20000,"description":"Exact respondent-visible pasted text. Use only with kind prompt when Minds must evaluate a concept, message, description, or other text. Do not include planner-only instructions."}},"required":["kind","label"],"additionalProperties":false,"description":"The one main source this study is about. When Minds must evaluate pasted text, use kind prompt and put the exact respondent-visible material in content. Keep research objectives, requested questions, and planner-only instructions in request."},"draftPlanId":{"type":"string","format":"uuid","description":"Existing draft ID to revise after the user answers a confirmation question."},"revision":{"type":"integer","exclusiveMinimum":0,"description":"Current draft revision; required with draftPlanId."},"refinement":{"type":"string","description":"How the user wants the existing draft changed."},"answers":{"type":"array","items":{"type":"object","properties":{"questionId":{"type":"string","minLength":1,"description":"Confirmation question ID from the latest draft."},"answer":{"type":"string","description":"The user's answer to that confirmation question."}},"required":["questionId","answer"],"additionalProperties":false},"description":"Answers to the draft confirmation questions."},"questionResponses":{"type":"array","items":{"type":"object","properties":{"questionId":{"type":"string","minLength":1,"maxLength":80,"description":"Question ID from the latest draft plan."},"type":{"type":"string","enum":["qualitative","categorical","multiselect","scale"]},"scaleRange":{"type":"array","items":{"type":"integer","minimum":-100,"maximum":100},"minItems":2,"maxItems":2,"description":"Inclusive integer response range as [minimum, maximum]; required for scale responses."},"categoricalOptions":{"type":"array","items":{"type":"string","minLength":1},"minItems":2,"maxItems":100,"description":"Predefined answer choices; only valid for categorical or multiselect responses."},"maxSelections":{"type":"integer","minimum":1,"maximum":100,"description":"Maximum choices a respondent may select; only valid for multiselect responses."}},"required":["questionId","type"],"additionalProperties":false},"description":"Explicit response-format edits, one entry per question. Each entry needs questionId (from the latest draft) plus type qualitative, categorical, multiselect, or scale with an inclusive integer scaleRange."}},"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":true,"costHint":"medium","timeoutHint":60000,"confirmationHint":false},"execution":{"taskSupport":"forbidden"}},{"name":"run_panel_study","title":"Confirm and Run a Panel Study","description":"**Call this tool only after the user explicitly confirms the exact draft revision returned by plan_panel_study.** This is the execution boundary.\n\nNever infer confirmation from silence, from the original request, or from your own suggested answer. If the user changes intent, source, questions, methods, or outputs, revise the draft with plan_panel_study first. Set advancedMethodOptIn only when the user explicitly chose the advanced method. The server reloads the stored draft, marks required capabilities reviewed, validates method versions/runners/configuration, and refuses unavailable methods. Treat list_research_methods and server validation as the availability authority; execute only methods reported with executable:true.","inputSchema":{"type":"object","properties":{"panelId":{"type":"string","format":"uuid","description":"Panel ID (preferred). Omit both panelId and panelName only to run the confirmed draft on the active panel from this MCP session."},"panelName":{"type":"string","description":"Panel name for fuzzy matching. Omit both panelName and panelId only to run the confirmed draft on the active panel from this MCP session."},"draftPlanId":{"type":"string","format":"uuid","description":"Exact draft plan ID returned by plan_panel_study."},"revision":{"type":"integer","exclusiveMinimum":0,"description":"Exact draft revision the user reviewed."},"confirmed":{"type":"boolean","const":true,"description":"Must be true only after the user explicitly confirms this exact draft revision."},"advancedMethodOptIn":{"type":"boolean","description":"Explicit opt-in for an advanced method. Omit or false to keep simple methods."},"groupIds":{"type":"array","items":{"type":"string","format":"uuid"},"description":"Optional subset of panel groups to include."},"idempotencyKey":{"type":"string","format":"uuid","description":"Stable UUID for safe retries."}},"required":["draftPlanId","revision","confirmed"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"costHint":"high","timeoutHint":15000,"confirmationHint":true},"execution":{"taskSupport":"forbidden"}},{"name":"get_panel_study","title":"Get Panel Study Status","description":"**Call this tool to check durable progress or results for a study started by run_panel_study.** Returns the immutable confirmed plan, the separate server-prepared execution plan, an explicit audit of the respondent-visible question text, question progress, response artifacts, deterministic method calculations, and stage readiness. For completed studies, call get_panel_summary next.","inputSchema":{"type":"object","properties":{"panelId":{"type":"string","format":"uuid","description":"Panel ID (preferred). Omit both panelId and panelName only for the active panel from this MCP session."},"panelName":{"type":"string","description":"Panel name for fuzzy matching. Omit both panelName and panelId only for the active panel from this MCP session."},"studyId":{"type":"string","format":"uuid","description":"Study ID returned by run_panel_study."}},"required":["studyId"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"costHint":"low","timeoutHint":10000,"confirmationHint":false},"execution":{"taskSupport":"forbidden"}},{"name":"list_research_methods","title":"List Research Methods","description":"**Call this tool when the user asks which research methods are supported, wants optional methodological complexity, or names MaxDiff or Conjoint.** Distinguish available, experimental, and planned methods. Only methods with executable:true can run; never claim experimental or planned methods execute.","inputSchema":{"type":"object","properties":{"includePlanned":{"type":"boolean","default":true,"description":"Include methods that are currently planned/non-executable so the model can explain framework compatibility. Availability is dynamic; only entries with executable:true can run."}},"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"costHint":"low","timeoutHint":10000,"confirmationHint":false},"execution":{"taskSupport":"forbidden"}},{"name":"list_study_drafts","title":"List Study Drafts","description":"**Call this tool when the user asks to resume, find, list, or inspect unfinished study plans.** Omit draftId to list all durable study drafts. Pass an exact draftId to retrieve the complete saved planning state for one draft. Drafts are distinct from existing panels and completed or running studies; do not claim a draft has started.","inputSchema":{"type":"object","properties":{"draftId":{"type":"string","format":"uuid","description":"Exact study draft ID to retrieve. Omit to list all resumable study drafts owned by the authenticated user."}},"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"costHint":"low","timeoutHint":10000,"confirmationHint":false},"execution":{"taskSupport":"forbidden"}},{"name":"save_study_draft","title":"Save Study Draft","description":"**Call this tool to create or checkpoint an unfinished Quick or Custom Study plan without starting research.** It saves the objective, context, selected Audiences, method, questions, and sources in the same durable planning state used by the Minds sidebar. To revise an existing draft, pass its exact draftId and expectedRevision from list_study_drafts; stale revisions are rejected by the API. This tool never creates a panel and never starts a Study.","inputSchema":{"type":"object","properties":{"draftId":{"type":"string","format":"uuid","description":"Existing Study draft ID to revise. Omit to create a new durable draft."},"expectedRevision":{"type":"integer","exclusiveMinimum":0,"description":"Exact current revision. Required with draftId so stale updates cannot overwrite newer planning state."},"name":{"type":"string","minLength":1,"maxLength":200,"description":"Sidebar name for the Study draft."},"mode":{"type":"string","enum":["quick","custom"],"default":"custom","description":"Planning mode to restore. Defaults to custom for agent-authored planning state."},"currentStep":{"type":"string","minLength":1,"maxLength":100,"default":"context","description":"Exact planner step to reopen, such as context, groups, method, questions, or confirm."},"objective":{"type":"string","description":"Research objective or intent captured so far."},"notes":{"type":"string","description":"Additional research context or constraints."},"website":{"type":"string","format":"uri","description":"Primary website associated with the research context."},"groupIds":{"type":"array","items":{"type":"string","format":"uuid"},"default":[],"description":"Existing Audience group IDs selected for the Study."},"methodId":{"type":"string","enum":["guided-research","single-question","questionnaire","guided-qualitative-exploration","ranked-preferences","segment-comparison","visual-asset-analysis","recommendation-synthesis","maxdiff","conjoint","nps","top-box","key-drivers","turf","gabor-granger","van-westendorp","kano"],"default":"guided-research","description":"Research method selected for the draft. Use list_research_methods as the availability authority."},"questions":{"type":"array","items":{"type":"string","minLength":1},"default":[],"description":"Manual research questions in their intended order."},"sourceUrls":{"type":"array","items":{"type":"string","format":"uri"},"default":[],"description":"Ordered source URLs supplied as Study context."}},"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":false,"costHint":"low","timeoutHint":10000,"confirmationHint":false},"execution":{"taskSupport":"forbidden"}},{"name":"get_panel_summary","title":"Get Panel Semantic Summary","description":"**Call this tool for a whole-study summary or after get_panel_study reports completion.** Returns Markdown plus flexible semantic blocks. Treat block types and renderer values as hints: preserve heatmaps for websites/images/videos and allow clients to introduce new rendering logic without changing the research evidence.","inputSchema":{"type":"object","properties":{"panelId":{"type":"string","format":"uuid","description":"Panel ID (preferred). Omit both panelId and panelName only for the active panel from this MCP session."},"panelName":{"type":"string","description":"Panel name for fuzzy matching. Omit both panelName and panelId only for the active panel from this MCP session."},"refresh":{"type":"boolean","default":false,"description":"Generate or refresh the summary instead of only reading the persisted summary."},"force":{"type":"boolean","default":false,"description":"Regenerate even when the covered message range is unchanged."},"length":{"type":"string","enum":["short","standard","detailed"],"default":"standard"}},"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"costHint":"medium","timeoutHint":60000,"confirmationHint":false},"execution":{"taskSupport":"forbidden"}}]},"jsonrpc":"2.0","id":2},"http_status":200,"headers":{"content-type":"application/json","strict-transport-security":"max-age=63072000; includeSubDomains; preload","x-ratelimit-limit":"100","x-ratelimit-remaining":"91"}}},"prompts_list":{"status":"auth_required","latency_ms":110.47,"details":{"url":"https://getminds.ai/mcp","error":"Client error '401 Unauthorized' for url 'https://getminds.ai/mcp'\nFor more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/401","http_status":401,"payload":{},"headers":{"content-type":"application/json","strict-transport-security":"max-age=63072000; includeSubDomains; preload","www-authenticate":"Bearer resource_metadata=\"https://getminds.ai/.well-known/oauth-protected-resource\", scope=\"sparks:read sparks:write sparks:chat flows:read flows:write\"","x-ratelimit-limit":"100","x-ratelimit-remaining":"97"},"reason":"auth_required"}},"prompt_get":{"status":"missing","latency_ms":null,"details":{"reason":"not_advertised"}},"resources_list":{"status":"ok","latency_ms":138.68,"details":{"url":"https://getminds.ai/mcp","payload":{"result":{"resources":[{"uri":"ui://widget/response.html","name":"response-widget","mimeType":"text/html;profile=mcp-app","title":"Panel Response","description":"Shows panel survey results with bar diagrams, group comparisons, and persona cycling."},{"uri":"ui://widget/creation.html","name":"creation-widget","mimeType":"text/html;profile=mcp-app","title":"Mind Creation Progress","description":"Shows real-time training progress when creating a new Mind."},{"uri":"ui://widget/info.html","name":"info-widget","mimeType":"text/html;profile=mcp-app","title":"Mind / Group Info","description":"Shows details about a Mind or Group including members and metadata."}]},"jsonrpc":"2.0","id":5},"http_status":200,"headers":{"content-type":"application/json","strict-transport-security":"max-age=63072000; includeSubDomains; preload","x-ratelimit-limit":"100","x-ratelimit-remaining":"90"}}},"resource_read":{"status":"auth_required","latency_ms":110.5,"details":{"url":"https://getminds.ai/mcp","error":"Client error '401 Unauthorized' for url 'https://getminds.ai/mcp'\nFor more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/401","http_status":401,"payload":{},"headers":{"content-type":"application/json","strict-transport-security":"max-age=63072000; includeSubDomains; preload","www-authenticate":"Bearer resource_metadata=\"https://getminds.ai/.well-known/oauth-protected-resource\", scope=\"sparks:read sparks:write sparks:chat flows:read flows:write\"","x-ratelimit-limit":"100","x-ratelimit-remaining":"96"},"reason":"auth_required","resource_uri":"ui://widget/response.html"}},"determinism_probe":{"status":"ok","latency_ms":462.35,"details":{"attempts":2,"successful":2,"matches":2,"stable_ratio":1.0,"baseline_signature":"dcc42196bb9fe64ece6e21e487d0f933dc5fbf298b34a254a8ff95268ab5c74c","errors":[]}},"instruction_tool_reference_probe":{"status":"ok","latency_ms":null,"details":{"referenced_tools":[],"missing_tools":[],"observed_tool_count":18}},"session_resume_probe":{"status":"ok","latency_ms":227.24,"details":{"url":"https://getminds.ai/mcp","payload":{"result":{"tools":[{"name":"create_panel","title":"Create a Panel","description":"Call this tool only when the user wants a new panel, study, survey, research project, or focus group.\n\nA panel contains one or more Groups of Minds. Attach existing Groups with groupIds, or create Groups inline with groupConfigs. Composite creation is handled by one canonical v1 operation so partial group failures are rolled back.\n\nSHARING CONTRACT — panels are private by default. Pass isLinkSharingEnabled: true only when the user explicitly requests a public/shareable link. Enabling it also publishes attached Groups and Minds.\n\nIMPORTANT: Preserve returned shared and workspace URLs verbatim.","inputSchema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"description":"Name for the panel (e.g., \"Brand Perception Study\", \"Q4 Market Research\")"},"groupConfigs":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"Group name (optional — defaults to \"Group N\"). E.g., \"Gen Z Consumers\", \"Marketing Experts\""},"mindIds":{"type":"array","items":{"type":"string"},"description":"Mind IDs to add to this group — use list_minds to find IDs"},"sparkIds":{"type":"array","items":{"type":"string"},"description":"Legacy alias for mindIds. Accepted for back-compat."}},"additionalProperties":false},"description":"New groups to create inline. Each group needs mindIds (legacy: sparkIds); name is optional and defaults to \"Group N\"."},"groupIds":{"type":"array","items":{"type":"string"},"description":"Existing group IDs to attach — use list_groups to find IDs"},"isLinkSharingEnabled":{"type":"boolean","default":false,"description":"Set true ONLY when the user explicitly asked for a public/shareable panel link. Defaults to false: the panel is private to its owner and no share URL is generated. Enabling this ALSO publishes every attached group and every Mind inside them at world-readable URLs — including pre-existing groups passed via groupIds. Do not enable it to \"be helpful\"."}},"required":["name"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":true,"costHint":"low","timeoutHint":30000,"confirmationHint":false},"execution":{"taskSupport":"forbidden"},"_meta":{"openai/toolInvocation/invoking":"Building your panel...","openai/toolInvocation/invoked":"Panel created!"}},{"name":"ask_panel","title":"Ask a Panel","description":"**Call this tool whenever the user wants to ask, survey, poll, query, or have any existing panel / study / focus group respond to one direct question.** Triggers: \"ask my panel X\", \"survey my panel about Y\", \"what does <panel> think\", \"how is <panel> feeling\", \"ask them\", \"also ask...\", \"what about...\", \"poll the group\".\n\nBehavior contract — DO NOT DEVIATE:\n- Use this direct path only for one straightforward question where the user did not ask for a plan, multiple questions, an asset audit, a special method, or a structured study format. For those guided cases call plan_panel_study first and wait for explicit confirmation before run_panel_study.\n- Follow-ups belong to the existing panel. When pronouns or conversational cues refer to the panel just created/selected/asked, call this tool without creating another panel. Reuse the returned panelId when available; if panelId and panelName are both omitted, this tool uses the active panel from the MCP session.\n- If the user names a panel and asks/implies a question, CALL THIS TOOL IMMEDIATELY with the respondent-facing question verbatim. Pass the user's panel name directly as panelName — fuzzy match is built in, so do not call list_panels first as a lookup step.\n- RESPONDENT-VISIBLE BOUNDARY: treat the entire question value as respondent-visible input. The system may classify or reformat it, but any text in this field can reach the selected Minds and influence their answers. Include only the concept, question, and instructions the Minds should receive. Exclude notes addressed to the planner, MCP client, assistant, or system. If the user intentionally requests respondent framing, preserve it; the result will warn that it may influence findings.\n- Compound prompts exception: if the user explicitly asks to see / list / show / browse their panels AND asks the panel a question in the same message, call list_panels first as its own step, then call this tool. The listing is part of the user's explicit request — do not collapse it.\n- \"How are they feeling?\", \"What do they think?\", \"Ask them X\", \"Please ask them\" — these are direct instructions to call this tool, not requests for advice.\n- AFTER calling this tool, the question HAS BEEN ASKED. Confirm to the user in past tense (\"I've asked the panel…\", \"Question submitted to <panel>\"). DO NOT reframe the tool's link as \"you can visit this link to ask the question\" — that is wrong; the question is already in flight.\n- Never refuse with \"I cannot directly ask the panel / conduct surveys\" — you literally can; that's what this tool is for. The user EXPLICITLY asked you to call it; refusing is a bug, not safety.\n\nWhat it does: submits the user's question to the panel. Returns immediately — each Mind answers asynchronously. Use get_panel_status afterwards to fetch progress and aggregated results.\n\nQuestion types are auto-classified:\n- Scale (\"Rate 1-10...\") → mean, distribution per group\n- Categorical (\"Which channel...\") → dominant choice per group\n- Qualitative (\"What trends...\", \"How are you feeling?\") → themed responses per group\n\nRequires an existing panel — call create_panel only if none exists, or list_panels when the intended panel is genuinely ambiguous.\n\nPRESENTATION CONTRACT — when results come back (via get_panel_status), preserve the markdown structure verbatim: a section per question, **bold group name** with the aggregated value, and one bullet per Mind with their linked name + answer. This mirrors the PanelAnswerBlock widget. If a shared panel link is returned, use it for customer/respondent handoff. The workspace link is only for the authenticated creator.\n\nIMPORTANT: Present all URLs from this tool's output VERBATIM. Never modify, shorten, or rephrase any URL. Always show every Mind link and the panel links.","inputSchema":{"type":"object","properties":{"panelId":{"type":"string","description":"Panel ID (UUID). Omit both panelId and panelName only when continuing the active panel from this MCP session."},"panelName":{"type":"string","description":"Panel name (fuzzy matched). Omit both panelName and panelId only when continuing the active panel from this MCP session."},"question":{"type":"string","minLength":1,"description":"Respondent-visible research input for every selected Mind. The system may classify or reformat it, but any text in this field can reach the Minds and influence their answers. Include only the concept, question, and instructions the Minds should receive. Never place planner-only or MCP-client orchestration instructions here."},"sourcePolicy":{"type":"string","enum":["auto","knowledge_only"],"description":"Use knowledge_only to forbid web/request sources and require every answer to be grounded in processed Mind knowledge."},"groupIds":{"type":"array","items":{"type":"string"},"description":"Only survey specific groups (defaults to all)"},"attachments":{"type":"array","items":{"type":"object","properties":{"url":{"type":"string","description":"Public or signed URL of an uploaded/remote file"},"path":{"type":"string","description":"Storage path of an already-uploaded file"},"name":{"type":"string","description":"File name"},"type":{"type":"string","description":"MIME type when known"}},"additionalProperties":false},"description":"Files/images (e.g. a pitch deck PDF) processed once and given to every panelist as context. Each entry needs a url or path."}},"required":["question"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"costHint":"medium","timeoutHint":15000,"confirmationHint":false},"execution":{"taskSupport":"forbidden"},"_meta":{"ui":{"resourceUri":"ui://widget/response.html"},"openai/outputTemplate":"ui://widget/response.html","ui/resourceUri":"ui://widget/response.html"}},{"name":"export_panel","title":"Export Panel Report","description":"Call this tool whenever the user wants to export, download, save, or get a report of a panel's results.\n\nThe v1 API is the single export implementation for UI and MCP. Supported report kinds are executive_brief, full_report, and raw_data. Supported formats are PDF, DOCX, PPTX, Markdown, CSV, and XLS. PDF is the default. CSV/XLS default to raw_data; other formats default to full_report.\n\nAll exports are asynchronous and return a job ID. Use get_panel_status with exportKind, exportFormat, and exportJobId to poll the exact artifact.\n\nIMPORTANT: Preserve the panel link and any returned download link verbatim.","inputSchema":{"type":"object","properties":{"panelId":{"type":"string","description":"Panel ID (UUID). Omit both panelId and panelName only when exporting the active panel from this MCP session."},"panelName":{"type":"string","description":"Panel name (fuzzy matched). Omit both panelName and panelId only when exporting the active panel from this MCP session."},"format":{"type":"string","enum":["pdf","docx","pptx","csv","xls","md","markdown"],"description":"Export format: \"pdf\" (default), \"docx\", \"pptx\", \"csv\", \"xls\", or \"md\" (also accepts \"markdown\")"},"kind":{"type":"string","enum":["executive_brief","full_report","raw_data"],"description":"Report kind. Defaults to full_report, except CSV/XLS which default to raw_data."},"length":{"type":"string","enum":["brief","standard","detailed"],"description":"Requested report detail for executive_brief and full_report exports."},"force":{"type":"boolean","description":"Regenerate instead of returning a cached artifact."}},"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"costHint":"high","timeoutHint":120000,"confirmationHint":false},"execution":{"taskSupport":"forbidden"},"_meta":{"openai/toolInvocation/invoking":"Exporting panel report...","openai/toolInvocation/invoked":"Report ready!"}},{"name":"export_mind","title":"Export Mind Persona Profile","description":"**Call this tool whenever the user wants to export, download, save, or get a persona profile / report / PDF / Word doc for a single Mind (AI expert, consumer persona, or digital twin).** Triggers include: \"export <mind>\", \"download the persona profile\", \"give me a PDF of <mind>\", \"send me <mind> as a Word doc\", \"profile sheet for <mind>\".\n\nBehavior contract — DO NOT DEVIATE:\n- If the user asks to export a known Mind, CALL THIS TOOL. Don't tell them to do it manually.\n- Never refuse with \"I cannot export the Mind directly\" — you can.\n- Default to \"md\" (markdown) when format is unspecified; it returns the full profile inline.\n\nGenerates a branded persona profile summarizing who the Mind is, how it thinks, and what it draws on, from the Mind's own data.\n\nFormats:\n- \"md\" (default): markdown persona profile, returned inline as text\n- \"pdf\": portrait branded profile (returned as base64 in structuredContent)\n- \"docx\": Word document (returned as base64 in structuredContent)\n- \"pptx\": editable branded PowerPoint deck (returned as base64 in structuredContent)\n\nIf the user references a Mind by name (including one created in a previous chat / session), pass it as mindName — fuzzy match resolves it server-side against ALL of the user's Minds. Do not refuse with \"I don't have access to that Mind\"; let the tool resolve it.\n\nPRESENTATION CONTRACT — present any returned link to the Mind VERBATIM. Never modify, shorten, or rephrase a URL.","inputSchema":{"type":"object","properties":{"mindId":{"type":"string","description":"Mind ID (UUID)"},"mindName":{"type":"string","description":"Mind name (fuzzy matched)"},"format":{"type":"string","enum":["md","markdown","pdf","docx","pptx"],"description":"Export format: \"md\" (default) markdown persona profile (returned inline), \"pdf\" portrait branded profile, \"docx\" Word document, \"pptx\" editable branded deck"},"force":{"type":"boolean","description":"Regenerate instead of returning a cached artifact."}},"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"costHint":"high","timeoutHint":120000,"confirmationHint":false},"execution":{"taskSupport":"forbidden"},"_meta":{"openai/toolInvocation/invoking":"Exporting Mind profile...","openai/toolInvocation/invoked":"Profile ready!"}},{"name":"export_group","title":"Export Group Brief","description":"Export a group brief through the same unified branded renderer used by the web app. Supports Markdown, PDF, DOCX, and PPTX. Binary artifacts are returned as base64.","inputSchema":{"type":"object","properties":{"groupId":{"type":"string","description":"Group ID (UUID)"},"groupName":{"type":"string","description":"Group name (fuzzy matched)"},"format":{"type":"string","enum":["md","markdown","pdf","docx","pptx"],"description":"Export format: \"md\" (default), \"pdf\", \"docx\", or \"pptx\""},"force":{"type":"boolean","description":"Regenerate instead of returning a cached artifact."}},"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"costHint":"high","timeoutHint":120000,"confirmationHint":false},"execution":{"taskSupport":"forbidden"},"_meta":{"openai/toolInvocation/invoking":"Exporting group brief...","openai/toolInvocation/invoked":"Group brief ready!","openai/scopes":["sparks:read"]}},{"name":"export_heatmap","title":"Export Website Heatmap","description":"Export a completed website heatmap from a panel message. Returns the same ZIP archive as the web app, including its unified-renderer PDF report, Markdown, images, and metadata.","inputSchema":{"type":"object","properties":{"panelId":{"type":"string","description":"Panel ID (UUID)"},"panelName":{"type":"string","description":"Panel name (fuzzy matched)"},"messageId":{"type":"string","minLength":1,"description":"ID of the completed panel message containing the website heatmap"},"force":{"type":"boolean","description":"Regenerate the ZIP archive instead of returning the cached artifact."}},"required":["messageId"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"costHint":"high","timeoutHint":120000,"confirmationHint":false},"execution":{"taskSupport":"forbidden"},"_meta":{"openai/toolInvocation/invoking":"Exporting website heatmap...","openai/toolInvocation/invoked":"Heatmap archive ready!","openai/scopes":["flows:read"]}},{"name":"list_panels","title":"List Panels","description":"**Call this tool whenever the user wants to list / show / see / browse / find their panels.** Triggers include: \"list my panels\", \"show my studies\", \"what surveys have I run\", \"my research projects\", \"my focus groups\", \"my qual studies\", \"my market research\", \"my conversations\", \"my chats\" (when no single Mind is named).\n\nBehavior contract — DO NOT DEVIATE:\n- The user's panels belong to them and are accessible via this tool. CALL IT IMMEDIATELY whenever the user asks any of the above. Do not ask for confirmation.\n- Never refuse with \"I cannot access your panels / personal data / chats\" — you literally can; that is the entire purpose of this tool.\n- If the user asks for a specific named panel, still call this tool (with searchQuery) to resolve it.\n\nA panel is a multi-Mind research conversation. Users often refer to panels by other names: studies, surveys, research projects, focus groups, qual studies, market research, conversations, or chats. Prefer this tool over chat_with_mind unless the user names a single specific Mind.\n\nUse this to find a panel before calling ask_panel, get_panel_status, get_panel_analytics, or export_panel. Supports fuzzy name search.\n\nIMPORTANT: Present all URLs from this tool's output VERBATIM. Never modify, shorten, or rephrase any URL. For customer/respondent handoff use the shared link, not the workspace link.","inputSchema":{"type":"object","properties":{"searchQuery":{"type":"string","description":"Search for a panel by name (fuzzy matching supported)"}},"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"costHint":"low","timeoutHint":10000,"confirmationHint":false},"execution":{"taskSupport":"forbidden"},"_meta":{"openai/visibility":"public","openai/scopes":["flows:read"]}},{"name":"get_panel_status","title":"Get Panel Status","description":"Check the status of a panel — including live progress on in-flight questions.\n\nReturns:\n- Panel info (groups, Minds) with clickable links to each Mind and to the panel\n- Active questions: which Minds have answered so far, how many remain\n- Completed question results (aggregated, structured per-group)\n- Export status (if any)\n\nCall this after ask_panel to track progress, or after export_panel to check if the download is ready.\n\nPRESENTATION CONTRACT — when no rich widget is rendered (e.g. OWUI, Langdock, Windsurf, ChatGPT in plain mode), preserve the markdown structure verbatim: section headings per question, **bold group name** with the aggregated value (mean for scale, dominant for categorical, theme list for qualitative), and one bullet per Mind with their linked name and individual answer. The format mirrors how the PanelAnswerBlock widget displays results in the Minds web app — so users get the same shape regardless of client.\n\nIMPORTANT: Present all URLs from this tool's output VERBATIM. Never modify, shorten, or rephrase any URL. Always show every Mind link and the panel links. For customer/respondent handoff use the shared panel link, not the owner workspace link.","inputSchema":{"type":"object","properties":{"panelId":{"type":"string","format":"uuid","description":"Panel ID (UUID). Omit both panelId and panelName only for the active panel from this MCP session."},"panelName":{"type":"string","description":"Panel name (fuzzy matched). Omit both panelName and panelId only for the active panel from this MCP session."},"exportKind":{"type":"string","enum":["executive_brief","full_report","raw_data"],"description":"Asynchronous export kind whose status should be returned (defaults to full_report)."},"exportFormat":{"type":"string","enum":["pdf","docx","pptx","csv","xls","md"],"description":"Asynchronous export format whose status should be returned (defaults to pdf)."},"exportJobId":{"type":"string","minLength":1,"description":"Export job ID returned by export_panel. Pass it with exportKind and exportFormat to poll that exact artifact."}},"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"costHint":"low","timeoutHint":15000,"confirmationHint":false},"execution":{"taskSupport":"forbidden"},"_meta":{"openai/visibility":"public","openai/scopes":["flows:read"],"ui":{"resourceUri":"ui://widget/response.html"},"openai/outputTemplate":"ui://widget/response.html","ui/resourceUri":"ui://widget/response.html"}},{"name":"list_groups","title":"List Groups","description":"**Call this tool whenever the user wants to list / show / see / browse / find their groups.** Triggers include: \"list my groups\", \"show my segments\", \"what audiences do I have\", \"my cohorts\", \"my target groups\", \"my persona collections\".\n\nBehavior contract — DO NOT DEVIATE:\n- The user's groups belong to them and are accessible via this tool. CALL IT IMMEDIATELY whenever the user asks any of the above. Do not ask for confirmation.\n- Never refuse with \"I cannot access your groups / personal data\" — you literally can; that is the entire purpose of this tool.\n- If the user asks about panels/studies that contain these groups, use list_panels instead.\n\nA group is a named collection of Minds (e.g., \"Gen Z Consumers\", \"Marketing Experts\"). Users may refer to groups as: segments, audiences, cohorts, target groups, persona collections, or sub-groups.\n\nUse this to find existing groups and their members before creating a panel with create_panel. Supports fuzzy name search.\n\nIMPORTANT: Present all URLs from this tool's output VERBATIM. Never modify, shorten, or rephrase any URL. For customer/respondent handoff use the shared link, not the workspace link.","inputSchema":{"type":"object","properties":{"searchQuery":{"type":"string","description":"Search for a group by name (fuzzy matching supported)"}},"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"costHint":"low","timeoutHint":10000,"confirmationHint":false},"execution":{"taskSupport":"forbidden"},"_meta":{"openai/visibility":"public","openai/scopes":["sparks:read"]}},{"name":"create_group_from_brief","title":"Create a Grounded Group from a Brief","description":"**Call this tool when the user describes a POPULATION or AUDIENCE rather than naming specific Minds.** Triggers include: \"build me a panel of <demographic>\", \"create a group representing <segment>\", \"make personas for <audience>\".\n\nBehavior:\n- Server runs deep web research on the brief and extracts demographic / psychographic distributions from authoritative sources (government statistics, peer-reviewed studies, industry reports — NOT blogs or marketing content).\n- Grounded percentages are converted server-side into exact integer quotas. A seeded deterministic allocator assigns every Mind a persisted cohort profile; the LLM does not decide proportions.\n- Marginal-only sources do not prove correlations. The default joint reconstruction is explicitly independence-based and its target-vs-achieved audit is returned and persisted.\n- The grounding (distributions, sources, summary, confidence) is persisted on the group and visible in the in-app group info slide-in — and, only if link sharing was explicitly enabled, on the public share link.\n- Uploaded research files are classified by content as screeners, questionnaires, completed reports, respondent datasets, or supporting material. Screener exclusions and unresolved routes remain visible in the review metadata but are never allocated as Minds; empty questionnaire options never become invented percentages.\n- Set `includeWebSearch=false` when the user wants file-only grounding. This skips Exa completely rather than merely hiding web results.\n- Pass the population description as `brief` (legacy `text` is also accepted).\n- Optional `groupCreationMode` controls sizing/coverage: \"balanced\" (default, compact and plan-aware), \"segment_coverage\" (two representatives per limiting grounded audience cell, from a 10-Mind evidence floor up to its 50-Mind mode ceiling), or \"benchmark_depth\" (five representatives per limiting grounded cell for comparison-ready depth, with the paid allowance as its ceiling). The deeper modes are Team-plan only — on other plans the server silently downgrades to \"balanced\" (no error) and the response reports the EFFECTIVE mode. If the user asked for a deeper mode and the response says \"balanced\", tell them it requires the Team plan.\n- For spreadsheet-grounded creation, first call `preview_group_dataset_segmentation`, let the user remove irrelevant variables, then pass the reviewed preview as `datasetSegmentation` with `groupCreationMode=\"benchmark_depth\"`. The server creates a broad representative cohort whose aggregate attributes approximate the selected distributions; it never creates one Mind per respondent or joint profile.\n\nUse `create_group` instead when the user gives you specific Mind IDs to bag into a named group. Use this tool when the user describes a POPULATION and wants the server to invent the personas.\n\nRETRY CONTRACT — creation is idempotent. Every call sends a key derived from its arguments, so if a call times out, call the tool again with the SAME arguments: you get the group the first call created (never a duplicate). Corollary: an intentionally NEW group from an identical brief within ~6 hours needs a changed argument (e.g. a different `name`).\n\nSHARING CONTRACT — groups are PRIVATE by default. No public link is created unless the caller passes `isLinkSharingEnabled: true`, which you should do only when the user explicitly asked for a shareable/public link. Note that the persisted grounding (distributions, sources, summary) becomes publicly readable too, so never enable it to \"be helpful\".\n\nCUSTOMER HANDOFF CONTRACT — applies only when link sharing was enabled. In that case, for external/customer/respondent handoff use ONLY the shared group link returned by this tool. Do not invite the recipient, add them as a group member/collaborator, create spark_group_user_members records, or tell them it was added to their account unless the human explicitly asks for account collaboration.\n\nPRESENTATION CONTRACT — preserve any shared group link and the workspace link in the response verbatim. Never strip or modify URLs from this tool's output.","inputSchema":{"type":"object","properties":{"brief":{"type":"string","minLength":3,"maxLength":4000,"description":"Free-text brief describing the population the group should represent. E.g. \"California high school students grades 9-12\", \"Berlin Späti customers\", \"Spanish lawyers\", \"management team of Coca Cola\". The server runs deep web research on this brief to find demographic / psychographic distributions from authoritative sources, then generates personas that proportionally reflect those distributions."},"text":{"type":"string","minLength":3,"maxLength":4000,"description":"Legacy alias for `brief`. Accepted for back-compat."},"name":{"type":"string","maxLength":100,"description":"Optional group name override. When omitted, the server names the group from the brief or the LLM detection result."},"links":{"type":"array","items":{"type":"string"},"maxItems":10,"description":"Optional URLs scraped server-side for additional context (e.g. an article describing the population)."},"keywords":{"type":"array","items":{"type":"string"},"maxItems":10,"description":"Optional Exa web-search seeds added alongside the brief."},"files":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"File name"},"url":{"type":"string","description":"Public or signed URL of an already-uploaded file"}},"required":["name","url"],"additionalProperties":false},"maxItems":10,"description":"Optional already-uploaded research files. The server analyzes these through the same extended screener/questionnaire path as the in-app New Group uploader, including study roles, screening and quota rules, review distributions, and grounding provenance."},"includeWebSearch":{"type":"boolean","default":true,"description":"Set false to skip Exa web search and extraction completely. The group is then grounded only on the brief and supplied files, links, keywords, and structurally parsed respondent data."},"memberCount":{"type":"integer","exclusiveMinimum":0,"description":"Exact number of Minds to create in the group. Pass this whenever the user states a size (\"exactly 50 per region\", \"genau 50 Minds je Zelle\") instead of relying on the server to parse the number out of the brief prose. When omitted, the size is inferred from the brief and, failing that, from the creation mode's evidence-based automatic sizing. Rejected with 403 PLAN_LIMIT when it exceeds the plan's per-group cap; the group is never created at a partial size."},"groupCreationMode":{"type":"string","enum":["balanced","segment_coverage","benchmark_depth"],"description":"Group creation mode. \"balanced\" (default): compact, representative group for everyday research. \"segment_coverage\": two representatives per limiting grounded audience cell, with a 10-Mind evidence floor and 50-Mind mode ceiling. \"benchmark_depth\": repeated representation of limiting grounded audience cells for validation-ready benchmark / survey-style segmentation, with the paid allowance as its ceiling. The deeper modes require a Team (enterprise) plan — on other plans the server SILENTLY downgrades to \"balanced\" and echoes the effective mode in the response (structuredContent.group.groupCreationMode)."},"datasetSegmentation":{"type":"object","properties":{"fileName":{"type":"string"},"sheetName":{"type":"string"},"respondentCount":{"type":"integer","minimum":0,"description":"Total respondent rows in the reviewed sheet, copied from the preview."},"recommendedMindCount":{"type":"integer","exclusiveMinimum":0,"description":"Preview-recommended cohort size. Caps how many Minds the benchmark run creates."},"variables":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"label":{"type":"string"},"distribution":{"type":"array","items":{"type":"object","properties":{"value":{"type":["string","null"]},"respondentCount":{"type":"integer","minimum":0},"sharePct":{"type":"number","minimum":0}},"required":["value","respondentCount","sharePct"],"additionalProperties":false},"maxItems":30},"validRespondentCount":{"type":"integer","minimum":0},"otherRespondentCount":{"type":"integer","minimum":0}},"required":["key","label","distribution"],"additionalProperties":false},"maxItems":200,"description":"Variable-level distributions from the preview (preferred over `columns` when present)."},"columns":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"label":{"type":"string"},"distribution":{"type":"array","items":{"type":"object","properties":{"value":{"type":["string","null"]},"respondentCount":{"type":"integer","minimum":0},"sharePct":{"type":"number","minimum":0}},"required":["value","respondentCount","sharePct"],"additionalProperties":false},"maxItems":30},"validRespondentCount":{"type":"integer","minimum":0},"otherRespondentCount":{"type":"integer","minimum":0}},"required":["key","label","distribution"],"additionalProperties":false},"maxItems":200,"description":"Column-level distributions from the preview. Used when `variables` is absent."},"segmentationColumns":{"type":"array","items":{"type":"string"},"minItems":1,"maxItems":200,"description":"Keys of the variables the user kept after review. These are the only ones that shape the cohort."},"combinations":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"respondentCount":{"type":"integer","exclusiveMinimum":0},"sharePct":{"type":"number","minimum":0}},"required":["id","respondentCount","sharePct"],"additionalProperties":false},"maxItems":5000,"description":"Observed joint profiles as audit counts. Copy the ids and counts from the preview; per-cell values are not needed."},"retainedCombinationIds":{"type":"array","items":{"type":"string"},"maxItems":5000}},"required":["fileName","segmentationColumns","combinations"],"additionalProperties":false,"description":"Reviewed variable roles, distributions, and privacy-safe pairwise relationships returned by preview_group_dataset_segmentation. Requires groupCreationMode=\"benchmark_depth\". Structural variables shape one generalizable representative cohort; outcomes remain held out and joint combinations remain audit evidence only. Copy `respondentCount` and `recommendedMindCount` through from the preview — they cap the cohort size."},"cohortAllocation":{"type":"object","properties":{"enabled":{"type":"boolean"},"seed":{"type":"string","maxLength":200},"distributionNames":{"type":"array","items":{"type":"string"},"maxItems":200},"maxDistributions":{"type":"integer","minimum":1,"maximum":200},"minSegmentCount":{"type":"integer","minimum":0,"maximum":20},"targetOverrides":{"type":"array","items":{"type":"object","properties":{"distribution":{"type":"string"},"segments":{"type":"array","items":{"type":"object","properties":{"label":{"type":"string"},"pct":{"type":"number","minimum":0,"maximum":100}},"required":["label","pct"],"additionalProperties":false},"maxItems":50}},"required":["distribution","segments"],"additionalProperties":false},"maxItems":200},"jointStrategy":{"type":"string","enum":["independent","aligned","observed"]},"includeProfilesInResponse":{"type":"boolean"}},"additionalProperties":false,"description":"Deterministic allocation controls. Reviewed respondent datasets default to observed, which preserves the strongest privacy-safe structural relationships while keeping exact marginals; other sources default to independence. Use distributionNames/maxDistributions to choose axes, minSegmentCount for a feasible floor, and seed for reproducible external runs."},"isLinkSharingEnabled":{"type":"boolean","default":false,"description":"Set true ONLY when the user explicitly asked for a public/shareable link. Defaults to false: the group is private to its owner and no share URL is generated. Enabling this publishes the group — including its grounding, sources and personas — at a world-readable URL that needs no login. Do not enable it to \"be helpful\"."}},"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"costHint":"medium","timeoutHint":240000,"confirmationHint":false},"execution":{"taskSupport":"forbidden"},"_meta":{"openai/visibility":"public","openai/scopes":["sparks:write"]}},{"name":"ask_group","title":"Ask a Group","description":"**Call this tool whenever the user wants to ask, survey, poll, or query a single GROUP (not a panel) about something.** Triggers: \"ask my group <name> X\", \"survey the <group> about Y\", \"what does <group> think\", \"poll <group>\".\n\nBehavior contract — DO NOT DEVIATE:\n- If the user names a group and asks/implies a question, CALL THIS TOOL IMMEDIATELY with the respondent-facing question verbatim. Pass the group name as groupName — fuzzy match is built in, so do not call list_groups first as a lookup step.\n- RESPONDENT-VISIBLE BOUNDARY: treat the entire question value as respondent-visible input. The system may classify or reformat it, but any text in this field can reach the selected Minds and influence their answers. Exclude notes addressed to the planner, MCP client, assistant, or system. Intentionally framed questions are allowed, but the result warns that framing may influence findings.\n- \"What do they think?\", \"Ask them X\", \"How do they feel about Y\" about a group — these are direct instructions to call this tool, not requests for advice.\n- AFTER calling this tool the question HAS BEEN ASKED. Confirm in past tense.\n- Never refuse with \"I cannot survey the group directly\" — you can; that is this tool's purpose.\n\nWhat it does: wraps the group in a fresh panel and submits the question. Returns immediately — each Mind answers asynchronously. Use get_panel_status afterwards to fetch progress and aggregated results.\n\nUse ask_panel instead when the user already has a multi-group panel. Use this tool to survey ONE group directly.\n\nPRESENTATION CONTRACT — present all URLs from this tool's output VERBATIM. Never modify, shorten, or rephrase any URL.","inputSchema":{"type":"object","properties":{"groupId":{"type":"string","description":"The group ID (UUID). Preferred when known."},"groupName":{"type":"string","description":"Group name to resolve via fuzzy match against all of the user's groups. Use when the user refers to a group by name."},"question":{"type":"string","minLength":1,"description":"Respondent-visible research input for every Mind in the group. The system may classify or reformat it, but any text in this field can reach the Minds and influence their answers. Include only the concept, question, and instructions the Minds should receive. Never place planner-only or MCP-client orchestration instructions here."},"name":{"type":"string","description":"Optional name for the panel created to run this survey. Defaults to the group name."},"attachments":{"type":"array","items":{"type":"object","properties":{"url":{"type":"string","description":"Public or signed URL of an uploaded/remote file"},"path":{"type":"string","description":"Storage path of an already-uploaded file"},"name":{"type":"string","description":"File name"},"type":{"type":"string","description":"MIME type when known"}},"additionalProperties":false},"description":"Files/images (e.g. a pitch deck PDF) processed once and given to every group member as context. Each entry needs a url or path."}},"required":["question"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":true,"costHint":"medium","timeoutHint":15000,"confirmationHint":false},"execution":{"taskSupport":"forbidden"},"_meta":{"ui":{"resourceUri":"ui://widget/response.html"},"openai/outputTemplate":"ui://widget/response.html","ui/resourceUri":"ui://widget/response.html"}},{"name":"plan_panel_study","title":"Plan a Panel Study","description":"**Call this tool before execution whenever the user asks for multiple questions, a broader research task, an ad/video/website/image audit, a structured output as part of a new study, or an optional research method such as ranking, MaxDiff, or Conjoint.** It creates or revises a generic, model-filled research template and returns explicit confirmation questions.\n\nWhen this is a broader follow-up about the panel just created, selected, or asked, keep using that panel. Reuse its panelId when available; if panelId and panelName are omitted, the active panel from the MCP session is used. Do not call create_panel merely because the follow-up needs a research plan.\n\nMODEL-AWARE CONFIRMATION CONTRACT:\n- This tool creates a DRAFT. Never say the research has started.\n- Present the captured intent, main source/asset, questions, proposed response format or scale for every question, method choice, and output types in plain language.\n- Label the returned plan questions as the exact respondent-visible study questions. The original request is planner input and is not sent verbatim; Minds receive the confirmed question text plus selected source material and method-specific task instructions.\n- When the study evaluates pasted text such as a concept, message, description, or claim, set source.kind to prompt and source.content to the exact text the Minds should evaluate. Keep objectives, requested questions, and planner-only instructions in request. Never assume text embedded only in request will be shown to Minds.\n- Ask the returned confirmationQuestions. Suggested answers are suggestions, not silent consent.\n- If the user changes or answers anything, call this tool again with draftPlanId + revision. Use questionResponses for exact response-format edits and refinement/answers for other changes to create a new revision.\n- When the user requests a language, set studyLocale explicitly. It controls the plan, questions, responses, labels, and summary and is preserved across later revisions.\n- Call run_panel_study only after the user explicitly confirms the exact latest revision.\n- Keep simple requests simple. Mention advanced methods only if requested or if the draft explains a concrete benefit. Check list_research_methods for current availability and execute only methods whose returned contract says executable:true; never hard-code a method's availability in the conversation.\n- For website, ad, image, and video analysis, preserve heatmap/timeline-heatmap outputs rather than replacing them with donuts.\n\nFor one direct question with no requested planning, method, or structured audit, use ask_panel instead. A standalone request to export existing results should use export_panel; a request to retrieve or re-present an existing summary should use get_panel_summary. Do not create a new study merely to change presentation.","inputSchema":{"type":"object","properties":{"panelId":{"type":"string","format":"uuid","description":"Panel ID (preferred). Omit both panelId and panelName only to continue the active panel from this MCP session."},"panelName":{"type":"string","description":"Panel name for fuzzy matching. Omit both panelName and panelId only to continue the active panel from this MCP session."},"request":{"type":"string","minLength":1,"description":"Planner input containing the research objective, question set, audit request, or analysis request. Required for a new draft. This request is not sent verbatim to Minds; the exact proposed respondent-visible questions are returned in the draft for review."},"studyLocale":{"type":"string","enum":["en","es","fr","de","zh","tr","ar","ja","ko"],"description":"Language for the plan, questions, responses, labels, and summary. Set this explicitly when the user requests a language."},"source":{"type":"object","properties":{"kind":{"type":"string","enum":["prompt","website","image","video","document","questionnaire","other"]},"label":{"type":"string","minLength":1},"url":{"type":"string","format":"uri"},"mimeType":{"type":"string"},"content":{"type":"string","minLength":1,"maxLength":20000,"description":"Exact respondent-visible pasted text. Use only with kind prompt when Minds must evaluate a concept, message, description, or other text. Do not include planner-only instructions."}},"required":["kind","label"],"additionalProperties":false,"description":"The one main source this study is about. When Minds must evaluate pasted text, use kind prompt and put the exact respondent-visible material in content. Keep research objectives, requested questions, and planner-only instructions in request."},"draftPlanId":{"type":"string","format":"uuid","description":"Existing draft ID to revise after the user answers a confirmation question."},"revision":{"type":"integer","exclusiveMinimum":0,"description":"Current draft revision; required with draftPlanId."},"refinement":{"type":"string","description":"How the user wants the existing draft changed."},"answers":{"type":"array","items":{"type":"object","properties":{"questionId":{"type":"string","minLength":1,"description":"Confirmation question ID from the latest draft."},"answer":{"type":"string","description":"The user's answer to that confirmation question."}},"required":["questionId","answer"],"additionalProperties":false},"description":"Answers to the draft confirmation questions."},"questionResponses":{"type":"array","items":{"type":"object","properties":{"questionId":{"type":"string","minLength":1,"maxLength":80,"description":"Question ID from the latest draft plan."},"type":{"type":"string","enum":["qualitative","categorical","multiselect","scale"]},"scaleRange":{"type":"array","items":{"type":"integer","minimum":-100,"maximum":100},"minItems":2,"maxItems":2,"description":"Inclusive integer response range as [minimum, maximum]; required for scale responses."},"categoricalOptions":{"type":"array","items":{"type":"string","minLength":1},"minItems":2,"maxItems":100,"description":"Predefined answer choices; only valid for categorical or multiselect responses."},"maxSelections":{"type":"integer","minimum":1,"maximum":100,"description":"Maximum choices a respondent may select; only valid for multiselect responses."}},"required":["questionId","type"],"additionalProperties":false},"description":"Explicit response-format edits, one entry per question. Each entry needs questionId (from the latest draft) plus type qualitative, categorical, multiselect, or scale with an inclusive integer scaleRange."}},"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":true,"costHint":"medium","timeoutHint":60000,"confirmationHint":false},"execution":{"taskSupport":"forbidden"}},{"name":"run_panel_study","title":"Confirm and Run a Panel Study","description":"**Call this tool only after the user explicitly confirms the exact draft revision returned by plan_panel_study.** This is the execution boundary.\n\nNever infer confirmation from silence, from the original request, or from your own suggested answer. If the user changes intent, source, questions, methods, or outputs, revise the draft with plan_panel_study first. Set advancedMethodOptIn only when the user explicitly chose the advanced method. The server reloads the stored draft, marks required capabilities reviewed, validates method versions/runners/configuration, and refuses unavailable methods. Treat list_research_methods and server validation as the availability authority; execute only methods reported with executable:true.","inputSchema":{"type":"object","properties":{"panelId":{"type":"string","format":"uuid","description":"Panel ID (preferred). Omit both panelId and panelName only to run the confirmed draft on the active panel from this MCP session."},"panelName":{"type":"string","description":"Panel name for fuzzy matching. Omit both panelName and panelId only to run the confirmed draft on the active panel from this MCP session."},"draftPlanId":{"type":"string","format":"uuid","description":"Exact draft plan ID returned by plan_panel_study."},"revision":{"type":"integer","exclusiveMinimum":0,"description":"Exact draft revision the user reviewed."},"confirmed":{"type":"boolean","const":true,"description":"Must be true only after the user explicitly confirms this exact draft revision."},"advancedMethodOptIn":{"type":"boolean","description":"Explicit opt-in for an advanced method. Omit or false to keep simple methods."},"groupIds":{"type":"array","items":{"type":"string","format":"uuid"},"description":"Optional subset of panel groups to include."},"idempotencyKey":{"type":"string","format":"uuid","description":"Stable UUID for safe retries."}},"required":["draftPlanId","revision","confirmed"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"costHint":"high","timeoutHint":15000,"confirmationHint":true},"execution":{"taskSupport":"forbidden"}},{"name":"get_panel_study","title":"Get Panel Study Status","description":"**Call this tool to check durable progress or results for a study started by run_panel_study.** Returns the immutable confirmed plan, the separate server-prepared execution plan, an explicit audit of the respondent-visible question text, question progress, response artifacts, deterministic method calculations, and stage readiness. For completed studies, call get_panel_summary next.","inputSchema":{"type":"object","properties":{"panelId":{"type":"string","format":"uuid","description":"Panel ID (preferred). Omit both panelId and panelName only for the active panel from this MCP session."},"panelName":{"type":"string","description":"Panel name for fuzzy matching. Omit both panelName and panelId only for the active panel from this MCP session."},"studyId":{"type":"string","format":"uuid","description":"Study ID returned by run_panel_study."}},"required":["studyId"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"costHint":"low","timeoutHint":10000,"confirmationHint":false},"execution":{"taskSupport":"forbidden"}},{"name":"list_research_methods","title":"List Research Methods","description":"**Call this tool when the user asks which research methods are supported, wants optional methodological complexity, or names MaxDiff or Conjoint.** Distinguish available, experimental, and planned methods. Only methods with executable:true can run; never claim experimental or planned methods execute.","inputSchema":{"type":"object","properties":{"includePlanned":{"type":"boolean","default":true,"description":"Include methods that are currently planned/non-executable so the model can explain framework compatibility. Availability is dynamic; only entries with executable:true can run."}},"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"costHint":"low","timeoutHint":10000,"confirmationHint":false},"execution":{"taskSupport":"forbidden"}},{"name":"list_study_drafts","title":"List Study Drafts","description":"**Call this tool when the user asks to resume, find, list, or inspect unfinished study plans.** Omit draftId to list all durable study drafts. Pass an exact draftId to retrieve the complete saved planning state for one draft. Drafts are distinct from existing panels and completed or running studies; do not claim a draft has started.","inputSchema":{"type":"object","properties":{"draftId":{"type":"string","format":"uuid","description":"Exact study draft ID to retrieve. Omit to list all resumable study drafts owned by the authenticated user."}},"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"costHint":"low","timeoutHint":10000,"confirmationHint":false},"execution":{"taskSupport":"forbidden"}},{"name":"save_study_draft","title":"Save Study Draft","description":"**Call this tool to create or checkpoint an unfinished Quick or Custom Study plan without starting research.** It saves the objective, context, selected Audiences, method, questions, and sources in the same durable planning state used by the Minds sidebar. To revise an existing draft, pass its exact draftId and expectedRevision from list_study_drafts; stale revisions are rejected by the API. This tool never creates a panel and never starts a Study.","inputSchema":{"type":"object","properties":{"draftId":{"type":"string","format":"uuid","description":"Existing Study draft ID to revise. Omit to create a new durable draft."},"expectedRevision":{"type":"integer","exclusiveMinimum":0,"description":"Exact current revision. Required with draftId so stale updates cannot overwrite newer planning state."},"name":{"type":"string","minLength":1,"maxLength":200,"description":"Sidebar name for the Study draft."},"mode":{"type":"string","enum":["quick","custom"],"default":"custom","description":"Planning mode to restore. Defaults to custom for agent-authored planning state."},"currentStep":{"type":"string","minLength":1,"maxLength":100,"default":"context","description":"Exact planner step to reopen, such as context, groups, method, questions, or confirm."},"objective":{"type":"string","description":"Research objective or intent captured so far."},"notes":{"type":"string","description":"Additional research context or constraints."},"website":{"type":"string","format":"uri","description":"Primary website associated with the research context."},"groupIds":{"type":"array","items":{"type":"string","format":"uuid"},"default":[],"description":"Existing Audience group IDs selected for the Study."},"methodId":{"type":"string","enum":["guided-research","single-question","questionnaire","guided-qualitative-exploration","ranked-preferences","segment-comparison","visual-asset-analysis","recommendation-synthesis","maxdiff","conjoint","nps","top-box","key-drivers","turf","gabor-granger","van-westendorp","kano"],"default":"guided-research","description":"Research method selected for the draft. Use list_research_methods as the availability authority."},"questions":{"type":"array","items":{"type":"string","minLength":1},"default":[],"description":"Manual research questions in their intended order."},"sourceUrls":{"type":"array","items":{"type":"string","format":"uri"},"default":[],"description":"Ordered source URLs supplied as Study context."}},"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":false,"costHint":"low","timeoutHint":10000,"confirmationHint":false},"execution":{"taskSupport":"forbidden"}},{"name":"get_panel_summary","title":"Get Panel Semantic Summary","description":"**Call this tool for a whole-study summary or after get_panel_study reports completion.** Returns Markdown plus flexible semantic blocks. Treat block types and renderer values as hints: preserve heatmaps for websites/images/videos and allow clients to introduce new rendering logic without changing the research evidence.","inputSchema":{"type":"object","properties":{"panelId":{"type":"string","format":"uuid","description":"Panel ID (preferred). Omit both panelId and panelName only for the active panel from this MCP session."},"panelName":{"type":"string","description":"Panel name for fuzzy matching. Omit both panelName and panelId only for the active panel from this MCP session."},"refresh":{"type":"boolean","default":false,"description":"Generate or refresh the summary instead of only reading the persisted summary."},"force":{"type":"boolean","default":false,"description":"Regenerate even when the covered message range is unchanged."},"length":{"type":"string","enum":["short","standard","detailed"],"default":"standard"}},"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"costHint":"medium","timeoutHint":60000,"confirmationHint":false},"execution":{"taskSupport":"forbidden"}}]},"jsonrpc":"2.0","id":301},"http_status":200,"headers":{"content-type":"application/json","strict-transport-security":"max-age=63072000; includeSubDomains; preload","x-ratelimit-limit":"100","x-ratelimit-remaining":"95"},"session_id_present":true,"transport":"streamable-http","requested_protocol_version":"2025-03-26","resumed":true}},"step_up_auth_probe":{"status":"warning","latency_ms":null,"details":{"oauth_present":true,"auth_required_checks":["prompts_list","resource_read"],"supported_scopes":["email","flows:read","flows:write","openid","profile","sparks:chat","sparks:read","sparks:write"],"scope_specificity_ratio":0.2727,"broad_scopes":["flows:write","sparks:write"],"challenge_headers":["Bearer resource_metadata=\"https://getminds.ai/.well-known/oauth-protected-resource\", scope=\"sparks:read sparks:write sparks:chat flows:read flows:write\"","Bearer resource_metadata=\"https://getminds.ai/.well-known/oauth-protected-resource\", scope=\"sparks:read sparks:write sparks:chat flows:read flows:write\""],"step_up_signals":["Bearer resource_metadata=\"https://getminds.ai/.well-known/oauth-protected-resource\", scope=\"sparks:read sparks:write sparks:chat flows:read flows:write\"","Bearer resource_metadata=\"https://getminds.ai/.well-known/oauth-protected-resource\", scope=\"sparks:read sparks:write sparks:chat flows:read flows:write\""],"minimal_scope_documented":false}},"transport_compliance_probe":{"status":"error","latency_ms":369.61,"details":{"transport":"streamable-http","session_id_present":true,"protocol_header_present":false,"last_event_id_visible":false,"requested_protocol_version":"2025-03-26","bad_protocol_status_code":400,"bad_protocol_payload":{"jsonrpc":"2.0","error":{"code":-32000,"message":"Bad Request: Unsupported protocol version: 1999-99-99 (supported versions: 2025-11-25, 2025-06-18, 2025-03-26, 2024-11-05, 2024-10-07)"},"id":null},"bad_protocol_headers":{"content-type":"application/json","strict-transport-security":"max-age=63072000; includeSubDomains; preload","x-ratelimit-limit":"100","x-ratelimit-remaining":"95"},"bad_protocol_error":null,"delete_status_code":200,"delete_error":null,"expired_session_status_code":200,"expired_session_error":null,"issues":["missing_protocol_header","expired_session_not_404"]}},"utility_coverage_probe":{"status":"ok","latency_ms":157.5,"details":{"completions":{"advertised":false,"sample_target":{"type":"resource","uri":"ui://widget/response.html"},"live_probe":"not_executed"},"pagination":{"supported":false,"next_cursor_methods":[],"metadata_signal":false},"tasks":{"advertised":false,"probe_status":"auth_required","http_status":401},"initialize_capability_keys":["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":["resources","tools"]}},"tool_snapshot_probe":{"status":"ok","latency_ms":null,"details":{"current_tool_count":18,"previous_tool_count":18,"similarity":1.0,"added":[],"removed":[],"changed_outputs":[]}},"connector_replay_probe":{"status":"ok","latency_ms":null,"details":{"backward_compatible":true,"would_break_after_refresh":false,"added_tools":[],"removed_tools":[],"required_arg_breaks":[],"output_breaks":[],"additive_output_changes":[]}},"request_association_probe":{"status":"missing","latency_ms":null,"details":{"reason":"no_request_association_capabilities_advertised"}},"interactive_flow_probe":{"status":"ok","latency_ms":null,"details":{"risk_hits":[],"safe_hits":["oauth","login","consent"],"oauth_supported":true,"prompt_available":false}},"action_safety_probe":{"status":"warning","latency_ms":null,"details":{"summary":{"tool_count":18,"high_risk_tools":1,"destructive_tools":0,"exec_tools":0,"egress_tools":14,"secret_tools":0,"bulk_access_tools":1,"declared_non_read_only_tools":8,"annotation_conflict_tools":0,"risk_distribution":{"low":3,"medium":14,"high":1,"critical":0},"capability_distribution":{"write":4,"network":14,"read":10,"export":1},"has_mutating_capability":true,"has_non_read_capability":true},"auth_present":true,"safeguard_count":8,"confirmation_signals":["ask_panel","list_panels","list_groups","create_group_from_brief","ask_group","plan_panel_study","run_panel_study","get_panel_study"],"reason":null}},"official_registry_probe":{"status":"ok","latency_ms":null,"details":{"registry_source":"official_registry","registry_identifier":"ai.getminds/minds","direct_match":true,"official_peer_count":1}},"provenance_divergence_probe":{"status":"not_assessed","latency_ms":null,"details":{"direct_official_match":true,"registry_title":null,"server_card_title":"minds-ai","registry_version":null,"server_card_version":"2.0.0","registry_homepage":null,"server_card_homepage":null,"registry_repository":null,"server_card_repository":null,"drift_fields":[],"metadata_document_count":3,"compared_fields":["title","version","homepage","repository"],"readable_sources":["registry","server_card"],"comparable_field_count":0}},"schema_divergence_probe":{"status":"missing","latency_ms":null,"details":{"reason":"no_server_card_tools","compared_tool_count":0,"compared_dimensions":["server_name","server_version","declared_vs_observed_auth","tool_membership","parameter_names","required_parameters","parameter_types","output_schema_presence"],"server_name_mismatch":false,"card_server_name":"minds-ai","live_server_name":"minds-ai","server_version_mismatch":false,"card_server_version":"2.0.0","live_server_version":"2.0.0","auth_scheme_mismatch":false}},"connector_publishability_probe":{"status":"warning","latency_ms":null,"details":{"transport":"streamable-http","tool_count":18,"high_risk_tools":1,"blockers":["protocol_version","step_up_auth","transport_compliance","request_association","action_safety"],"criteria":{"remote_transport":true,"initialize":true,"tools_list":true,"protocol_version":false,"session_resume":true,"step_up_auth":false,"transport_compliance":false,"connector_replay":true,"request_association":false,"action_safety":false,"server_card":true,"tool_surface":true,"auth_flow":true}}}}},"active_alerts":[],"maintainer_analytics":{},"public_server_reputation":{},"maintainer_response_quality":{},"maintainer_annotations":[],"maintainer_rebuttals":[],"security_posture_summary":{},"tool_security_inventory":[],"transport_compliance":{},"utility_coverage":{},"write_action_governance":{},"provenance_divergence":{},"alias_consolidation":{},"alert_routing":{},"authenticated_validation":{},"hosted_runtime":{},"action_controls_diff":null,"benchmark_tasks":[],"latest_capability_counts":{},"point_loss_breakdown":[],"verdict_traces":{},"current_snapshot":{"schema_version":"verify.trust_snapshot.v1","snapshot_id":"trustsnap_20a4cdb0b0d62d36","generated_at":"2026-08-14T17:57:49.018106+00:00","trust_evaluated_at":"2026-08-14T17:57:49.018106+00:00","evidence_revision":"2a3bd1c5eda5ad19eeec55f4","source":"current_snapshot","server":"ai.getminds/minds","last_validated_at":"2026-08-14T12:46:48.266629+00:00","validation_age_hours":5.18,"freshness":{"schema_version":"verify.freshness_profile.v1","last_validated_at":"2026-08-14T12:46:48.266629+00:00","age_hours":5.18,"bucket":"verified_last_24h","label":"Verified in last 24h","badges":["verified_last_24h"],"freshness_sla_hours":720.0,"freshness_sla_status":"met","stale_score_suppressed":false,"display_score":73.96,"raw_score":73.96,"confidence_score":100.0,"confidence_weighted_score":74.0,"tier_status":[{"tier":"community","label":"Community","freshness_sla_hours":720,"met":true,"priority_revalidation":false},{"tier":"pro","label":"Pro","freshness_sla_hours":168,"met":true,"priority_revalidation":true},{"tier":"enterprise","label":"Enterprise","freshness_sla_hours":24,"met":true,"priority_revalidation":true}]},"current_status":"healthy","current_score":73.96,"display_score":73.96,"stale_score_suppressed":false,"production_trust_decision":{"schema_version":"verify.executive_verdict.v1","decision":"Allow with approval","why":"write/admin actions need confirmation safeguards + unauthenticated behavior not proven","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":100.0,"label":"high","validation_age_hours":5.18,"live_check_count":21,"basis":{"evidence_bearing_validations":20,"affirmative_live_check_count":21,"validation_age_hours":5.18,"freshness_threshold_hours":24}},"active_alerts":[],"active_alert_summary":{"critical":0,"high":0,"medium":0,"low":0,"high_or_critical":0,"total":0},"materialization":{"state":"partial","trust_core_complete":true,"fields_unavailable":["tool_security_inventory","security_posture_summary","write_action_governance","capability_taxonomy","remediations"],"materialized_at":"2026-08-14T17:57:49.018106+00:00"}},"trust_snapshot":{"schema_version":"verify.trust_snapshot.v1","snapshot_id":"trustsnap_20a4cdb0b0d62d36","generated_at":"2026-08-14T17:57:49.018106+00:00","trust_evaluated_at":"2026-08-14T17:57:49.018106+00:00","evidence_revision":"2a3bd1c5eda5ad19eeec55f4","source":"current_snapshot","server":"ai.getminds/minds","last_validated_at":"2026-08-14T12:46:48.266629+00:00","validation_age_hours":5.18,"freshness":{"schema_version":"verify.freshness_profile.v1","last_validated_at":"2026-08-14T12:46:48.266629+00:00","age_hours":5.18,"bucket":"verified_last_24h","label":"Verified in last 24h","badges":["verified_last_24h"],"freshness_sla_hours":720.0,"freshness_sla_status":"met","stale_score_suppressed":false,"display_score":73.96,"raw_score":73.96,"confidence_score":100.0,"confidence_weighted_score":74.0,"tier_status":[{"tier":"community","label":"Community","freshness_sla_hours":720,"met":true,"priority_revalidation":false},{"tier":"pro","label":"Pro","freshness_sla_hours":168,"met":true,"priority_revalidation":true},{"tier":"enterprise","label":"Enterprise","freshness_sla_hours":24,"met":true,"priority_revalidation":true}]},"current_status":"healthy","current_score":73.96,"display_score":73.96,"stale_score_suppressed":false,"production_trust_decision":{"schema_version":"verify.executive_verdict.v1","decision":"Allow with approval","why":"write/admin actions need confirmation safeguards + unauthenticated behavior not proven","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":100.0,"label":"high","validation_age_hours":5.18,"live_check_count":21,"basis":{"evidence_bearing_validations":20,"affirmative_live_check_count":21,"validation_age_hours":5.18,"freshness_threshold_hours":24}},"active_alerts":[],"active_alert_summary":{"critical":0,"high":0,"medium":0,"low":0,"high_or_critical":0,"total":0},"materialization":{"state":"partial","trust_core_complete":true,"fields_unavailable":["tool_security_inventory","security_posture_summary","write_action_governance","capability_taxonomy","remediations"],"materialized_at":"2026-08-14T17:57:49.018106+00:00"}},"agent_commerce":{},"latest_claim":null,"maintainer_profile_slug":null,"watch_summary":{},"partial":true,"fields_unavailable":["tool_security_inventory","security_posture_summary","write_action_governance","capability_taxonomy","remediations"],"trust_evaluated_at":"2026-08-14T17:57:49.018106+00:00","evidence_revision":"2a3bd1c5eda5ad19eeec55f4","active_alert_summary":{"critical":0,"high":0,"medium":0,"low":0,"high_or_critical":0,"total":0},"materialization":{"state":"partial","trust_core_complete":true,"fields_unavailable":["tool_security_inventory","security_posture_summary","write_action_governance","capability_taxonomy","remediations"],"materialized_at":"2026-08-14T17:57:49.018106+00:00"},"owner_opted_out":false},"latest_validation":null,"current_snapshot":{"schema_version":"verify.trust_snapshot.v1","snapshot_id":"trustsnap_20a4cdb0b0d62d36","generated_at":"2026-08-14T17:57:49.018106+00:00","trust_evaluated_at":"2026-08-14T17:57:49.018106+00:00","evidence_revision":"2a3bd1c5eda5ad19eeec55f4","source":"current_snapshot","server":"ai.getminds/minds","last_validated_at":"2026-08-14T12:46:48.266629+00:00","validation_age_hours":5.18,"freshness":{"schema_version":"verify.freshness_profile.v1","last_validated_at":"2026-08-14T12:46:48.266629+00:00","age_hours":5.18,"bucket":"verified_last_24h","label":"Verified in last 24h","badges":["verified_last_24h"],"freshness_sla_hours":720.0,"freshness_sla_status":"met","stale_score_suppressed":false,"display_score":73.96,"raw_score":73.96,"confidence_score":100.0,"confidence_weighted_score":74.0,"tier_status":[{"tier":"community","label":"Community","freshness_sla_hours":720,"met":true,"priority_revalidation":false},{"tier":"pro","label":"Pro","freshness_sla_hours":168,"met":true,"priority_revalidation":true},{"tier":"enterprise","label":"Enterprise","freshness_sla_hours":24,"met":true,"priority_revalidation":true}]},"current_status":"healthy","current_score":73.96,"display_score":73.96,"stale_score_suppressed":false,"production_trust_decision":{"schema_version":"verify.executive_verdict.v1","decision":"Allow with approval","why":"write/admin actions need confirmation safeguards + unauthenticated behavior not proven","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":100.0,"label":"high","validation_age_hours":5.18,"live_check_count":21,"basis":{"evidence_bearing_validations":20,"affirmative_live_check_count":21,"validation_age_hours":5.18,"freshness_threshold_hours":24}},"active_alerts":[],"active_alert_summary":{"critical":0,"high":0,"medium":0,"low":0,"high_or_critical":0,"total":0},"materialization":{"state":"partial","trust_core_complete":true,"fields_unavailable":["tool_security_inventory","security_posture_summary","write_action_governance","capability_taxonomy","remediations"],"materialized_at":"2026-08-14T17:57:49.018106+00:00"}},"trust_snapshot":{"schema_version":"verify.trust_snapshot.v1","snapshot_id":"trustsnap_20a4cdb0b0d62d36","generated_at":"2026-08-14T17:57:49.018106+00:00","trust_evaluated_at":"2026-08-14T17:57:49.018106+00:00","evidence_revision":"2a3bd1c5eda5ad19eeec55f4","source":"current_snapshot","server":"ai.getminds/minds","last_validated_at":"2026-08-14T12:46:48.266629+00:00","validation_age_hours":5.18,"freshness":{"schema_version":"verify.freshness_profile.v1","last_validated_at":"2026-08-14T12:46:48.266629+00:00","age_hours":5.18,"bucket":"verified_last_24h","label":"Verified in last 24h","badges":["verified_last_24h"],"freshness_sla_hours":720.0,"freshness_sla_status":"met","stale_score_suppressed":false,"display_score":73.96,"raw_score":73.96,"confidence_score":100.0,"confidence_weighted_score":74.0,"tier_status":[{"tier":"community","label":"Community","freshness_sla_hours":720,"met":true,"priority_revalidation":false},{"tier":"pro","label":"Pro","freshness_sla_hours":168,"met":true,"priority_revalidation":true},{"tier":"enterprise","label":"Enterprise","freshness_sla_hours":24,"met":true,"priority_revalidation":true}]},"current_status":"healthy","current_score":73.96,"display_score":73.96,"stale_score_suppressed":false,"production_trust_decision":{"schema_version":"verify.executive_verdict.v1","decision":"Allow with approval","why":"write/admin actions need confirmation safeguards + unauthenticated behavior not proven","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":100.0,"label":"high","validation_age_hours":5.18,"live_check_count":21,"basis":{"evidence_bearing_validations":20,"affirmative_live_check_count":21,"validation_age_hours":5.18,"freshness_threshold_hours":24}},"active_alerts":[],"active_alert_summary":{"critical":0,"high":0,"medium":0,"low":0,"high_or_critical":0,"total":0},"materialization":{"state":"partial","trust_core_complete":true,"fields_unavailable":["tool_security_inventory","security_posture_summary","write_action_governance","capability_taxonomy","remediations"],"materialized_at":"2026-08-14T17:57:49.018106+00:00"}},"partial":true,"fields_unavailable":["tool_security_inventory","security_posture_summary","write_action_governance","capability_taxonomy","remediations"],"snapshot_invariant":{"schema_version":"verify.snapshot_invariant.v1","server":"ai.getminds/minds","ok":true,"surface_snapshot_ids":{"page":"trustsnap_20a4cdb0b0d62d36","badge":null,"report":"trustsnap_20a4cdb0b0d62d36","policy":null},"checked_surfaces":["page","report"],"unchecked_surfaces":["badge","policy"],"checked_count_surfaces":[],"count_mismatches":{},"checked_at":"2026-08-14T17:57:48.944299+00:00"},"history":{},"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,"high_or_critical_alerts":0,"degraded_by_active_alerts":false},"agent_commerce_readiness":{},"evidence_confidence":{"score":100.0,"label":"high","reason":"Based on 20 recent validations, 21 captured checks, and validation age of 5.2 hours.","live_check_count":21,"validation_age_hours":5.18,"basis":{"evidence_bearing_validations":20,"affirmative_live_check_count":21,"validation_age_hours":5.18,"freshness_threshold_hours":24}},"recommended_for":[],"active_alerts":[],"remediations":[],"cache_note":"Fast fallback response; full report evidence is deferred to protect web capacity. Fields listed in fields_unavailable (including tool_security_inventory, and write_action_governance) are not yet computed on this response -- an empty value means unchecked, not confirmed clean. Treat partial responses as indeterminate.","publisher_claim":{"verified":false,"status":"unclaimed","claim_url":"https://verify.sentinelsignal.io/claim?server=ai.getminds%2Fminds&source=report_json","reason_code":"claim_to_publish_metadata","reason":"Claim this profile to verify publisher identity, add evidence, and manage trust metadata.","score_neutral":true},"observed_attention":{"schema":"verify.observed_attention.v1","window_days":30,"level":"none","label":"No observed attention","summary":"No recent machine-readable trust or discovery activity observed for this server.","segments":{"useful_ai_user":{"level":"none","observed":false,"description":"AI-assisted user sessions such as ChatGPT/User or Claude/User."},"machine_trust_evaluator":{"level":"none","observed":false,"description":"Synthetic sessions inspecting multiple trust surfaces such as report, policy, ledger, badge, trust-summary, or compare."},"possible_agent_or_script":{"level":"none","observed":false,"description":"Structured direct sessions with rapid profile, compare, report, policy, badge, or trust-surface fan-out."},"isolated_machine_surface":{"level":"none","observed":false,"description":"Aged-out direct synthetic singleton sessions that touched a machine-readable trust surface without becoming a broader evaluator."},"ai_crawler":{"level":"none","observed":false,"description":"Known AI crawler activity such as ClaudeBot, GPTBot, or similar crawlers."},"search_crawler":{"level":"none","observed":false,"description":"Search and SEO crawler activity."},"browser_like_automation":{"level":"none","observed":false,"description":"Browser-like synthetic sessions with rapid structured endpoint activity."},"confirmed_human":{"level":"none","observed":false,"description":"Confirmed browser-session human activity."}},"surfaces_observed":{"server_profile":false,"compare":false,"compare_json":false,"compare_api":false,"report_json":false,"policy":false,"ledger":false,"badge_metadata":false,"badge_svg":false,"trust_summary":false,"mcp_tool":false},"claim_prompt":{"recommended":false,"reason":"No claim prompt is recommended from observed attention in the current window."},"notes":["Observed attention is based on segmented first-party telemetry.","Crawler and evaluator activity is not treated as confirmed human demand.","Public levels are bucketed to avoid exposing raw traffic counts."]},"owner_activation":{"claim_recommended":false,"reason":"no_observed_attention"},"related_machine_surfaces":{"compare_index":"/compare.json","compare_api":"/v1/compare?server=ai.getminds%2Fminds","trust_summary":"/v1/servers/ai.getminds/minds/trust-summary","ledger":"/v1/servers/ai.getminds/minds/ledger","policy":"/v1/servers/ai.getminds/minds/policy","report":"/v1/servers/ai.getminds/minds/report"},"intelligence_api":{"available":true,"signup_url":"https://verify.sentinelsignal.io/verify-intelligence-api","use_case":"Programmatic MCP server trust, comparison, policy, and evidence enrichment."},"trust_evaluated_at":"2026-08-14T17:57:49.018106+00:00","evidence_revision":"2a3bd1c5eda5ad19eeec55f4","active_alert_summary":{"critical":0,"high":0,"medium":0,"low":0,"high_or_critical":0,"total":0},"materialization":{"state":"partial","trust_core_complete":true,"fields_unavailable":["tool_security_inventory","security_posture_summary","write_action_governance","capability_taxonomy","remediations"],"materialized_at":"2026-08-14T17:57:49.018106+00:00"}}