Minds: Synthetic Market Research Panels
Server Details
Run AI market research: synthetic customer panels for concept testing, message testing, segments.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP
- URL
- Repository
- minds-ai-co/minds-mcp
- GitHub Stars
- 2
- Server Listing
- Minds MCP Server
Available Tools
19 toolsask_audienceAsk One Standalone Audience QuestionAInspect
Submits exactly one respondent-visible standalone question to one existing Audience, identified by exact ID or fuzzy name. It creates a private Study for that Audience, starts asynchronous responses from its Minds, and returns the Study identifier and links. Automatic classification may reformulate the question; this operation does not promise verbatim wording. Locked respondent wording and response formats require a reviewed and confirmed Study plan. Never use this operation for a questionnaire, battery, section, cohesive question set, or any request with two or more known questions; create a Study and plan the complete multi-question block instead. MCP cannot read or upload a local file:// path. Use a fetchable HTTP(S) URL, a signed URL supplied by the client for the attached file, or an existing Minds workspace upload URL/path. Study tools import external file URLs into durable Minds storage before saving or running. The Study refuses to start if Minds cannot read the asset.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Optional name for the Study created to ask this question. Defaults to the Audience name. | |
| groupId | No | Legacy alias for audienceId. Accepted for compatibility. | |
| question | Yes | Exactly one respondent-visible standalone question for every Mind in the Audience. 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. | |
| groupName | No | Legacy alias for audienceName. Accepted for compatibility. | |
| audienceId | No | Audience ID (UUID). Preferred when known. | |
| attachments | No | Files/images processed once and given to every Audience member as context. MCP cannot read or upload a local file:// path. Use a fetchable HTTP(S) URL, a signed URL supplied by the client for the attached file, or an existing Minds workspace upload URL/path. Study tools import external file URLs into durable Minds storage before saving or running. The Study refuses to start if Minds cannot read the asset. | |
| audienceName | No | Audience name to resolve via fuzzy match against the user's Audiences. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses key behaviors beyond annotations: it creates a private Study, starts asynchronous responses, returns the Study identifier and links, may reformulate the question, and refuses to start if an asset cannot be read. There is no contradiction with the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core action and uses subsequent sentences for routing, behavioral caveats, and file constraints. It is somewhat redundant with the schema's repeated local-file:// warnings, which keeps it from being maximally concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite having no output schema, the description states what is returned: the Study identifier and links. It covers async behavior, reformulation risk, the multi-question exclusion, and asset accessibility requirements, making it complete for an agent to invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description adds extra operational meaning: the question field content can reach Minds and should not contain planner-only instructions, audience resolution can be exact ID or fuzzy name, and attachment URLs must be fetchable rather than local paths. This goes beyond the schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a precise verb and resource: submits exactly one respondent-visible standalone question to one existing Audience by ID or fuzzy name. It clearly distinguishes this from multi-question Study creation and from sibling tools by explicitly forbidding questionnaire, battery, or section use cases.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives explicit when-to-use criteria: exactly one standalone question to one Audience. It also provides a direct alternative: create a Study and plan the complete multi-question block instead. File URL constraints and the no-local-file:// rule give practical invocation guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ask_studyAsk One Standalone Question in a StudyAIdempotentInspect
Submits exactly ONE respondent-visible question in an existing Study. Applicability: one standalone question, or one adaptive follow-up whose wording could not be known before earlier results. Exclusion: never use this operation for a questionnaire, survey, battery, section, cohesive question set, or any request containing two or more known questions—even when every question targets the same Study. The complete known set belongs in one planned and confirmed multi-question block inside the Study and must be submitted once, not question by question. Follow-up questions remain within the existing Study; this operation does not create or enumerate Studies. The full question value may reach respondents and is not planner-only metadata. Scale, categorical, and qualitative questions are classified automatically, and the response includes status and workspace links. Automatic classification may reformulate the question; this operation does not promise verbatim wording. Locked respondent wording and response formats require a reviewed and confirmed Study plan. The question is classified before it is queued, so the returned status is authoritative: queued or running means it was submitted to respondents, while planning_required means it was declined as an unrefined research objective and nothing was submitted. A planning_required response carries the original request plus a proposed headline and respondent questions for study planning. MCP cannot read or upload a local file:// path. Use a fetchable HTTP(S) URL, a signed URL supplied by the client for the attached file, or an existing Minds workspace upload URL/path. Study tools import external file URLs into durable Minds storage before saving or running. The Study refuses to start if Minds cannot read the asset.
| Name | Required | Description | Default |
|---|---|---|---|
| links | No | Web pages given to every Mind as evidence for this question through v1 /studies/{studyId}/runs. | |
| model | No | Optional per-request model override. Must be sent together with provider. | |
| panelId | No | Study ID (UUID; legacy wire field name: panelId). Omit both panelId and panelName only when continuing the active Study from this MCP session. | |
| studyId | No | Study ID (UUID). Omit with studyName to continue the active Study from this MCP session. | |
| groupIds | No | Legacy alias for audienceIds. Accepted for compatibility. | |
| keywords | No | Search keywords used to gather evidence for this question through v1 /studies/{studyId}/runs. | |
| provider | No | Provider for the model override. Must be sent together with model. | |
| question | Yes | Exactly ONE respondent-visible standalone question or result-dependent adaptive follow-up for every selected Mind. Never concatenate, enumerate, or otherwise place a questionnaire, survey, battery, section, cohesive question set, or two or more known questions in this field. The system may classify or reformat it, but any text here can reach the Minds and influence their answers. Include only the single question, its necessary stimulus, and respondent-facing instructions. Never place planner-only or MCP-client orchestration instructions here. | |
| panelName | No | Study name (fuzzy matched; legacy wire field name: panelName). Omit both panelName and panelId only when continuing the active Study from this MCP session. | |
| studyName | No | Study name (fuzzy matched). Omit with studyId to continue the active Study from this MCP session. | |
| attachments | No | Files/images processed once and given to every participating Mind. MCP cannot read or upload a local file:// path. Use a fetchable HTTP(S) URL, a signed URL supplied by the client for the attached file, or an existing Minds workspace upload URL/path. Study tools import external file URLs into durable Minds storage before saving or running. The Study refuses to start if Minds cannot read the asset. | |
| audienceIds | No | Optional subset of the Study's Audiences to ask; defaults to all Audiences. | |
| historyMode | No | Controls prior Study-history carryover for this one direct question. Defaults to none, so this measurement is independent of earlier Study questions. last5 is only for a conversational/adaptive question that requires respondent continuity; it costs roughly 2.4x wall-clock for about 0.6pp of accuracy. followup_only carries history only when the submitted question is classified as a conversational follow-up. | |
| sourcePolicy | No | Use knowledge_only to forbid web/request sources and require every answer to be grounded in processed Mind knowledge. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Despite useful annotations (idempotentHint, openWorldHint, destructiveHint=false), the description carries substantial extra behavioral weight: automatic classification may reformulate the question so verbatim wording is not promised, the returned status is authoritative (queued/running means actually submitted, planning_required means declined with nothing submitted), and the planning_required payload is described. It also warns the full question value reaches respondents and that MCP cannot read local file:// paths. This far exceeds what the annotations convey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core purpose is front-loaded and essentially every sentence carries decision-relevant content, but the description is verbose. The file:// limitation is stated in the description and then repeated three more times across schema attachment properties, and the 'never use for multi-question' exclusion is restated multiple times. It is substantive, not bloated, but could be tightened by roughly a third without losing information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 14-parameter tool with no output schema, the description compensates well: it defines the three possible status outcomes and what planning_required returns, explains classification/reformulation risk, and clarifies file URL constraints and durable storage import. Minor gaps remain—the response shape is only partially described ('status and workspace links'), and active-session continuation semantics live only in the schema—but nothing critical is missing for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3 with the schema doing the heavy lifting. The description adds value beyond the schema for the question parameter by explaining the system may classify or reformat it and that any text can reach Minds, and it reinforces attachment URL constraints. This lifts it above baseline, though the description does not systematically walk through each parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a precise verb+resource+scope: 'Submits exactly ONE respondent-visible question in an existing Study.' This is immediately distinguishable from siblings like plan_study_questions, run_study_questions, and create_study because it scopes to a single question inside an existing Study and explicitly says it does not create or enumerate Studies.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit applicability ('one standalone question, or one adaptive follow-up whose wording could not be known before earlier results') and an explicit exclusion: never for questionnaires, surveys, batteries, sections, cohesive question sets, or two or more known questions. It also names the correct alternative routing—the complete known set belongs in 'one planned and confirmed multi-question block'—so an agent knows exactly when to choose a different tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_audience_from_briefCreate a Grounded Audience from a BriefAIdempotentInspect
Creates a grounded Audience of synthetic Minds from a population or audience brief. It can combine authoritative web research, supplied sources, research files, and reviewed spreadsheet distributions; persists provenance and allocation audits; supports balanced, segment-coverage, and benchmark-depth sizing; can individually train every member of a large reviewed-dataset cohort in the background (trainMembers); is idempotent for identical inputs; and keeps the Audience private unless link sharing is enabled.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Optional Audience name override. When omitted, the server names the Audience from the brief or the LLM detection result. | |
| text | No | Legacy alias for `brief`. Accepted for back-compat. | |
| brief | No | Free-text brief describing the population the Audience 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. | |
| files | No | Optional already-uploaded research files. MCP cannot read or upload a local file:// path. Use a fetchable HTTP(S) URL, a signed URL supplied by the client for the attached file, or an existing Minds workspace upload URL/path. Study tools import external file URLs into durable Minds storage before saving or running. The Study refuses to start if Minds cannot read the asset. The server analyzes these through the same extended screener/questionnaire path as the in-app New Audience uploader, including study roles, screening and quota rules, review distributions, and grounding provenance. | |
| links | No | Optional URLs scraped server-side for additional context (e.g. an article describing the population). | |
| keywords | No | Optional Exa web-search seeds added alongside the brief. | |
| memberCount | No | Exact number of Minds to create. 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. When omitted, the size is inferred from the brief and, failing that, from the creation mode's evidence-based automatic sizing. Two separate refusals apply: 403 MODE_CAP above 20 in "balanced" mode (switch to segment_coverage or benchmark_depth), and 403 PLAN_LIMIT above your plan's per-Audience cap. The 6000 accepted here is the absolute system ceiling, not your allowance — call get_audience_limits for the real one. The Audience is never created at a partial size. | |
| trainMembers | No | Opt-in per-Mind training for large reviewed-dataset cohorts (default false). By default a reviewed-dataset Audience of more than ~40 Minds is bulk-created immediately ready: exact demographics, but no per-Mind research training (empty system prompt, no knowledge items). Set true to create those Minds untrained instead and enqueue each one through the same per-member training pipeline the in-app draft flow uses, preserving its deterministic cohort profile and the request locale. The tool still returns as soon as the Audience exists — training continues in the background (structuredContent.audience.memberTraining reports what was queued); poll each member with GET /api/v1/minds/{id}/training. Has no effect on Audiences whose members are already trained individually. | |
| cohortAllocation | No | 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. | |
| groundingPreview | No | Review the quota axes BEFORE any Mind exists. When true, the server runs research grounding and returns the axes it would allocate on — with Study-outcome axes demoted and listed in flaggedDistributions — without creating an Audience or Minds and without consuming a generation allowance. Present the axes to the user for approval, then call again without groundingPreview (same brief and options) to create, passing any axis names to drop as excludeDistributions. | |
| includeWebSearch | No | Set false to skip Exa web search and extraction completely. The Audience is then grounded only on the brief and supplied files, links, keywords, and structurally parsed respondent data. | |
| groupCreationMode | No | Legacy alias for audienceCreationMode — same values, same behaviour. How the Audience is sized. "balanced" (default): compact and representative for everyday research. It is the only mode with a hard wall on a size you state — a memberCount above 20 is refused with 403 MODE_CAP. "segment_coverage": two representatives per limiting grounded cell, from a 10-Mind floor; automatic sizing stops at 50, but a memberCount you state is bounded only by your plan. "benchmark_depth": repeated representation of limiting grounded cells for validation-ready segmentation; bounded by your plan allowance. The deeper two require a Team (enterprise) plan — on other plans the server SILENTLY downgrades to "balanced" and echoes the effective mode in structuredContent.audience.audienceCreationMode. Call get_audience_limits to see the ceilings that apply to your account. | |
| datasetSegmentation | No | Reviewed variable roles, distributions, and privacy-safe pairwise relationships returned by preview_audience_dataset_segmentation. Requires audienceCreationMode="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. | |
| audienceCreationMode | No | How the Audience is sized. "balanced" (default): compact and representative for everyday research. It is the only mode with a hard wall on a size you state — a memberCount above 20 is refused with 403 MODE_CAP. "segment_coverage": two representatives per limiting grounded cell, from a 10-Mind floor; automatic sizing stops at 50, but a memberCount you state is bounded only by your plan. "benchmark_depth": repeated representation of limiting grounded cells for validation-ready segmentation; bounded by your plan allowance. The deeper two require a Team (enterprise) plan — on other plans the server SILENTLY downgrades to "balanced" and echoes the effective mode in structuredContent.audience.audienceCreationMode. Call get_audience_limits to see the ceilings that apply to your account. | |
| excludeDistributions | No | Exact axis names (copied from a preview) that must not be used as cohort quotas. Applied deterministically after grounding; the evidence stays visible in reviewDistributions. | |
| isLinkSharingEnabled | No | Set true ONLY when the user explicitly asked for a public/shareable link. Defaults to false: the Audience is private to its owner and no share URL is generated. Enabling this publishes the Audience — including its grounding, sources and personas — at a world-readable URL that needs no login. Do not enable it to "be helpful". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description substantially augments the annotations: it states idempotency ('is idempotent for identical inputs'), the privacy default ('keeps the Audience private unless link sharing is enabled' plus the explicit 'Do not enable it to be helpful' warning), silent downgrade behavior ('the server SILENTLY downgrades to balanced'), specific refusal codes (403 MODE_CAP, 403 PLAN_LIMIT), background training semantics, and the 'never created at a partial size' guarantee. No contradictions with readOnlyHint=false, openWorldHint=true, idempotentHint=true, destructiveHint=false.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The main description is a single dense, semicolon-heavy sentence — every clause earns its place and the core purpose is front-loaded. Parameter descriptions are verbose but each adds non-obvious operational detail. The density is justified for a 16-parameter tool, though splitting the lead sentence would improve scannability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 16-parameter, 0-required-param tool with no output schema, this is remarkably complete: it documents refusals, plan downgrades, the preview-then-create flow, background training polling (GET /api/v1/minds/{id}/training), file URL constraints, and output locations via structuredContent references. No significant gap for an agent to select and invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 100% schema description coverage the baseline is 3, but the parameter docs add substantial operational meaning: memberCount explains the two refusal codes and the 6000 system ceiling vs. plan allowance, trainMembers explains the ~40-Mind bulk-creation default and queued training pipeline, isLinkSharingEnabled warns about world-readable publication, and files explains that local file:// paths are unreadable. This is far beyond schema-type documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource — 'Creates a grounded Audience of synthetic Minds from a population or audience brief' — and enumerates distinct capabilities (web research, provenance audits, sizing modes, background training, idempotency, privacy default). The title reinforces the purpose, and the resource (Audience creation) cleanly separates it from study-oriented siblings like create_study and ask_audience.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The top-level description doesn't name sibling alternatives, but parameter docs embed strong workflow guidance: 'Call get_audience_limits for the real one' (memberCount), the groundingPreview two-call pattern ('Present the axes to the user for approval, then call again without groundingPreview'), and datasetSegmentation's requirement that audienceCreationMode="benchmark_depth". This provides clear when/how context, though it doesn't explicitly exclude sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_studyCreate a StudyAIdempotentInspect
Creates a new Study workspace from existing Audiences or inline Audience configurations; it does not ask questions or run research. Follow-up research in an existing Study does not require another Study. Every questionnaire, survey, battery, section, cohesive question set, or request with two or more known questions belongs in one planned and confirmed multi-question block inside that Study. Never submit such a known set as separate direct questions. A direct question is appropriate only when exactly one standalone question is known or the next question depends on earlier results. Composite creation is atomic and rolls back partial Audience failures. Studies are private by default; enabling link sharing also publishes the attached Audiences and Minds.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Name for the Study workspace (e.g., "Brand Perception Study", "Q4 Market Research") | |
| groupIds | No | Legacy alias for audienceIds. | |
| audienceIds | No | Preferred field for existing Audience IDs to attach — use list_audiences to find IDs. | |
| groupConfigs | No | Legacy alias for audienceConfigs. | |
| audienceConfigs | No | Preferred field for new Audiences to create and attach atomically. | |
| isLinkSharingEnabled | No | Set true ONLY when the user explicitly asked for a public/shareable Study link. Defaults to false: the Study is private to its owner and no share URL is generated. Enabling this ALSO publishes every attached Audience and every Mind inside them at world-readable URLs — including pre-existing Audiences passed via audienceIds. Do not enable it to "be helpful". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds meaningful behavioral context beyond the annotations: composite creation is atomic and rolls back partial Audience failures, Studies are private by default, and enabling link sharing publishes attached Audiences and Minds. These are non-obvious side effects an agent needs to know. No contradiction with the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core action is front-loaded, and every sentence contributes usage or behavioral guidance. The enumeration 'questionnaire, survey, battery, section, cohesive question set, or request with two or more known questions' is somewhat verbose but not padding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Combined with the rich schema and annotations, the description gives an agent enough to use the tool correctly: creation sources, multi-question workflow rules, atomicity, and privacy side effects. The only modest gap is that no output or return value is described, though no output schema exists.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the schema already documents each parameter, preferred vs legacy aliases, defaults, and the sharing side effect in detail. The description only reinforces the conceptual split between existing Audiences and inline configurations without adding new parameter-level semantics, so the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action and resource: 'Creates a new Study workspace from existing Audiences or inline Audience configurations.' It also explicitly distinguishes itself by noting it 'does not ask questions or run research,' which separates it from sibling tools like ask_study and ask_audience.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear when-to-use and when-not-to-use guidance: follow-up research does not require another Study, multi-question sets must not be submitted as separate direct questions, and a direct question is appropriate only for a standalone or dependent next question. This is actionable routing guidance beyond simple context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
export_audienceExport Audience BriefAIdempotentInspect
Exports an Audience brief through the same unified branded renderer used by the web app. Supports Markdown, PDF, DOCX, and PPTX. Binary artifacts are returned as base64.
| Name | Required | Description | Default |
|---|---|---|---|
| force | No | Regenerate instead of returning a cached artifact. | |
| format | No | Export format: "md" (default), "pdf", "docx", or "pptx" | |
| groupId | No | Legacy alias for audienceId. Accepted for compatibility. | |
| groupName | No | Legacy alias for audienceName. Accepted for compatibility. | |
| audienceId | No | Audience ID (UUID). | |
| audienceName | No | Audience name (fuzzy matched). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds value beyond the annotations by disclosing that output uses the unified branded renderer, supports specific formats, and returns binary artifacts as base64. This is especially helpful because there is no output schema. It does not contradict the idempotentHint or destructiveHint annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, no filler, with the key action and resource front-loaded. The format list and base64 return behavior each earn their place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the rich parameter schema and idempotent annotation, the description covers the essential outcomes: what is exported, supported formats, and return encoding. It lacks explicit prose about cached-artifact behavior or identifier selection, but the force parameter and schema descriptions cover those gaps. Without an output schema, the base64 statement is essential and present.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all parameters and aliases. The description adds no parameter-specific meaning beyond naming the export formats, which the schema already enumerates. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Exports') and resource ('an Audience brief'), which clearly distinguishes it from sibling tools like export_study, export_heatmap, and export_mind. The target resource is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool is for exporting audience briefs, but it does not explicitly state when to use it over the other export siblings or provide any when-not guidance. Sibling differentiation is left to inference from the tool name and the word 'Audience brief'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
export_heatmapExport Website HeatmapAIdempotentInspect
Exports a completed website heatmap from a Study result, identified by the message ID reported with the completed result. Returns the same ZIP archive as the web app, including its unified-renderer PDF report, Markdown, images, and metadata.
| Name | Required | Description | Default |
|---|---|---|---|
| force | No | Regenerate the ZIP archive instead of returning the cached artifact. | |
| panelId | No | Study ID (UUID; legacy wire field name: panelId) | |
| studyId | No | Study ID (UUID). | |
| messageId | Yes | ID of the completed Study result containing the website heatmap. Completed Study results report this identifier when the answer carries a heatmap. | |
| panelName | No | Study name (fuzzy matched; legacy wire field name: panelName) | |
| studyName | No | Study name (fuzzy matched). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish idempotency and non-destructiveness. The description adds useful behavioral context by specifying the exact return artifact: the same ZIP archive as the web app, containing a PDF report, Markdown, images, and metadata. This goes beyond the structured annotations and does not contradict them.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tightly written sentences with no filler. The first sentence front-loads the action and key identifier; the second specifies the output contents. Every clause contributes meaningful information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with a single required parameter and full schema coverage for optional parameters, the description provides everything needed to call it correctly: what is exported, where the identifier comes from, and what the returned artifact contains. The absence of an output schema is mitigated by the explicit description of the ZIP contents.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage for all six parameters, so the description is not required to explain parameter semantics. The description only reinforces messageId's role as the completed-result identifier, adding no information beyond the schema. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Exports') and clearly identifies the resource ('website heatmap') and source ('from a Study result' with 'message ID'). This differentiates it from sibling export tools like export_audience, export_mind, and export_study by resource type.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives a clear usage condition: export only a completed website heatmap identified by the message ID reported with the completed result. It does not explicitly name alternatives or exclusions, but the resource-specific wording makes the intended context unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
export_mindExport Mind Persona ProfileAIdempotentInspect
Generates a branded profile for one existing Mind, identified by exact ID or fuzzy name. Markdown is returned inline by default; PDF, DOCX, and PPTX artifacts are returned as base64 with a workspace link.
| Name | Required | Description | Default |
|---|---|---|---|
| force | No | Regenerate instead of returning a cached artifact. | |
| format | No | Export format: "md" (default) markdown persona profile (returned inline), "pdf" portrait branded profile, "docx" Word document, "pptx" editable branded deck | |
| mindId | No | Mind ID (UUID) | |
| mindName | No | Mind name (fuzzy matched) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds behavior beyond annotations by explaining the default return mode (inline Markdown) and the binary artifact behavior (base64 plus workspace link). Since annotations already indicate idempotence and non-destructiveness, this focused extra context is valuable.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, tightly written, front-loading the core action and then adding the return format distinction. No filler or redundant repetition of the title.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description still provides enough: what is generated, how to identify the target, supported formats, and the return mode for each format. A complete call is derivable without additional assumptions.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema covers all 4 parameters with descriptions, so the baseline is solid. The description adds useful context on how formats behave and clarifies that both exact ID and fuzzy name are valid identifiers, which helps an agent select the right operationally.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb and resource: 'Generates a branded profile for one existing Mind.' It clearly distinguishes itself from sibling export tools (export_group, export_panel, export_heatmap) by naming the target resource and the identifier mechanism.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context: use this when exporting a profile for an existing Mind, identified by exact ID or fuzzy name. It does not explicitly name sibling export tools as alternatives, but the intended scope is unmistakable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
export_studyExport Study ResultsAIdempotentInspect
Starts an asynchronous export of Study results and returns an export job ID. Supports executive briefs and full reports in PDF, DOCX, PPTX, or Markdown, plus raw data in CSV, XLS, or SPSS SAV.
| Name | Required | Description | Default |
|---|---|---|---|
| kind | No | Report kind. Defaults to full_report, except CSV/XLS/SAV which default to raw_data. | |
| force | No | Regenerate instead of returning a cached artifact. | |
| format | No | Export format: "pdf" (default), "docx", "pptx", "csv", "xls", "sav", or "md" (also accepts "markdown"). Executive-summary and full-report PPTX exports use a slide-native 16:9 layout. | |
| length | No | Requested report detail for executive_brief and full_report exports. | |
| panelId | No | Study ID (UUID; legacy wire field name: panelId). Omit both panelId and panelName only when exporting the active Study from this MCP session. | |
| studyId | No | Study ID (UUID). Omit with studyName to export the active Study. | |
| panelName | No | Study name (fuzzy matched; legacy wire field name: panelName). Omit both panelName and panelId only when exporting the active Study from this MCP session. | |
| studyName | No | Study name (fuzzy matched). Omit with studyId to export the active Study. | |
| scheduledRunId | No | Export only the messages produced by one scheduled run of this Study, instead of the whole timeline. Use the run ID from the Study schedule history. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish idempotence and non-destructiveness, so the description's added value is its clarification that exports are asynchronous and yield a job ID. This is behavior beyond the structured annotations and helps an agent know not to expect the artifact in the immediate response. Some context, such as how to retrieve completion status, is left implicit but is not critical for the call itself.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two focused, front-loaded sentences: it immediately conveys the asynchronous behavior and return value before listing supported outputs. No filler or redundant explanation.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 9 parameters but comprehensive schema descriptions, the description gives enough high-level orientation around purpose, formats, and the job-ID return. It lacks only minor operational detail such as how to poll the eventual export status, but the return contract is explicit and the remaining complexity is handled by the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% parameter description coverage, so the schema already explains every parameter thoroughly. The description's format summary is helpful orientation but doesn't add significant semantic meaning beyond the schema. The 3 baseline is appropriate because the schema carries the semantic load.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific action and resource ('starts an asynchronous export of Study results') and clearly separates this from sibling exporters like export_audience, export_heatmap, and export_mind by scoping it to Study results. It also states what the caller receives: an export job ID.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context for when to call it: when exporting Study results asynchronously, in one of several listed formats. It does not explicitly name sibling tools or say when not to use them, but the resource scope and format list are enough to route an agent correctly in most cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_audience_limitsGet Audience LimitsARead-onlyIdempotentInspect
Call this before creating an Audience whenever a size is in play — the user named a number, asked for "as many as possible", or you are choosing a creation mode. Returns the ceilings that apply to THIS account: the per-Audience plan cap including any negotiated Enterprise allowance, the custom-size maximum, and per-mode ceilings.
Read the two mode ceilings carefully, they are different things: automaticSizingCeiling bounds the size the server picks when you send no memberCount, while explicitCountCeiling bounds a size you state. Only "balanced" has the latter — exceed it and creation is refused with MODE_CAP. In the deeper modes a stated size is bounded by memberCap alone.
Prefer calling this over guessing: being refused mid-creation is expensive, because the build has already been enqueued by then.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | Report only this creation mode. Omit to see every mode. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark this as read-only and idempotent, and the description adds substantial behavioral context beyond that: it distinguishes automaticSizingCeiling from explicitCountCeiling, explains that only 'balanced' mode has the explicit ceiling, and discloses the MODE_CAP refusal behavior and the fallback to memberCap. This goes far beyond what the annotations provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with a bold, actionable directive, followed by precise, non-redundant details about the returned ceilings and failure behavior. Every sentence earns its place, and the warning about expensive mid-creation failures justifies the tool's importance without fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only, optional-parameter tool, the description fully covers when to call it, what it returns, how the mode parameter alters behavior, and what error occurs on exceeding a ceiling. Even without an output schema, it enumerates the key returned fields and their semantics, leaving no critical gap for an agent deciding to invoke this tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema documents the optional mode parameter at 100% coverage, and the description adds meaning by explaining what each mode ceiling represents and how mode choice affects which ceiling applies. It clarifies the consequences of omitting memberCount and of stating a size, making the mode parameter semantically richer than the schema alone.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb and resource ('returns the ceilings that apply to THIS account') and clearly frames the tool as a pre-creation check for Audience sizes. It distinguishes itself from creation and listing siblings by emphasizing that it reports limits rather than creating or listing anything.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives explicit when-to-use triggers: 'Call this before creating an Audience whenever a size is in play', with concrete examples like a named number, 'as many as possible', or choosing a creation mode. It also actively recommends the tool over guessing, explaining the cost of being refused mid-creation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_study_runGet Multi-Question Run StatusARead-onlyIdempotentInspect
Returns durable progress or results for one confirmed multi-question run inside a Study, including its immutable confirmed plan, server-prepared execution plan, respondent-visible question audit, question progress, response artifacts, deterministic method calculations, and stage readiness.
| Name | Required | Description | Default |
|---|---|---|---|
| runId | No | Multi-question run ID returned by run_study_questions. Preferred. | |
| panelId | No | Legacy alias for the Study workspace ID. Accepted for compatibility. | |
| studyId | No | Study workspace ID (UUID). When panelId is supplied for compatibility, studyId may carry the legacy run identifier. | |
| panelName | No | Legacy alias for studyName. Accepted for compatibility. | |
| studyName | No | Study workspace name for fuzzy matching. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish readOnly, idempotent, and non-destructive behavior. The description adds substantial context beyond annotations by detailing the exact contents of the response (immutable plan, execution plan, question audit, progress, artifacts, deterministic calculations, stage readiness). This is especially valuable given there is no output schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core result is front-loaded in the first clause, and the long enumeration of response components is information-dense rather than redundant. It is a single well-structured sentence, though slightly long due to the itemized list.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description compensates by enumerating the returned artifacts and noting durability. It also clarifies the run is inside a Study and confirmed, which helps set expectations. It does not mention error cases or how to choose among the five optional identifiers, but the schema covers the identifiers fully.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and each parameter has a clear explanatory description, including which is preferred (runId) and which are legacy aliases. The description adds no new parameter-level meaning; baseline 3 applies when schema carries the full burden.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description uses a specific verb ('Returns') and a specific resource ('progress or results for one confirmed multi-question run inside a Study'), followed by a precise enumeration of returned components. This clearly distinguishes it from sibling tools like get_study_status and get_study_summary that operate at the study level rather than the run level.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'one confirmed multi-question run' implies this is called after a run has been created, giving clear context. However, it does not explicitly state when not to use it or name alternatives such as get_study_status, so it stops short of full exclusion guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_study_statusGet Study StatusARead-onlyIdempotentInspect
Returns the current Study state, live progress for in-flight questions, completed per-Audience results, linked Minds, Study links, and the status of a specific asynchronous export job when export identifiers are supplied. Values can be numeric answers or classified summary labels; message fields contain the original Mind responses when available. locale is the Study display locale, not a guarantee of the language of every response.
| Name | Required | Description | Default |
|---|---|---|---|
| panelId | No | Study ID (UUID; legacy wire field name: panelId). Omit both panelId and panelName only for the active Study from this MCP session. | |
| studyId | No | Study ID (UUID). Omit with studyName to use the active Study. | |
| panelName | No | Study name (fuzzy matched; legacy wire field name: panelName). Omit both panelName and panelId only for the active Study from this MCP session. | |
| studyName | No | Study name (fuzzy matched). Omit with studyId to use the active Study. | |
| exportKind | No | Asynchronous export kind whose status should be returned (defaults to full_report). | |
| exportJobId | No | Export job ID returned by export_study. Pass it with exportKind and exportFormat to poll that exact artifact. | |
| exportFormat | No | Asynchronous export format whose status should be returned (defaults to pdf). HTML and PNG are accepted here only to finish polling previously created executive-summary jobs. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is known. The description adds meaningful nuance: values may be numeric answers or classified labels, message fields contain original Mind responses when available, and locale is only the display locale, not a language guarantee. These go beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences with no filler: the first is front-loaded with the primary return resource and its major categories, the second clarifies value semantics, and the third adds an important locale caveat. Every sentence earns its place and no schema content is redundantly repeated.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only status tool with no output schema, the description inventories the main return categories and clarifies ambiguous fields (values, message, locale). It does not specify the exact export job states or response shape, but the annotations and detailed parameter schema make the description sufficient for selection and invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and each parameter is already documented in detail, including legacy field names, UUID formats, defaults, and omission rules for the active Study. The description adds only the general notion that export identifiers trigger job-status mode, which the schema already supports for the individual parameters. This meets the baseline but does not materially extend the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb ('Returns') and names the resource ('current Study state'), then enumerates distinct facets: live progress, completed per-Audience results, linked Minds, Study links, and export job status. This clearly distinguishes it from siblings like get_study_summary or get_study_run, and the export-polling mode is explicitly identified.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context for when the tool applies: querying overall study state, and specifically polling an asynchronous export when export identifiers are supplied. It does not explicitly name alternatives or state when not to use it, but the trigger condition for the export-job mode is stated clearly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_study_summaryGet Study SummaryAIdempotentInspect
Returns or refreshes the semantic summary for a Study as Markdown plus flexible evidence blocks. Website, image, and video analyses retain heatmap-compatible block metadata.
| Name | Required | Description | Default |
|---|---|---|---|
| force | No | Regenerate even when the covered message range is unchanged. | |
| length | No | standard | |
| panelId | No | Study ID (UUID; legacy wire field name: panelId). Omit both panelId and panelName only for the active Study from this MCP session. | |
| refresh | No | Generate or refresh the summary instead of only reading the persisted summary. | |
| studyId | No | Study ID (UUID). Omit with studyName to use the active Study. | |
| panelName | No | Study name for fuzzy matching (legacy wire field name: panelName). Omit both panelName and panelId only for the active Study from this MCP session. | |
| studyName | No | Study name for fuzzy matching. Omit with studyId to use the active Study. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already convey idempotency, non-read-only behavior, and non-destructiveness. The description adds that the tool can 'refresh' a summary rather than only reading it, and that output retains heatmap-compatible metadata, but it does not discuss side effects, rate limits, or what regeneration entails.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with no filler. The primary action and output format are front-loaded, and the second sentence adds relevant, non-redundant detail about metadata retention.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description gives a solid high-level picture of the return format and refresh behavior, but lacks detail about what 'flexible evidence blocks' means and does not situate the tool among related siblings. Given no output schema and a 7-parameter surface, the description is adequate but leaves meaningful gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is high at 86%, with detailed parameter descriptions for force, length, refresh, and Study identifiers. The tool description itself adds no parameter-specific semantics, so the baseline score of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Returns or refreshes') with a clear resource ('semantic summary for a Study') and output format ('Markdown plus flexible evidence blocks'). It is distinct from sibling tools like get_study_run and get_study_status, which target run state and status rather than the semantic summary.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no explicit guidance about when to use this tool versus alternatives such as get_study_run, get_study_status, or export_study. Some context about active Study selection exists in parameter descriptions, but the tool description itself does not provide usage direction or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_audiencesList AudiencesARead-onlyIdempotentInspect
Lists the authenticated user's Audiences, including member Minds, sharing state, and workspace or shared links. Accepts an optional fuzzy name search.
| Name | Required | Description | Default |
|---|---|---|---|
| searchQuery | No | Search for an Audience by name (fuzzy matching supported) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent, non-destructive behavior. The description adds value by disclosing the composition of returned lists (member Minds, sharing state, links) and the fuzzy-search capability, which are not captured by annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no filler; the primary action and the optional parameter are front-loaded. Every clause adds information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple (one optional param, read-only, no output schema), and the description covers the main output facets and search behavior. It does not mention pagination or empty-result behavior, but these are minor for a straightforward list tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% for the single searchQuery parameter, and the description largely restates the schema's fuzzy-name-search semantics. It adds 'optional' but no new meaning beyond the schema, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a clear verb ('Lists') and resource ('the authenticated user's Audiences'), and adds specific content details (member Minds, sharing state, links) that distinguish it from sibling list tools like list_studies. The optional fuzzy search is also noted. This is a specific, non-tautological definition.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool is for browsing the user's audiences and offers an optional search, but it does not explicitly state when to prefer this over alternatives such as ask_audience or export_audience. No exclusions or alternative routing are provided, so an agent must infer usage from the resource name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_research_methodsList Research MethodsARead-onlyIdempotentInspect
Lists Minds research methods with availability, complexity, executable status, and fallback metadata. Results distinguish currently executable methods from experimental or planned methods.
| Name | Required | Description | Default |
|---|---|---|---|
| includePlanned | No | 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. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnlyHint, idempotentHint, and destructiveHint, and the description adds meaningful behavioral detail: availability is dynamic and only entries with executable:true can actually run. It also mentions fallback metadata, which is useful beyond the structured annotation info.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences front-load the main purpose and immediately clarify the executable-versus-planned distinction. Every clause contributes meaning; no redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
This is a straightforward read-only list tool with one optional parameter, and the description covers the primary output fields. There is no output schema, so the description's list of availability, complexity, executable status, and fallback metadata provides enough context for an agent to understand what it will receive without over-explaining.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the includePlanned parameter is well-explained in the schema itself. The tool description does not add any additional parameter-specific meaning, so this stays at the baseline 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb and resource ('Lists Minds research methods') and clearly states the key reported attributes: availability, complexity, executable status, and fallback metadata. It also distinguishes the distinction between executable and planned methods, which separates it from sibling list tools like list_groups and list_panels.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context on when this tool is useful—when you need to know which research methods are executable versus experimental/planned. The parameter description reinforces this by saying the model can 'explain framework compatibility,' but no explicit alternative tools or exclusions are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_studiesList StudiesARead-onlyIdempotentInspect
Lists the authenticated user's Studies with their Audiences, Minds, status, sharing state, and workspace or shared links. Accepts an optional fuzzy name search. A Study is the persistent workspace that contains its Audiences, questions, multi-question blocks, results, exports, and history.
| Name | Required | Description | Default |
|---|---|---|---|
| searchQuery | No | Search for a Study by name (fuzzy matching supported) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and idempotentHint, so the description does not need to restate safety. It adds useful behavioral context: the scope is limited to the authenticated user's Studies, and it specifies which fields are returned and that name search is fuzzy. It does not contradict annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the operation and resource, followed by a crisp definition of a Study. No filler or redundancy; every clause adds information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only list operation with one optional parameter and no output schema, the description covers scope, returned fields, filtering, and the domain concept. Nothing essential for calling the tool correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single parameter searchQuery is already fully described in the schema (fuzzy matching by Study name); the description essentially repeats 'optional fuzzy name search'. With 100% schema coverage, no additional parameter semantics are needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Lists'), a clear resource ('the authenticated user's Studies'), and enumerates the included fields (Audiences, Minds, status, sharing state, links). This makes the tool's purpose unambiguous and distinguishes it from resource-specific siblings like list_audiences and list_study_drafts.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use the tool: when you need a user's Studies along with their associated data and optional fuzzy name search. However, it gives no explicit guidance about when to prefer list_study_drafts, list_audiences, or other sibling tools, and mentions no exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_study_draftsList Study DraftsARead-onlyIdempotentInspect
Lists durable unfinished study drafts, or returns the complete saved planning state for one exact draft ID. Draft records are distinct from running or completed studies.
| Name | Required | Description | Default |
|---|---|---|---|
| draftId | No | Exact study draft ID to retrieve. Omit to list all resumable study drafts owned by the authenticated user. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, and non-destructive behavior, so the description builds on that by adding that it covers durable unfinished drafts and returns the complete saved planning state for an exact ID. No contradiction is present, and the additional context is useful for invocation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences deliver the core function and key distinction with no filler. The most important usage distinction is front-loaded before the clarifying sentence about draft records.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with a single optional parameter and read-only annotations, the description covers what it lists, what it retrieves by ID, and how drafts relate to other study statuses. The absence of an output schema means return format details are not fully specified, but the description gives enough context for effective selection and use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already fully documents the optional draftId with 100% coverage, so the baseline is 3. The description adds meaningful operational meaning beyond the schema by linking draftId omission to listing and draftId presence to returning saved planning state.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a precise verb and resource: listing durable unfinished study drafts or retrieving a complete saved planning state for one draft ID. It also explicitly distinguishes draft records from running or completed studies, which differentiates the tool from planning/run siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context by describing both operating modes and noting that drafts are separate from running or completed studies. It implies when to use this tool for resumable drafts rather than active studies, though it does not explicitly name alternative sibling tools or provide direct when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
plan_study_questionsPlan a Multi-Question Block in a StudyAInspect
Creates or revises a non-executing draft for a multi-question plan inside an existing Study. Applicability: this is the setup operation for every questionnaire, survey, battery, section, cohesive question set, or request containing two or more known questions—even when the user did not say “study.” Include every question known now in this ONE draft, group related questions into cohesive named modules (question blocks or batteries), preserve their logical order, and execute them later as one confirmed run inside the Study. Never split a known set across one-question drafts or sequential runs. A one-question draft is valid only for genuinely standalone research; an adaptive follow-up whose wording depends on unavailable results can be planned later. The draft records intent, respondent-visible stimulus and questions, response formats, locale, method, outputs, confirmation questions, and revision metadata. It does not start research. When the user supplies a fixed or pre-registered instrument whose wording, order, and response formats must not change, pass it as questions (one entry per item with its exact response contract) instead of request; the planner is then bypassed and the draft is an exact transcription. MCP cannot read or upload a local file:// path. Use a fetchable HTTP(S) URL, a signed URL supplied by the client for the attached file, or an existing Minds workspace upload URL/path. Study tools import external file URLs into durable Minds storage before saving or running. The Study refuses to start if Minds cannot read the asset.
| Name | Required | Description | Default |
|---|---|---|---|
| source | No | 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. MCP cannot read or upload a local file:// path. Use a fetchable HTTP(S) URL, a signed URL supplied by the client for the attached file, or an existing Minds workspace upload URL/path. Study tools import external file URLs into durable Minds storage before saving or running. The Study refuses to start if Minds cannot read the asset. | |
| answers | No | Answers to the draft confirmation questions. | |
| panelId | No | Study ID (UUID; legacy wire field name: panelId). Omit both panelId and panelName only to continue the active Study from this MCP session. | |
| request | No | Planner input containing the research objective, questionnaire, survey, battery, section, cohesive question set, audit request, or analysis request. Required for a new draft. Include EVERY question already known in this one request so the planner can group the complete set into cohesive named modules for one confirmed multi-question run inside the Study; never create one planning request per known question. This request is not sent verbatim to Minds; the exact proposed respondent-visible questions are returned in the draft for review. | |
| studyId | No | Study ID (UUID). Omit with studyName to continue the active Study. | |
| revision | No | Current draft revision; required with draftPlanId. | |
| panelName | No | Study name for fuzzy matching (legacy wire field name: panelName). Omit both panelName and panelId only to continue the active Study from this MCP session. | |
| questions | No | Fixed instrument: use INSTEAD of request when the user supplies a pre-registered or fixed questionnaire whose wording, order, and response formats must not change. The planner is bypassed; every question is stored verbatim, in this order, with exactly this response contract. Cannot be combined with refinement, answers, questionResponses, or suggestQuestionStimuli. Repeated question texts or colliding ids are rejected. | |
| studyName | No | Study name for fuzzy matching. Omit with studyId to continue the active Study. | |
| refinement | No | How the user wants the existing draft changed. | |
| attachments | No | Files available to the planned Study. Without questionAttachments every question receives every file. With questionAttachments each question receives only its assigned files. Give each scoped file a stable id. Remote URLs are copied into durable Minds storage before the draft is saved. MCP cannot read or upload a local file:// path. Use a fetchable HTTP(S) URL, a signed URL supplied by the client for the attached file, or an existing Minds workspace upload URL/path. Study tools import external file URLs into durable Minds storage before saving or running. The Study refuses to start if Minds cannot read the asset. | |
| draftPlanId | No | Existing draft ID to revise after the user answers a confirmation question. | |
| studyLocale | No | Language for the plan, questions, responses, labels, and summary. Set this explicitly when the user requests a language. | |
| idempotencyKey | No | Optional stable retry key. When omitted the tool derives one from its own arguments, so a repeated identical call (including a host retry after a timeout) returns the draft revision that was already saved instead of planning again. Pass a fresh key to force a new plan for identical input. | |
| questionResponses | No | 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. | |
| questionAttachments | No | Question-to-file mapping. It may cover a subset of the planned questions: mapped questions receive exactly the named attachments, unmapped questions keep every study-level file. Each question at most once; every referenced attachment id must resolve. | |
| suggestQuestionStimuli | No | Default true. Lets the planner tie an attached image, video, or document to the one question that is about it (attachmentIds on those questions). Pass false to leave questions unassigned unless questionAttachments names them. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations are thin (only readOnlyHint=false, destructiveHint=false), so the description carries the burden and delivers: it affirms mutation yet non-execution, discloses the planner-bypass for fixed instruments ('the planner is then bypassed and the draft is an exact transcription'), and states hard asset constraints (no file:// read/upload, durable storage import, 'The Study refuses to start if Minds cannot read the asset'). No contradiction with the annotations; the non-destructive draft semantics align with destructiveHint=false.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Roughly 220 words for a 17-parameter, dual-mode tool, and nearly every sentence earns its place: applicability, exclusions, draft contents, non-execution, fixed-instrument path, and asset constraints. It is front-loaded with the core purpose. Minor redundancy: the file:// constraint is repeated extensively in the schema and could be trimmed in the description.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with two mutually exclusive modes, 17 parameters, attachment workflows, and no output schema, the description covers the critical operational facts: what the draft records (intent, stimuli, questions, response formats, locale, method, outputs, confirmation questions, revision metadata), that it doesn't execute, and the asset-readability precondition. Minor gap: the confirmation-question → answers → revision loop (draftPlanId/revision) is only implied, not spelled out as a workflow.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all 17 parameters; the baseline is 3. The description adds genuine cross-parameter decision guidance beyond the schema: choose questions instead of request for fixed instruments, include every known question in ONE request, and never split known sets into per-question drafts. That lifts it above baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific action (creates or revises a non-executing draft), the resource (multi-question plan inside an existing Study), and the key constraint (non-executing). It also pins the scope precisely as the setup operation for every multi-question request, even when the user doesn't say 'study.' The phrase 'It does not start research' and 'non-executing draft' clearly separate it from execution-oriented siblings like run_study_questions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit applicability ('setup operation for every questionnaire, survey, battery, section, cohesive question set'), explicit exclusions ('A one-question draft is valid only for genuinely standalone research'), and a hard never-rule ('Never split a known set across one-question drafts or sequential runs'). It also routes to the alternative execution path ('execute them later as one confirmed run inside the Study') and to the fixed-instrument mode via the questions parameter instead of request.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
run_study_questionsRun a Confirmed Multi-Question BlockAIdempotentInspect
Executes the exact stored multi-question draft revision inside the target Study after explicit confirmation. One execution submits the ENTIRE draft—all named modules and all questions—as one durable run. Never execute each known question separately and never create one run per module. This operation is valid only after the person explicitly confirms the exact draft revision. The server reloads and validates the revision, method availability, runner configuration, reviewed capabilities, optional advanced-method consent, and idempotency key before queuing durable research. MCP cannot upload or read a local file:// path: attach the file through the client and use its signed HTTPS URL, upload it to Minds first, or use another fetchable HTTPS URL. Before invoking any Mind or using Study quota, the server verifies that required respondent-visible source material is readable and refuses the entire run if it is not.
| Name | Required | Description | Default |
|---|---|---|---|
| panelId | No | Study ID (UUID; legacy wire field name: panelId). Omit both panelId and panelName only to run the confirmed draft in the active Study from this MCP session. | |
| studyId | No | Study ID (UUID). Omit with studyName to run in the active Study. | |
| groupIds | No | Legacy alias for audienceIds. Accepted for compatibility. | |
| revision | Yes | Exact draft revision the user reviewed. | |
| confirmed | Yes | Must be true only after the user explicitly confirms this exact draft revision. | |
| panelName | No | Study name for fuzzy matching (legacy wire field name: panelName). Omit both panelName and panelId only to run the confirmed draft in the active Study from this MCP session. | |
| studyName | No | Study name for fuzzy matching. Omit with studyId to run in the active Study. | |
| audienceIds | No | Optional subset of the Study's Audiences to include. | |
| draftPlanId | Yes | Exact draft plan ID returned by plan_study_questions. | |
| idempotencyKey | No | Stable UUID for safe retries. | |
| advancedMethodOptIn | No | Explicit opt-in for an advanced method. Omit or false to keep simple methods. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate a non-read-only, idempotent operation, and the description adds substantial behavioral context: server-side validation of revision, method availability, runner configuration, reviewed capabilities, consent, and idempotency key; refusal of the entire run when source material is unreadable; and the MCP file:// limitation. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but purposeful, with each sentence contributing operational guidance: single-run behavior, confirmation requirement, server validations, file:// constraint, and readability refusal. It loses one point for mild redundancy about explicit confirmation and a long validator list that could be slightly tightened.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an 11-parameter, high-stakes execution tool with no output schema, the description covers the essential preconditions, failure modes, and invocation constraints: confirmation, monolithic execution, idempotency, advanced-method opt-in, file path limitations, and source-material accessibility. Combined with the detailed schema, an agent has sufficient context to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so every parameter is already documented in detail. The description reinforces the confirmation gate, idempotency key role, and advanced-method consent, but it does not add significant meaning for individual parameters beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states that this tool 'Executes the exact stored multi-question draft revision inside the target Study after explicit confirmation.' It also clarifies the critical distinction from fragmented usage: one execution submits the entire draft as one durable run, not per-question or per-module runs.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says this operation is valid only after explicit confirmation, and gives a clear 'never' instruction against executing questions separately or creating per-module runs. However, it does not name alternative sibling tools, such as plan_study_questions or get_study_run, so routing guidance is present but not fully complete.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
save_study_draftSave Study DraftAInspect
Creates or checkpoints an unfinished Quick or Custom Study draft without starting research. It saves the objective, context, selected Audiences, method, questions, sources, and current planner step. Revisions require the exact draft ID and expected revision, and stale writes are rejected.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | Planning mode to restore. Defaults to custom for agent-authored planning state. | custom |
| name | No | Sidebar name for the Study draft. | |
| notes | No | Additional research context or constraints. | |
| draftId | No | Existing Study draft ID to revise. Omit to create a new durable draft. | |
| website | No | Primary website associated with the research context. | |
| groupIds | No | Legacy alias for audienceIds. Accepted for compatibility. | |
| methodId | No | Research method selected for the draft. Use list_research_methods as the availability authority. | guided-research |
| objective | No | Research objective or intent captured so far. | |
| questions | No | Manual research questions in their intended order. | |
| sourceUrls | No | Ordered source URLs supplied as Study context. | |
| audienceIds | No | Existing Audience IDs selected for the Study. Preferred. | |
| currentStep | No | Exact planner step to reopen, such as context, audiences, method, questions, or confirm. The legacy value groups remains accepted when reopening an older draft. | context |
| expectedRevision | No | Exact current revision. Required with draftId so stale updates cannot overwrite newer planning state. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations are all negative signals (readOnlyHint=false, idempotentHint=false, destructiveHint=false), so the description carries the full behavioral burden. It discloses two non-obvious traits: revisions require the exact draftId plus expectedRevision pairing, and stale writes are rejected — a concurrency guarantee that materially changes how an agent must invoke an update. This is exactly the kind of context annotations cannot express.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences with zero filler: scope, persisted state, and concurrency rule each earn their place, and the primary purpose is front-loaded in the first clause. The ~48-word length is appropriate because the schema already carries parameter-level detail, so the description does not repeat it.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutating tool with zero required parameters and no output schema, the definition thoroughly covers the invocation contract: what state is saved, how revisions behave, and when it does not apply. The one gap is the return contract — it never states that a create returns a draftId, which a downstream workflow would need for later revisions or a subsequent create_study call, so the agent must infer it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with rich per-parameter descriptions (e.g., groupIds is a 'Legacy alias for audienceIds', methodId defers to list_research_methods), establishing a baseline of 3. The description adds framing on top: it groups the 13 parameters into a coherent persisted state bundle and reinforces the draftId/expectedRevision dependency that underlies the stale-write guard.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Opens with a specific verb-resource pair — "Creates or checkpoints an unfinished Quick or Custom Study draft" — and delimits scope with "without starting research," which distinguishes it from the create_study sibling. The sentence enumerating exactly what gets saved (objective, Audiences, method, questions, sources, planner step) further pins down what the tool owns.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description establishes clear context: this tool persists incomplete planner state for later restoration, and "without starting research" signals a when-not condition. It stops short of naming the explicit alternatives (create_study for launching a study, list_study_drafts for reading drafts), so routing to siblings relies on inference rather than an explicit when-to-use/when-not-to-use statement.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
2 tool updates
- Changed
create_audience_from_brief2 fields changed- added
Input schema / properties / excludeDistributionsAdded value: +{ + "description": "Exact axis names (copied from a preview) that must not be used as cohort quotas. Applied deterministically after grounding; the evidence stays visible in reviewDistributions.", + "items": { + "maxLength": 200, + "minLength": 1, + "type": "string" + }, + "maxItems": 200, + "type": "array" +} - added
Input schema / properties / groundingPreviewAdded value: +{ + "description": "Review the quota axes BEFORE any Mind exists. When true, the server runs research grounding and returns the axes it would allocate on — with Study-outcome axes demoted and listed in flaggedDistributions — without creating an Audience or Minds and without consuming a generation allowance. Present the axes to the user for approval, then call again without groundingPreview (same brief and options) to create, passing any axis names to drop as excludeDistributions.", + "type": "boolean" +}
- Changed
plan_study_questions2 fields changed- added
Input schema / properties / idempotencyKeyAdded value: +{ + "description": "Optional stable retry key. When omitted the tool derives one from its own arguments, so a repeated identical call (including a host retry after a timeout) returns the draft revision that was already saved instead of planning again. Pass a fresh key to force a new plan for identical input.", + "maxLength": 200, + "minLength": 1, + "type": "string" +} - added
Input schema / properties / questionsAdded value: +{ + "description": "Fixed instrument: use INSTEAD of request when the user supplies a pre-registered or fixed questionnaire whose wording, order, and response formats must not change. The planner is bypassed; every question is stored verbatim, in this order, with exactly this response contract. Cannot be combined with refinement, answers, questionResponses, or suggestQuestionStimuli. Repeated question texts or colliding ids are rejected.", + "items": { + "additionalProperties": false, + "properties": { + "id": { + "description": "Stable item id (lower-cased to a slug). Defaults to q<position>.", + "maxLength": 80, + "minLength": 1, + "type": "string" + }, + "module": { + "description": "Optional module (battery) label. Consecutive questions with the same label form one module.", + "maxLength": 200, + "minLength": 1, + "type": "string" + }, + "response": { + "additionalProperties": false, + "description": "Exact response contract for this item: type qualitative, categorical (with categoricalOptions), multiselect, or scale (with inclusive integer scaleRange).", + "properties": { + "categoricalOptions": { + "description": "Predefined answer choices; only valid for categorical or multiselect responses.", + "items": { + "minLength": 1, + "type": "string" + }, + "maxItems": 100, + "minItems": 2, + "type": "array" + }, + "maxSelections": { + "description": "Maximum choices a respondent may select; only valid for multiselect responses.", + "maximum": 100, + "minimum": 1, + "type": "integer" + }, + "scaleRange": { + "description": "Inclusive integer response range as [minimum, maximum]; required for scale responses.", + "items": { + "maximum": 100, + "minimum": -100, + "type": "integer" + }, + "maxItems": 2, + "minItems": 2, + "type": "array" + }, + "type": { + "enum": [ + "qualitative", + "categorical", + "multiselect", + "scale" + ], + "type": "string" + } + }, + "required": [ + "type" + ], + "type": "object" + }, + "text": { + "description": "Exact respondent-visible question text, including any anchors or labels. Stored as given.", + "maxLength": 2000, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "text", + "response" + ], + "type": "object" + }, + "maxItems": 200, + "minItems": 1, + "type": "array" +}
2 tool updates
- Changed
export_study2 fields changed- changed
Input schema / properties / format / descriptionPrevious value: -"Export format: \"pdf\" (default), \"html\" or \"png\" for executive summaries, \"docx\", \"pptx\", \"csv\", \"xls\", \"sav\", or \"md\" (also accepts \"markdown\"). Executive-summary PPTX exports use a slide-native 16:9 layout."New value: +"Export format: \"pdf\" (default), \"docx\", \"pptx\", \"csv\", \"xls\", \"sav\", or \"md\" (also accepts \"markdown\"). Executive-summary and full-report PPTX exports use a slide-native 16:9 layout." - changed
Input schema / properties / format / enumPrevious value: -[ - "pdf", - "html", - "png", - "docx", - "pptx", - "csv", - "xls", - "sav", - "md", - "markdown" -]New value: +[ + "pdf", + "docx", + "pptx", + "csv", + "xls", + "sav", + "md", + "markdown" +]
- Changed
get_study_status1 field changed- changed
Input schema / properties / exportFormat / descriptionPrevious value: -"Asynchronous export format whose status should be returned (defaults to pdf)."New value: +"Asynchronous export format whose status should be returned (defaults to pdf). HTML and PNG are accepted here only to finish polling previously created executive-summary jobs."
1 tool update
- Changed
plan_study_questions2 fields changed- changed
Input schema / properties / questionAttachments / descriptionPrevious value: -"Complete question-to-file mapping. When present, every planned question must appear exactly once and every referenced attachment id must resolve."New value: +"Question-to-file mapping. It may cover a subset of the planned questions: mapped questions receive exactly the named attachments, unmapped questions keep every study-level file. Each question at most once; every referenced attachment id must resolve." - added
Input schema / properties / suggestQuestionStimuliAdded value: +{ + "description": "Default true. Lets the planner tie an attached image, video, or document to the one question that is about it (attachmentIds on those questions). Pass false to leave questions unassigned unless questionAttachments names them.", + "type": "boolean" +}
2 tool updates
- Changed
create_audience_from_brief4 fields changed- changed
Input schema / properties / audienceCreationMode / descriptionPrevious value: -"Audience creation mode. Preferred. Use balanced for everyday research, segment_coverage for coverage of limiting grounded cells, or benchmark_depth for validation-ready repeated representation."New value: +"How the Audience is sized. \"balanced\" (default): compact and representative for everyday research. It is the only mode with a hard wall on a size you state — a memberCount above 20 is refused with 403 MODE_CAP. \"segment_coverage\": two representatives per limiting grounded cell, from a 10-Mind floor; automatic sizing stops at 50, but a memberCount you state is bounded only by your plan. \"benchmark_depth\": repeated representation of limiting grounded cells for validation-ready segmentation; bounded by your plan allowance. The deeper two require a Team (enterprise) plan — on other plans the server SILENTLY downgrades to \"balanced\" and echoes the effective mode in structuredContent.audience.audienceCreationMode. Call get_audience_limits to see the ceilings that apply to your account." - changed
Input schema / properties / groupCreationMode / descriptionPrevious value: -"Audience creation mode. \"balanced\" (default): compact, representative Audience 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.audience.audienceCreationMode). This field is the legacy alias for audienceCreationMode."New value: +"Legacy alias for audienceCreationMode — same values, same behaviour. How the Audience is sized. \"balanced\" (default): compact and representative for everyday research. It is the only mode with a hard wall on a size you state — a memberCount above 20 is refused with 403 MODE_CAP. \"segment_coverage\": two representatives per limiting grounded cell, from a 10-Mind floor; automatic sizing stops at 50, but a memberCount you state is bounded only by your plan. \"benchmark_depth\": repeated representation of limiting grounded cells for validation-ready segmentation; bounded by your plan allowance. The deeper two require a Team (enterprise) plan — on other plans the server SILENTLY downgrades to \"balanced\" and echoes the effective mode in structuredContent.audience.audienceCreationMode. Call get_audience_limits to see the ceilings that apply to your account." - changed
Input schema / properties / memberCount / descriptionPrevious value: -"Exact number of Minds to create in the Audience. 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-Audience cap; the Audience is never created at a partial size."New value: +"Exact number of Minds to create. 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. When omitted, the size is inferred from the brief and, failing that, from the creation mode's evidence-based automatic sizing. Two separate refusals apply: 403 MODE_CAP above 20 in \"balanced\" mode (switch to segment_coverage or benchmark_depth), and 403 PLAN_LIMIT above your plan's per-Audience cap. The 6000 accepted here is the absolute system ceiling, not your allowance — call get_audience_limits for the real one. The Audience is never created at a partial size." - changed
Input schema / properties / memberCount / maximumPrevious value: -9007199254740991New value: +6000
- Added
get_audience_limits
3 tool updates
- Changed
ask_audience1 field changed- added
Input schema / properties / attachments / items / properties / idAdded value: +{ + "description": "Stable asset ID used by questionAttachments to assign this file to specific planned questions.", + "maxLength": 255, + "minLength": 1, + "type": "string" +}
- Changed
ask_study1 field changed- added
Input schema / properties / attachments / items / properties / idAdded value: +{ + "description": "Stable asset ID used by questionAttachments to assign this file to specific planned questions.", + "maxLength": 255, + "minLength": 1, + "type": "string" +}
- Changed
plan_study_questions3 fields changed- changed
Input schema / properties / attachments / descriptionPrevious value: -"Files that every question in this planned Study must evaluate. Use one distinct entry per creative (for example four A/B/C/D videos). Remote URLs are copied into durable Minds storage before the draft is saved. MCP cannot read or upload a local file:// path. Use a fetchable HTTP(S) URL, a signed URL supplied by the client for the attached file, or an existing Minds workspace upload URL/path. Study tools import external file URLs into durable Minds storage before saving or running. The Study refuses to start if Minds cannot read the asset."New value: +"Files available to the planned Study. Without questionAttachments every question receives every file. With questionAttachments each question receives only its assigned files. Give each scoped file a stable id. Remote URLs are copied into durable Minds storage before the draft is saved. MCP cannot read or upload a local file:// path. Use a fetchable HTTP(S) URL, a signed URL supplied by the client for the attached file, or an existing Minds workspace upload URL/path. Study tools import external file URLs into durable Minds storage before saving or running. The Study refuses to start if Minds cannot read the asset." - added
Input schema / properties / attachments / items / properties / idAdded value: +{ + "description": "Stable asset ID used by questionAttachments to assign this file to specific planned questions.", + "maxLength": 255, + "minLength": 1, + "type": "string" +} - added
Input schema / properties / questionAttachmentsAdded value: +{ + "description": "Complete question-to-file mapping. When present, every planned question must appear exactly once and every referenced attachment id must resolve.", + "items": { + "additionalProperties": false, + "properties": { + "attachmentIds": { + "description": "Stable ids from attachments that this question alone receives.", + "items": { + "maxLength": 255, + "minLength": 1, + "type": "string" + }, + "maxItems": 20, + "minItems": 1, + "type": "array" + }, + "questionNumber": { + "description": "One-based question position in the returned plan, across modules in order.", + "maximum": 9007199254740991, + "minimum": 1, + "type": "integer" + } + }, + "required": [ + "questionNumber", + "attachmentIds" + ], + "type": "object" + }, + "minItems": 1, + "type": "array" +}
1 tool update
- Changed
create_study1 field changed- removed
Input schema / properties / groupConfigs / items / properties / sparkIdsRemoved value: -{ - "description": "Legacy alias for mindIds.", - "items": { - "type": "string" - }, - "type": "array" -}
4 tool updates
- Changed
ask_audience3 fields changed- changed
Input schema / properties / attachments / descriptionPrevious value: -"Files/images processed once and given to every Audience member as context. MCP cannot read or upload a local file:// path. Use a fetchable HTTP(S) URL, a signed URL supplied by the client for the attached file, or an existing Minds workspace upload URL/path. The Study refuses to start if Minds cannot read the asset."New value: +"Files/images processed once and given to every Audience member as context. MCP cannot read or upload a local file:// path. Use a fetchable HTTP(S) URL, a signed URL supplied by the client for the attached file, or an existing Minds workspace upload URL/path. Study tools import external file URLs into durable Minds storage before saving or running. The Study refuses to start if Minds cannot read the asset." - changed
Input schema / properties / attachments / items / properties / path / descriptionPrevious value: -"Storage path of a file already uploaded to Minds. MCP cannot read or upload a local file:// path. Use a fetchable HTTP(S) URL, a signed URL supplied by the client for the attached file, or an existing Minds workspace upload URL/path. The Study refuses to start if Minds cannot read the asset."New value: +"Storage path of a file already uploaded to Minds. MCP cannot read or upload a local file:// path. Use a fetchable HTTP(S) URL, a signed URL supplied by the client for the attached file, or an existing Minds workspace upload URL/path. Study tools import external file URLs into durable Minds storage before saving or running. The Study refuses to start if Minds cannot read the asset." - changed
Input schema / properties / attachments / items / properties / url / descriptionPrevious value: -"Fetchable HTTP(S), signed, or Minds workspace upload URL. MCP cannot read or upload a local file:// path. Use a fetchable HTTP(S) URL, a signed URL supplied by the client for the attached file, or an existing Minds workspace upload URL/path. The Study refuses to start if Minds cannot read the asset."New value: +"Fetchable HTTP(S), signed, or Minds workspace upload URL. MCP cannot read or upload a local file:// path. Use a fetchable HTTP(S) URL, a signed URL supplied by the client for the attached file, or an existing Minds workspace upload URL/path. Study tools import external file URLs into durable Minds storage before saving or running. The Study refuses to start if Minds cannot read the asset."
- Changed
ask_study3 fields changed- changed
Input schema / properties / attachments / descriptionPrevious value: -"Files/images processed once and given to every participating Mind. MCP cannot read or upload a local file:// path. Use a fetchable HTTP(S) URL, a signed URL supplied by the client for the attached file, or an existing Minds workspace upload URL/path. The Study refuses to start if Minds cannot read the asset."New value: +"Files/images processed once and given to every participating Mind. MCP cannot read or upload a local file:// path. Use a fetchable HTTP(S) URL, a signed URL supplied by the client for the attached file, or an existing Minds workspace upload URL/path. Study tools import external file URLs into durable Minds storage before saving or running. The Study refuses to start if Minds cannot read the asset." - changed
Input schema / properties / attachments / items / properties / path / descriptionPrevious value: -"Storage path of a file already uploaded to Minds. MCP cannot read or upload a local file:// path. Use a fetchable HTTP(S) URL, a signed URL supplied by the client for the attached file, or an existing Minds workspace upload URL/path. The Study refuses to start if Minds cannot read the asset."New value: +"Storage path of a file already uploaded to Minds. MCP cannot read or upload a local file:// path. Use a fetchable HTTP(S) URL, a signed URL supplied by the client for the attached file, or an existing Minds workspace upload URL/path. Study tools import external file URLs into durable Minds storage before saving or running. The Study refuses to start if Minds cannot read the asset." - changed
Input schema / properties / attachments / items / properties / url / descriptionPrevious value: -"Fetchable HTTP(S), signed, or Minds workspace upload URL. MCP cannot read or upload a local file:// path. Use a fetchable HTTP(S) URL, a signed URL supplied by the client for the attached file, or an existing Minds workspace upload URL/path. The Study refuses to start if Minds cannot read the asset."New value: +"Fetchable HTTP(S), signed, or Minds workspace upload URL. MCP cannot read or upload a local file:// path. Use a fetchable HTTP(S) URL, a signed URL supplied by the client for the attached file, or an existing Minds workspace upload URL/path. Study tools import external file URLs into durable Minds storage before saving or running. The Study refuses to start if Minds cannot read the asset."
- Changed
create_audience_from_brief2 fields changed- changed
Input schema / properties / files / descriptionPrevious value: -"Optional already-uploaded research files. MCP cannot read or upload a local file:// path. Use a fetchable HTTP(S) URL, a signed URL supplied by the client for the attached file, or an existing Minds workspace upload URL/path. The Study refuses to start if Minds cannot read the asset. The server analyzes these through the same extended screener/questionnaire path as the in-app New Audience uploader, including study roles, screening and quota rules, review distributions, and grounding provenance."New value: +"Optional already-uploaded research files. MCP cannot read or upload a local file:// path. Use a fetchable HTTP(S) URL, a signed URL supplied by the client for the attached file, or an existing Minds workspace upload URL/path. Study tools import external file URLs into durable Minds storage before saving or running. The Study refuses to start if Minds cannot read the asset. The server analyzes these through the same extended screener/questionnaire path as the in-app New Audience uploader, including study roles, screening and quota rules, review distributions, and grounding provenance." - changed
Input schema / properties / files / items / properties / url / descriptionPrevious value: -"URL of an already-uploaded file. MCP cannot read or upload a local file:// path. Use a fetchable HTTP(S) URL, a signed URL supplied by the client for the attached file, or an existing Minds workspace upload URL/path. The Study refuses to start if Minds cannot read the asset."New value: +"URL of an already-uploaded file. MCP cannot read or upload a local file:// path. Use a fetchable HTTP(S) URL, a signed URL supplied by the client for the attached file, or an existing Minds workspace upload URL/path. Study tools import external file URLs into durable Minds storage before saving or running. The Study refuses to start if Minds cannot read the asset."
- Changed
plan_study_questions3 fields changed- added
Input schema / properties / attachmentsAdded value: +{ + "description": "Files that every question in this planned Study must evaluate. Use one distinct entry per creative (for example four A/B/C/D videos). Remote URLs are copied into durable Minds storage before the draft is saved. MCP cannot read or upload a local file:// path. Use a fetchable HTTP(S) URL, a signed URL supplied by the client for the attached file, or an existing Minds workspace upload URL/path. Study tools import external file URLs into durable Minds storage before saving or running. The Study refuses to start if Minds cannot read the asset.", + "items": { + "properties": { + "name": { + "description": "File name visible in the Study.", + "minLength": 1, + "type": "string" + }, + "path": { + "description": "Storage path of a file already uploaded to Minds. MCP cannot read or upload a local file:// path. Use a fetchable HTTP(S) URL, a signed URL supplied by the client for the attached file, or an existing Minds workspace upload URL/path. Study tools import external file URLs into durable Minds storage before saving or running. The Study refuses to start if Minds cannot read the asset.", + "minLength": 1, + "type": "string" + }, + "type": { + "description": "MIME type when known.", + "minLength": 1, + "type": "string" + }, + "url": { + "description": "Fetchable HTTP(S), signed, or Minds workspace upload URL. MCP cannot read or upload a local file:// path. Use a fetchable HTTP(S) URL, a signed URL supplied by the client for the attached file, or an existing Minds workspace upload URL/path. Study tools import external file URLs into durable Minds storage before saving or running. The Study refuses to start if Minds cannot read the asset.", + "minLength": 1, + "type": "string" + } + }, + "type": "object" + }, + "maxItems": 20, + "type": "array" +} - changed
Input schema / properties / source / descriptionPrevious value: -"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. MCP cannot read or upload a local file:// path. Use a fetchable HTTP(S) URL, a signed URL supplied by the client for the attached file, or an existing Minds workspace upload URL/path. The Study refuses to start if Minds cannot read the asset."New value: +"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. MCP cannot read or upload a local file:// path. Use a fetchable HTTP(S) URL, a signed URL supplied by the client for the attached file, or an existing Minds workspace upload URL/path. Study tools import external file URLs into durable Minds storage before saving or running. The Study refuses to start if Minds cannot read the asset." - changed
Input schema / properties / source / properties / url / descriptionPrevious value: -"Fetchable source URL. MCP cannot read or upload a local file:// path. Use a fetchable HTTP(S) URL, a signed URL supplied by the client for the attached file, or an existing Minds workspace upload URL/path. The Study refuses to start if Minds cannot read the asset."New value: +"Fetchable source URL. MCP cannot read or upload a local file:// path. Use a fetchable HTTP(S) URL, a signed URL supplied by the client for the attached file, or an existing Minds workspace upload URL/path. Study tools import external file URLs into durable Minds storage before saving or running. The Study refuses to start if Minds cannot read the asset."
3 tool updates
- Changed
create_audience_from_brief1 field changed- added
Input schema / properties / trainMembersAdded value: +{ + "description": "Opt-in per-Mind training for large reviewed-dataset cohorts (default false). By default a reviewed-dataset Audience of more than ~40 Minds is bulk-created immediately ready: exact demographics, but no per-Mind research training (empty system prompt, no knowledge items). Set true to create those Minds untrained instead and enqueue each one through the same per-member training pipeline the in-app draft flow uses, preserving its deterministic cohort profile and the request locale. The tool still returns as soon as the Audience exists — training continues in the background (structuredContent.audience.memberTraining reports what was queued); poll each member with GET /api/v1/minds/{id}/training. Has no effect on Audiences whose members are already trained individually.", + "type": "boolean" +}
- Changed
create_study5 fields changed- changed
Input schema / properties / groupConfigs / descriptionPrevious value: -"Legacy alias for audienceConfigs. Accepted for compatibility."New value: +"Legacy alias for audienceConfigs." - removed
Input schema / properties / groupConfigs / items / properties / mindIds / descriptionRemoved value: -"Mind IDs to add to this Audience — use list_minds to find IDs" - removed
Input schema / properties / groupConfigs / items / properties / name / descriptionRemoved value: -"Audience name (optional — defaults to \"Audience N\"). E.g., \"Gen Z Consumers\", \"Marketing Experts\"" - changed
Input schema / properties / groupConfigs / items / properties / sparkIds / descriptionPrevious value: -"Legacy alias for mindIds. Accepted for back-compat."New value: +"Legacy alias for mindIds." - changed
Input schema / properties / groupIds / descriptionPrevious value: -"Legacy alias for audienceIds. Accepted for compatibility."New value: +"Legacy alias for audienceIds."
- Changed
save_study_draft1 field changed- changed
Input schema / properties / currentStep / descriptionPrevious value: -"Exact planner step to reopen, such as context, groups (Audiences), method, questions, or confirm."New value: +"Exact planner step to reopen, such as context, audiences, method, questions, or confirm. The legacy value groups remains accepted when reopening an older draft."
28 tool updates
- Added
ask_audience - Removed
ask_group - Removed
ask_panel - Added
ask_study - Added
create_audience_from_brief - Removed
create_group_from_brief - Removed
create_panel - Added
create_study - Added
export_audience - Removed
export_group - Changed
export_heatmap5 fields changed- changed
Input schema / properties / messageId / descriptionPrevious value: -"ID of the completed panel message containing the website heatmap. Completed panel results report this identifier when the answer carries a heatmap."New value: +"ID of the completed Study result containing the website heatmap. Completed Study results report this identifier when the answer carries a heatmap." - changed
Input schema / properties / panelId / descriptionPrevious value: -"Panel ID (UUID)"New value: +"Study ID (UUID; legacy wire field name: panelId)" - changed
Input schema / properties / panelName / descriptionPrevious value: -"Panel name (fuzzy matched)"New value: +"Study name (fuzzy matched; legacy wire field name: panelName)" - added
Input schema / properties / studyIdAdded value: +{ + "description": "Study ID (UUID).", + "type": "string" +} - added
Input schema / properties / studyNameAdded value: +{ + "description": "Study name (fuzzy matched).", + "type": "string" +}
- Removed
export_panel - Added
export_study - Removed
get_panel_status - Removed
get_panel_study - Removed
get_panel_summary - Added
get_study_run - Added
get_study_status - Added
get_study_summary - Added
list_audiences - Removed
list_groups - Removed
list_panels - Added
list_studies - Removed
plan_panel_study - Added
plan_study_questions - Removed
run_panel_study - Added
run_study_questions - Changed
save_study_draft4 fields changed- added
Input schema / properties / audienceIdsAdded value: +{ + "description": "Existing Audience IDs selected for the Study. Preferred.", + "items": { + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", + "type": "string" + }, + "type": "array" +} - changed
Input schema / properties / currentStep / descriptionPrevious value: -"Exact planner step to reopen, such as context, groups, method, questions, or confirm."New value: +"Exact planner step to reopen, such as context, groups (Audiences), method, questions, or confirm." - removed
Input schema / properties / groupIds / defaultRemoved value: -[] - changed
Input schema / properties / groupIds / descriptionPrevious value: -"Existing Audience group IDs selected for the Study."New value: +"Legacy alias for audienceIds. Accepted for compatibility."
18 tool updates
- Changed
ask_group2 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - removed
Input schema / properties / attachments / items / additionalPropertiesRemoved value: -false
- Changed
ask_panel6 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - removed
Input schema / properties / attachments / items / additionalPropertiesRemoved value: -false - added
Input schema / properties / keywordsAdded value: +{ + "description": "Search keywords used to gather evidence for this question. Reaches parity with v1 /panels/{panelId}/runs.", + "items": { + "properties": { + "id": { + "type": "string" + }, + "label": { + "description": "Search keyword or phrase", + "type": "string" + }, + "url": { + "type": "string" + } + }, + "required": [ + "label" + ], + "type": "object" + }, + "type": "array" +} - added
Input schema / properties / linksAdded value: +{ + "description": "Web pages given to every Mind as evidence for this question. Reaches parity with v1 /panels/{panelId}/runs, which has always accepted links.", + "items": { + "properties": { + "id": { + "type": "string" + }, + "label": { + "description": "Human-readable label for the link", + "type": "string" + }, + "url": { + "description": "URL to fetch as evidence for this question", + "type": "string" + } + }, + "required": [ + "label" + ], + "type": "object" + }, + "type": "array" +} - added
Input schema / properties / modelAdded value: +{ + "description": "Optional per-request model override. Must be sent together with provider.", + "type": "string" +} - added
Input schema / properties / providerAdded value: +{ + "description": "Provider for the model override. Must be sent together with model.", + "enum": [ + "anthropic", + "openai", + "google" + ], + "type": "string" +}
- Changed
create_group_from_brief25 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - removed
Input schema / properties / cohortAllocation / additionalPropertiesRemoved value: -false - removed
Input schema / properties / cohortAllocation / properties / targetOverrides / items / additionalPropertiesRemoved value: -false - removed
Input schema / properties / cohortAllocation / properties / targetOverrides / items / properties / segments / items / additionalPropertiesRemoved value: -false - removed
Input schema / properties / datasetSegmentation / additionalPropertiesRemoved value: -false - removed
Input schema / properties / datasetSegmentation / properties / columns / items / additionalPropertiesRemoved value: -false - removed
Input schema / properties / datasetSegmentation / properties / columns / items / properties / distribution / items / additionalPropertiesRemoved value: -false - added
Input schema / properties / datasetSegmentation / properties / columns / items / properties / distribution / items / properties / respondentCount / maximumAdded value: +9007199254740991 - added
Input schema / properties / datasetSegmentation / properties / columns / items / properties / distribution / items / properties / value / defaultAdded value: +"" - changed
Input schema / properties / datasetSegmentation / properties / columns / items / properties / distribution / items / properties / value / typePrevious value: -[ - "string", - "null" -]New value: +"string" - added
Input schema / properties / datasetSegmentation / properties / columns / items / properties / otherRespondentCount / maximumAdded value: +9007199254740991 - added
Input schema / properties / datasetSegmentation / properties / columns / items / properties / validRespondentCount / maximumAdded value: +9007199254740991 - removed
Input schema / properties / datasetSegmentation / properties / combinations / items / additionalPropertiesRemoved value: -false - added
Input schema / properties / datasetSegmentation / properties / combinations / items / properties / respondentCount / maximumAdded value: +9007199254740991 - added
Input schema / properties / datasetSegmentation / properties / recommendedMindCount / maximumAdded value: +9007199254740991 - added
Input schema / properties / datasetSegmentation / properties / respondentCount / maximumAdded value: +9007199254740991 - removed
Input schema / properties / datasetSegmentation / properties / variables / items / additionalPropertiesRemoved value: -false - removed
Input schema / properties / datasetSegmentation / properties / variables / items / properties / distribution / items / additionalPropertiesRemoved value: -false - added
Input schema / properties / datasetSegmentation / properties / variables / items / properties / distribution / items / properties / respondentCount / maximumAdded value: +9007199254740991 - added
Input schema / properties / datasetSegmentation / properties / variables / items / properties / distribution / items / properties / value / defaultAdded value: +"" - changed
Input schema / properties / datasetSegmentation / properties / variables / items / properties / distribution / items / properties / value / typePrevious value: -[ - "string", - "null" -]New value: +"string" - added
Input schema / properties / datasetSegmentation / properties / variables / items / properties / otherRespondentCount / maximumAdded value: +9007199254740991 - added
Input schema / properties / datasetSegmentation / properties / variables / items / properties / validRespondentCount / maximumAdded value: +9007199254740991 - removed
Input schema / properties / files / items / additionalPropertiesRemoved value: -false - added
Input schema / properties / memberCount / maximumAdded value: +9007199254740991
- Changed
create_panel2 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - removed
Input schema / properties / groupConfigs / items / additionalPropertiesRemoved value: -false
- Changed
export_group1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
export_heatmap1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
export_mind1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
export_panel2 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Input schema / properties / scheduledRunIdAdded value: +{ + "description": "Export only the messages produced by one scheduled run of this panel, instead of the whole transcript. Use the run id from the panel's schedule history.", + "type": "string" +}
- Changed
get_panel_status2 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Input schema / properties / panelId / patternAdded value: +"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
- Changed
get_panel_study3 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Input schema / properties / panelId / patternAdded value: +"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$" - added
Input schema / properties / studyId / patternAdded value: +"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
- Changed
get_panel_summary2 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Input schema / properties / panelId / patternAdded value: +"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
- Changed
list_groups1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
list_panels1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
list_research_methods1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
list_study_drafts2 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Input schema / properties / draftId / patternAdded value: +"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
- Changed
plan_panel_study5 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Input schema / properties / draftPlanId / patternAdded value: +"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$" - added
Input schema / properties / panelId / patternAdded value: +"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$" - added
Input schema / properties / revision / maximumAdded value: +9007199254740991 - removed
Input schema / properties / source / additionalPropertiesRemoved value: -false
- Changed
run_panel_study6 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Input schema / properties / draftPlanId / patternAdded value: +"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$" - added
Input schema / properties / groupIds / items / patternAdded value: +"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$" - added
Input schema / properties / idempotencyKey / patternAdded value: +"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$" - added
Input schema / properties / panelId / patternAdded value: +"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$" - added
Input schema / properties / revision / maximumAdded value: +9007199254740991
- Changed
save_study_draft4 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Input schema / properties / draftId / patternAdded value: +"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$" - added
Input schema / properties / expectedRevision / maximumAdded value: +9007199254740991 - added
Input schema / properties / groupIds / items / patternAdded value: +"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
3 tool updates
- Changed
ask_panel1 field changed- added
Input schema / properties / historyModeAdded value: +{ + "description": "**Control cross-item carryover.** Defaults to none: every question is an independent measurement and the run processes them in parallel. **Use last5 only when the panel is a conversation** or when a respondent staying coherent across items is what the customer is buying; it costs roughly 2.4x wall-clock for about 0.6pp of accuracy. followup_only carries history for conversational turns but not questionnaire items.", + "enum": [ + "last5", + "followup_only", + "none" + ], + "type": "string" +}
- Changed
export_panel3 fields changed- changed
Input schema / properties / format / descriptionPrevious value: -"Export format: \"pdf\" (default), \"html\" or \"png\" for executive summaries, \"docx\", \"pptx\", \"csv\", \"xls\", or \"md\" (also accepts \"markdown\"). Executive-summary PPTX exports use a slide-native 16:9 layout."New value: +"Export format: \"pdf\" (default), \"html\" or \"png\" for executive summaries, \"docx\", \"pptx\", \"csv\", \"xls\", \"sav\", or \"md\" (also accepts \"markdown\"). Executive-summary PPTX exports use a slide-native 16:9 layout." - changed
Input schema / properties / format / enumPrevious value: -[ - "pdf", - "html", - "png", - "docx", - "pptx", - "csv", - "xls", - "md", - "markdown" -]New value: +[ + "pdf", + "html", + "png", + "docx", + "pptx", + "csv", + "xls", + "sav", + "md", + "markdown" +] - changed
Input schema / properties / kind / descriptionPrevious value: -"Report kind. Defaults to full_report, except CSV/XLS which default to raw_data."New value: +"Report kind. Defaults to full_report, except CSV/XLS/SAV which default to raw_data."
- Changed
get_panel_status1 field changed- changed
Input schema / properties / exportFormat / enumPrevious value: -[ - "pdf", - "html", - "png", - "docx", - "pptx", - "csv", - "xls", - "md" -]New value: +[ + "pdf", + "html", + "png", + "docx", + "pptx", + "csv", + "xls", + "sav", + "md" +]
1 tool update
- Changed
export_heatmap1 field changed- changed
Input schema / properties / messageId / descriptionPrevious value: -"ID of the completed panel message containing the website heatmap"New value: +"ID of the completed panel message containing the website heatmap. Completed panel results report this identifier when the answer carries a heatmap."
2 tool updates
- Changed
export_panel2 fields changed- changed
Input schema / properties / format / descriptionPrevious value: -"Export format: \"pdf\" (default), \"docx\", \"pptx\", \"csv\", \"xls\", or \"md\" (also accepts \"markdown\")"New value: +"Export format: \"pdf\" (default), \"html\" or \"png\" for executive summaries, \"docx\", \"pptx\", \"csv\", \"xls\", or \"md\" (also accepts \"markdown\"). Executive-summary PPTX exports use a slide-native 16:9 layout." - changed
Input schema / properties / format / enumPrevious value: -[ - "pdf", - "docx", - "pptx", - "csv", - "xls", - "md", - "markdown" -]New value: +[ + "pdf", + "html", + "png", + "docx", + "pptx", + "csv", + "xls", + "md", + "markdown" +]
- Changed
get_panel_status1 field changed- changed
Input schema / properties / exportFormat / enumPrevious value: -[ - "pdf", - "docx", - "pptx", - "csv", - "xls", - "md" -]New value: +[ + "pdf", + "html", + "png", + "docx", + "pptx", + "csv", + "xls", + "md" +]
3 tool updates
- Changed
ask_group1 field changed- changed
Input schema / properties / question / descriptionPrevious value: -"Research question to survey across the group"New value: +"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."
- Changed
ask_panel1 field changed- changed
Input schema / properties / question / descriptionPrevious value: -"Research question to survey across all groups"New value: +"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."
- Changed
plan_panel_study3 fields changed- changed
Input schema / properties / request / descriptionPrevious value: -"The research objective, question set, audit request, or analysis request. Required for a new draft."New value: +"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." - changed
Input schema / properties / source / descriptionPrevious value: -"The one main source, question, website, image, video, document, or questionnaire this study is about."New value: +"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." - added
Input schema / properties / source / properties / contentAdded value: +{ + "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.", + "maxLength": 20000, + "minLength": 1, + "type": "string" +}
1 tool update
- Changed
get_panel_status4 fields changed- added
Input schema / properties / exportFormatAdded value: +{ + "description": "Asynchronous export format whose status should be returned (defaults to pdf).", + "enum": [ + "pdf", + "docx", + "pptx", + "csv", + "xls", + "md" + ], + "type": "string" +} - changed
Input schema / properties / exportJobId / descriptionPrevious value: -"PDF export job ID returned by export_panel. Pass it with exportKind to poll that exact artifact."New value: +"Export job ID returned by export_panel. Pass it with exportKind and exportFormat to poll that exact artifact." - changed
Input schema / properties / exportKind / descriptionPrevious value: -"Asynchronous PDF export kind whose status should be returned (defaults to full_report)."New value: +"Asynchronous export kind whose status should be returned (defaults to full_report)." - changed
Input schema / properties / exportKind / enumPrevious value: -[ - "executive_brief", - "full_report" -]New value: +[ + "executive_brief", + "full_report", + "raw_data" +]
5 tool updates
- Added
export_group - Added
export_heatmap - Added
export_mind - Changed
export_panel3 fields changed- added
Input schema / properties / forceAdded value: +{ + "description": "Regenerate instead of returning a cached artifact.", + "type": "boolean" +} - added
Input schema / properties / kindAdded value: +{ + "description": "Report kind. Defaults to full_report, except CSV/XLS which default to raw_data.", + "enum": [ + "executive_brief", + "full_report", + "raw_data" + ], + "type": "string" +} - added
Input schema / properties / lengthAdded value: +{ + "description": "Requested report detail for executive_brief and full_report exports.", + "enum": [ + "brief", + "standard", + "detailed" + ], + "type": "string" +}
- Changed
get_panel_status2 fields changed- added
Input schema / properties / exportJobIdAdded value: +{ + "description": "PDF export job ID returned by export_panel. Pass it with exportKind to poll that exact artifact.", + "minLength": 1, + "type": "string" +} - added
Input schema / properties / exportKindAdded value: +{ + "description": "Asynchronous PDF export kind whose status should be returned (defaults to full_report).", + "enum": [ + "executive_brief", + "full_report" + ], + "type": "string" +}
1 tool update
- Changed
export_panel2 fields changed- changed
Input schema / properties / format / descriptionPrevious value: -"Export format: \"pdf\" (default) branded report, \"pptx\" editable branded deck, \"csv\" spreadsheet, \"xls\" Excel, \"json\" raw data, \"md\" (or \"markdown\") markdown report"New value: +"Export format: \"pdf\" (default), \"docx\", \"pptx\", \"csv\", \"xls\", or \"md\" (also accepts \"markdown\")" - changed
Input schema / properties / format / enumPrevious value: -[ - "pdf", - "pptx", - "json", - "csv", - "xls", - "md", - "markdown" -]New value: +[ + "pdf", + "docx", + "pptx", + "csv", + "xls", + "md", + "markdown" +]
1 tool update
- Changed
plan_panel_study1 field changed- added
Input schema / properties / questionResponses / items / properties / maxSelectionsAdded value: +{ + "description": "Maximum choices a respondent may select; only valid for multiselect responses.", + "maximum": 100, + "minimum": 1, + "type": "integer" +}
Frequently Asked Questions
Claiming proves that you control a remote MCP connector. It does not move, proxy, or interrupt the server.
Open the connector listing, choose Claim ownership, and sign in to Glama.
Complete one verification method:
GitHub identity — fastest for official registry listings. For a namespace such as
io.github.alice/server, link the matching GitHub user, then choose Claim with GitHub. An organization namespace such asio.github.acme/serveralso needs that organization to have installed the Glama AI GitHub App and approved its permissions, because GitHub discloses organization membership only to apps it has installed. Use HTTP or DNS when it has not.HTTP challenge — works when you can deploy a public file. Generate a token, publish the exact JSON Glama shows at
/.well-known/glama.jsonon the same origin as the connector, then choose Check HTTP challenge.DNS challenge — works when you control DNS but cannot change the server. Generate a token, create the exact TXT record Glama shows, wait for it to propagate, then choose Check DNS challenge.
After verification, Glama sends a confirmation email and gives you access to listing details, thumbnails, health checks, and analytics. Keep the HTTP file or DNS record in place: Glama periodically checks it and ownership remains verified while the token is discoverable.
The HTTP ownership file has this structure:
{
"$schema": "https://glama.ai/mcp/schemas/connector.json",
"claim": "glama_claim_..."
}Claim tokens are opaque, stable, and bound to the signed-in Glama account. They contain no email address or other personal information. If Glama can no longer discover a verified HTTP or DNS token, it starts a seven-day grace period before removing claim-based access. Restore the same token during that period to keep ownership verified. Never publish an email address, Glama session token, GitHub token, or connector credential as ownership proof.
If verification fails, confirm that you copied the current token exactly. The HTTP file must be public, return valid JSON with a successful HTTP response, and stay on the connector's origin. DNS changes may need more time to propagate. A claim cannot transfer to a different origin or hostname: if the connector target changes, Glama starts the grace period and the new target must be claimed separately after the previous claim is released.
For a connector linked to the official MCP Registry, registry updates continue to replace its name, description, and URL by default. After claiming, open Manage connector and enable Use Glama listing details as the source of truth if edits made on Glama should be preserved. Categories and thumbnails are always managed on Glama; registry linkage and technical connection settings continue to sync.
Control your server's listing on Glama, including description and metadata
Access analytics and receive server usage reports
Get monitoring and health status updates for your server
Feature your server to boost visibility and reach more users
To improve your MCP server's ranking:
Claim ownership of the server listing
Complete the server profile with an accurate description and thumbnail
Provide a test profile so Glama can connect to and evaluate the server
Keep tool definitions clear and complete to earn a high Tool Definition Quality Score (TDQS)
Route real usage through the Glama Gateway; more recorded successful server uses also improve the ranking
For users:
Full audit trail – every tool call is logged with inputs and outputs for compliance and debugging
Granular tool control – enable or disable individual tools per connector to limit what your AI agents can do
Centralized credential management – store and rotate API keys and OAuth tokens in one place
Change alerts – get notified when a connector changes its schema, adds or removes tools, or updates tool definitions, so nothing breaks silently
For server owners:
Proven adoption – public usage metrics on your listing show real-world traction and build trust with prospective users
Tool-level analytics – see which tools are being used most, helping you prioritize development and documentation
Direct user feedback – users can report issues and suggest improvements through the listing, giving you a channel you would not have otherwise
The connector status is unhealthy when Glama is unable to successfully connect to the server. This can happen for several reasons:
The server is experiencing an outage
The URL of the server is wrong
Credentials required to access the server are missing or invalid
If you are the owner of this MCP connector and would like to make modifications to the listing, including providing test credentials for accessing the server, please contact support@glama.ai.
Discussions
No comments yet. Be the first to start the discussion!
Related MCP Connectors
Design and run AI-moderated voice, chat and video research studies, recruit panels, get results.
Run user research from any AI tool. Create studies, recruit participants, query insights.
AI-powered user research for everyone
Connect AI agents to SocioLogic's synthetic persona platform for market research.
Related MCP Servers
- FlicenseNot gradedqualityCmaintenanceRun conjoint experiments and causal research through AI powered behavioral simulations5-
- AlicenseNot gradedqualityCmaintenanceConcept-test your product with synthetic consumers, straight from Claude Code. It turns free-text reactions from roleplayed personas into purchase-intent reports using Semantic Similarity Rating.3MIT
- AlicenseCqualityBmaintenanceRun real user interviews from AI agents and retrieve structured insights with themes and verbatim quotes.5135MIT

OriginalVoices MCP Serverofficial
AlicenseAqualityDmaintenanceEnables asking questions to AI twins representing specific audiences for research purposes.4603MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.
TDQS
Each tool has a clearly distinct purpose, from audience creation and study management to question planning/execution and exports. Even the similar ask_audience and ask_study are unambiguously differentiated by scope (audience-level vs study-level), and the extensive descriptions reinforce the boundaries.
All tool names follow a consistent verb_noun snake_case pattern (e.g., list_audiences, create_study, export_study). There are no mixed conventions or vague verbs, making the naming highly predictable.
With 19 tools, the count is at the upper end of reasonable for a complex domain like market research panels, but each tool serves a distinct function. The set is not bloated; it reflects the multifaceted nature of managing audiences, studies, questions, and exports.
The surface covers the core research lifecycle—create audience/study, plan and run questions, monitor status, and export results. However, it lacks update and delete operations for audiences and studies, which are typical CRUD gaps that agents may encounter. The workflow is otherwise complete.