User Intuition
Server Details
Run customer research studies, recruit participants, monitor interviews, and review reports.
- Status
- Healthy
- Uptime
- 40.1% over 56 days
- OAuth
- Works in Glama
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
TDQS
Scored across 79 tools
Many near-duplicate pairs force the agent to guess: chat_research_session vs queue_research_chat, customize_study vs queue_customize_study, generate_report vs generate_research_output vs start_research_analysis, add_all_research_studies vs sync_research_study, remove_research_study vs remove_research_source vs clear_research_sources, and delete_webhook vs delete_webhook_by_id. Descriptions do differentiate most of them, but at 79 tools the cognitive load and misselection risk are severe.
Snake_case is used throughout, which is good, but verb/noun ordering and verb choice drift (chat_research_session vs queue_research_chat, approve_panel_launch vs launch_panel, add_all_research_studies vs sync_research_study). Deprecated compatibility tools like delete_webhook further muddy the pattern.
79 tools for a single product surface is an extreme over-expansion, with sync/async variants, legacy bulk tools, and poll endpoints each exposed separately. Much of this should be collapsed or moved into parameters on fewer tools.
Coverage is genuinely broad: study lifecycle, participant/BYOP management, panel recruitment and feasibility, Hub sessions, analysis runs, outputs, templates, and webhooks. Remaining gaps are minor (e.g. no explicit interview update or output listing shortcut), and most workflows have a path to completion.
Available Tools
79 toolsadd_all_research_studiesAdd All Studies to Research SessionAInspect
Legacy bulk selection: add every currently available study to this Hub session. Use sync_research_study for a selected study.
| Name | Required | Description | Default |
|---|---|---|---|
| session_id | Yes | ||
| organization_id | No | Organization for this operation and billing. Use list_organizations to choose an active membership. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, idempotentHint=false, destructiveHint=false, so the mutation and its safety profile are known. The description adds useful scope ('every currently available study', legacy label) but does not say what happens to studies already in the session or whether repeats duplicate entries, which matters given idempotentHint=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?
Two short sentences, front-loaded with the legacy/scope caveat and followed by the disambiguation pointer. Nothing is wasted.
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 output schema exists, so return values need not be explained, but for a non-idempotent bulk mutation the description should cover duplicate handling and the redundant-add case. Permission or session-state prerequisites are also unaddressed.
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 only 50%: session_id carries no description and the description does not explain it beyond the loose phrase 'this Hub session'. organization_id is documented in the schema with a pointer to list_organizations, so the description adds nothing the schema doesn't already provide.
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 scope ('add every currently available study to this Hub session') and contrasts it with the alternative bulk-vs-single path. An agent can tell this apart from sync_research_study and remove_research_study without opening schemas.
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?
Explicitly names the sibling to use instead for a single study ('Use sync_research_study for a selected study'), giving a clear bulk-vs-single decision rule. It stops short of saying when this legacy path should be avoided altogether.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
answer_researchAnswer ResearchARead-onlyIdempotentInspect
Answer a question across selected accessible studies using indexed research. Returns generated statements with numbered citations to canonical content IDs, plus source details and index status. Use search_research to inspect the underlying records.
| Name | Required | Description | Default |
|---|---|---|---|
| filters | Yes | ||
| question | Yes | ||
| organization_id | No | Organization for this operation and billing. Use list_organizations to choose an active membership. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes | Generated research answer with validated citations and source records. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive, and closed-world, so the safety profile is fully covered. The description adds that results include citations, source details, and index status — a hint that output quality depends on indexing state — but does not state access/billing implications or latency expectations. It adds modest context beyond annotations without addressing operational behavior.
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 tight sentences with zero waste: what it does, what it returns, and where to go instead. The core operation is front-loaded and nothing is repeated from the annotations.
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?
Output schema exists, so return-value explanation is not required, and annotations cover safety. However, for a tool with a required nested filters object at 33% schema coverage, the description leaves the agent without guidance on content-type selection, study-count limits, or date scoping — gaps the description should have filled.
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 only 33%: only organization_id is documented in-schema. The description vaguely maps 'selected accessible studies' to filters.study_ids but says nothing about the 20-study cap, the content_types enum, or the research date range filters, which are the substance of the nested object.
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: 'Answer a question across selected accessible studies using indexed research.' It also names the sibling it is not (search_research) and clarifies the scope of the operation, so an agent can distinguish it from search/view siblings without opening any schema.
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?
Explicitly routes the agent to search_research 'to inspect the underlying records,' giving a clear alternative-use condition. It does not address the other plausible alternative (view_research_answer) or state when answering is inappropriate, but the primary routing guidance is present.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
approve_panel_launchApprove and Launch PanelADestructiveInspect
MCP App button action. Consumes one short-lived approval challenge, rechecks the saved study and price, then launches one paid panel cycle.
| Name | Required | Description | Default |
|---|---|---|---|
| approval_nonce | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructive=true, non-idempotent, open-world. The description adds real context beyond them: the nonce is single-use and short-lived (explaining non-idempotency), the saved study and price are re-validated before committing, and the launch is a paid cycle. It stops short of saying what happens if the nonce is expired or the recheck fails.
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?
One sentence and one leading fragment, with the invocation context front-loaded before the operational detail. Nothing is redundant, though the 'MCP App button action' fragment is terse enough that its meaning is not fully self-evident.
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?
An output schema exists, so return values need no explanation, and annotations cover the safety profile for a destructive paid action. The description supplies the sequencing (consume nonce -> recheck study/price -> launch one cycle), leaving only edge-case/failure behavior unspecified.
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 0%, so the description must carry the only explanation of approval_nonce. 'Consumes one short-lived approval challenge' does convey that the value is a one-time, expiring challenge rather than an arbitrary id, but it does not say where the agent obtains it or what a consumed/reused nonce returns.
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 concrete verb+resource ('launches one paid panel cycle') and characterizes the mechanism ('MCP App button action', consuming an approval challenge). It is clearly not a generic launcher, but it never names or contrasts the very similar sibling launch_panel, so an agent must infer the distinction.
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?
'MCP App button action' implies this is invoked from a UI approval flow rather than called ad hoc, and 'consumes one short-lived approval challenge' implies a prerequisite exists. However, there is no explicit statement of when to use this versus launch_panel, nor any exclusion about when not to call it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cancel_feasibility_requestCancel Feasibility RequestADestructiveIdempotentInspect
Withdraw a pending feasibility request. A request already answered cannot be cancelled.
| Name | Required | Description | Default |
|---|---|---|---|
| request_id | Yes | ||
| organization_id | No | Organization for this operation and billing. Use list_organizations to choose an active membership. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes | The withdrawn feasibility request. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, idempotentHint=true and readOnlyHint=false, so the agent knows this is a destructive but idempotent mutation. The description adds the pending-only lifecycle constraint, which is genuinely beyond the annotations, but says nothing about the effects of withdrawal (does it free held capacity, can it be resubmitted, is it reversible).
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 short sentences, front-loaded with the action and followed by the blocking condition. Nothing is wasted and nothing is buried.
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?
An output schema exists so return values need not be explained, and the annotations carry the safety profile. For a two-parameter tool the description covers the key precondition; only the permissions needed and post-cancel effects are left unstated.
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 only 50%: organization_id is documented in-schema, but request_id has no description in the schema and none in the tool description. The description adds zero meaning about which request identifier to supply or how to obtain one.
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 verb and resource ('Withdraw a pending feasibility request'), which is inherently distinct from the sibling verbs submit_feasibility_request, get_feasibility_request and list_feasibility_requests. It does not name those siblings explicitly, so it stops short of a 5.
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?
'A request already answered cannot be cancelled' gives a clear when-not condition tied to request state. It does not point the agent at alternatives (e.g. call get_feasibility_request first to confirm the request is still pending), so no explicit alternative routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cancel_research_analysisCancel Research AnalysisADestructiveIdempotentInspect
Cancel one durable analysis run only when the user requests it. Existing results remain available for inspection.
| Name | Required | Description | Default |
|---|---|---|---|
| run_id | Yes | ||
| organization_id | No | Organization for this operation and billing. Use list_organizations to choose an active membership. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, idempotentHint=true and readOnlyHint=false, so the safety profile is structured. The description adds the non-obvious post-condition that existing results remain available for inspection, which materially narrows how destructive the call actually is. It does not say what happens to an in-flight run or whether cancelling a finished run errors.
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 short sentences, zero filler, with the action and its gating condition front-loaded before the aftermath note. Every sentence carries distinct 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?
With rich annotations (destructive, idempotent, closed-world) and an output schema present, the description only needs purpose, invocation gate, and side-effect scope, and it covers all three. Return values and parameter formats are correctly left to structured fields.
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 50%: organization_id is documented in the schema, while run_id relies on its name and UUID format. The description only reinforces that a single run is targeted, adding little beyond the schema. Baseline 3 is appropriate given the partial coverage.
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 ('Cancel one durable analysis run'), and the word 'one' plus 'durable analysis run' distinguishes it from bulk operations and from session/study cancellation siblings. It never names an adjacent sibling such as resume_research_analysis or get_research_analysis, so differentiation is implied rather than explicit.
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?
'only when the user requests it' gives an explicit gating condition for invocation rather than leaving timing to inference. It stops short of naming alternatives or stating when-not to use it (e.g., completed runs, or use resume_research_analysis instead), so no exclusions are covered.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cancel_research_deliverableCancel Research DeliverableADestructiveInspect
Cancel a queued or running Hub export. A cancelled worker cannot publish its file.
| Name | Required | Description | Default |
|---|---|---|---|
| job_id | Yes | ||
| organization_id | No | Organization for this operation and billing. Use list_organizations to choose an active membership. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and idempotentHint=false, so the safety profile is covered. The description adds genuine behavioral context beyond annotations: a cancelled worker cannot publish its file, which tells the agent the consequence of cancellation. It stops short of describing irreversibility or permission requirements.
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 definition is two short sentences, front-loaded with the action and scoped by job state, followed by the key behavioral consequence. Nothing is wasted.
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?
An output schema exists, so return values need not be explained. Still, for a destructive cancellation tool, the description omits parameter meaning for the required job_id and offers no guidance on alternatives, leaving 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?
With only 50% schema description coverage, the description must compensate, but it mentions no parameters at all. The required job_id has no description in the schema beyond UUID format/pattern, so the agent gets no natural-language explanation of what identifier to pass; only organization_id is documented in 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 states a specific verb and resource—'Cancel a queued or running Hub export'—making the action unambiguous. It does not distinguish this tool from sibling cancel tools such as cancel_research_analysis or cancel_feasibility_request, leaving differentiation to the agent's inference.
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 implies the applicable conditions by saying 'queued or running,' which is useful context for when cancellation is valid. However, it provides no explicit when-not-to-use guidance and does not mention alternatives for cancelling other research artifacts.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
chat_research_sessionChat with Research SessionAInspect
Wait for a chat answer; if still running, return the same durable job without cancelling it. For study findings, feedback, comparisons and quotations, use this tool with primary File Search and verified quotations. Resolve ambiguous study names first. Reuse the selected Hub session; if absent create one with create_research_session and a stable retry key, inspect sources and add only missing requested studies. Do not resync unchanged sources or broaden the session silently. After completion always call view_research_answer to display the answer and clickable quote/recording cards inside this conversation, without redirecting to a dashboard; preserve the answer and citation labels. Poll inspect_research_session view=job. Set parent_job_id for a follow-up in the same session. Reuse the same idempotency_key and prompt after a timeout; sync and async share the job.
| Name | Required | Description | Default |
|---|---|---|---|
| prompt | Yes | ||
| session_id | Yes | ||
| wait_seconds | No | ||
| parent_job_id | No | ||
| idempotency_key | Yes | ||
| organization_id | No | Organization for this operation and billing. Use list_organizations to choose an active membership. | |
| include_synthetic | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds substantial context beyond annotations: non-cancelling wait semantics, durable job reuse across polls, retry guidance after a timeout (same idempotency_key and prompt), sync/async sharing the job, and parent_job_id for follow-ups in the same session. The idempotentHint=false annotation sits slightly at odds with the retry-key advice, but the description explains the dedupe mechanism rather than contradicting it. Minor gap: wait_seconds timeout behavior is not discussed.
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 behavior is front-loaded, which is good, but the body is a dense run-on of semicolon-chained workflow rules (~140 words) mixing routing, session setup, polling, and answer rendering. Most sentences carry operational value, yet the packing makes it hard to scan and would benefit from tighter grouping.
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 complex async job tool with an output schema (so return values need no explanation) and low schema coverage, the description covers the end-to-end lifecycle: session setup, submission, polling, retry, and mandatory follow-up rendering. Only wait_seconds behavior and two auxiliary parameters remain undocumented.
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 only 14%, so the description must carry the load. It explains session_id (reuse selected Hub session, create if absent), idempotency_key (stable retry key, reuse after timeout), prompt (reuse the same prompt), and parent_job_id (follow-up in same session). But wait_seconds, organization_id, and include_synthetic get nothing, so compensation is only partial.
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 opening sentence states a specific behavior: wait for a chat answer, and if still running return the same durable job without cancelling it. This distinguishes it from queue_research_chat (enqueue) and view_research_answer (render), though the actual verb/resource framing is buried under workflow instructions rather than stated crisply up front.
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?
Explicit routing is present: use it for 'study findings, feedback, comparisons and quotations', resolve ambiguous study names first, reuse the selected Hub session or create one with create_research_session, and always follow with view_research_answer. It also names negative behavior ('Do not resync unchanged sources or broaden the session silently') and gives the alternative polling tool (inspect_research_session view=job).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clear_research_sourcesClear Research Session SourcesADestructiveIdempotentInspect
Legacy bulk removal: remove all sources from this Hub session without deleting the underlying studies or files. Use only when the user requests clearing the session.
| Name | Required | Description | Default |
|---|---|---|---|
| session_id | Yes | ||
| organization_id | No | Organization for this operation and billing. Use list_organizations to choose an active membership. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and idempotentHint=true, so the safety profile is known. The description adds genuinely non-obvious scope information: sources are detached from the session but the underlying studies and files survive, which is exactly the distinction an agent needs before calling a destructive tool. It omits permission/org requirements and whether the clear is reversible.
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, zero filler, with the destructive scope stated before the usage restriction. Every clause earns its 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?
An output schema exists and annotations cover safety, so the description only needs to convey purpose and blast radius, which it does. The one remaining gap is operational prerequisites for organization_id, though the schema points to list_organizations.
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 50%: organization_id is documented in the schema, but session_id carries no description and the description only says "this Hub session" without noting the UUID format or that the session must already exist. The description adds almost nothing beyond the schema, which is the baseline expectation at this coverage level.
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 gives a specific verb and scope ("bulk removal" of "all sources from this Hub session") and distinguishes the operation from destructive file/study deletion. It does not explicitly name its closest siblings (remove_research_source, remove_research_study), but the word "all" versus a single source does the differentiating work implicitly.
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 states a clear condition ("Use only when the user requests clearing the session") and labels the tool "Legacy", which warns an agent to prefer newer paths. It never names the alternative tool to use instead, so the routing is implied rather than spelled out.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
configure_external_panelConfigure External PanelADestructiveIdempotentInspect
Create or replace a customer-supplied panel bridge on an owned BYOP study. Supply completion and screen-out redirect URLs; set the provider's respondent ID query parameter and placeholder if the defaults differ. Optional session, external study, quota-full, and technical-failure mappings are supported. Before sharing entry_url with the provider, call get_study, verify provisioning_status=provisioned, and have the human approve the current plan and URL mapping. This does not recruit respondents or launch the paid User Intuition Panel. Repeating the same PUT preserves the current entry token.
| Name | Required | Description | Default |
|---|---|---|---|
| provider | No | custom | |
| study_id | Yes | ||
| organization_id | No | Organization for this operation and billing. Use list_organizations to choose an active membership. | |
| session_id_param | No | ||
| respondent_id_param | No | respondent_id | |
| complete_redirect_url | Yes | ||
| screenout_redirect_url | Yes | ||
| session_id_placeholder | No | ||
| technical_redirect_url | No | ||
| external_study_id_param | No | ||
| quota_full_redirect_url | No | ||
| respondent_id_placeholder | No | {{RESPONDENT_ID}} | |
| external_study_id_placeholder | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes | Created or replaced external-panel configuration. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already flag destructive, idempotent, and open-world behavior, and the description adds genuinely new context: the human-approval gate, the read-before-write verification step, and that repeating the same PUT preserves the current entry token. It does not say what an actual config change does to the existing panel or its token, which matters for a destructive replace.
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?
Five sentences, front-loaded with the action, then requirements, then optional mappings, then the safety gate, then scope exclusions. Every sentence adds a distinct constraint or clarification.
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 13-parameter destructive mutation with an output schema and full annotations, the description covers scope, prerequisites, approval gate, idempotency, and exclusions. The remaining gap is permission/billing context and the effect of a changed config on the existing token.
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 only 8%, so the description has to carry this dimension. It identifies the required redirect URLs, explains when respondent_id_param and its placeholder need setting, and groups the optional mappings (session, external study, quota-full, technical-failure) — real semantic value, though it never names those parameters or gives placeholder syntax.
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 ('Create or replace a customer-supplied panel bridge') plus the scope constraint ('on an owned BYOP study'). This clearly separates it from sibling tools such as get_external_panel, delete_external_panel, regenerate_external_panel_token, and launch_panel.
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 prerequisites (call get_study, verify provisioning_status=provisioned, get human approval of the plan and URL mapping before sharing entry_url) and names what the tool does not do (recruit respondents, launch the paid panel). It stops short of naming the exact alternative tool for the paid panel path, so the routing is implied rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_participantsCreate ParticipantsADestructiveInspect
Queue creation of 1–100 unique BYOP participants. Poll get_participant_job until succeeded, then list participants. Before creating participants, call get_study, require provisioning_status=provisioned, and verify or obtain explicit approval of the current plan. Carry a trusted unchanged approval forward using study_id and updated_at; changed plan or invitation settings invalidate it. Invitations send unless silent is true.
| Name | Required | Description | Default |
|---|---|---|---|
| study_id | Yes | ||
| participants | Yes | ||
| idempotency_key | No | Reuse the same key and inputs if a prior call timed out. A different operation needs a new key. | |
| organization_id | No | Organization for this operation and billing. Use list_organizations to choose an active membership. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes | Participant creation job. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare destructiveHint=true and openWorldHint=true but say nothing about side effects or preconditions. The description supplies the key behavioral facts: invitations are sent as a side effect unless silent is true, the operation is asynchronous and must be polled, and approval validity is tied to study_id and updated_at and invalidated by changed plan or invitation settings.
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?
Four sentences, front-loaded with the action, then sequencing, then preconditions, then side effects — a sensible order with no filler. The approval-carry-forward sentence is dense and slightly hard to parse, costing a point.
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 async, destructive, open-world batch mutation, the description covers preconditions, the polling loop, the invitation side effect, and approval invalidation rules; an output schema exists so return values need not be explained. An agent has everything required to call this 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 50%, and the description compensates for part of the gap by explaining the silent flag's effect, the 1–100 uniqueness bound on participants, and the study_id/updated_at linkage used for approval carry-forward. It says nothing about idempotency_key, metadata, or external_id, which are the remaining undocumented fields.
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 with scope: 'Queue creation of 1–100 unique BYOP participants.' The async nature ('queue') and the batch bound distinguish it immediately from create_study, add_all_research_studies, and update_participant.
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 an explicit pre-call gate (call get_study, require provisioning_status=provisioned, obtain/verify plan approval) and an explicit post-call procedure (poll get_participant_job until succeeded, then list participants). It also names the exact conditions under which a carried-forward approval stays valid versus is invalidated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_research_sessionCreate Research SessionBInspect
Create an organization Hub session for selected studies and uploaded sources. Reuse the same idempotency key after an uncertain response.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Research session | |
| idempotency_key | Yes | ||
| organization_id | No | Organization for this operation and billing. Use list_organizations to choose an active membership. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the mutation profile (readOnlyHint=false, destructiveHint=false, openWorldHint=false), so the safety baseline is covered. The description adds one genuinely non-obvious behavioral fact: that idempotency is key-driven, so a retry with the same key is safe despite idempotentHint=false — this prevents accidental duplicate sessions. It does not disclose what happens to the referenced studies/sources, permission requirements, or failure modes, so it stops short of rich behavioral context.
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, zero filler, with the core action front-loaded and the retry rule second. Every clause carries 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?
An output schema exists, so return values need not be explained, and the idempotency retry rule is covered. The gap is the mismatch between the description's promise of attaching 'selected studies and uploaded sources' and a schema containing only name, idempotency_key, and organization_id — the description never clarifies that attachment happens via sibling tools such as add_all_research_studies or upload_research_source.
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 only 33% (only organization_id is described in-schema), so the description carries extra weight — and it does give the required idempotency_key a real meaning (reuse on uncertain responses), which is the single most important semantic here. However, it says nothing about the 'name' parameter, and it references 'selected studies and uploaded sources' that are not parameters at all, leaving an agent unsure how those attachments are supplied.
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 verb and resource ('Create an organization Hub session') plus a scope ('for selected studies and uploaded sources'), which separates it from siblings like delete_research_session, rename_research_session, and inspect_research_session. It loses a point because 'Hub session' does not exactly echo the tool's own 'research session' vocabulary, and no sibling is named as an explicit alternative.
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 only guidance is a retry instruction ('Reuse the same idempotency key after an uncertain response'), which is about recovering from a failed call, not about when to choose this tool over inspect_research_session or chat_research_session. There is no statement of prerequisites (e.g., an active organization membership) or of when not to call it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_studyCreate StudyAInspect
Create an in-depth-interview, concept-test, or prototype-test draft using ordinary metadata only. Ask the human to explicitly choose recruiting_method (panel, BYOP, or synthetic respondents). A value proposed or inserted by a host/delegating model is not human confirmation unless it quotes the human's actual choice. Unless the human requests otherwise, use a voice interview in English with Elliot; these defaults are applied when interview_format, language, or voice are omitted. Synthetic respondents require chat. A prototype-test must use video or voice, never chat. Do not draft or pass the study plan, audience targeting, screener questions, concept links, or concept images here; after creation, send the user's natural-language research brief to customize_study. For a concept test, pass an accessible attachment through customize_study.concept_image or include a publicly downloadable concept-image URL in the message, plus its participant-facing label, stimulus context, audience, and learning goals. For a prototype test, include the prototype URL, participant-facing label, intended tasks, audience, and learning goals. The Customize Plan backend validates and attaches the asset. Voice configuration is kept for chat as well as voice and video.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| voice | No | Interviewer configuration for every format, including chat. Defaults to male when omitted. | |
| language | No | Interview language code from userintuition://catalog/languages. Defaults to English (`en`). | en |
| study_type | No | Use concept-test for a participant-facing concept image and prototype-test for a clickable prototype, staging site, live page, or web flow. Prototype tests require video or voice, never chat. | in-depth-interview |
| idempotency_key | No | Reuse the same key and inputs if a prior call timed out. A different operation needs a new key. | |
| organization_id | No | Organization for this operation and billing. Use list_organizations to choose an active membership. | |
| interview_format | No | Interview mode. Defaults to voice when omitted. | |
| recruiting_method | Yes | Required explicit human choice. Ask the user to choose panel, BYOP, or synthetic respondents before calling create_study; do not guess or silently default it. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes | The created study draft. Call get_study for the complete persisted plan. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations, which only declare it is a non-read-only, non-idempotent, non-destructive write. It discloses the human-confirmation rule and that a host-proposed value does not count, that the Customize Plan backend validates and attaches assets, defaults applied when format/language/voice are omitted, and that voice config persists into chat.
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?
Front-loaded with purpose and the human-confirmation rule, and nearly every sentence carries operational weight. It is long, with mild redundancy (the closing note that voice config applies to chat restates the schema's own wording) and some asset-handling detail that arguably belongs with customize_study.
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 8-parameter creation tool with an output schema, the description covers the pieces an agent could get wrong: mandatory human choice, format/type compatibility, default injection, and handoff to customize_study. Return values need not be explained given the output schema, though billing/organization implications are left entirely to 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?
Schema coverage is already 88%, so parameters are largely self-documenting. The description still adds meaning the schema does not: recruiting_method must be a human choice not a guess, and the omission defaults for interview_format, language, and voice. It stops short of explaining organization_id or name constraints, but those are covered in 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?
States a specific verb and resource with explicit scope: creates a draft study of one of three named types, using only ordinary metadata. It also carves out what the tool does NOT do (study plan, targeting, screeners, concepts) and names customize_study as the place for that, so it is clearly separable from its closest sibling.
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 concrete when-to-use routing (brief goes to customize_study after creation), hard constraints (synthetic respondents require chat; prototype-test never chat), and default behavior when optional fields are omitted. It also states an explicit precondition — a human must choose recruiting_method — rather than leaving it inferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_webhookCreate WebhookAInspect
Create a webhook for an account or one owned study. Choose interview, study lifecycle, participant lifecycle, or quota events. The signing secret is shown once; store it securely.
| Name | Required | Description | Default |
|---|---|---|---|
| hook_url | Yes | ||
| study_id | No | ||
| event_types | No | ||
| organization_id | No | Organization for this operation and billing. Use list_organizations to choose an active membership. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes | The created webhook. Its signing secret is shown only once. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare that this is a non-read-only, open-world, non-idempotent, non-destructive creation operation. The description adds important behavior beyond those hints: the signing secret is shown only once and must be stored securely. It still omits authentication requirements and how duplicate webhook creation is handled.
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 short sentences with no filler, front-loading the core create action and scope before the event choices and the security warning. Every sentence adds useful 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 description covers the essential create behavior, scope options, event categories, and the one-time secret. With annotations and an output schema present, it does not need to explain return values, but it could be more complete by noting authentication needs or duplicate-call behavior.
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 only 25%, so the description must compensate. It clarifies that the webhook can target an account or one owned study, which gives meaning to study_id, and groups event_types into interview, study lifecycle, participant lifecycle, and quota categories. It does not explain hook_url semantics, exact event-type usage, or the event_types array constraints beyond what the schema already encodes.
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: 'Create a webhook' for an account or one owned study. It clearly states scope and event categories, but does not explicitly distinguish this from sibling operations like test_webhook, list_webhooks, or rotate_webhook_secret, leaving the agent to infer from the verb alone.
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 some usage context by saying to choose interview, study lifecycle, participant lifecycle, or quota events, and notes account-level versus study-level scope. It does not state when to prefer this tool over alternatives such as test_webhook, nor does it mention prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
customize_studyCustomize StudyADestructiveInspect
Send one research-design turn to Customize Plan. This operation may fetch a researcher-provided concept URL and use an external analysis model. A 2026 Tasks client receives a durable task for turns without concept_image; poll tasks/get for the completed planning turn. Native concept images use the synchronous call. Put operational workflow constraints in execution_policy, never in message. Set decisions=agent only when the human delegated research-design choices; report assumptions and relay only remaining required questions. Otherwise use human mode and relay questions[]. If the client exposes an attached image as bytes or a readable local path, ask for a participant-facing label when missing, base64-encode the raw bytes, and send concept_image. Completed plans and setting changes are persisted. Then get_study, return the full saved plan for review, and obtain approval before invitations or paid launch.
| Name | Required | Description | Default |
|---|---|---|---|
| message | Yes | The user's research brief, requested change, or answer to the previous Customize Plan question. | |
| study_id | Yes | ||
| decisions | No | agent makes ordinary research-design assumptions when the human delegated those choices; human relays required questions. | human |
| concept_image | No | Optional native concept-image attachment for this Customize Plan turn. | |
| idempotency_key | No | Reuse the same key and inputs if a prior call timed out. A different operation needs a new key. | |
| organization_id | No | Organization for this operation and billing. Use list_organizations to choose an active membership. | |
| execution_policy | No | Caller workflow policy, kept out of the participant-facing research brief. This call never starts recruitment. | review_before_fieldwork |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes | The next Customize Plan turn and current study state. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds substantial context beyond the annotations: external concept-URL fetches, an external analysis model, durable-task vs synchronous behavior depending on concept_image presence, and that completed plans and setting changes are persisted (consistent with destructiveHint=true and readOnlyHint=false). It does not spell out exactly what a turn overwrites in an existing plan, which is the main residual gap for a destructive mutation.
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?
Every sentence is roughly actionable, but the definition is a dense wall of mixed concerns — image handling appears between workflow-policy rules and post-call approval steps, so ordering is not front-loaded by task phase. It could be tightened or split into grouped clauses without losing content.
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 an output schema exists, return values needn't be described, and the description instead covers call shape, async vs sync path, image encoding, and the approval gate — close to complete for a complex write tool. The main omission is what state an existing plan loses when a turn is applied.
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 already 86%, so the baseline is 3; the description still adds decision-mode semantics for `decisions` and the encoding/labeling workflow for `concept_image` (ask for a participant-facing label, base64-encode raw bytes). The execution_policy/message separation rule is also meaningful usage semantics rather than schema restatement.
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 concrete verb and resource: "Send one research-design turn to Customize Plan," and makes the turn-based nature explicit. It does not, however, differentiate itself from the close siblings queue_customize_study or get_customize_study_job, which an agent would likely wonder about.
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 real routing rules: decisions=agent only when the human delegated research-design choices, otherwise human mode with questions[] relayed, and workflow constraints belong in execution_policy rather than message. It also states the follow-up sequence (get_study, show plan, obtain approval before invitations or paid launch). What's missing is explicit comparison against the queue/get job siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_external_panelDelete External Panel ConfigurationADestructiveInspect
Disable the external-panel entry link for an owned BYOP study. Existing interviews remain; the provider can no longer send new respondents through this link. A repeated deletion returns 404.
| Name | Required | Description | Default |
|---|---|---|---|
| study_id | Yes | ||
| organization_id | No | Organization for this operation and billing. Use list_organizations to choose an active membership. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes | External-panel configuration disabled. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the destructive and non-idempotent annotations, the description clarifies exactly what is affected: existing interviews remain, the provider can no longer send new respondents through the link, and repeated deletion returns 404. This is high-value behavioral detail for a destructive operation.
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 three tight sentences with the core effect front-loaded. Each sentence adds relevant information: purpose, preservation of existing interviews, and repeated-deletion behavior.
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 destructive annotations, partial schema descriptions, output schema, and sibling tools, the description provides enough context to invoke the tool correctly. It covers the critical side effects and repeated-call behavior without needing to explain return values.
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 50%, with organization_id documented in the schema and study_id documented only by type/pattern. The description adds the useful constraint that the study must be an owned BYOP study, but it does not explain organization_id or add further detail about study_id beyond that constraint.
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: disabling the external-panel entry link for an owned BYOP study. It clearly conveys the operational effect, but it does not explicitly distinguish the tool from close siblings such as configure_external_panel, get_external_panel, or regenerate_external_panel_token.
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 implied usage context by saying it applies to an owned BYOP study and leaves existing interviews intact while preventing new respondents from using the link. It does not explicitly state when to use this instead of related tools such as regenerate_external_panel_token or configure_external_panel.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_interviewDelete InterviewADestructiveIdempotentInspect
Soft-delete an interview owned by the authenticated user. Call only when the human explicitly requests deletion of this interview.
| Name | Required | Description | Default |
|---|---|---|---|
| interview_id | Yes | ||
| organization_id | No | Organization for this operation and billing. Use list_organizations to choose an active membership. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes | Interview deletion acknowledgement. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare destructiveHint=true, idempotentHint=true, and readOnlyHint=false, so the safety profile is covered. The description adds the critical non-obvious detail that this is a SOFT delete (implying recoverability), which the annotations do not convey. It does not describe downstream effects on related data or where the deleted record goes.
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 short sentences, zero padding, with the operation and the hard call-time precondition front-loaded. Every clause earns its 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?
An output schema exists, so return values need not be explained, and the annotations carry the safety profile. The soft-delete semantics and human-approval requirement make it largely complete for a single-ID mutation. Minor gap: no mention of whether organization_id is required or how ownership failure behaves.
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 50%: organization_id is documented in the schema, but interview_id has no description. The description says the interview must be owned by the authenticated user, which adds a precondition constraint on interview_id, but gives no hint on where to obtain the ID (e.g., list_interviews). Baseline 3 for partial coverage plus a small constraint.
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: 'Soft-delete an interview', with an ownership scope ('owned by the authenticated user'). It clearly separates this from list_interviews/get_interview siblings, though it does not explicitly distinguish itself from the many other delete_* tools beyond the resource name.
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 an explicit gating condition: 'Call only when the human explicitly requests deletion of this interview.' This is a clear when-to-use rule. It does not name an alternative (e.g., no restore/undo path or 'prefer archiving' guidance), so it falls short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_participantDelete ParticipantADestructiveIdempotentInspect
Soft-delete one BYOP invitation after the user explicitly requests it. Deletion also removes its personal link. If interviews exist, the request returns a conflict unless the user separately approves deleting those interviews and cascade_interviews is true.
| Name | Required | Description | Default |
|---|---|---|---|
| participant_id | Yes | ||
| organization_id | No | Organization for this operation and billing. Use list_organizations to choose an active membership. | |
| cascade_interviews | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes | Participant deletion acknowledgement. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond annotations, which already flag destructive and idempotent behavior, the description adds that this is a soft-delete, removes the personal link, and may return a conflict unless cascade deletion is explicitly approved. Those are meaningful behavioral details for a destructive operation.
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 compact sentences, front-loaded with the core action and followed immediately by the most important behavioral caveat. No sentence is wasted.
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 covers the destructive action, the soft-delete semantics, the link-removal effect, and the cascade prerequisite. With an output schema present and annotations covering safety, no additional description is needed 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 coverage is only 33%, so the description carries meaningful burden. It clearly explains cascade_interviews' gating behavior and the conflict condition, while participant_id is implied by the singular BYOP invitation scope. organization_id is not described here, but the schema already supplies its guidance.
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 ('Soft-delete one BYOP invitation') and clarifies the scope narrowly, distinguishing it from broader deletion tools. It also explains what is removed, namely the participant's personal link.
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 explicitly says deletion should occur only after the user explicitly requests it, and explains the conflict condition when interviews exist. It also states that the user must separately approve deleting interviews and that cascade_interviews must be true.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_research_outputDelete Research OutputADestructiveIdempotentInspect
Permanently delete an existing Studio output in its session only when the user requests deletion. Read the output first.
| Name | Required | Description | Default |
|---|---|---|---|
| output_id | Yes | ||
| session_id | Yes | ||
| organization_id | No | Organization for this operation and billing. Use list_organizations to choose an active membership. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and idempotentHint=true, so the safety profile is known. The description adds value beyond them by stating permanence, the user-authorization requirement, and a read-before-delete workflow step. It still says nothing about what happens to items referencing the output or about error behavior.
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 short sentences, front-loaded with the destructive action and its precondition; no filler or restatement 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?
An output schema exists, so return values need not be explained, and the safety profile is carried by annotations. However, for a destructive 3-parameter tool with low schema coverage, the description leaves the identifier parameters and their relationships unexplained.
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 only 33% (only organization_id is documented in-schema), so the description should compensate, but it never explains output_id, session_id, or the UUID format constraints. Only the phrase 'in its session' faintly implies the session scoping of the operation.
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 plus resource and scope: 'Permanently delete an existing Studio output in its session.' An agent can distinguish this from edit_research_output, rename_research_output, and the delete_* siblings without opening a schema.
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?
'only when the user requests deletion' is an explicit when-to-use gate, and 'Read the output first' gives an ordering precondition before invocation. It does not name alternatives (e.g., edit/rename instead of delete), so it falls short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_research_sessionDelete Research SessionBDestructiveIdempotentInspect
Delete one organization Hub session only when the user explicitly requests it.
| Name | Required | Description | Default |
|---|---|---|---|
| session_id | Yes | ||
| organization_id | No | Organization for this operation and billing. Use list_organizations to choose an active membership. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, idempotentHint=true, openWorldHint=false and readOnlyHint=false, so the safety profile is known. The description adds a user-consent guardrail, which is genuinely useful, but says nothing about whether deletion cascades to studies/outputs or is recoverable — the details an agent most needs before calling a destructive tool.
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?
One short sentence with the destructive verb front-loaded and the consent condition attached. Nothing is wasted, though the single sentence is doing very little work for a destructive two-parameter operation.
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 irreversible destructive mutation with a half-documented schema, the description should say what is removed with the session and how to identify the target. An output schema exists, so return values needn't be explained, but the preconditions and blast radius are 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?
Schema description coverage is only 50%: organization_id is documented in the schema, but session_id has no description anywhere. The description mentions 'organization' context but never explains how to obtain a session_id (inspect_research_session, create_research_session, etc.), so it fails to compensate for the gap.
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?
A specific verb (Delete) plus a specific resource (organization Hub session) with a clear cardinality constraint ('one'). It does not, however, distinguish itself from the many other delete_* siblings (delete_study, delete_interview, delete_research_output), so an agent must infer the boundary.
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 'only when the user explicitly requests it' is a real usage gate that tells the agent not to delete proactively. But it offers no alternative path (e.g., inspect_research_session to confirm the target, or delete_study for a narrower deletion), which matters given the large delete-heavy sibling set.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_studyDelete StudyADestructiveIdempotentInspect
Soft-delete a study and its linked invitations, interviews, and reports from normal reads. Participant links stop working. There is no public restore endpoint. Uploaded assets may have separate retention. Call only when the human explicitly requests deletion of this study.
| Name | Required | Description | Default |
|---|---|---|---|
| study_id | Yes | ||
| organization_id | No | Organization for this operation and billing. Use list_organizations to choose an active membership. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes | The soft-deleted study. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and idempotentHint=true, so the safety profile is known. The description still earns credit for non-obvious behavior the annotations cannot convey: cascade scope, participant links breaking, no public restore endpoint, and separate asset retention. No contradiction with annotations — 'soft-delete' and 'no restore endpoint' are consistent with destructiveHint=true.
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?
Five short sentences, each carrying distinct information: cascade scope, link breakage, irreversibility, asset caveat, and the human-approval gate. The destructive consequence is front-loaded and there is no 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?
A mutation tool with an output schema present, so return values need no explanation; annotations plus the description together cover safety, irreversibility, and cascade effects. An agent has everything needed to decide and call 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 50%: organization_id is documented in-schema, study_id is an obvious UUID. The description says nothing about either parameter, relying entirely on the schema. Baseline 3 is appropriate since roughly half the parameters are self-evident and half documented.
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?
Specific verb (soft-delete) plus resource (study) plus the cascade scope (invitations, interviews, reports). It clearly separates itself from pause_study/stop_study by stating the data is removed 'from normal reads', but it never names an alternative tool such as remove_research_study, so the differentiation is inferential rather than explicit.
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?
'Call only when the human explicitly requests deletion of this study' is a concrete gating condition, effectively a when-not-use rule for autonomous agents. It stops short of naming the correct sibling for softer actions (stop_study, pause_study) or the alternative removal path (remove_research_study), which would have made it a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_webhookDelete Webhook by URL (Deprecated)ADestructiveInspect
Deprecated compatibility tool. List webhooks, then use delete_webhook_by_id so deletion works through clients that omit DELETE request bodies. A repeated deletion returns 404.
| Name | Required | Description | Default |
|---|---|---|---|
| hook_url | Yes | ||
| organization_id | No | Organization for this operation and billing. Use list_organizations to choose an active membership. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes | Webhook deletion acknowledgement. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and idempotentHint=false, so safety is covered. The description adds genuinely new behavior: the tool is deprecated and a repeated deletion surfaces a 404 rather than silently succeeding. It does not add anything on permissions or irreversibility, so 4 rather than 5.
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 short sentences with the deprecation front-loaded, which is exactly the right first impression. The middle sentence is slightly tangled in its clause ordering but every sentence earns its 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?
An output schema exists, so return values need no explanation, and annotations carry the destructive/non-idempotent profile. What remains unexplained is the format/validity of hook_url and that the deletion is irreversible, which are minor but real gaps for a destructive 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 coverage is 50% and hook_url has no description anywhere, so the agent must infer it is the URL identifying the webhook. The description partially compensates by pointing at list_webhooks as the source of that value. organization_id is documented in the schema itself, so the description adds little there.
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 reads as a deletion tool ("A repeated deletion returns 404") and the title supplies the "by URL" scope, so with the name the operation is identifiable. It also distinguishes itself cleanly from delete_webhook_by_id. It never states plainly what it deletes and by which identifier, so it stops short of a 5.
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 names the exact preferred workflow: list webhooks, then use delete_webhook_by_id, and gives the condition that makes this tool the fallback (clients that omit DELETE request bodies). That is explicit when-to-use, when-to-prefer-an-alternative guidance, which is the top of this scale.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_webhook_by_idDelete Webhook by IDADestructiveInspect
Stop future deliveries to one registered webhook. A repeated deletion returns 404.
| Name | Required | Description | Default |
|---|---|---|---|
| webhook_id | Yes | ||
| organization_id | No | Organization for this operation and billing. Use list_organizations to choose an active membership. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes | Webhook deletion acknowledgement. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and idempotentHint=false, and the description adds real value on top by explaining *why* it is non-idempotent: a repeat call returns 404 rather than succeeding silently. It also scopes the effect to future deliveries, though it doesn't clarify whether the webhook record and delivery history are permanently removed.
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 with the primary effect front-loaded and the repeat-call caveat second. No 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?
With rich annotations and an output schema, a brief description is defensible, and the 404 behavior is a useful addition. Gaps remain around the destructive scope (record vs. deliveries), permissions, and the ambiguity with the sibling `delete_webhook`.
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 only 50%, and the description says nothing about either parameter. The undocumented `webhook_id` is left to be inferred from the name and UUID pattern, so the description does not compensate for the coverage gap.
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 ('Stop future deliveries to one registered webhook') in plain operational terms. It does not distinguish this tool from the near-identical sibling `delete_webhook`, which leaves an agent guessing between two deletes.
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 use case is implied — remove a live webhook endpoint so it stops receiving events — but there is no explicit when-not guidance, no prerequisite/permission notes, and no routing between `delete_webhook` and `delete_webhook_by_id`.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
download_research_outputDownload Research OutputARead-onlyIdempotentInspect
Retrieve a saved report as Markdown, PowerPoint as PPTX/PDF, or Highlights as a short-lived private MP4 link. Files return filename, mime_type and data_base64 (up to 64 MB); decode to an artifact rather than showing base64 to the user. Access is checked again. Preserve verified references; never invent download URLs.
| Name | Required | Description | Default |
|---|---|---|---|
| format | No | ||
| output_id | Yes | ||
| session_id | Yes | ||
| organization_id | No | Organization for this operation and billing. Use list_organizations to choose an active membership. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare it is a safe read; the description adds substantive traits: a 64 MB payload cap, base64-encoded file bytes, an MP4 link that is private and short-lived, and the fact that access is re-verified at download time. These are non-obvious constraints an agent could not get from structured fields.
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 tight sentences, front-loaded with what is retrievable and the format mapping, followed by the payload-encoding rule and the integrity guardrail. No sentence is 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?
Covers format semantics, size limits, encoding, link lifetime, and reference integrity — enough to invoke correctly and handle the response, and the output schema carries the return shape. Minor gap: it doesn't clarify whether format is optional or whether certain formats are only valid for certain output types.
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 low (25%), so the description must carry weight, and it does for `format` by mapping each enum value (md, pptx, pdf, mp4) to a concrete artifact type and delivery mode. It says nothing about the required session_id/output_id pair or the organization_id billing scope, leaving part of the parameter set to 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?
States a specific verb and resource ('Retrieve a saved report') and enumerates the concrete artifact types (Markdown, PPTX/PDF, MP4 highlights). It doesn't name which sibling is the alternative (e.g. get_research_deliverable vs download_research_output), so the boundary is inferred rather than stated.
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 clear operating guidance for the result: decode base64 into an artifact instead of showing it to the user, and never fabricate download URLs. It does not say when to pick this tool over get_research_deliverable or when a given format is unavailable, so exclusions are missing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
edit_research_outputEdit Research OutputADestructiveInspect
Apply the requested prompt to an existing report or PowerPoint in place. Read the output first. Retains its ID and reuses saved evidence; default reports and Highlights cannot be edited. Poll inspect_research_session view=job and read the original output after success. Reuse the key on retry.
| Name | Required | Description | Default |
|---|---|---|---|
| prompt | Yes | ||
| output_id | Yes | ||
| session_id | Yes | ||
| idempotency_key | Yes | ||
| organization_id | No | Organization for this operation and billing. Use list_organizations to choose an active membership. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well past the annotations: it discloses that the ID is retained, saved evidence is reused, certain outputs are immutable, and the operation is asynchronous and must be polled. The 'Reuse the key on retry' line adds idempotency-key retry semantics; it sits in mild tension with idempotentHint=false but is not a contradiction, since a fresh key still produces a new edit.
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?
Six short sentences, action and in-place scope front-loaded, then preconditions, exclusions, polling, and retry. Nothing is padding; each sentence carries a distinct operational fact.
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 a destructive in-place mutation with an output schema, and the description covers preconditions, immutability cases, async polling, and retry behavior. It stops short of saying whether the prior report content is overwritten or versioned, and says nothing about required permissions.
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 only 20% (only organization_id is documented), so the description has to carry the load. It refers to all four required params in prose — the prompt, the existing output (output_id), the session via inspect_research_session, and the idempotency key — but adds no format or semantics beyond their names.
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: 'Apply the requested prompt to an existing report or PowerPoint in place.' The words 'existing' and 'in place' distinguish it from generation/regeneration siblings such as generate_research_output, though no sibling is named explicitly.
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 real preconditions ('Read the output first'), an explicit exclusion ('default reports and Highlights cannot be edited'), and a follow-up path ('Poll inspect_research_session view=job and read the original output after success'). It never states the edit-vs-generate decision rule against generate_research_output, which keeps it below a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
estimate_panelEstimate PanelARead-onlyIdempotentInspect
Read-only estimate for one Panel recruitment cycle. Returns per-interview and total credit cost, available balance and deficit, participant reward, card hold, recurrence, and a heuristic timeline. launch_panel shows this estimate for human App approval, or human chat confirmation in clients without Apps, before the paid request. The price and balance can change before launch; use submit_feasibility_request for incidence below 10% or more than 1,000 interviews.
| Name | Required | Description | Default |
|---|---|---|---|
| target | Yes | ||
| study_id | Yes | ||
| frequency | No | one-time | |
| country_code | Yes | Required explicit country code from userintuition://catalog/panel-countries. Never infer a country. | |
| incident_rate | Yes | Percentage points. Values below 10 require submit_feasibility_request instead of direct launch. | |
| organization_id | No | Organization for this operation and billing. Use list_organizations to choose an active membership. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes | Read-only panel estimate for one recruitment cycle. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive, and the description adds genuinely new operational context: the numbers are estimates that can change before launch, the timeline is heuristic, and no paid request occurs until human approval. That is meaningful disclosure beyond the annotation set.
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?
Front-loaded with purpose and return contents, then the routing rules. The long enumeration of return values partly duplicates the output schema, which slightly dilutes efficiency, but every sentence carries actionable 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?
Safety profile is covered by annotations and return shape by the output schema, so the description only needed to add the approval gate, estimate volatility, and feasibility routing — all present. The remaining gap is that a couple of optional parameters (frequency, organization_id) are left entirely to 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?
With 50% schema description coverage, the description compensates for the key inputs by explaining the incident_rate (<10%) and target (>1,000) thresholds that force routing to submit_feasibility_request. It does not illuminate study_id, frequency, or organization_id, so it is not fully compensating, but it adds real meaning beyond the bare schema constraints.
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 ('Read-only estimate for one Panel recruitment cycle') and enumerates exactly what the estimate contains (per-interview and total credit cost, balance/deficit, reward, card hold, recurrence, timeline). It is clearly distinguishable from launch_panel, which is named as the consumer of this estimate.
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?
Explicitly routes the agent: launch_panel shows this estimate for human App approval (or chat confirmation) before the paid request, and submit_feasibility_request is required for incidence below 10% or more than 1,000 interviews. Both the when-to-use and the when-to-use-something-else conditions are spelled out.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_reportGenerate Study ReportAInspect
Queue analysis of study responses using an external analysis model. A 2026 Tasks client receives a durable task and polls tasks/get for the completed job; other clients receive a job ID and poll get_report_job. Then call get_study_report. report.ready webhooks also signal completion.
| Name | Required | Description | Default |
|---|---|---|---|
| study_id | Yes | ||
| idempotency_key | No | Reuse the same key and inputs if a prior call timed out. A different operation needs a new key. | |
| organization_id | No | Organization for this operation and billing. Use list_organizations to choose an active membership. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes | Report generation job. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds real behavior the annotations cannot convey: asynchronous execution, durable task vs job-ID client branching, polling endpoints, and webhook completion signals. It does not mention cost/billing implications of the external model even though organization_id is described as billing-related in the schema, and it doesn't reconcile the idempotency_key parameter with idempotentHint=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?
Four short sentences, front-loaded with the action and then the completion paths. Dense but every sentence carries workflow information; no filler or restated 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?
Output schema exists, so return values need not be explained, and the description covers the critical async lifecycle and how to retrieve results. What remains missing is guidance on when this is the right tool versus sibling analysis/report tools, given a crowded namespace.
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 67%, so the schema already documents idempotency_key and organization_id reasonably well. The description adds no parameter-level meaning at all — study_id is only implied via 'study responses' and organization_id/idempotency_key are never mentioned — so it neither compensates for nor improves on 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?
States a specific verb and resource: queue analysis of study responses via an external analysis model, with follow-up calls named (get_report_job, get_study_report). It is clearly a job-enqueueing tool, though it does not distinguish itself from similarly named siblings like start_research_analysis or generate_research_output.
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 a clear post-call workflow: poll tasks/get for 2026 Tasks clients, poll get_report_job for others, then call get_study_report, with report.ready webhooks as an alternative signal. No explicit when-not or comparison against sibling analysis tools, so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_research_outputGenerate Research OutputAInspect
Queue a report, native PowerPoint or saved Highlights video in an organization Hub session. Reuses saved reports and findings; no need to run exhaustive analysis first. Highlights follow default-report learning goals/quotes, with original audio when available and no artificial narration for chat studies; prompt does not select different quotes. Poll inspect_research_session view=job until succeeded; then read its output_id. Retry with the same key.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | ||
| type | Yes | ||
| prompt | Yes | ||
| session_id | Yes | ||
| template_id | No | ||
| idempotency_key | Yes | ||
| organization_id | No | Organization for this operation and billing. Use list_organizations to choose an active membership. | |
| include_synthetic | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With annotations present but sparse, the description adds substantial behavior: this is an async queued job with a job-view polling pattern and an output_id return, Highlights uses default-report goals/quotes and original audio with no artificial narration, and the prompt cannot select different quotes. One wrinkle: idempotentHint is false while the text says to retry with the same key, which is meaningful but explained only implicitly (dedupe via idempotency_key rather than natural idempotency).
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 purpose and the reuse rule are front-loaded, and the polling/retry instructions are compact. Later clauses are telegraphic (e.g. 'with original audio when available and no artificial narration for chat studies') and require a re-read, but no sentence is 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?
For an async generator with an output schema, the description covers the queuing model, how to poll, where to read the result, idempotent retry, and output-type-specific behavior. The remaining gap is semantics for the optional parameters (template_id, name, include_synthetic), which an agent would otherwise have to guess at.
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 13%, so the description must compensate and does so only partially: it conveys the three type values, the limits of prompt for Highlights, the retry role of idempotency_key, and implicitly session_id. name, template_id, include_synthetic, and organization_id are left entirely to the schema, so several parameters remain semantically thin.
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 first sentence gives a specific verb ('Queue') and three concrete output resources (report, native PowerPoint, saved Highlights video) scoped to a Hub session. It is clear what the tool produces, though it does not explicitly distinguish itself from close siblings like generate_report or queue_report_slides.
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 supplies a real usage rule: it reuses saved reports and findings so exhaustive analysis need not run first. It also gives the operational loop (poll inspect_research_session view=job, then read output_id) and a retry rule. It stops short of naming which sibling to use for the non-reuse or slide-specific cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_accountGet AccountARead-onlyIdempotentInspect
Read the effective workspace, role, available credit balance, payment method readiness, and incentive limits before a paid action. A payment method on file does not approve a Panel launch; use the current estimate and its MCP App for human approval.
| Name | Required | Description | Default |
|---|---|---|---|
| organization_id | No | Select an organization you belong to and inspect its account and billing readiness. Use list_organizations when you have multiple memberships. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes | The effective account, workspace, and payment readiness. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive, closed-world, so the safety profile is covered; the description adds genuinely non-obvious behavior: it resolves the 'effective' workspace/role rather than accepting one, and it surfaces billing readiness signals that gate paid actions. It stops short of saying what happens when readiness checks fail or how stale credit balances may be.
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 front-loaded sentences: the first lists what is returned, the second kills the dangerous assumption that a stored payment method approves spend. The second sentence is a bit indirect ('use the current estimate and its MCP App') but every clause carries decision-relevant information, so there is no 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?
With an output schema present, the description need not document return values, and annotations carry the safety profile; the remaining need is preconditions, which it covers via 'before a paid action' and the approval caveat. Minor gap: no guidance on behavior for users without an organization or with zero credit.
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?
Only one optional parameter and schema coverage is 100%, with the schema's own description already covering organization selection and the list_organizations fallback for multi-membership users. The tool description adds nothing further about the parameter, so the baseline 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?
Uses a specific verb (Read) plus a precisely enumerated resource surface: effective workspace, role, credit balance, payment method readiness, incentive limits. That enumeration makes it unmistakable versus siblings like get_study or list_organizations, which return different objects.
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?
States the timing explicitly ('before a paid action') and then draws the critical boundary: a payment method on file does not authorize a Panel launch, and routing for human approval goes through the current estimate and its MCP App. That is a when/when-not rule plus a named alternative path, not vague context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_customize_study_jobGet Study Customization JobARead-onlyIdempotentInspect
Poll a queued study customization turn. On succeeded, inspect result and call get_study to return the persisted plan. On failed, inspect the saved study before retrying.
| Name | Required | Description | Default |
|---|---|---|---|
| job_id | Yes | ||
| study_id | Yes | ||
| organization_id | No | Organization for this operation and billing. Use list_organizations to choose an active membership. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes | Customize Plan job status and completed planning turn. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, non-destructive, closed-world, so the safety profile is covered. The description adds real behavioral value by exposing the job's outcome states (succeeded/failed) and the required follow-up action for each; it stops short of describing polling cadence or result contents.
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 short sentences, outcome-first structure, zero filler; the primary action ('Poll a queued...') is front-loaded and the branching follows immediately.
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?
An output schema exists so return values need not be explained, and the workflow guidance is present. However, for a 3-parameter polling tool it omits the origin of job_id and any guidance on repeated polling or job expiry, leaving a real gap.
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 only 33% — only organization_id is documented, and job_id/study_id are bare UUIDs. The description never mentions any parameter, so it does not compensate by explaining that job_id comes from queue_customize_study or why study_id is needed alongside it.
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 (poll) and a specific resource (a queued study customization job/turn), which is clearly distinct from the queueing sibling queue_customize_study and from get_study. It does not explicitly name the sibling it complements at the queueing stage, so it falls just short of full differentiation.
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 concrete next steps conditioned on outcome: on succeeded, inspect result and call get_study; on failed, inspect the saved study before retrying. That is a clear usage contract, though it never says when not to poll or how often to poll.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_external_panelGet External Panel ConfigurationARead-onlyIdempotentInspect
Read the customer-supplied panel entry link, respondent ID parameters, and outcome redirects for one owned BYOP study. This is distinct from individual BYOP invitations and paid User Intuition Panel recruitment.
| Name | Required | Description | Default |
|---|---|---|---|
| study_id | Yes | ||
| organization_id | No | Organization for this operation and billing. Use list_organizations to choose an active membership. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes | External-panel entry and outcome configuration. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and openWorldHint=false, so the safety profile is covered. The description adds the meaningful scoping constraint that the study must be owned and of BYOP type, but it says nothing about behavior when the study is not a BYOP study, whether missing configuration returns empty or errors.
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, zero waste. The positive definition comes first and the disambiguation follows, which is exactly the right front-loading for a routing decision.
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?
An output schema exists so return values need no explanation, and the description nonetheless enumerates the three returned artifacts. Annotations cover the safety profile. The only gap is error/edge-case behavior for non-BYOP or unconfigured studies, which is minor for a simple two-parameter read.
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 50%: organization_id is documented in the schema while study_id has only a UUID pattern. The description partially compensates by implying study_id must reference an owned BYOP study, which adds semantics beyond the bare UUID format. It adds nothing about organization_id or billing implications.
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 ("Read") and resource (external panel configuration: entry link, respondent ID parameters, outcome redirects) scoped to one owned BYOP study. It explicitly says what it is not (individual BYOP invitations, paid User Intuition Panel recruitment), though the closest siblings in the list — configure_external_panel and regenerate_external_panel_token — are not named.
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?
"For one owned BYOP study" implies the prerequisite context (ownership, BYOP study type) and the second sentence excludes two adjacent concepts. However, no explicit when-to-use vs. configure_external_panel, delete_external_panel, or regenerate_external_panel_token is given, so an agent must infer that this is the read-only counterpart to the configure/delete siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_feasibility_requestGet Feasibility RequestBRead-onlyIdempotentInspect
Get one feasibility request and its status or estimate.
| Name | Required | Description | Default |
|---|---|---|---|
| request_id | Yes | ||
| organization_id | No | Organization for this operation and billing. Use list_organizations to choose an active membership. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes | The requested feasibility request. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is fully covered. The description adds that the response may contain a status or an estimate depending on request state, which is genuinely useful beyond annotations, but permission requirements or behavior for unknown IDs is not mentioned.
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?
A single short sentence with zero filler, front-loading the verb and resource. The trailing 'status or estimate' slightly muddies whether both are returned or one is conditional.
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 an output schema present, return values need not be explained, and the tool is a simple two-param read. Still, the description gives no guidance on how a not-found or pending request behaves, nor routes to the companion 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 coverage is 50%: organization_id carries a description pointing to list_organizations, and request_id is well-typed as a UUID with format and pattern constraints. The description adds nothing about either parameter, so it neither helps nor hurts, making a baseline 3 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?
States a specific verb and resource ('Get one feasibility request') and clarifies the returned payload includes status or estimate. The word 'one' distinguishes it from the sibling list_feasibility_requests, though the sibling is not named.
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 singular 'one' implies the tool is used when a specific request_id is already known, and the sibling list_feasibility_requests covers discovery. However, the description never states when to use this versus the list tool or cancel_feasibility_request, leaving the agent to infer.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_fielding_progressGet Fielding ProgressBRead-onlyIdempotentInspect
Get qualifying completions versus the current target, completed interview quality counts, and a rate-based expected finish when enough progress exists.
| Name | Required | Description | Default |
|---|---|---|---|
| study_id | Yes | ||
| organization_id | No | Organization for this operation and billing. Use list_organizations to choose an active membership. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes | Current fielding progress. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive, so the safety profile is covered. The description adds genuine behavioral context beyond that: it discloses that the expected-finish projection is conditional ('when enough progress exists'), signaling a nullable/absent field, which helps the agent interpret results.
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?
A single front-loaded sentence that opens with the verb and then lists the three returned metrics with no filler. It is dense but every clause corresponds to real output, though the packed triple-list is slightly harder to scan than a structured breakdown would be.
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?
An output schema exists, so return values need not be re-explained, and annotations cover safety. The remaining gap is routing: with many sibling read tools, the description does not tell the agent which adjacent tool answers a different question, leaving selection to inference.
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 50%: organization_id is documented in-schema (including a pointer to list_organizations), while study_id is undocumented but self-evident as the required UUID. The description contributes nothing about either parameter, which is acceptable but not value-adding at this coverage level.
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 ('Get fielding progress') and enumerates exactly what is returned: qualifying completions versus target, completed interview quality counts, and a rate-based expected finish. The purpose is unambiguous, but it never names or distinguishes itself from close siblings like get_study or get_interview_usage_stats.
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?
There is no guidance on when to call this versus get_study or get_interview_usage_stats, nor any prerequisite or exclusion. The clause 'when enough progress exists' describes a data condition in the output, not a condition for choosing this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_interviewGet InterviewARead-onlyIdempotentInspect
Get interview timing, stored format, current configured study language, and up to 100 spoken transcript segments bounded to about 20 KB of text. Use next_message_offset to fetch the next page. Each segment keeps its original turn ID and text_offset; system prompts and internal metadata are excluded.
| Name | Required | Description | Default |
|---|---|---|---|
| interview_id | Yes | ||
| message_limit | No | ||
| message_offset | No | ||
| organization_id | No | Organization for this operation and billing. Use list_organizations to choose an active membership. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes | The full requested interview. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish read-only, idempotent, non-destructive behavior, and the description adds substantive traits beyond them: a 100-segment hard cap, an approximate 20 KB text bound, exclusion of system prompts/internal metadata, and preservation of turn ID and text_offset per segment.
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 dense sentences that front-load the payload contents before the paging instruction; nearly every clause carries information, with the only waste being the mismatched next_message_offset label.
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?
An output schema exists so return values need not be spelled out, and the description covers payload scope, size bounds, pagination, and content exclusions. Minor gaps remain around the offset field naming and error behavior for a bad interview_id.
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 only 25% (just organization_id), so the description must compensate; it partially does by implying the 100-segment ceiling and offset-based paging, but it never explains message_limit vs message_offset explicitly and references a name (next_message_offset) that does not match the schema (message_offset).
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+resource and enumerates exactly what a single interview record returns: timing, stored format, configured study language, and transcript segments. It is clearly distinct from list_interviews and get_interview_usage_stats, though it never explicitly says so.
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?
"Use next_message_offset to fetch the next page" is a genuine pagination hint, but the schema parameter is named message_offset, and no guidance is given for when to prefer this over list_interviews or how to combine message_limit with the ~20 KB cap.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_interview_usage_statsInterview Usage StatsARead-onlyIdempotentInspect
Aggregate eligible non-test interview counts and billed units over a date range. The backend resolves the default app and a 30-day UTC range when omitted. The response includes the applied scope.
| Name | Required | Description | Default |
|---|---|---|---|
| app_id | No | Optional app scope. | |
| cadence | No | ||
| end_date | No | ISO date. | |
| start_date | No | ISO date. | |
| organization_id | No | Select an organization you belong to for usage totals. Users can belong to multiple organizations. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes | Eligible interview counts, billed units, and resolved query scope. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare this as a safe, idempotent read. The description adds meaningful behavior beyond annotations: eligibility excludes test interviews, omitted app/date values default to the backend app and a 30-day UTC range, and the applied scope is returned.
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 short sentences, zero waste, and the core aggregation purpose is front-loaded. Default behavior is included only where it materially affects invocation.
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 an output schema present and annotations covering the safety profile, the description supplies the remaining call-critical context: what is counted, default scope resolution, and confirmation that the response reports applied scope. No critical invocation information 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?
Schema coverage is high at 80%, so most parameters are already documented. The description adds useful semantics for omitted app_id and date parameters by stating that the backend resolves the default app and a 30-day UTC range; cadence remains undocumented beyond its enum.
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 gives a specific verb ("Aggregate") and precise resources ("eligible non-test interview counts and billed units"), with date-range scoping. It clearly identifies a usage-statistics tool rather than interview CRUD or listing tools in the sibling set.
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 purpose implies usage reporting, and the description explains default app/date resolution. However, it does not explicitly say when to use this instead of related tools like get_interview, list_interviews, or get_account, nor does it state exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_participantGet ParticipantARead-onlyIdempotentInspect
Read one BYOP invitation, including its current status, personal interview link, interview count, and reward state. Use it to verify the participant before changing their email, deleting the invitation, or sending a reward. Panel respondents are not returned by this tool.
| Name | Required | Description | Default |
|---|---|---|---|
| participant_id | Yes | ||
| organization_id | No | Organization for this operation and billing. Use list_organizations to choose an active membership. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes | The requested BYOP participant. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive, so the safety profile is covered; the description adds the non-obvious behavioral caveat that panel respondents are not returned by this tool, which prevents a confusing empty/error result. It also flags that a personal interview link and reward state are exposed, which is useful sensitivity context.
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 what is read and what is returned, then the usage rule and the exclusion. No filler, and the most decision-relevant constraint (panel respondents excluded) is one short clause.
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 an output schema available the description needn't enumerate return structure, and annotations cover the safety profile; the description still supplies the use-case and the respondent-type exclusion. The only thin spot is that multi-organization context is left entirely to the schema field text.
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 50%: organization_id is described in the schema (billing scope, use list_organizations), while participant_id carries only format/pattern constraints. The description adds no syntax or selection guidance for either parameter, so the schema does most of the work and the description only implies that a single participant is addressed.
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 ("Read one BYOP invitation") plus the exact fields returned (status, interview link, interview count, reward state), which is far more informative than the bare name. It also draws the boundary with panel respondents, so an agent can tell this apart from list_participants and other read tools.
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?
"Use it to verify the participant before changing their email, deleting the invitation, or sending a reward" gives concrete trigger conditions that map onto the sibling mutations update_participant, delete_participant, and send_participant_reward. It stops short of naming those siblings explicitly or saying when not to call it (e.g., how to discover the ID in the first place).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_participant_jobGet Participant JobBRead-onlyIdempotentInspect
Poll a participant batch. On success, list_participants for the study to retrieve the invitations.
| Name | Required | Description | Default |
|---|---|---|---|
| job_id | Yes | ||
| organization_id | No | Organization for this operation and billing. Use list_organizations to choose an active membership. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes | Participant creation status. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false, and openWorldHint=false, so the safety profile is covered without help. The description adds polling semantics and the post-success handoff, but discloses nothing about job states, terminal failure, or partial results — meaningful gaps for a polling endpoint.
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 short sentences with zero padding, and the core action is front-loaded before the follow-up instruction. The terseness borders on under-specification, but no sentence is wasted.
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?
An output schema exists, so return-value documentation is not required. Still, for a polling tool the description omits the job's lifecycle states and what to do while pending or on failure, leaving the agent to infer the control flow.
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 50%: organization_id carries its own guidance, but job_id has only format/pattern with no description. The description never mentions job_id, its provenance, or how to obtain one, so it fails to compensate for the undocumented required 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 uses a specific verb ('Poll') and resource ('participant batch'), making the async-job nature clear and distinguishing it from sibling readers like get_report_job or get_customize_study_job. The mismatch between 'job' in the name and 'batch' in the description is minor imprecision but doesn't obscure the purpose.
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 implies the call should be repeated ('Poll') and provides a concrete follow-up step ('list_participants for the study'), which is genuinely useful routing. However, it never states the upstream trigger (job_id presumably comes from create_participants) nor how to act on failure, so the when-to-use guidance stays implied rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_report_jobGet Report JobARead-onlyIdempotentInspect
Poll an asynchronous report request. A succeeded job provides result_url; then fetch the report with get_study_report.
| Name | Required | Description | Default |
|---|---|---|---|
| job_id | Yes | ||
| study_id | Yes | ||
| organization_id | No | Organization for this operation and billing. Use list_organizations to choose an active membership. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes | Report generation status. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive, so the safety profile is covered. The description adds genuine behavioral content by disclosing the state-machine outcome (a succeeded job yields result_url) and the implicit handoff. It omits what a pending or failed job returns, which is the main gap.
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-loaded with the action and followed by the next step. Nothing extraneous.
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?
An output schema exists so return values needn't be enumerated, and the description still highlights the one field that matters (result_url). For a polling tool, the missing piece is terminal-state handling — what to do when a job fails or never completes.
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 only 33% — organization_id is documented in-schema, while study_id and job_id carry only format/pattern hints. Those two are largely self-explanatory UUIDs, and the description adds no scoping or ownership semantics, so it neither compensates nor leaves a serious hole.
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+resource ('poll an asynchronous report request'), which clearly separates it from mutating siblings like generate_report. It names the follow-up sibling get_study_report, though it doesn't explicitly differentiate itself from the other job-polling siblings (get_report_slide_job, get_customize_study_job, get_participant_job).
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 usage context: call it to poll a pending job, and once the job succeeds, switch to get_study_report using result_url. It stops short of stating when polling is unnecessary (e.g. job already terminal) or what cadence/backoff to use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_report_slide_jobGet Report Slide JobARead-onlyIdempotentInspect
Poll an editable PowerPoint export. A succeeded job returns a fresh private download URL valid for 15 minutes. The export expires after seven days.
| Name | Required | Description | Default |
|---|---|---|---|
| job_id | Yes | ||
| study_id | Yes | ||
| organization_id | No | Organization for this operation and billing. Use list_organizations to choose an active membership. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes | PowerPoint export status and private signed URL. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnly/idempotent annotations, it discloses two genuinely useful behaviors: a succeeded job issues a fresh private download URL valid 15 minutes, and the export itself expires after seven days. It omits the status set (pending/running/failed) and what a non-succeeded job returns, which is the main remaining behavioral gap.
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 short sentences, front-loaded with the action, then the two expiry facts. No filler and nothing redundant.
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?
An output schema and read-only annotations already cover return shape and safety, so the description only needed to add lifecycle context — which it does via the 15-minute URL and 7-day expiry. It falls short only on polling guidance and on documenting the two required UUID parameters.
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 only 33% — job_id and study_id carry no descriptions, only UUID patterns — and the description adds nothing about them. "Poll an ... export" weakly implies job_id identifies the export job, but there is no guidance on study_id scoping or when organization_id is required.
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?
"Poll an editable PowerPoint export" gives a specific verb (poll) and resource (PowerPoint slide export job), which separates it from the broader get_report_job and from queue_report_slides. It doesn't name those siblings explicitly, so an agent must infer the boundary rather than read it.
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?
"Poll" implies this is called repeatedly after an asynchronous queue operation, and the sibling queue_report_slides is the plausible trigger. However, the description never states when to call it, how often, or why one would pick it over get_report_job or get_study_report — usage is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_research_analysisInspect Research AnalysisARead-onlyIdempotentInspect
Read a run and verified claims, its evidence, eligible timed highlights, exports, source coverage or session history. Follow next_cursor until exhausted. Evidence includes canonical transcript locators; audio eligibility requires a complete participant turn and owned recording. Authorization is checked on every read.
| Name | Required | Description | Default |
|---|---|---|---|
| view | No | run | |
| after | No | ||
| run_id | No | ||
| session_id | No | ||
| evidence_id | No | ||
| organization_id | No | Organization for this operation and billing. Use list_organizations to choose an active membership. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, non-destructive), so the description earns credit for the context it adds: authorization is re-checked on every read, audio eligibility requires a complete participant turn and an owned recording, and evidence carries canonical transcript locators. These are real constraints an agent would otherwise have to discover by failure.
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 dense sentences with the primary capability front-loaded and the operational caveats (pagination, authorization) following. No filler, though the compressed noun list requires re-reading and the `next_cursor` naming drift costs a little clarity.
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?
An output schema exists, so return values need not be described, and annotations carry the safety profile. Combined with the description's disclosure of auth re-checks and audio-eligibility rules, an agent has enough to call this correctly, even if the exact view-to-content mapping needs a schema peek.
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 only 17% (only `organization_id` is documented), so the description must carry most of the burden. It partially compensates by enumerating the readable content types that correspond to `view` values, but never names the enum values, never explains `run_id` vs `session_id` vs `evidence_id` selection, and refers to a `next_cursor` field while the request parameter is actually called `after` — a terminology mismatch that could send an agent looking for a nonexistent argument.
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 ('Read') and enumerates the resources available: run, verified claims, evidence, timed highlights, exports, source coverage, session history. This maps well onto most of the `view` enum. It does not differentiate itself from overlapping siblings such as `inspect_research_session`, `view_research_answer`, or `get_research_deliverable`, so an agent cannot resolve those collisions from the description alone.
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?
Usage is implied: the enumerated content types tell the agent this is the inspection surface for analysis output, and 'Follow next_cursor until exhausted' gives a concrete iteration instruction. There is no explicit when-to-use / when-not-to-use guidance and no naming of the sibling that handles raw session data or file downloads instead.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_research_deliverableGet Research DeliverableBRead-onlyIdempotentInspect
Poll a Hub export. A succeeded job returns a fresh private download_url with source access rechecked at download. Expired or revoked sources cannot be downloaded.
| Name | Required | Description | Default |
|---|---|---|---|
| job_id | Yes | ||
| organization_id | No | Organization for this operation and billing. Use list_organizations to choose an active membership. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already say readOnly, idempotent, and non-destructive, so safety is covered. The description still adds real value: a succeeded job returns a FRESH private download_url, source access is rechecked at download time, and expired or revoked sources will fail. That is genuine behavioral context an agent cannot get from annotations or 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?
Three short sentences, front-loaded with the action and followed by the key return-value and access-constraint facts. Every sentence carries information; nothing is 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?
An output schema exists, so return-value detail is not strictly required, and the description usefully flags the download_url behavior. But for a polling tool it omits the essentials: what a pending or failed job yields, whether the caller should poll repeatedly, and the dependency on queue_research_deliverable for job_id. Adequate but with clear 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 coverage is only 50%, and the undocumented parameter is the required job_id, whose schema entry carries only format/pattern constraints. The description uses "job" but never says that job_id comes from queue_research_deliverable, nor does it mention organization_id or any hint about how these interact. It does not compensate for the coverage gap.
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 verb and target ("Poll a Hub export") and clarifies that a succeeded job yields a download_url, so the core action is graspable. However, "Hub export" is jargon that never names the deliverable or the research domain, and it does not distinguish this from sibling job-pollers such as get_report_job, get_customize_study_job, or get_participant_job. Purpose is implied rather than sharply stated.
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?
There is no explicit when-to-use or when-not-to-use guidance. The description never links this to queue_research_deliverable (the tool that presumably produces job_id), nor does it contrast with download_research_output or cancel_research_deliverable. The agent must infer the polling workflow entirely from the name and the word "job".
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_studyGet StudyARead-onlyIdempotentInspect
Get the full persisted study, including the plan, audience targeting, screeners, and concept assets managed by customize_study. Call before metadata updates and after customization to verify the result. After customization, return the complete persisted study_plan to the user in a readable form. Panel launch approval happens in the launch_panel MCP App, or explicit human chat confirmation when the client does not support Apps. Obtain explicit approval of the current plan before BYOP participant creation; retain study_id and updated_at so unchanged approval survives a resumed workflow. When provisioning_status is provisioned, include both returned links in the completion response. dashboard_url is the researcher management link. study_link is the live participant interview link, not a test or preview link; opening it starts the participant experience. The public API does not expose a separate researcher-preview URL.
| Name | Required | Description | Default |
|---|---|---|---|
| study_id | Yes | ||
| organization_id | No | Organization for this operation and billing. Use list_organizations to choose an active membership. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes | The full persisted study. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive, so the bar is lower, yet the description still adds real behavioral context: approval must precede BYOP participant creation, approval is scoped by study_id + updated_at so it survives resumed workflows, and study_link is a live participant link that starts the participant experience rather than a preview. The only gap is that these are workflow obligations rather than properties of 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?
Purpose and call ordering are front-loaded, which is good. But the paragraph then sprawls into launch-approval policy, BYOP approval caching, and a note that the public API exposes no researcher-preview URL – material that belongs to approve_panel_launch or launch_panel rather than a read tool, diluting the core instruction.
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 an output schema present, return fields needn't be enumerated, and the description still adds the one thing the schema can't convey: how to interpret dashboard_url versus study_link. For a 2-parameter read tool with full annotations, the definition is complete enough to call 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 50%: organization_id is described in the schema, while study_id carries no description. The description mentions retaining study_id, but only as workflow state, not as parameter semantics, and it never explains when organization_id should be supplied versus omitted. Baseline 3 is appropriate since the schema does part of the work.
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 first sentence gives a specific verb and resource and enumerates the payload ('plan, audience targeting, screeners, and concept assets'), which distinguishes it from list_studies and from job-status siblings like get_customize_study_job. It also ties the resource to the sibling that mutates it (customize_study). It never explicitly contrasts itself with review_study or get_study_report, so it stops short of full sibling differentiation.
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?
Explicit call-ordering guidance is given: 'Call before metadata updates and after customization to verify the result,' and it names the alternative channel for panel launch approval (launch_panel MCP App / human chat confirmation). What's missing is when NOT to reach for it – e.g., use list_studies when you have no study_id – leaving that inference to the agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_study_reportGet Study ReportARead-onlyIdempotentInspect
Get a small report overview by default. Set view to one section (study_findings, participant_profiles, participant_responses, evidence_coverage, recommended_next_steps, or references), or full when all data is needed. included_sections distinguishes omitted sections from empty ones. Findings include structured prevalence and source quotes when available.
| Name | Required | Description | Default |
|---|---|---|---|
| view | No | overview | |
| study_id | Yes | ||
| organization_id | No | Organization for this operation and billing. Use list_organizations to choose an active membership. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes | The latest persisted study report. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive, so the safety profile is covered; the description adds genuinely useful behavior: the default is a *small* overview and 'included_sections' distinguishes omitted from empty sections. It also flags that findings may carry structured prevalence and source quotes 'when available,' warning of variable payload shape.
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?
Four compact sentences, front-loading the default behavior before the enumeration of view options. Slightly dense with the inline parenthetical list, but every sentence carries 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?
An output schema exists so return values need no prose; given that, the description covers the default mode, the selection mechanism, the empty-vs-omitted pitfall, and conditional content. Nothing essential to invoking it 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?
Schema coverage is only 33%, and the description correctly compensates by enumerating the meaningful 'view' values and contrasting section views with 'full', plus explaining 'included_sections' semantics that the schema does not. study_id and organization_id get no added detail, but organization_id is already documented in-schema and study_id is self-evident.
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 ('Get a ... report overview' for a study) and immediately describes the default scope. It distinguishes itself from report-generation siblings by framing the output as a report read with selectable sections, though it never explicitly names get_study or generate_report as alternatives.
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 clear guidance on when to use the default overview, when to pick a single section, and when to use 'full' — that is real when-to-use guidance for the main parameter. It stops short of naming sibling tools or stating when-not to use this (e.g., use get_study for metadata only).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_webhookGet WebhookBRead-onlyIdempotentInspect
Get a webhook by ID without revealing its signing secret.
| Name | Required | Description | Default |
|---|---|---|---|
| webhook_id | Yes | ||
| organization_id | No | Organization for this operation and billing. Use list_organizations to choose an active membership. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes | The requested webhook without its signing secret. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and openWorldHint=false, so safety is covered. The description adds genuinely new behavioral context by stating the signing secret is withheld from the response, which an agent would otherwise have to infer from the 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?
A single short sentence with no filler, and the key qualifier (secret withheld) is front-loaded. It is arguably too terse rather than too long, which is not a conciseness defect but leaves gaps elsewhere.
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?
Annotations and an output schema carry most of the load, and the redaction note is a useful addition. Still missing is any guidance on choosing this over list_webhooks and any clarification of the organization_id scoping required for a correct call.
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 50%: organization_id is documented in the schema (including the list_organizations pointer) but webhook_id has only a format/pattern. The description adds nothing about either parameter, so it does not compensate for the undocumented UUID input.
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 ('Get a webhook') and scopes it with 'by ID', which implicitly separates it from list_webhooks. It does not explicitly name a sibling alternative, but the ID-based single-resource fetch 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?
Usage is only implied: 'by ID' signals this is for when a webhook identifier is already known, and the sibling list_webhooks covers discovery. No explicit when-to-use or when-not-to-use statement, and no prerequisites such as organization scoping are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
inspect_research_sessionInspect Research SessionARead-onlyIdempotentInspect
Read organization Hub sessions, one session, sources, chronological chat history, a durable job, or Studio outputs. Set session_id except when view=sessions; job needs job_id, output needs output_id. Follow next_cursor unchanged as after. Job success includes answer/references or output_id; partial remains explicit. Read the existing output before editing it.
| Name | Required | Description | Default |
|---|---|---|---|
| view | Yes | ||
| after | No | ||
| limit | No | ||
| job_id | No | ||
| output_id | No | ||
| session_id | No | ||
| organization_id | No | Organization for this operation and billing. Use list_organizations to choose an active membership. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover safety (readOnly, idempotent, non-destructive, closed-world), so the bar is lower and the description clears it by adding traits annotations cannot express: cursor passthrough semantics ('Follow next_cursor unchanged as after'), and job-state semantics ('Job success includes answer/references or output_id; partial remains explicit'). That tells the agent how to interpret a non-final result, which is genuinely useful behavioral context.
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 what-it-reads enumeration is front-loaded, and every subsequent clause (ID mapping, cursor rule, job-state note) carries distinct information. The phrasing is telegraphic to the point of awkwardness in places ('Follow next_cursor unchanged as after'), and the trailing editing hint is slightly orphaned, but nothing is 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?
With 7 parameters, an output schema present, and strong annotations, the description covers the pieces an agent cannot infer: the view-to-ID mapping, pagination continuation, and partial-job interpretation. Return-value shape is legitimately delegated to the output schema. The missing `limit` explanation is the one substantive hole for a paginated listing 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 only 14%, so the description must carry the burden — and it largely does: it defines which identifier each `view` requires and how `after` relates to the returned cursor. The gap is `limit`, which is never mentioned in the description and has no schema description either; an agent must infer its pagination role from the name alone. Against the low coverage baseline, this is above adequate but not exhaustive.
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 first sentence names a specific verb (Read) and enumerates the exact resource set: Hub sessions, one session, sources, chat history, a durable job, Studio outputs. That maps one-to-one onto the `view` enum, so an agent can tell this is the read-side counterpart to the create/delete/edit siblings. It stops short of naming any sibling explicitly, which keeps it out of 5 territory.
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 conditional routing within the tool (session_id for most views, job_id for job, output_id for output), which is real usage guidance, plus a workflow hint: 'Read the existing output before editing it.' But it never addresses when to use this versus adjacent readers like get_study, view_research_answer, or download_research_output, and never states exclusions or prerequisites beyond the ID mapping.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
launch_panelReview Panel LaunchADestructiveInspect
Open the MCP App for human review of the saved study plan and complete current panel estimate. The first call only previews and does not spend. For App clients, a human must click Approve and launch in the App. For clients without MCP Apps, return the saved plan and quote in chat, ask the human to confirm, then call this tool again with the returned chat_approval_nonce and human_confirmed=true. Never infer confirmation from a prior study or quote. The estimate must match the study, country, inputs, balance and price at approval time.
| Name | Required | Description | Default |
|---|---|---|---|
| target | Yes | ||
| study_id | Yes | ||
| frequency | No | one-time | |
| estimate_id | Yes | Current estimate identifier from estimate_panel. Paid launch fails if the study, inputs, balance, or price changed, or the estimate expired. | |
| country_code | Yes | Required explicit country code from userintuition://catalog/panel-countries. Never infer a country. | |
| incident_rate | Yes | Percentage points. Values below 10 require submit_feasibility_request instead of direct launch. | |
| human_confirmed | No | ||
| idempotency_key | No | Reuse the same key and inputs if a prior call timed out. A different operation needs a new key. | |
| organization_id | No | ||
| chat_approval_nonce | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| study | No | |
| launch | No | |
| result | No | |
| status | No | |
| estimate | No | |
| approval_method | No | |
| chat_approval_nonce | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, openWorldHint=true and idempotentHint=false, and the description adds real behavioral depth beyond those: the first call does not spend money, the second requires fresh human confirmation, and launch fails if the estimate no longer matches study/country/inputs/balance/price or has expired. It stops short of describing cancellation/reversibility or the cost implications of a paid launch.
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?
Purpose and the preview/no-spend caveat are front-loaded, and each sentence carries distinct information about the approval flow, the nonce round-trip, and estimate validity. The fourth sentence is long and carries several instructions at once, but overall the length is proportionate to a high-stakes two-phase tool.
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 destructive, paid, 10-parameter tool with a 5-required-parameter gate, the description covers the critical path: preview, human approval, nonce return, and estimate-freshness failure. With an output schema present it need not describe return values, though the relationship to approve_panel_launch and any cancellation path remain unaddressed.
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 only 40%, so the description must compensate; it does explain human_confirmed (must be true), the role of the returned chat_approval_nonce, and the consistency conditions behind estimate_id. It says nothing about target, frequency, organization_id, or study_id, leaving several undocumented parameters unexplained in both places.
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 verb and resource ('launch' the 'review panel' for a saved study plan) and immediately explains the two-phase preview-then-spend behavior, so the purpose is unmistakable. It does not, however, differentiate itself from the close sibling approve_panel_launch or explicitly route agents from estimate_panel, so an agent must infer the boundary.
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 clear when-to-use guidance with alternatives: the first call previews without spending, App clients require an in-App Approve click, and non-App clients must round-trip through chat with chat_approval_nonce and human_confirmed=true. It also supplies an exclusion ('Never infer confirmation from a prior study or quote'), though it never names the near-identical sibling approve_panel_launch, leaving that choice ambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_feasibility_requestsList Feasibility RequestsBRead-onlyIdempotentInspect
List the account feasibility requests, newest first, in bounded pages.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | ||
| page_size | No | ||
| organization_id | No | Organization for this operation and billing. Use list_organizations to choose an active membership. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes | A bounded page of account feasibility requests. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only, idempotent, non-destructive, and closed-world behavior. The description adds useful behavioral details: newest-first ordering and bounded pagination, but it does not describe auth requirements, error conditions, or return characteristics beyond what annotations and the output schema 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 a single front-loaded sentence with no wasted wording. It efficiently conveys the core action, scope, ordering, and pagination behavior.
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 list tool with rich annotations and an output schema, the description covers purpose, ordering, and pagination adequately. It leaves parameter usage details to the schema, which is reasonable, though it could mention how it relates to get_feasibility_request.
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 only 33%, so the description should compensate for undocumented parameters. It mentions 'bounded pages' but does not explain page or page_size semantics, defaults, or limits; organization_id is documented separately in 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 states a specific verb and resource: list the account feasibility requests. It adds ordering and pagination details, making the scope clear, though it does not explicitly contrast with get_feasibility_request or other 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 no explicit guidance on when to use this tool versus get_feasibility_request or other alternatives. The listing purpose is implied, but there are no exclusions or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_interviewsList InterviewsARead-onlyIdempotentInspect
List lightweight interview rows. Fetch an interview to get messages, recordings, and screener responses.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | ||
| status | No | ||
| quality | No | ||
| study_id | No | ||
| page_size | No | ||
| participant_id | No | ||
| organization_id | No | Organization for this operation and billing. Use list_organizations to choose an active membership. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes | Paginated interview summaries. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, closed-world, and non-destructive behavior. The description adds that rows are 'lightweight' and directs the agent to get_interview for full details, which is useful context about output scope beyond the annotations. It does not describe pagination behavior, but with page and page_size visible in the schema, the gap is minor.
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 short sentences, front-loaded with the core purpose. Every phrase earns its place: the first states what the tool does, the second provides actionable context for when to use a different tool. No boilerplate or repetition.
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 output schema exists, so return values need not be explained. Annotations cover the safety profile. However, for a list tool with 7 filter parameters, the description does not explain what can be filtered or how the filters combine, leaving the agent to infer from bare schema names. It is minimally adequate but thin.
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?
There are 7 parameters with only 14% schema description coverage (only organization_id has a description). The tool description mentions no parameters at all, so it does not compensate for the low coverage. The schema provides names, types, and enums, so an agent can infer some meaning, but no added semantics (e.g., how status or quality filters behave, or how pagination works) are given.
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 ('List') and resource ('interview rows'), and adds the qualifier 'lightweight' to distinguish the output from full interview details. It implicitly contrasts with get_interview by saying 'Fetch an interview to get messages, recordings, and screener responses', giving an agent enough to tell the two apart. It does not explicitly differentiate from other list_* siblings, but the resource is clear.
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 second sentence implies when to use get_interview instead of this tool: when you need messages, recordings, or screener responses. However, there is no explicit guidance on when to use list_interviews versus other list tools like list_studies or list_participants, and no exclusions or prerequisites are stated. Usage is implied rather than spelled out.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_organizationsList OrganizationsARead-onlyIdempotentInspect
List organizations you can access. Users can belong to multiple organizations. Search by organization name, active owner name, or owner email; returns IDs and owner contacts. Ask the human which organization to use, then supply organization_id on subsequent tools.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | ||
| search | No | Match organization name, active owner name, or active owner email. | |
| page_size | No | ||
| organization_id | No | Organization for this operation and billing. Use list_organizations to choose an active membership. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes | Accessible organizations and active owner contacts in this app. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, non-destructive and closed-world, so the safety profile is covered. The description adds real context beyond that: users can belong to multiple orgs, search spans org name, active owner name and owner email, and the response includes IDs and owner contacts.
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 tight sentences: purpose first, then search/return scope, then the required workflow step. The sentence about users belonging to multiple organizations earns its place by explaining why a list call is needed.
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?
An output schema exists, so return values need not be detailed, yet the description still notes that IDs and owner contacts come back. The only meaningful omission is pagination guidance for page/page_size.
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 50%: search is documented in the schema and echoed in the description, and organization_id is implicitly explained by the 'supply organization_id on subsequent tools' line. The page and page_size parameters receive no explanation in either place, so the description only partially compensates.
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 (list organizations) plus the access scope ('you can access') and the searchable fields, so the agent knows exactly what the call returns and how it can be narrowed. No sibling tool competes for this capability, so differentiation is inherent.
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?
Explicitly instructs the agent to ask the human which organization to use and to pass organization_id to subsequent tools, which is clear workflow guidance. It does not, however, mention when this is preferable to a sibling like get_account for org resolution.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_participantsList ParticipantsARead-onlyIdempotentInspect
List BYOP invitation records with each personal interview link, status and visible interview count. These are study participations, not deduplicated people; use list_interviews(participant_id) for the sessions. Panel and open-link respondents are anonymous interviews.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | ||
| No | |||
| study_id | No | ||
| page_size | No | ||
| external_id | No | Exact customer ID; requires study_id. | |
| organization_id | No | Organization for this operation and billing. Use list_organizations to choose an active membership. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes | Paginated BYOP participants. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and openWorldHint=false, so safety is covered. The description adds genuinely non-obvious semantics: records are participations rather than deduplicated people, and panel/open-link respondents appear as anonymous interviews. It does not mention pagination defaults or sort order, but that is a minor gap.
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 short sentences with zero filler; the core output shape is stated first, then the identity caveat, then the routing alternative. Every sentence adds information an agent would otherwise have to guess.
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?
An output schema exists, so return values need no explanation, and the description covers the two things that matter most here: what a record represents and which sibling to use for sessions. The only missing piece is any guidance on the filtering and paging parameters.
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 only 33%, and the description mentions no parameters at all — not the email/study_id/external_id filters, not page/page_size. Only external_id and organization_id carry any schema prose, leaving the majority of the six parameters undocumented in either place.
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 ('List BYOP invitation records') and immediately clarifies what each row contains: personal interview link, status, visible interview count. It also pre-empts the most likely misreading by saying these are participations, not deduplicated people, which separates it cleanly from list_interviews.
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?
Explicitly routes the agent to list_interviews(participant_id) when it wants interview sessions rather than invitation records, including the argument to pass. It gives clear usage context but does not address when to prefer get_participant or create_participants, so it stops short of full alternatives coverage.
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
List lightweight studies, sorted by updated_at descending then ID. Filter before pagination by provisioning status, recruiting method, creation date, or report availability. interview_count is completed visible non-test interviews; use get_study for the full plan, screeners, and targeting.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | ||
| page | No | ||
| status | No | ||
| page_size | No | ||
| has_report | No | ||
| created_after | No | ||
| organization_id | No | Organization for this operation and billing. Use list_organizations to choose an active membership. | |
| recruiting_method | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes | Paginated study summaries. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, non-destructive, closed-world), so the description is free to spend its words on behavior: deterministic ordering (updated_at desc, then ID), the filter-then-paginate rule, and the precise definition of interview_count (completed, visible, non-test). It does not mention page_size limits or what a page response looks like.
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 dense sentences with no filler: what it returns and its ordering, then how to filter, then the sibling escape hatch. Ordering and filter guidance are front-loaded where an agent will read them.
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 an output schema present, the description need not enumerate response fields, yet it still clarifies the ambiguous interview_count. Coverage of filters, ordering, pagination discipline, and the get_study handoff makes it callable as-is; only the undocumented `name` filter and page_size bounds keep it from complete.
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 only 13% (just organization_id), so the description is doing real work: it maps status to provisioning state, and names recruiting_method, creation date, and report availability as filter dimensions. The `name` parameter is never mentioned anywhere, which is a genuine gap for a list tool, and created_after format is left to 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?
"List lightweight studies" states a specific verb and resource, and the description immediately differentiates it from get_study ("use get_study for the full plan, screeners, and targeting"), so an agent knows this is the shallow/index variant. The sort order detail further pins down what the call returns.
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 clear selection context: use this for lightweight listing with filters, use get_study when full plan/screeners/targeting are needed. The "filter before pagination" instruction tells the agent how to combine filters and paging correctly. It stops short of an explicit when-not statement or mention of adjacent list siblings (list_interviews, list_participants).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_targeting_attributesList Targeting AttributesARead-onlyIdempotentInspect
Search the panel targeting catalog by name or category. Use its qualification and option IDs when configuring a panel study. The full study response also resolves saved targeting to readable labels; age bands can be approximate.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | ||
| category | No | ||
| organization_id | No | Organization for this operation and billing. Use list_organizations to choose an active membership. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes | Panel qualification and option IDs with readable labels. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover readOnly, idempotent, non-destructive, closed-world, so the bar is lower. The description adds genuine value beyond them: it warns that age bands can be approximate and notes the full study response resolves saved targeting to readable labels. Return format itself is covered by the 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?
Three short sentences, front-loaded with the core action, then usage and caveats. No filler, though the age-band note is slightly tangential to a list tool.
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?
Output schema exists so return values needn't be described; the description covers purpose, usage, and the approximate-age caveat. The main residual gap is filter-matching semantics for name/category, which keeps it from a 5.
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 33% — only organization_id is documented (with a useful list_organizations pointer). The description compensates partially by naming name/category as filters, but gives no semantics such as substring vs exact matching, so the two undocumented params remain underspecified.
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: 'Search the panel targeting catalog by name or category'. Clearly a catalog-lookup tool, distinguishable from mutation siblings like create_study. Doesn't explicitly name a sibling to differentiate against, keeping it at 4.
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?
'Use its qualification and option IDs when configuring a panel study' gives clear usage context and sequencing (lookup before study configuration). No explicit when-not or named alternative, so not a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_webhook_deliveriesList Webhook DeliveriesARead-onlyIdempotentInspect
List bounded delivery attempts, status codes, and coarse failure reasons without payloads.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | ||
| page_size | No | ||
| webhook_id | Yes | ||
| organization_id | No | Organization for this operation and billing. Use list_organizations to choose an active membership. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes | Bounded webhook delivery attempts. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent, non-destructive, and closed-world behavior. The description adds meaningful context beyond them by clarifying that results are bounded and exclude payloads, and that failure reasons are coarse rather than detailed.
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?
A single, front-loaded sentence with no filler. Every word contributes to scope, return content, or behavioral expectations.
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 has an output schema and rich annotations, so the description needn't explain return shapes or safety. Still, it omits pagination guidance and required webhook_id context, leaving some operational gaps for a four-parameter listing 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 only 25%, with only organization_id documented in the schema. The description does not explain the required webhook_id, nor does it clarify page/page_size pagination semantics, so it fails to compensate for the undocumented parameters.
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 (list delivery attempts) along with the returned data categories (status codes, coarse failure reasons). The phrase 'without payloads' helps distinguish it from fetching full delivery details, though it does not explicitly name a sibling alternative.
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?
Usage is implied for inspecting webhook delivery history, and 'without payloads' suggests a lighter-weight inspection use case. However, there is no explicit guidance on when to choose this over get_webhook, list_webhooks, or webhook testing tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_webhooksList WebhooksARead-onlyIdempotentInspect
List account webhooks and their study scopes. Signing secrets are never included.
| Name | Required | Description | Default |
|---|---|---|---|
| organization_id | No | Organization for this operation and billing. Use list_organizations to choose an active membership. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes | Registered webhooks. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive, so the bar is lower, and the description adds a genuinely useful data detail: signing secrets are never returned. That tells the agent what it cannot retrieve, which is behavior 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?
Two terse sentences with the core purpose front-loaded and the security caveat as a clearly subordinate clause. Nothing wasted.
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?
An output schema exists and annotations are rich, so return-value explanation is not needed. The description covers purpose and the secret-exclusion caveat adequately; minor omissions like whether results are paginated or filterable by study are acceptable given the output 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 single organization_id parameter is fully documented in the schema (100% coverage), so the schema carries the load. The description's phrase "account webhooks" loosely hints at the account/org scoping but adds no syntax or defaults beyond 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?
States a specific verb and resource (list account webhooks) plus a scope qualifier (their study scopes). It is clearly distinguishable from get_webhook, create_webhook, and list_webhook_deliveries by name and content, though it doesn't explicitly name those 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?
Usage is implied by "List account webhooks" — an agent can infer this is the enumeration tool — but there is no explicit when-to-use guidance or routing to alternatives such as get_webhook for a single record.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pause_studyPause StudyAIdempotentInspect
Pause a study while preserving its panel survey, target cycle, progress, and reward hold.
| Name | Required | Description | Default |
|---|---|---|---|
| study_id | Yes | ||
| organization_id | No | Organization for this operation and billing. Use list_organizations to choose an active membership. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes | The paused study. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare not-read-only, not destructive, idempotent and open-world, so the safety profile is covered structurally. The description adds real context the annotations cannot convey: exactly what survives the pause (panel survey, target cycle, progress, reward hold). It stops short of describing the resulting study state or how resume_study re-activates it.
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?
A single front-loaded sentence with no filler; the preservation clause is the highest-value information and appears first. Nothing to trim.
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?
Output schema and annotations cover the return shape and safety profile, so the remaining burden is the lifecycle story. The description covers what is preserved but omits the resulting state, whether in-flight participants/rewards are affected mid-flight, and the resume counterpart, leaving an agent with a partial picture of this mutation.
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 50%: organization_id is documented in the schema (including the list_organizations hint), while study_id is undocumented but self-evident by name and uuid format. The description contributes nothing about either parameter, but with only one trivially-named undocumented parameter the schema carries most of the 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 verb ('Pause') and resource ('study') plus the state it preserves (panel survey, target cycle, progress, reward hold), which goes beyond restating the title. However, it never distinguishes itself from the closely related sibling stop_study, which is the single most important disambiguation for an agent choosing between them.
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 word 'preserving' implies this is the non-terminal option versus stop_study or delete_study, but the description never states when to pause vs. stop, nor any prerequisite state (e.g. must the study be launched/running?). Usage is inferable rather than given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
queue_customize_studyQueue Study CustomizationADestructiveInspect
Queue one research-design turn that may fetch a researcher-provided concept URL and use an external analysis model. A 2026 Tasks client receives a durable task and polls tasks/get; other clients receive a job ID and poll get_customize_study_job. Then call get_study and show the full saved plan for human review. Reuse an idempotency_key after an uncertain response. Native concept images require the synchronous customize_study tool.
| Name | Required | Description | Default |
|---|---|---|---|
| message | Yes | ||
| study_id | Yes | ||
| decisions | No | human | |
| concept_image | No | Native images are only supported by customize_study. | |
| idempotency_key | No | Reuse the same key and inputs if a prior call timed out. A different operation needs a new key. | |
| organization_id | No | Organization for this operation and billing. Use list_organizations to choose an active membership. | |
| execution_policy | No | review_before_fieldwork |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes | Queued Customize Plan job. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With destructiveHint=true and openWorldHint=true already declared, the description still adds real value: it discloses the external URL fetch, the external analysis model, two distinct polling surfaces depending on client capability, and the idempotency_key retry contract after an uncertain response. It does not say what existing study state the queued turn may overwrite, which is the main gap given destructiveHint=true. The idempotency_key guidance sits in tension with idempotentHint=false but is consistent in spirit (safety only via the key), so it is not a contradiction.
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?
Five short sentences, no filler, and the core async nature is front-loaded ahead of client-routing and follow-up instructions. Density is high but each sentence carries an actionable fact; slightly more signposting of the routing branch would help scanning.
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?
An output schema exists, so return shape needn't be explained, and the description does cover round-trip mechanics, retry, and sibling routing. However, for a 7-parameter destructive asynchronous mutation it omits what decisions and execution_policy actually control and what gets modified in the saved plan — gaps an agent would need before committing.
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 only 43%, and the description never explains message, study_id, decisions (human vs agent), or execution_policy (review_before_fieldwork vs draft_only) — arguably the two most behavior-shaping parameters. Its only parameter-adjacent content, the concept_image note and the idempotency_key retry note, duplicates what the schema already states. Little compensation for the coverage gap.
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 first sentence names a specific verb and resource ('Queue one research-design turn') and immediately characterizes the operation as asynchronous, may-fetch-URL, external-model-backed. It also names the synchronous sibling customize_study and the exact condition that selects it (native concept images), so an agent can distinguish the two without opening either schema.
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 concrete call sequencing: poll tasks/get if the client is a 2026 Tasks client, otherwise poll get_customize_study_job, then call get_study and surface the plan for human review. It also names the exclusion (native concept images go to customize_study). It stops short of stating outright when to prefer this async path over the synchronous one for ordinary requests, leaving that to inference from 'Queue'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
queue_report_slidesQueue Report SlidesAInspect
Queue an editable PowerPoint deck from the latest saved report. Common text identifiers are masked by default. Poll get_report_slide_job for a private download URL, which expires after 15 minutes. The export is retained for seven days.
| Name | Required | Description | Default |
|---|---|---|---|
| study_id | Yes | ||
| redact_pii | No | ||
| idempotency_key | No | Reuse the same key and inputs if a prior call timed out. A different operation needs a new key. | |
| organization_id | No | Organization for this operation and billing. Use list_organizations to choose an active membership. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes | Queued private PowerPoint export. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations by disclosing the async job model, that PII masking is on by default, that the download URL is private and expires after 15 minutes, and that the export is retained seven days. It does not explain the idempotency_key reuse semantics or any permission/billing implications, and there is mild tension with idempotentHint=false alongside an idempotency_key param.
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?
Four short sentences, front-loaded with the action, then the privacy default, then the required follow-up step, then retention. Nothing is redundant and every sentence carries operational 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?
Return values are covered by the output schema, so omitting them is fine, and the async lifecycle plus expiry/retention is well covered. Missing only edge-case behavior, such as what happens when no saved report exists or when a job is already queued.
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 only 50% schema description coverage, the description partly compensates: 'masked by default' explains redact_pii and 'latest saved report' clarifies what study_id targets. idempotency_key and organization_id are covered by schema text but get no elaboration, leaving the guidance at a baseline-adequate level.
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: queue an editable PowerPoint deck built from the latest saved report. This differentiates it from report-generation siblings in practice, and it names the companion polling tool get_report_slide_job, but it never explicitly contrasts with queue_research_deliverable or generate_report.
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 a clear operating context: this call only enqueues, so the agent must follow up by polling get_report_slide_job. There is no statement of when-not-to-use or which sibling to pick for a different export format, so it stops short of explicit alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
queue_research_chatQueue Research ChatAInspect
Queue a chat turn immediately. For study findings, feedback, comparisons and quotations, use this tool with primary File Search and verified quotations. Resolve ambiguous study names first. Reuse the selected Hub session; if absent create one with create_research_session and a stable retry key, inspect sources and add only missing requested studies. Do not resync unchanged sources or broaden the session silently. After completion always call view_research_answer to display the answer and clickable quote/recording cards inside this conversation, without redirecting to a dashboard; preserve the answer and citation labels. Poll inspect_research_session view=job. Set parent_job_id for a follow-up in the same session. Reuse the same idempotency_key and prompt after a timeout; sync and async share the job.
| Name | Required | Description | Default |
|---|---|---|---|
| prompt | Yes | ||
| session_id | Yes | ||
| parent_job_id | No | ||
| idempotency_key | Yes | ||
| organization_id | No | Organization for this operation and billing. Use list_organizations to choose an active membership. | |
| include_synthetic | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Well beyond the annotations, it discloses the full lifecycle: session reuse before creation, the requirement to view the answer afterward with citations preserved, the polling endpoint and view parameter, async/sync job sharing, and safe retry semantics with the same idempotency_key and prompt after a timeout. These are operational traits an agent could not infer from readOnlyHint/destructiveHint alone.
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?
Purpose is front-loaded, but the body degenerates into telegraphic run-ons ('inspect sources and add only missing requested studies', 'sync and async share the job') that blend setup, invocation, polling, and retry into one undifferentiated block. The content is largely necessary; the structure obscures 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 non-idempotent, annotation-light queue operation with an output schema, this covers everything an agent needs: prerequisite session resolution, invocation intent, source-preparation constraints, post-call viewing requirement, polling, follow-ups, and retry behavior. Return values need not be described since an 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 coverage is only 17%, so the description must carry the burden, and it does for the three critical params: session_id (reuse the selected Hub session, create one if absent with a stable retry key), parent_job_id (follow-up within the same session), and idempotency_key (reuse on timeout retries). prompt and include_synthetic get no explanation, but prompt is self-evident and organization_id is documented in 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 opening sentence 'Queue a chat turn immediately' gives a specific verb and resource, and the rest of the description is clearly about the research-session chat queue. It does not, however, distinguish this from the sibling chat_research_session, which an agent would reasonably consider for the same intent.
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?
Strong guidance on when to use it (study findings, feedback, comparisons, quotations, with primary File Search and verified quotations), plus explicit exclusions ('Do not resync unchanged sources or broaden the session silently') and a prescribed follow-up chain (create_research_session if absent, then view_research_answer, poll via inspect_research_session view=job). The one gap is that it never states when to prefer this over chat_research_session.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
queue_research_deliverableCreate Research DeliverableAInspect
Use report_video for Highlights: generate one retained MP4 from the studies' default reports, with branded logo bookends, learning-goal chapters and their cited Quotes. Repeated requests return the saved video. No evidence selection is needed. Also supports an editable PowerPoint, an individual audio clip or a legacy audio reel ZIP from a completed/partial Hub run. Use exact evidence_ids returned by get_research_analysis highlights; presentations include all findings. Audio requires explicit export instruction. Text masking defaults on. Poll get_research_deliverable or tasks/get for Tasks clients. Private links last 15 minutes; temporary audio and presentation files expire in seven days; report videos are retained while their source remains available. Reuse the idempotency key after a timeout.
| Name | Required | Description | Default |
|---|---|---|---|
| kind | Yes | ||
| title | No | ||
| run_id | Yes | ||
| redact_pii | No | ||
| evidence_ids | No | ||
| idempotency_key | Yes | ||
| organization_id | No | Organization for this operation and billing. Use list_organizations to choose an active membership. | |
| padding_seconds | No | ||
| acknowledge_unredacted_audio | No | True only when the researcher has instructed you to export these recordings. Speech is not anonymized. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations it discloses artifact lifetimes (private links 15 minutes, temporary audio/presentation files expire in seven days, report videos retained while the source remains available), that repeated requests return the saved video, that text masking defaults on, and that unredacted audio requires explicit researcher instruction because speech is not anonymized. This tells the agent what persists, what expires, and what consent gate applies — none of which the annotations convey. Minor tension exists with idempotentHint=false, though the required idempotency_key parameter makes the caching language reasonable.
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?
It is dense but nearly every sentence carries operational value (routing, consent, expiry, polling). It would read better if the general purpose came first and the report_video specifics second, and the semicolon-chained lifetime sentence could be broken for 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?
With an output schema present, the description correctly focuses on input semantics, async polling, consent, and retention rather than return values, which covers what an agent needs before calling. The gaps are padding_seconds and the meaning/effect of title, neither documented in the description or 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?
Schema coverage is only 22%, and the description compensates well for the highest-stakes fields: it explains the four kind branches, constrains evidence_ids to exact IDs from get_research_analysis, notes no selection is needed for report_video, and explains idempotency_key reuse. It leaves padding_seconds and title completely unexplained in both description and schema, so a couple of parameters still require guessing.
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 the concrete outputs (retained MP4 with branded bookends and chapters, editable PowerPoint, individual audio clip, legacy reel ZIP) sourced from a completed/partial Hub run, which is clearly distinct from siblings like generate_report or queue_report_slides. It opens with the report_video variant rather than a one-line statement of the tool's overall job, so a reader must assemble the full purpose across sentences.
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 routing rules: use report_video for Highlights with no evidence selection needed, presentations include all findings, audio requires an explicit export instruction, and evidence_ids must come from get_research_analysis highlights. It also names the follow-up path (poll get_research_deliverable or tasks/get for Tasks clients) and the timeout recovery (reuse the idempotency key).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
regenerate_external_panel_tokenRegenerate External Panel Entry TokenADestructiveInspect
Replace the external-panel entry token for an owned BYOP study. The old provider link stops working immediately; update the provider with the returned entry_url. Supply a unique idempotency_key and reuse it after an uncertain response; inspect the current link with get_external_panel if the replay is stale.
| Name | Required | Description | Default |
|---|---|---|---|
| study_id | Yes | ||
| idempotency_key | No | Reuse the same key and inputs if a prior call timed out. A different operation needs a new key. | |
| organization_id | No | Organization for this operation and billing. Use list_organizations to choose an active membership. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes | Configuration with a new entry URL. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds the single most important fact the annotations cannot convey: the old provider link stops working immediately, and the caller must push the returned entry_url to the provider — that is exactly the consequence implied by destructiveHint=true. It also documents replay semantics (unique key, reuse on timeout) and a recovery path via get_external_panel. There is a mild surface tension with idempotentHint=false, but the description is describing key-scoped replay safety of a non-idempotent operation, not contradicting the annotation.
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, each earning its place, with the destructive effect front-loaded before the recovery instructions. No preamble, no 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?
Output schema exists, so return values need not be explained; annotations cover the safety profile; the description covers the destructive side effect, the provider-side follow-up, and retry behavior. Nothing an agent needs in order to call this 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?
With schema coverage at 67%, the schema already documents idempotency_key and organization_id, and the description largely restates the key-reuse rule rather than adding format or constraint detail. It does add the 'owned study' ownership framing for study_id, but offers no extra semantics for organization_id/billing selection.
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 precise verb+resource+scope: 'Replace the external-panel entry token for an owned BYOP study.' An agent can immediately distinguish this from get_external_panel (reads the link) and delete_external_panel (tears the panel down) without opening any schema.
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 clear situational guidance plus an explicit alternative: 'inspect the current link with get_external_panel if the replay is stale,' and tells the caller to reuse the idempotency_key after an uncertain response. It stops short of an explicit exclusion (e.g. 'do not use this to configure or remove a panel — use configure_external_panel / delete_external_panel'), so it is clear context rather than full when/when-not routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
remove_research_sourceRemove Research SourceADestructiveIdempotentInspect
Remove one source from a Hub session by the opaque ID returned by inspect_research_session. The underlying study or uploaded file is not deleted.
| Name | Required | Description | Default |
|---|---|---|---|
| source_id | Yes | ||
| session_id | Yes | ||
| organization_id | No | Organization for this operation and billing. Use list_organizations to choose an active membership. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare destructiveHint=true, idempotentHint=true, and readOnlyHint=false, so the description does not need to restate safety basics. It adds valuable scope context by clarifying that the underlying study or uploaded file is not deleted, which resolves what the destructive hint applies to. It could go further on permissions or session-state effects, but the key behavioral nuance is present.
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 tight sentences, front-loaded with the core action and immediately followed by the non-deletion clarification. Every phrase contributes useful meaning with no 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?
Given the presence of an output schema and annotations covering safety profile, the description is largely complete: it specifies the identifier source and clarifies destructive scope. Minor operational details such as permissions, behavior when the session is inactive, or handling of a source not present in the session are not covered.
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 only 33%, so the description must compensate. It meaningfully explains source_id as an opaque ID from inspect_research_session and implies session_id via 'Hub session', but it does not explain organization_id or add constraints around session_id beyond what the schema already conveys.
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 verb ('Remove'), a specific resource ('one source'), the containing resource ('Hub session'), and the identifier origin ('opaque ID returned by inspect_research_session'). This clearly distinguishes it from clear_research_sources (all sources) and remove_research_study/delete_study (underlying study deletion).
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 a clear prerequisite for obtaining source_id via inspect_research_session, which tells the agent when and how to use the tool. It does not explicitly name alternatives such as clear_research_sources or remove_research_study, so it lacks full when-not/alternatives guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
remove_research_studyRemove Study from Research SessionADestructiveIdempotentInspect
Remove one study source from a Hub session; the underlying study remains available in User Intuition.
| Name | Required | Description | Default |
|---|---|---|---|
| study_id | Yes | ||
| session_id | Yes | ||
| organization_id | No | Organization for this operation and billing. Use list_organizations to choose an active membership. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and idempotentHint=true, but they cannot say what is destroyed versus preserved. The description fills exactly that gap: only the session link is removed and the study stays available in User Intuition. It omits authorization/membership requirements, which keeps it short of a 5.
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?
A single well-formed sentence with the action front-loaded and the crucial non-destructive caveat in the second clause. No filler, nothing repeated from the title or schema.
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 two-required-parameter mutation with full annotations and an output schema, the description covers the main behavioral question (what survives). Remaining gaps — behavior when the study is absent from the session, or when the session is closed — are minor rather than blocking.
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 only 33% — only organization_id carries a description (pointing at list_organizations). The description implicitly maps session_id and study_id through phrasing ('one study source from a Hub session') but adds no semantics such as whether the study must already be attached or what happens on an unknown ID. Baseline 3 for a low-coverage schema that the description does not compensate for.
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 (remove) and resource (one study source from a Hub session), and explicitly clarifies that the underlying study persists, which separates it from delete_study. It does not name the closer siblings (remove_research_source, clear_research_sources), so an agent still has to infer the boundary between 'study source' and 'research source'.
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 sentence implies when this applies — detaching a single study from a session without destroying it — but never states explicit alternatives or preconditions. With siblings like clear_research_sources (bulk) and remove_research_source (different resource name) in the same family, an explicit contrast would materially help selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rename_research_outputRename Research OutputAIdempotentInspect
Rename an existing Studio output in its session. Default reports cannot be renamed. Read the output first.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| output_id | Yes | ||
| session_id | Yes | ||
| organization_id | No | Organization for this operation and billing. Use list_organizations to choose an active membership. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare non-destructive and idempotent, and the description adds useful behavioral context beyond them: a hard constraint (default reports can't be renamed) and a workflow prerequisite (read first). It does not cover permission/org requirements, but adds genuine value over 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 short sentences, front-loaded with the action, then the constraint and prerequisite. No filler—every clause carries actionable 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?
An output schema covers return values, and the description supplies the constraint and prerequisite for a simple rename mutation. Only minor gaps remain around org context and parameter nuances, which are mostly 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?
Schema coverage is only 25% (only organization_id is documented), and the description compensates minimally—'in its session' loosely maps to session_id but adds no constraint or format detail for name or output_id. The params are largely self-explanatory by name, so a mid score fits.
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 (rename) and resource (Studio output in its session), which is distinct from rename_research_session. It does not explicitly name sibling alternatives, but the resource scope is unambiguous enough to differentiate.
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 a clear prerequisite ('Read the output first') and a when-not clause ('Default reports cannot be renamed'), which sets real guardrails for correct invocation. It lacks explicit routing to alternatives like edit_research_output, so not a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rename_research_sessionRename Research SessionAIdempotentInspect
Rename one organization Hub session without changing its sources or analysis.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| session_id | Yes | ||
| organization_id | No | Organization for this operation and billing. Use list_organizations to choose an active membership. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare a non-destructive, idempotent, closed-world write. The description adds genuine context beyond them: only the label changes and the session's sources and analysis are left intact, which is the key side-effect question for a rename mutation. It omits permission requirements and failure modes.
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?
A single front-loaded sentence with no filler; the mutating action and its blast radius land immediately. Nothing in it is redundant with structured fields.
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?
Output schema exists, so return values need not be described, and annotations cover the safety profile. Still, for a mutation with an undocumented UUID parameter and an org-scoping parameter, the description leaves the agent guessing about targeting and preconditions.
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 only 33% — just organization_id is documented — so the description must carry the rest and does not. 'One organization Hub session' vaguely gestures at organization scoping, but nothing is said about session_id (UUID of the target session), whether the name must be unique, or how collisions/duplicate labels are handled.
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 ('Rename') and resource ('organization Hub session'), plus a scope qualifier ('without changing its sources or analysis'). An agent can distinguish it from delete_research_session or rename_research_output by the resource named, though the sibling rename_research_output is never explicitly contrasted.
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?
Usage is implied by the verb/resource pair — rename an existing session when its label is wrong. There is no explicit guidance on when to prefer this over alternatives, no prerequisites (ownership/active membership, whether the session must be idle), and no exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
resume_research_analysisResume Research AnalysisAInspect
Resume a paused or partial durable analysis run with an additional call allowance. Poll get_research_analysis for the updated result.
| Name | Required | Description | Default |
|---|---|---|---|
| run_id | Yes | ||
| organization_id | No | Organization for this operation and billing. Use list_organizations to choose an active membership. | |
| additional_calls | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnlyHint=false, destructiveHint=false, idempotentHint=false, openWorldHint=true). The description adds two useful traits beyond that: the run is 'durable' and resuming consumes an 'additional call allowance', implying a quota cost and an async follow-up. It does not explain what happens if the run already completed or whether the allowance is consumed immediately.
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 short sentences, nothing redundant, with the action and its precondition front-loaded before the follow-up polling instruction.
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?
An output schema exists, so return values need no explanation, and the description correctly covers the async polling loop via get_research_analysis. The remaining gap is minor: no note on cost/quota implications of the additional allowance or on failure modes when the run cannot be resumed.
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 only 33% schema description coverage, the description must compensate, and it only partially does: 'additional call allowance' hints at the additional_calls parameter but gives no units, range, or default, and run_id's requirement to reference a paused run is only implied by the word 'resume'. organization_id is fully documented in the schema, so that part is covered.
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 ('resume ... durable analysis run') plus the distinguishing condition ('paused or partial'), which separates it from start_research_analysis and cancel_research_analysis. It never names those siblings explicitly, so the differentiation is implied rather than stated.
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 a clear precondition (run must be paused or partial) and explicitly routes the agent to get_research_analysis for retrieving the result, which is the key follow-up decision. It stops short of stating when-not to use it (e.g., against a completed or failed run) or why resume beats starting a new analysis.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
resume_studyResume StudyBIdempotentInspect
Resume a paused study and continue its preserved panel recruitment.
| Name | Required | Description | Default |
|---|---|---|---|
| study_id | Yes | ||
| organization_id | No | Organization for this operation and billing. Use list_organizations to choose an active membership. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes | The resumed study. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, idempotentHint=true, and destructiveHint=false. The description adds useful behavioral context that panel recruitment is preserved and continues, but it does not mention preconditions (e.g., study must actually be paused) or side effects beyond recruitment.
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?
A single sentence that front-loads the verb and resource with no wasted words. It efficiently conveys the core action and an important side effect.
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 has an output schema and annotations covering safety, so return values and basic safety need not be explained. However, for a mutation with a required study_id and optional organization_id, the description omits prerequisites (e.g., study must be paused) and does not clarify organization_id usage, leaving 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?
With 50% schema description coverage, the description provides no additional meaning for either parameter. study_id is self-explanatory, but organization_id is only documented in the schema; the description does not clarify its role or how to choose it beyond what the schema already says.
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 verb ('Resume') and resource ('a paused study'), and adds scope ('continue its preserved panel recruitment'). It is clearly distinguished from pause_study and stop_study, though it does not explicitly name the sibling resume_research_analysis to rule out confusion.
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?
Usage is implied by 'Resume a paused study' – the tool is for studies currently in a paused state. However, no explicit when-to-use/when-not-to-use guidance or alternative tools are mentioned, leaving the agent to infer preconditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
review_studyReview Study PlanARead-onlyIdempotentInspect
Open an interactive, read-only view of the saved study plan and current fielding progress. The view does not approve a plan or launch recruitment. Ask the human for approval separately before fieldwork.
| Name | Required | Description | Default |
|---|---|---|---|
| study_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| study | Yes | |
| progress | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true and destructiveHint=false, so the safety profile is covered. The description earns extra credit by disclosing a workflow-level trait the annotations cannot express: viewing does not constitute plan approval or recruitment launch, and human approval must be sought separately, which prevents the agent from treating a successful review as progress toward fieldwork.
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 short sentences, front-loaded with the action and the resource, followed by the two boundary warnings. Every sentence carries information, though the approval caveat is stated twice in slightly different forms ('does not approve a plan' / 'ask the human for approval separately'), which is mild redundancy.
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?
An output schema exists, so return values need no explanation, and with a single required uuid the surface is small. The description covers what the view is and what it is not, but it never positions this tool against the many adjacent read siblings (get_study, get_fielding_progress, inspect_research_session), which is the main remaining ambiguity.
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 0% and the sole parameter study_id has no format or meaning described in the description, so nothing is added beyond the schema. The parameter name and uuid format are largely self-explanatory, which keeps this at a baseline 3 rather than lower, but the description makes no attempt to compensate for the documentation gap.
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?
Names a specific verb and resource ('Open an interactive, read-only view of the saved study plan and current fielding progress'), which is concrete enough to distinguish it from data-returning siblings like get_study or get_fielding_progress. It also explicitly rules out the two most confusable actions (approving a plan, launching recruitment), so an agent can separate it from approve_panel_launch without opening the schema.
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 a clear when-not: this view is not an approval and does not launch recruitment, and the agent must obtain human approval separately before fieldwork. It does not, however, name the sibling tool to use for approval or explain when to prefer this view over get_study / get_fielding_progress, so routing among the read siblings is still partly inferential.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rotate_webhook_secretRotate Webhook SecretADestructiveInspect
Replace a webhook signing secret. The new secret is shown only in this response; update the receiver before relying on further deliveries.
| Name | Required | Description | Default |
|---|---|---|---|
| webhook_id | Yes | ||
| organization_id | No | Organization for this operation and billing. Use list_organizations to choose an active membership. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes | The webhook and its newly rotated signing secret. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and non-idempotency, but the description adds a crucial non-obvious behavior: the new secret is visible only in this response, and deliveries may fail until the receiver is updated. That is exactly the operational consequence an agent needs beyond structured hints.
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, zero filler, and the core action is front-loaded ahead of the operational warning.
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 an output schema present, return structure needn't be explained, and the key behavioral risk is covered. Minor omissions like immediate invalidation of the old secret or required permissions keep it from a 5.
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 50%, and organization_id is well documented in the schema while webhook_id is self-evident from name and uuid format. The description adds no parameter-level meaning, so the baseline 3 is appropriate rather than compensating further.
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 ('Replace a webhook signing secret'), which is distinct from create_webhook, delete_webhook, and test_webhook by name alone. It does not explicitly contrast with siblings, so it stops short of a 5.
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?
There is no guidance on when to rotate versus creating a new webhook, who may do it, or what preconditions exist. The sentence about updating the receiver is post-invocation operational advice, not when-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_researchSearch ResearchBRead-onlyIdempotentInspect
Search one or more studies. Results are grouped under studies[] with each study_id, index_status (ready, updating, or not_indexed), latest_report_id, indexed_report_id, and matching canonical content. No generated prose is returned. Pass next_cursor back with the same query, filters, and limit to continue; stop when it is null.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| query | Yes | ||
| cursor | No | Opaque next_cursor from the previous search page. Use with unchanged query, filters, and limit. | |
| filters | Yes | ||
| organization_id | No | Organization for this operation and billing. Use list_organizations to choose an active membership. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes | Ranked canonical study and report JSON. Generated prose is never returned. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish that this is a read-only, idempotent, non-destructive, closed-world operation. The description adds meaningful behavior beyond annotations by explaining the grouped studies[] result shape, index_status values, absence of generated prose, and cursor continuation rules.
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, compact, and avoids filler. The result-field list is dense but operationally useful, and the pagination rule is clearly stated.
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 output schema exists, so the description need not fully document return values, and it usefully covers result grouping and pagination. However, for a tool with five parameters and nested filters, it leaves key parameter semantics and when-to-use guidance under-explained.
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 only 40%, so the description needs to compensate, but it explains only cursor reuse with unchanged query, filters, and limit. It does not clarify query semantics, the nested filter fields such as study_ids and content_types, date-range filtering, or organization_id.
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 verb and resource: "Search one or more studies," and clarifies that matching canonical content is returned. It is clear enough to distinguish a search operation from a simple list, but it does not explicitly name sibling tools or contrast itself with alternatives such as answer_research or list_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 does not state when to use this tool versus alternatives, nor does it give exclusions beyond noting that no generated prose is returned. Cursor continuation guidance is present, but that is pagination behavior rather than tool-selection guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
send_participant_rewardSend Participant RewardADestructiveIdempotentInspect
Send the configured incentive to a BYOP participant when the human requests it. No separate MCP App approval is required. Reuse idempotency_key on uncertain retries; the backend prevents duplicate rewards for an already-paid participant.
| Name | Required | Description | Default |
|---|---|---|---|
| participant_id | Yes | ||
| idempotency_key | No | Reuse the same key and inputs if a prior call timed out. A different operation needs a new key. | |
| organization_id | No | Organization for this operation and billing. Use list_organizations to choose an active membership. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes | Reward delivery acknowledgement. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With destructiveHint=true and idempotentHint=true already declared, the description still adds meaningful context: no approval gate is needed, the key must be reused on uncertain retries, and the backend itself blocks duplicate payouts for an already-paid participant. It does not disclose irreversibility, whether funds can be clawed back, or permission/billing prerequisites beyond organization_id, so not a top score.
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 short sentences, front-loaded with the action and its trigger, then the approval clarification, then the retry rule. Nothing is padded and each sentence carries a distinct operational fact.
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 destructive, open-world, idempotent mutation with three parameters and an output schema, this covers the essentials an agent needs to call it safely: trigger, approval posture, and retry/dedup behavior. Gaps remain around eligibility failures (unconfigured incentive, already-paid participant response) and permission/billing requirements.
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 67%, with idempotency_key and organization_id already well documented in the schema, so the baseline applies. The description's retry-sentence largely restates the schema's idempotency_key text, and participant_id remains undocumented in both places beyond its UUID format, though the 'BYOP participant' framing gives some implicit meaning.
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 ('Send the configured incentive to a BYOP participant') plus the trigger ('when the human requests it'). No sibling tool in the list handles rewards or incentives, so there is no ambiguity to resolve, and an agent can immediately tell this is a one-shot payout action rather than a participant-state read or update.
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 a clear invocation condition ('when the human requests it') and explicitly clears a workflow obstacle ('No separate MCP App approval is required'), which is real routing guidance. It stops short of stating when NOT to call (e.g., participant already paid, incentive not configured, wrong study state), even though the backend dedup implies such conditions exist.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
start_research_analysisStart Research AnalysisAInspect
Start a durable analysis across the session sources. exhaustive processes every eligible interview; quick retrieves verified evidence through File Search; aggregate computes exact counts; explore runs bounded computation. Poll get_research_analysis. Prefer chat_research_session or queue_research_chat for questions and generate_research_output for saved outputs. Completed or partial runs can produce presentations, clips or reels; retain coverage and limitations. Reuse the idempotency key on uncertain retries.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | exhaustive | |
| codebook | No | ||
| group_by | No | ||
| question | Yes | ||
| session_id | Yes | ||
| call_budget | No | ||
| output_name | No | ||
| output_type | No | answer | |
| parent_run_id | No | ||
| idempotency_key | Yes | ||
| organization_id | No | Organization for this operation and billing. Use list_organizations to choose an active membership. | |
| include_synthetic | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, openWorldHint=true, and destructiveHint=false, so the safety profile is covered. The description adds valuable behavior beyond that: it is asynchronous (poll get_research_analysis), completed/partial runs can emit presentations/clips/reels, and uncertain retries should reuse the idempotency key. It does not discuss permissions or rate/budget limits, keeping it below a 5.
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?
Front-loaded with the core purpose, then modes, alternatives, output behavior, and retry guidance in four dense but purposeful sentences. Minor density cost from packing multiple ideas, but no sentence is 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?
Output schema exists, so return values needn't be explained, and annotations plus the polling/retry guidance cover the async lifecycle well. However, for a 12-parameter tool with 8% schema coverage, the description leaves most parameters unexplained, so it is not fully complete 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 only 8%, so the description must carry parameter meaning, but it only explains the mode enum values and hints at the idempotency key. Ten parameters including codebook, group_by, call_budget, output_type/output_name, parent_run_id, include_synthetic, session_id, and question are left entirely undocumented in both schema and description.
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 scope: 'Start a durable analysis across the session sources', and the four modes are enumerated with distinct purposes (exhaustive, quick, aggregate, explore). It also names the sibling tools it is not (chat_research_session, queue_research_chat, generate_research_output), so an agent can distinguish it from alternatives without opening schemas.
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?
Explicitly routes the agent: 'Prefer chat_research_session or queue_research_chat for questions and generate_research_output for saved outputs', and directs follow-up to 'Poll get_research_analysis'. This provides both when-to-use and when-to-use-something-else guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
stop_studyStop StudyADestructiveIdempotentInspect
Stop panel recruitment, close the target cycle, and settle/release the active reward hold. Call only after the human explicitly chooses to end this study's fieldwork.
| Name | Required | Description | Default |
|---|---|---|---|
| study_id | Yes | ||
| organization_id | No | Organization for this operation and billing. Use list_organizations to choose an active membership. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes | The stopped study. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, idempotentHint=true and openWorldHint=true, so the safety profile is covered; the description's added value is spelling out what actually happens (recruitment halted, cycle closed, reward hold settled/released), which is real consequence-level detail. It still does not state whether the operation is reversible or whether already-collected data is retained.
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 waste; the effect list leads and the invocation gate follows. Every clause earns its 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?
An output schema exists, so return values need no explanation, and annotations cover the safety profile. For a terminal, destructive lifecycle operation the description is nearly complete, with only reversibility and the pause-vs-stop boundary left unstated.
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 50% and the description adds nothing about either parameter. study_id is self-explanatory by name and format, and organization_id is documented in the schema with a pointer to list_organizations, so the schema carries the load and 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?
Uses a specific verb and enumerates the concrete effects: stopping panel recruitment, closing the target cycle, and settling/releasing the reward hold. An agent immediately knows what the tool does, but the description never names pause_study or delete_study, so the distinction from those near-neighbors must be inferred from the 'end this study's fieldwork' phrasing.
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?
'Call only after the human explicitly chooses to end this study's fieldwork' is a clear, hard precondition that rules out speculative or automated invocation. It stops short of explicitly routing the agent to pause_study for temporary halts or delete_study for removal, which would have earned a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
submit_feasibility_requestSubmit Feasibility RequestAInspect
Submit a low-incidence, large, or specialized audience for manual feasibility review when direct panel launch is unavailable. This creates a review request, not a paid launch. Provide the target audience, target count, and incidence rate in percentage points; optionally link an accessible study. Use list_feasibility_requests or get_feasibility_request to follow its status.
| Name | Required | Description | Default |
|---|---|---|---|
| target | Yes | ||
| study_id | No | ||
| country_code | No | ||
| incident_rate | Yes | ||
| organization_id | No | Organization for this operation and billing. Use list_organizations to choose an active membership. | |
| target_audience | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes | The submitted feasibility request. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes beyond the annotations by clarifying the critical consequence: this is a review request and not a paid launch, which is the main behavioral risk an agent could get wrong. It does not cover duplicate submissions, expected turnaround, or what happens to the linked study, but annotations already declare non-read-only, non-idempotent, non-destructive semantics.
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, each doing distinct work: what it is, what it is not, what to supply, and how to follow up. Front-loaded with purpose and the paid-launch caveat before parameter detail.
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?
An output schema exists, so return-shape explanation is unnecessary, and the description covers preconditions, inputs, and follow-up adequately. The main residual gap is country_code, which is neither described here nor in the schema, and would matter for a feasibility request.
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 only 17%, so the description carries real weight: it names the three required inputs and disambiguates units ('incidence rate in percentage points'), which the schema does not state. It also flags study linking as optional. It omits country_code and organization_id entirely (the latter is documented in the schema), so the compensation is incomplete.
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 ('submit ... for manual feasibility review') plus the scoping condition (low-incidence, large, or specialized audience). The explicit contrast with launch_panel — 'This creates a review request, not a paid launch' — makes it unambiguously distinct from the sibling that actually launches 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?
Gives a clear trigger ('when direct panel launch is unavailable') and routes the agent to successors, naming list_feasibility_requests and get_feasibility_request for status follow-up. Nothing about when to choose this over estimate_panel or launch_panel is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sync_research_studySync Study to Research SessionBInspect
Add or resync one study in a Hub session. Inspect existing sources and add only the study the user requested.
| Name | Required | Description | Default |
|---|---|---|---|
| study_id | Yes | ||
| session_id | Yes | ||
| organization_id | No | Organization for this operation and billing. Use list_organizations to choose an active membership. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already disclose the safety profile (readOnlyHint=false, destructiveHint=false, idempotentHint=false), so the description's main added context is that existing sources are inspected before adding. It never explains what "resync" actually does — whether it overwrites, duplicates, or silently no-ops on an already-present study, which matters given idempotentHint=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?
Two short sentences with the action front-loaded and no filler. The second sentence is slightly vague in phrasing but still earns its place as a scoping constraint.
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?
An output schema exists, so return values need not be explained. However, for a non-read-only mutation with a non-idempotent hint, the definition leaves unclear what a sync does to an already-synced study and what "sources" refers to in the Hub session model.
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 only 33%: study_id and session_id carry no description beyond UUID format, and only organization_id is documented (in the schema itself). The description names no parameters, provides no format/syntax detail, and does not clarify the session_id vs study_id relationship, so it fails to compensate for the coverage gap.
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 ("Add or resync one study in a Hub session"), and the word "one" implicitly contrasts with add_all_research_studies. It does not name any sibling explicitly, so the differentiation is left to inference rather than stated.
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?
"Add only the study the user requested" hints at the single-study use case and implies add_all_research_studies is the bulk alternative, but no alternative is ever named and no when-not condition is given. The instruction to "inspect existing sources" reads more like an internal workflow hint than selection guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
test_webhookTest WebhookBDestructiveInspect
Send a signed test event containing no participant or study data. This makes an outbound request to the registered URL.
| Name | Required | Description | Default |
|---|---|---|---|
| webhook_id | Yes | ||
| organization_id | No | Organization for this operation and billing. Use list_organizations to choose an active membership. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes | Signed test delivery result. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, openWorldHint=true, idempotentHint=false, so the risky profile is known, but the description never explains why a data-free test event is flagged destructive or whether repeated tests can affect webhook state (e.g., auto-disable on failures). The useful addition is that no participant/study data leaves the system and that an outbound request is made.
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 short sentences, zero filler, with the payload-safety fact front-loaded and the outbound-request behavior immediately after. Nothing to trim.
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?
An output schema exists so return values needn't be explained, but for a non-idempotent, open-world, destructive-flagged tool the description says nothing about side effects on the webhook's own state or error/failure behavior. Adequate but with clear 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 coverage is only 50%: organization_id is documented in the schema while webhook_id carries only a uuid format/pattern with no explanation. The description mentions no parameters at all, so it fails to compensate for the undocumented webhook_id, and adds nothing about the billing/organization scoping.
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 concrete verb and resource ("Send a signed test event") and narrows the payload scope ("containing no participant or study data"). That is enough to tell it apart from create_webhook/delete_webhook/list_webhook_deliveries, though it never names a sibling explicitly.
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 use case (exercise the registered endpoint with a test event) is implied but never stated as when-to-use, and there are no exclusions or prerequisites such as requiring an active webhook or expected failure semantics. The agent must infer that this is for verifying a webhook configuration.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_participantUpdate ParticipantADestructiveIdempotentInspect
Change the email or CRM fields on one BYOP invitation with PATCH. Call get_participant first to verify the intended participant. Send email=null only when the user explicitly wants to clear it. Pass only fields to change.
| Name | Required | Description | Default |
|---|---|---|---|
| No | |||
| metadata | No | ||
| external_id | No | ||
| participant_id | Yes | ||
| organization_id | No | Organization for this operation and billing. Use list_organizations to choose an active membership. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes | The updated BYOP participant. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint/idempotentHint, and the description adds real value on top: PATCH is partial ('pass only fields to change') and email=null is a deliberate wipe that should only happen on explicit request. It stops short of explaining what else is lost when fields are cleared or what permissions are required.
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?
Four short sentences, each doing distinct work: scope, prerequisite, null-handling warning, and partial-update rule. The most important constraint (single participant, minimal payload) is front-loaded.
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 an output schema present, return values need no explanation, and the description covers the mutation semantics an agent needs. The only gap is that the 'CRM fields' are never enumerated, leaving the agent to infer metadata/external_id from 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?
Schema description coverage is only 20% across 5 parameters, so the description must carry the load, yet it explains only the email null case. 'CRM fields' is never mapped to metadata vs external_id, and the nested metadata object's key/value constraints are left entirely to 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?
States a specific verb (change) and resource (email or CRM fields on one BYOP invitation) plus the HTTP method (PATCH). The singular scope and field set make it clearly distinct from create_participants, delete_participant, and update_study.
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 a concrete prerequisite (call get_participant first to verify identity) and a caution for the null case (only for explicit clearing). It does not name alternative tools that could also modify participants, but the usage context is unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_studyUpdate StudyADestructiveIdempotentInspect
PATCH ordinary study metadata only. Use customize_study—not this tool—for the research plan, audience targeting, screener questions, concept links, or concept images. Only supplied fields change. Active panel studies must be paused or stopped first. Call get_study first.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | ||
| voice | No | Interviewer configuration for every format, including chat. Defaults to male when omitted. | |
| language | No | ||
| study_id | Yes | ||
| study_type | No | ||
| byop_config | No | ||
| organization_id | No | Organization for this operation and billing. Use list_organizations to choose an active membership. | |
| interview_format | No | Interview mode. Defaults to voice when omitted. | |
| recruiting_method | No | Required explicit human choice. Ask the user to choose panel, BYOP, or synthetic respondents before calling create_study; do not guess or silently default it. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes | The updated study. Call get_study for full state. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already flag the mutation (readOnlyHint=false, destructiveHint=true, idempotentHint=true), so the description doesn't need to re-declare safety. What it adds beyond the annotations is genuine: PATCH semantics ('Only supplied fields change'), the lifecycle precondition that active panel studies must be paused/stopped, and the read-before-write convention. It does not explain why the tool is marked destructive or how null vs. omitted fields are treated, which is the remaining gap.
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?
Four short sentences, front-loaded with the core scope and the sibling exclusion before any preconditions. Every sentence carries a distinct instruction; nothing is redundant with the title or annotations.
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 nine-parameter mutation tool with an output schema and full annotations, the description supplies scope, alternative routing, and two operational preconditions. The main remaining shortfall is the lack of field-level enumeration given only 44% schema coverage, but the essentials for a correct call are 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 44%, so the schema only partially documents the nine parameters. The description does useful scoping by saying 'ordinary study metadata only' and excluding a set of field families, which implicitly constrains the updateable set, but it never enumerates the accepted fields (name, voice, language, study_type, byop_config, interview_format, recruiting_method) or clarifies field-level behaviors like clearing a value. It helps but does not compensate for the coverage gap.
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 ('PATCH ordinary study metadata'), and immediately delineates scope against the sibling customize_study, which handles the research plan, targeting, screener, concepts, and images. An agent can tell exactly which of the two update tools to pick without opening either schema.
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 alternatives ('Use customize_study—not this tool—for...'), prerequisites ('Active panel studies must be paused or stopped first', 'Call get_study first'), and an implicit when-not for every excluded field family. This is a textbook routing instruction with no inference required.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
upload_research_sourceUpload Research SourceAInspect
Attach external evidence to an organization Hub session: TXT, Markdown, CSV, JSON, text PDF or DOCX, up to 10 MB. Send user-provided file bytes as base64. Uploading again creates another source; list sources after an uncertain response before retrying.
| Name | Required | Description | Default |
|---|---|---|---|
| file_name | Yes | ||
| session_id | Yes | ||
| data_base64 | Yes | Raw file bytes encoded as standard base64; never a server path or URL. | |
| organization_id | No | Organization for this operation and billing. Use list_organizations to choose an active membership. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare non-idempotency and non-destructiveness, and the description reinforces the important consequence: 'Uploading again creates another source,' which tells the agent duplicates are created rather than overwritten. It also discloses format and size limits that are not in the annotations. It stops short of describing the returned source object or permission requirements.
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 tight sentences with zero filler, front-loading the action and constraints before the retry caveat. Every clause carries operational 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?
With an output schema present, the description need not explain return values, and the annotations cover the safety profile. What remains — accepted formats, size cap, encoding, and non-idempotent retry behavior — is exactly what an agent needs to invoke the tool 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 only 50% (file_name and session_id have no descriptions), but the description compensates usefully: the file-type list constrains what file_name may be, the 10 MB limit bounds data payload size, and 'organization Hub session' clarifies that session_id is a Hub session rather than an arbitrary ID. Base64 encoding is repeated from the schema, which is the only redundancy.
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 ('Attach external evidence') and resource ('organization Hub session'), plus accepted file types and a 10 MB ceiling. It is clearly distinguishable from generic upload or template tools, though it never names the sibling that removes or clears sources, so the differentiation is implicit.
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 one concrete usage rule — 'list sources after an uncertain response before retrying' — which covers the retry scenario well. However, it never says when to prefer this over upload_research_template, or what prerequisite (an existing Hub session) must hold, leaving the core when-to-use decision implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
upload_research_templateUpload Research TemplateAInspect
Upload a template up to 5 MB: report Markdown/TXT/DOCX with {{title}} and/or {{findings}} placeholders; presentation 16:9 PPTX theme/layout. Send raw file bytes as base64; pass the returned template id to generate_research_output. Repeated uploads create separate templates.
| Name | Required | Description | Default |
|---|---|---|---|
| kind | Yes | ||
| file_name | Yes | ||
| session_id | Yes | ||
| data_base64 | Yes | Raw file bytes encoded as standard base64; never a server path or URL. | |
| organization_id | No | Organization for this operation and billing. Use list_organizations to choose an active membership. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, idempotentHint=false and destructiveHint=false; the description adds real value on top by giving the 5 MB limit and spelling out the practical consequence of non-idempotency ('repeated uploads create separate templates'). It does not say what happens on validation failure (bad placeholders, wrong PPTX aspect) or whether the upload is scoped to session/org.
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?
Front-loaded with the action and the hard limit, and every clause carries information (formats, placeholders, encoding, downstream id, non-idempotency). It is dense to the point of being a single semicolon-chained block, which costs some 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?
An output schema exists, so return values need not be explained, and the description still tells the agent the key return artifact (template id). For a 5-parameter mutation tool the coverage is nearly sufficient; the gaps are session/org scoping and error behavior.
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 only 40%, so the description must compensate and it partly does: it explains the accepted file formats per `kind` and that `data_base64` must be raw bytes, not a path. But `session_id` and `organization_id` get no treatment in the description, leaving two of five parameters explained only (or not at all) by 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?
Opens with a specific verb+resource ('Upload a template') and immediately constrains it by size and by the two supported kinds (report vs presentation). The downstream hook ('pass the returned template id to generate_research_output') makes its role in the workflow unmistakable and separates it from upload_research_source.
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 states what file types are acceptable per kind (Markdown/TXT/DOCX with placeholders; 16:9 PPTX theme/layout) and the size ceiling, which is clear 'when this applies' guidance. It also warns that repeated uploads create separate templates, steering the agent away from assuming replacement. It stops short of naming an explicit alternative or exclusion.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
view_research_answerView Research AnswerARead-onlyIdempotentInspect
Show the full answer in this MCP chat with clickable verified quotes and original recordings. Always use this App after research chat; never substitute an external dashboard link. Use after chat_research_session or queue_research_chat; pending jobs can be checked here. Keep session_id and job_id for follow-ups. Set reference_label to read one cited quotation and its transcript/recording context. Preserves backend citation labels; never invent sources.
| Name | Required | Description | Default |
|---|---|---|---|
| job_id | Yes | ||
| session_id | Yes | ||
| organization_id | No | Organization for this operation and billing. Use list_organizations to choose an active membership. | |
| reference_label | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and openWorldHint=false, so safety is covered; the description adds real context beyond them — that answer rendering is in-chat, that citation labels come from the backend and must not be invented, and that pending jobs are viewable. It does not cover failure behavior for an expired/unknown job_id, which is the main gap.
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?
Front-loaded with the core action, then routing, then parameter notes — a sensible order with no filler sentences. Slightly dense, and the trailing 'Preserves backend citation labels; never invent sources' is prompt-style guidance that sits a bit awkwardly on a read tool, but it is short.
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 viewer with an output schema, remaining needs are modest: the description covers sequencing, the required id pair, and the reference_label mode, so an agent can call it correctly. What it omits is what happens when the job is not present or the ids mismatch, and it never ties organization_id to the billing/membership choice documented only in 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?
Schema coverage is only 25% (only organization_id carries a description), so the description must compensate — and it does for three of four params: session_id and job_id are framed as the pair to retain for follow-ups, and reference_label is explained as selecting one cited quotation with its transcript/recording context, which the bare regex pattern does not convey. organization_id is left to 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?
Specific verb+resource: 'Show the full answer in this MCP chat with clickable verified quotes and original recordings' tells an agent exactly what is produced, and it is clearly differentiated from the queue/chat siblings (chat_research_session, queue_research_chat) it names. The note that pending jobs can be checked here further delimits the resource from a pure read of a finished answer.
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?
Explicit sequencing ('Use after chat_research_session or queue_research_chat'), an explicit exclusion ('never substitute an external dashboard link'), and a conditional mode ('Set reference_label to read one cited quotation'). It also tells the agent to retain session_id/job_id for follow-ups, which is actionable routing guidance rather than inference.
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.
76 tool updates
- Changed
add_all_research_studies1 field changed- changed
Input schema / properties / organization_id / descriptionPrevious value: -"Platform admins only: select an organization for this operation. Required when changing another organization’s study or using its wallet."New value: +"Organization for this operation and billing. Use list_organizations to choose an active membership."
- Changed
answer_research1 field changed- changed
Input schema / properties / organization_id / descriptionPrevious value: -"Platform admins only: select an organization for this operation. Required when changing another organization’s study or using its wallet."New value: +"Organization for this operation and billing. Use list_organizations to choose an active membership."
- Changed
cancel_feasibility_request1 field changed- changed
Input schema / properties / organization_id / descriptionPrevious value: -"Platform admins only: select an organization for this operation. Required when changing another organization’s study or using its wallet."New value: +"Organization for this operation and billing. Use list_organizations to choose an active membership."
- Changed
cancel_research_analysis1 field changed- changed
Input schema / properties / organization_id / descriptionPrevious value: -"Platform admins only: select an organization for this operation. Required when changing another organization’s study or using its wallet."New value: +"Organization for this operation and billing. Use list_organizations to choose an active membership."
- Changed
cancel_research_deliverable1 field changed- changed
Input schema / properties / organization_id / descriptionPrevious value: -"Platform admins only: select an organization for this operation. Required when changing another organization’s study or using its wallet."New value: +"Organization for this operation and billing. Use list_organizations to choose an active membership."
- Changed
chat_research_session1 field changed- changed
Input schema / properties / organization_id / descriptionPrevious value: -"Platform admins only: select an organization for this operation. Required when changing another organization’s study or using its wallet."New value: +"Organization for this operation and billing. Use list_organizations to choose an active membership."
- Changed
clear_research_sources1 field changed- changed
Input schema / properties / organization_id / descriptionPrevious value: -"Platform admins only: select an organization for this operation. Required when changing another organization’s study or using its wallet."New value: +"Organization for this operation and billing. Use list_organizations to choose an active membership."
- Changed
configure_external_panel1 field changed- changed
Input schema / properties / organization_id / descriptionPrevious value: -"Platform admins only: select an organization for this operation. Required when changing another organization’s study or using its wallet."New value: +"Organization for this operation and billing. Use list_organizations to choose an active membership."
- Changed
create_participants1 field changed- changed
Input schema / properties / organization_id / descriptionPrevious value: -"Platform admins only: select an organization for this operation. Required when changing another organization’s study or using its wallet."New value: +"Organization for this operation and billing. Use list_organizations to choose an active membership."
- Changed
create_research_session1 field changed- changed
Input schema / properties / organization_id / descriptionPrevious value: -"Platform admins only: select an organization for this operation. Required when changing another organization’s study or using its wallet."New value: +"Organization for this operation and billing. Use list_organizations to choose an active membership."
- Changed
create_study1 field changed- changed
Input schema / properties / organization_id / descriptionPrevious value: -"Platform admins only: select an organization for this operation. Required when changing another organization’s study or using its wallet."New value: +"Organization for this operation and billing. Use list_organizations to choose an active membership."
- Changed
create_webhook1 field changed- changed
Input schema / properties / organization_id / descriptionPrevious value: -"Platform admins only: select an organization for this operation. Required when changing another organization’s study or using its wallet."New value: +"Organization for this operation and billing. Use list_organizations to choose an active membership."
- Changed
customize_study1 field changed- changed
Input schema / properties / organization_id / descriptionPrevious value: -"Platform admins only: select an organization for this operation. Required when changing another organization’s study or using its wallet."New value: +"Organization for this operation and billing. Use list_organizations to choose an active membership."
- Changed
delete_external_panel1 field changed- changed
Input schema / properties / organization_id / descriptionPrevious value: -"Platform admins only: select an organization for this operation. Required when changing another organization’s study or using its wallet."New value: +"Organization for this operation and billing. Use list_organizations to choose an active membership."
- Changed
delete_interview1 field changed- changed
Input schema / properties / organization_id / descriptionPrevious value: -"Platform admins only: select an organization for this operation. Required when changing another organization’s study or using its wallet."New value: +"Organization for this operation and billing. Use list_organizations to choose an active membership."
- Changed
delete_participant1 field changed- changed
Input schema / properties / organization_id / descriptionPrevious value: -"Platform admins only: select an organization for this operation. Required when changing another organization’s study or using its wallet."New value: +"Organization for this operation and billing. Use list_organizations to choose an active membership."
- Changed
delete_research_output1 field changed- changed
Input schema / properties / organization_id / descriptionPrevious value: -"Platform admins only: select an organization for this operation. Required when changing another organization’s study or using its wallet."New value: +"Organization for this operation and billing. Use list_organizations to choose an active membership."
- Changed
delete_research_session1 field changed- changed
Input schema / properties / organization_id / descriptionPrevious value: -"Platform admins only: select an organization for this operation. Required when changing another organization’s study or using its wallet."New value: +"Organization for this operation and billing. Use list_organizations to choose an active membership."
- Changed
delete_study1 field changed- changed
Input schema / properties / organization_id / descriptionPrevious value: -"Platform admins only: select an organization for this operation. Required when changing another organization’s study or using its wallet."New value: +"Organization for this operation and billing. Use list_organizations to choose an active membership."
- Changed
delete_webhook1 field changed- changed
Input schema / properties / organization_id / descriptionPrevious value: -"Platform admins only: select an organization for this operation. Required when changing another organization’s study or using its wallet."New value: +"Organization for this operation and billing. Use list_organizations to choose an active membership."
- Changed
delete_webhook_by_id1 field changed- changed
Input schema / properties / organization_id / descriptionPrevious value: -"Platform admins only: select an organization for this operation. Required when changing another organization’s study or using its wallet."New value: +"Organization for this operation and billing. Use list_organizations to choose an active membership."
- Changed
download_research_output1 field changed- changed
Input schema / properties / organization_id / descriptionPrevious value: -"Platform admins only: select an organization for this operation. Required when changing another organization’s study or using its wallet."New value: +"Organization for this operation and billing. Use list_organizations to choose an active membership."
- Changed
edit_research_output1 field changed- changed
Input schema / properties / organization_id / descriptionPrevious value: -"Platform admins only: select an organization for this operation. Required when changing another organization’s study or using its wallet."New value: +"Organization for this operation and billing. Use list_organizations to choose an active membership."
- Changed
estimate_panel1 field changed- changed
Input schema / properties / organization_id / descriptionPrevious value: -"Platform admins only: select an organization for this operation. Required when changing another organization’s study or using its wallet."New value: +"Organization for this operation and billing. Use list_organizations to choose an active membership."
- Changed
generate_report1 field changed- changed
Input schema / properties / organization_id / descriptionPrevious value: -"Platform admins only: select an organization for this operation. Required when changing another organization’s study or using its wallet."New value: +"Organization for this operation and billing. Use list_organizations to choose an active membership."
- Changed
generate_research_output1 field changed- changed
Input schema / properties / organization_id / descriptionPrevious value: -"Platform admins only: select an organization for this operation. Required when changing another organization’s study or using its wallet."New value: +"Organization for this operation and billing. Use list_organizations to choose an active membership."
- Changed
get_account1 field changed- changed
Input schema / properties / organization_id / descriptionPrevious value: -"Platform admins only: inspect this organization’s account and billing readiness."New value: +"Select an organization you belong to and inspect its account and billing readiness. Use list_organizations when you have multiple memberships."
- Changed
get_customize_study_job1 field changed- changed
Input schema / properties / organization_id / descriptionPrevious value: -"Platform admins only: select an organization for this operation. Required when changing another organization’s study or using its wallet."New value: +"Organization for this operation and billing. Use list_organizations to choose an active membership."
- Changed
get_external_panel1 field changed- changed
Input schema / properties / organization_id / descriptionPrevious value: -"Platform admins only: select an organization for this operation. Required when changing another organization’s study or using its wallet."New value: +"Organization for this operation and billing. Use list_organizations to choose an active membership."
- Changed
get_feasibility_request1 field changed- changed
Input schema / properties / organization_id / descriptionPrevious value: -"Platform admins only: select an organization for this operation. Required when changing another organization’s study or using its wallet."New value: +"Organization for this operation and billing. Use list_organizations to choose an active membership."
- Changed
get_fielding_progress1 field changed- changed
Input schema / properties / organization_id / descriptionPrevious value: -"Platform admins only: select an organization for this operation. Required when changing another organization’s study or using its wallet."New value: +"Organization for this operation and billing. Use list_organizations to choose an active membership."
- Changed
get_interview1 field changed- changed
Input schema / properties / organization_id / descriptionPrevious value: -"Platform admins only: select an organization for this operation. Required when changing another organization’s study or using its wallet."New value: +"Organization for this operation and billing. Use list_organizations to choose an active membership."
- Changed
get_interview_usage_stats1 field changed- changed
Input schema / properties / organization_id / descriptionPrevious value: -"Platform admins only: select an organization for usage totals."New value: +"Select an organization you belong to for usage totals. Users can belong to multiple organizations."
- Changed
get_participant1 field changed- changed
Input schema / properties / organization_id / descriptionPrevious value: -"Platform admins only: select an organization for this operation. Required when changing another organization’s study or using its wallet."New value: +"Organization for this operation and billing. Use list_organizations to choose an active membership."
- Changed
get_participant_job1 field changed- changed
Input schema / properties / organization_id / descriptionPrevious value: -"Platform admins only: select an organization for this operation. Required when changing another organization’s study or using its wallet."New value: +"Organization for this operation and billing. Use list_organizations to choose an active membership."
- Changed
get_report_job1 field changed- changed
Input schema / properties / organization_id / descriptionPrevious value: -"Platform admins only: select an organization for this operation. Required when changing another organization’s study or using its wallet."New value: +"Organization for this operation and billing. Use list_organizations to choose an active membership."
- Changed
get_report_slide_job1 field changed- changed
Input schema / properties / organization_id / descriptionPrevious value: -"Platform admins only: select an organization for this operation. Required when changing another organization’s study or using its wallet."New value: +"Organization for this operation and billing. Use list_organizations to choose an active membership."
- Changed
get_research_analysis1 field changed- changed
Input schema / properties / organization_id / descriptionPrevious value: -"Platform admins only: select an organization for this operation. Required when changing another organization’s study or using its wallet."New value: +"Organization for this operation and billing. Use list_organizations to choose an active membership."
- Changed
get_research_deliverable1 field changed- changed
Input schema / properties / organization_id / descriptionPrevious value: -"Platform admins only: select an organization for this operation. Required when changing another organization’s study or using its wallet."New value: +"Organization for this operation and billing. Use list_organizations to choose an active membership."
- Changed
get_study1 field changed- changed
Input schema / properties / organization_id / descriptionPrevious value: -"Platform admins only: select an organization for this operation. Required when changing another organization’s study or using its wallet."New value: +"Organization for this operation and billing. Use list_organizations to choose an active membership."
- Changed
get_study_report1 field changed- changed
Input schema / properties / organization_id / descriptionPrevious value: -"Platform admins only: select an organization for this operation. Required when changing another organization’s study or using its wallet."New value: +"Organization for this operation and billing. Use list_organizations to choose an active membership."
- Changed
get_webhook1 field changed- changed
Input schema / properties / organization_id / descriptionPrevious value: -"Platform admins only: select an organization for this operation. Required when changing another organization’s study or using its wallet."New value: +"Organization for this operation and billing. Use list_organizations to choose an active membership."
- Changed
inspect_research_session1 field changed- changed
Input schema / properties / organization_id / descriptionPrevious value: -"Platform admins only: select an organization for this operation. Required when changing another organization’s study or using its wallet."New value: +"Organization for this operation and billing. Use list_organizations to choose an active membership."
- Changed
list_feasibility_requests1 field changed- changed
Input schema / properties / organization_id / descriptionPrevious value: -"Platform admins only: select an organization for this operation. Required when changing another organization’s study or using its wallet."New value: +"Organization for this operation and billing. Use list_organizations to choose an active membership."
- Changed
list_interviews1 field changed- changed
Input schema / properties / organization_id / descriptionPrevious value: -"Platform admins only: select an organization for this operation. Required when changing another organization’s study or using its wallet."New value: +"Organization for this operation and billing. Use list_organizations to choose an active membership."
- Changed
list_organizations2 fields changed- changed
Input schema / properties / organization_id / descriptionPrevious value: -"Platform admins only: select an organization for this operation. Required when changing another organization’s study or using its wallet."New value: +"Organization for this operation and billing. Use list_organizations to choose an active membership." - changed
Output schema / properties / result / descriptionPrevious value: -"App-scoped organizations and active owner contacts available to a platform admin."New value: +"Accessible organizations and active owner contacts in this app."
- Changed
list_participants1 field changed- changed
Input schema / properties / organization_id / descriptionPrevious value: -"Platform admins only: select an organization for this operation. Required when changing another organization’s study or using its wallet."New value: +"Organization for this operation and billing. Use list_organizations to choose an active membership."
- Changed
list_studies1 field changed- changed
Input schema / properties / organization_id / descriptionPrevious value: -"Platform admins only: select an organization for this operation. Required when changing another organization’s study or using its wallet."New value: +"Organization for this operation and billing. Use list_organizations to choose an active membership."
- Changed
list_targeting_attributes1 field changed- changed
Input schema / properties / organization_id / descriptionPrevious value: -"Platform admins only: select an organization for this operation. Required when changing another organization’s study or using its wallet."New value: +"Organization for this operation and billing. Use list_organizations to choose an active membership."
- Changed
list_webhook_deliveries1 field changed- changed
Input schema / properties / organization_id / descriptionPrevious value: -"Platform admins only: select an organization for this operation. Required when changing another organization’s study or using its wallet."New value: +"Organization for this operation and billing. Use list_organizations to choose an active membership."
- Changed
list_webhooks1 field changed- changed
Input schema / properties / organization_id / descriptionPrevious value: -"Platform admins only: select an organization for this operation. Required when changing another organization’s study or using its wallet."New value: +"Organization for this operation and billing. Use list_organizations to choose an active membership."
- Changed
pause_study1 field changed- changed
Input schema / properties / organization_id / descriptionPrevious value: -"Platform admins only: select an organization for this operation. Required when changing another organization’s study or using its wallet."New value: +"Organization for this operation and billing. Use list_organizations to choose an active membership."
- Changed
queue_customize_study1 field changed- changed
Input schema / properties / organization_id / descriptionPrevious value: -"Platform admins only: select an organization for this operation. Required when changing another organization’s study or using its wallet."New value: +"Organization for this operation and billing. Use list_organizations to choose an active membership."
- Changed
queue_report_slides1 field changed- changed
Input schema / properties / organization_id / descriptionPrevious value: -"Platform admins only: select an organization for this operation. Required when changing another organization’s study or using its wallet."New value: +"Organization for this operation and billing. Use list_organizations to choose an active membership."
- Changed
queue_research_chat1 field changed- changed
Input schema / properties / organization_id / descriptionPrevious value: -"Platform admins only: select an organization for this operation. Required when changing another organization’s study or using its wallet."New value: +"Organization for this operation and billing. Use list_organizations to choose an active membership."
- Changed
queue_research_deliverable1 field changed- changed
Input schema / properties / organization_id / descriptionPrevious value: -"Platform admins only: select an organization for this operation. Required when changing another organization’s study or using its wallet."New value: +"Organization for this operation and billing. Use list_organizations to choose an active membership."
- Changed
regenerate_external_panel_token1 field changed- changed
Input schema / properties / organization_id / descriptionPrevious value: -"Platform admins only: select an organization for this operation. Required when changing another organization’s study or using its wallet."New value: +"Organization for this operation and billing. Use list_organizations to choose an active membership."
- Changed
remove_research_source1 field changed- changed
Input schema / properties / organization_id / descriptionPrevious value: -"Platform admins only: select an organization for this operation. Required when changing another organization’s study or using its wallet."New value: +"Organization for this operation and billing. Use list_organizations to choose an active membership."
- Changed
remove_research_study1 field changed- changed
Input schema / properties / organization_id / descriptionPrevious value: -"Platform admins only: select an organization for this operation. Required when changing another organization’s study or using its wallet."New value: +"Organization for this operation and billing. Use list_organizations to choose an active membership."
- Changed
rename_research_output1 field changed- changed
Input schema / properties / organization_id / descriptionPrevious value: -"Platform admins only: select an organization for this operation. Required when changing another organization’s study or using its wallet."New value: +"Organization for this operation and billing. Use list_organizations to choose an active membership."
- Changed
rename_research_session1 field changed- changed
Input schema / properties / organization_id / descriptionPrevious value: -"Platform admins only: select an organization for this operation. Required when changing another organization’s study or using its wallet."New value: +"Organization for this operation and billing. Use list_organizations to choose an active membership."
- Changed
resume_research_analysis1 field changed- changed
Input schema / properties / organization_id / descriptionPrevious value: -"Platform admins only: select an organization for this operation. Required when changing another organization’s study or using its wallet."New value: +"Organization for this operation and billing. Use list_organizations to choose an active membership."
- Changed
resume_study1 field changed- changed
Input schema / properties / organization_id / descriptionPrevious value: -"Platform admins only: select an organization for this operation. Required when changing another organization’s study or using its wallet."New value: +"Organization for this operation and billing. Use list_organizations to choose an active membership."
- Changed
rotate_webhook_secret1 field changed- changed
Input schema / properties / organization_id / descriptionPrevious value: -"Platform admins only: select an organization for this operation. Required when changing another organization’s study or using its wallet."New value: +"Organization for this operation and billing. Use list_organizations to choose an active membership."
- Changed
search_research1 field changed- changed
Input schema / properties / organization_id / descriptionPrevious value: -"Platform admins only: select an organization for this operation. Required when changing another organization’s study or using its wallet."New value: +"Organization for this operation and billing. Use list_organizations to choose an active membership."
- Changed
send_participant_reward1 field changed- changed
Input schema / properties / organization_id / descriptionPrevious value: -"Platform admins only: select an organization for this operation. Required when changing another organization’s study or using its wallet."New value: +"Organization for this operation and billing. Use list_organizations to choose an active membership."
- Changed
start_research_analysis1 field changed- changed
Input schema / properties / organization_id / descriptionPrevious value: -"Platform admins only: select an organization for this operation. Required when changing another organization’s study or using its wallet."New value: +"Organization for this operation and billing. Use list_organizations to choose an active membership."
- Changed
stop_study1 field changed- changed
Input schema / properties / organization_id / descriptionPrevious value: -"Platform admins only: select an organization for this operation. Required when changing another organization’s study or using its wallet."New value: +"Organization for this operation and billing. Use list_organizations to choose an active membership."
- Changed
submit_feasibility_request1 field changed- changed
Input schema / properties / organization_id / descriptionPrevious value: -"Platform admins only: select an organization for this operation. Required when changing another organization’s study or using its wallet."New value: +"Organization for this operation and billing. Use list_organizations to choose an active membership."
- Changed
sync_research_study1 field changed- changed
Input schema / properties / organization_id / descriptionPrevious value: -"Platform admins only: select an organization for this operation. Required when changing another organization’s study or using its wallet."New value: +"Organization for this operation and billing. Use list_organizations to choose an active membership."
- Changed
test_webhook1 field changed- changed
Input schema / properties / organization_id / descriptionPrevious value: -"Platform admins only: select an organization for this operation. Required when changing another organization’s study or using its wallet."New value: +"Organization for this operation and billing. Use list_organizations to choose an active membership."
- Changed
update_participant1 field changed- changed
Input schema / properties / organization_id / descriptionPrevious value: -"Platform admins only: select an organization for this operation. Required when changing another organization’s study or using its wallet."New value: +"Organization for this operation and billing. Use list_organizations to choose an active membership."
- Changed
update_study1 field changed- changed
Input schema / properties / organization_id / descriptionPrevious value: -"Platform admins only: select an organization for this operation. Required when changing another organization’s study or using its wallet."New value: +"Organization for this operation and billing. Use list_organizations to choose an active membership."
- Changed
upload_research_source1 field changed- changed
Input schema / properties / organization_id / descriptionPrevious value: -"Platform admins only: select an organization for this operation. Required when changing another organization’s study or using its wallet."New value: +"Organization for this operation and billing. Use list_organizations to choose an active membership."
- Changed
upload_research_template1 field changed- changed
Input schema / properties / organization_id / descriptionPrevious value: -"Platform admins only: select an organization for this operation. Required when changing another organization’s study or using its wallet."New value: +"Organization for this operation and billing. Use list_organizations to choose an active membership."
- Changed
view_research_answer1 field changed- changed
Input schema / properties / organization_id / descriptionPrevious value: -"Platform admins only: select an organization for this operation. Required when changing another organization’s study or using its wallet."New value: +"Organization for this operation and billing. Use list_organizations to choose an active membership."
16 tool updates
- Added
add_all_research_studies - Added
cancel_research_analysis - Added
clear_research_sources - Added
create_research_session - Added
delete_research_output - Added
delete_research_session - Removed
manage_research_output - Removed
manage_research_session - Added
remove_research_source - Added
remove_research_study - Added
rename_research_output - Added
rename_research_session - Added
resume_research_analysis - Removed
run_research_analysis - Added
start_research_analysis - Added
sync_research_study
18 tool updates
- Added
cancel_research_deliverable - Added
chat_research_session - Added
download_research_output - Added
edit_research_output - Added
generate_research_output - Added
get_report_slide_job - Added
get_research_analysis - Added
get_research_deliverable - Added
inspect_research_session - Added
manage_research_output - Added
manage_research_session - Added
queue_report_slides - Added
queue_research_chat - Added
queue_research_deliverable - Added
run_research_analysis - Added
upload_research_source - Added
upload_research_template - Added
view_research_answer
1 tool update
- Changed
create_webhook2 fields changed- changed
Input schema / properties / event_types / items / enumPrevious value: -[ - "interview.completed", - "study.completed", - "report.ready" -]New value: +[ + "interview.completed", + "study.completed", + "report.ready", + "study.paused", + "study.resumed", + "study.stopped", + "participant.screened", + "participant.started", + "participant.quality_scored", + "study.quota_reached" +] - changed
Input schema / properties / event_types / maxItemsPrevious value: -3New value: +10
1 tool update
- Changed
launch_panel6 fields changed- added
Input schema / properties / chat_approval_nonceAdded value: +{ + "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" +} - added
Input schema / properties / human_confirmedAdded value: +{ + "const": true, + "type": "boolean" +} - added
Output schema / properties / approval_methodAdded value: +{ + "enum": [ + "app", + "chat" + ], + "type": "string" +} - added
Output schema / properties / chat_approval_nonceAdded value: +{ + "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" +} - added
Output schema / properties / resultAdded value: +{} - removed
Output schema / requiredRemoved value: -[ - "study", - "estimate", - "launch", - "status" -]
2 tool updates
- Added
approve_panel_launch - Changed
launch_panel9 fields changed- added
Input schema / additionalPropertiesAdded value: +false - removed
Input schema / properties / organization_id / descriptionRemoved value: -"Platform admins only: select an organization for this operation. Required when changing another organization’s study or using its wallet." - changed
Input schema / requiredPrevious value: -[ - "study_id", - "target", - "incident_rate", - "country_code", - "estimate_id" -]New value: +[ + "target", + "incident_rate", + "country_code", + "estimate_id", + "study_id" +] - added
Output schema / properties / estimateAdded value: +{} - added
Output schema / properties / launchAdded value: +{} - removed
Output schema / properties / resultRemoved value: -{ - "additionalProperties": {}, - "description": "Panel launch acknowledgement or dry-run estimate.", - "properties": { - "assumptions": { - "items": { - "type": "string" - }, - "type": "array" - }, - "available_credit_balance": { - "type": [ - "number", - "null" - ] - }, - "card_hold_usd": { - "type": [ - "number", - "null" - ] - }, - "country_code": { - "type": [ - "string", - "null" - ] - }, - "credit_cost_per_interview": { - "type": [ - "number", - "null" - ] - }, - "credit_deficit": { - "type": [ - "number", - "null" - ] - }, - "dry_run": { - "type": [ - "boolean", - "null" - ] - }, - "estimate_id": { - "type": [ - "string", - "null" - ] - }, - "estimated_timeline_hours": { - "type": [ - "number", - "null" - ] - }, - "estimated_total_cost_per_interview_usd": { - "type": [ - "number", - "null" - ] - }, - "estimated_total_cost_usd": { - "type": [ - "number", - "null" - ] - }, - "expires_at": { - "type": [ - "string", - "null" - ] - }, - "frequency": { - "type": [ - "string", - "null" - ] - }, - "language_code": { - "type": [ - "string", - "null" - ] - }, - "panel_status": { - "type": [ - "string", - "null" - ] - }, - "reward_per_interview_usd": { - "type": [ - "number", - "null" - ] - }, - "study_id": { - "type": [ - "string", - "null" - ] - }, - "sufficient_credits": { - "type": [ - "boolean", - "null" - ] - }, - "target": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "total_credit_cost": { - "type": [ - "number", - "null" - ] - } - }, - "type": "object" -} - added
Output schema / properties / statusAdded value: +{ + "const": "awaiting_human_approval", + "type": "string" +} - added
Output schema / properties / studyAdded value: +{} - changed
Output schema / requiredPrevious value: -[ - "result" -]New value: +[ + "study", + "estimate", + "launch", + "status" +]
2 tool updates
- Added
answer_research - Changed
search_research3 fields changed- added
Input schema / properties / cursor / anyOfAdded value: +[ + { + "maxLength": 32768, + "minLength": 1, + "type": "string" + }, + { + "type": "null" + } +] - changed
Input schema / properties / cursor / descriptionPrevious value: -"Reserved for future pagination; only null is supported."New value: +"Opaque next_cursor from the previous search page. Use with unchanged query, filters, and limit." - removed
Input schema / properties / cursor / typeRemoved value: -"null"
Related MCP Connectors
Run interviews with real customers and retrieve evidence-backed product findings.
Moderated usability testing: read sessions, notes, transcripts, reports, and draft test scenarios.
AI user research via studies, interviews, recruitment, reports, and quantitative surveys.
Run user research from any AI tool. Create studies, recruit participants, query insights.
Related MCP Servers
- AlicenseCqualityAmaintenanceRun real user interviews from AI agents and retrieve structured insights with themes and verbatim quotes.523 npm5MIT
- AlicenseAqualityCmaintenanceEnables local discovery of research topics, interviews users to uncover their unique perspective, and turns insights into content ideas and short-form Reel scripts.10MIT
- FlicenseNot gradedqualityBmaintenanceRun conjoint experiments and causal research through AI powered behavioral simulations5-
- AlicenseAqualityDmaintenanceEnables AI assistants to interact with the Userology UX research platform for creating and managing studies, interview guides, analytics, and more.42MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.