Skip to main content
Glama
dragosh29

SmartSurvey MCP server

by dragosh29

List responses to a survey

list_responses
Read-only

Fetch responses to one survey with filters, pagination, labels, and answers; redact contact details unless include_contact_details is set.

Instructions

Responses to one survey with every page, question and answer. Whole API pages of min(100, max_results) responses are returned, so the count may be below max_results; the note says how to continue. Filters (since, until, completed_only, filter_id, tracking_link_id, unique_id) are passed to the API as documented. Respondent identifiers are withheld and emails/phone numbers in answers redacted unless include_contact_details is set.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
pageNo1-based page to start from (for continuing a previous call)
sinceNoOnly responses after this date/time (Unix timestamp in seconds, or ISO 8601 such as 2026-09-01 or 2026-09-01T00:00:00Z; UTC when no zone is given)
untilNoOnly responses before this date/time (same forms as since)
sort_byNoProperties to sort by, passed through as the documented sort_by parameter (the accepted property names are not documented; the API's default order is used when omitted)
filter_idNoApply a saved filter from the survey's filter groups
survey_idYesSurvey ID (a positive integer)
unique_idNoOnly responses with this respondent unique id
max_resultsNoMaximum number of responses to return; also sets the API page size (up to 100)
completed_onlyNoOnly completed responses (the API's default). false also returns partial and disqualified responses
include_labelsNoAsk the API for question and page labels (titles) so answers are readable; false returns IDs only, which is the API's default and a smaller payload
translation_idNoTranslation for the labels; the API defaults to 1 (English)
tracking_link_idNoOnly responses collected through this tracking link
include_contact_detailsNoInclude respondent name, email, unique id, IP address, user agent, saved-response details and edit links, contact-list columns that look like contact data, and stop redacting emails and phone numbers in answers

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.1.0

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations cover the safety profile (readOnly, openWorld), so the bar is lower, and the description still adds real value: whole API pages of min(100, max_results) are returned and the count may fall short of max_results, with a continuation note. It also discloses that identifiers are withheld and emails/phones redacted by default, which is a privacy behavior an agent must know before presenting data.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the return shape, then pagination semantics, then filters, then the privacy caveat — a sensible information ordering. Three dense sentences with little waste; the parenthetical filter list is the one slightly redundant fragment since the schema already enumerates them.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 13-parameter read tool with no output schema, the description covers the essentials an agent needs: what comes back, how paging/continuation works, and the default redaction behavior. It omits only secondary details like sort_by accepted values and translation behavior, which the schema partially addresses.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all 13 parameters thoroughly. The description only re-lists a subset of filter names (since, until, completed_only, filter_id, tracking_link_id, unique_id) and adds no syntax or format meaning, leaving sort_by, page, translation_id and include_labels entirely to the schema. Baseline 3 applies when structured fields do the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The opening sentence gives a specific verb and resource (list responses to one survey) and even states the shape of what comes back (every page, question and answer). It is easy to distinguish from sibling get_response, though it never names that sibling explicitly, which would have made the contrast airtight.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage context is implied through the filter list and the continuation note, so an agent can infer 'use this to enumerate, narrow with filters'. However, it never states when to prefer this over get_response for a single record, nor any prerequisite (e.g. needing a valid survey_id) or exclusion, leaving routing to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.