testimonials.ltd
Server Details
Import, approve, tag and feature customer testimonials in your testimonials.ltd workspace.
- Status
- Healthy
- Uptime
- 97.6% over 22 days
- OAuth
- Works in Glama
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-06-18
- URL
TDQS
Scored across 16 tools
Most tools have a clear resource+action target (delete, feature, tag, moderate, update testimonials; list spaces/forms/labels/widgets). The main overlap is import_from_url vs import_testimonials, both bulk review imports, distinguished only by source (URL scraper vs manual payload), and feature_testimonials overlaps with update_testimonial's favorite field.
Nearly every name is snake_case verb_noun (list_testimonials, get_stats, moderate_testimonials, tag_testimonials). The only minor deviation is import_from_url's verb_preposition_noun form, which is still readable and fits its purpose.
16 tools cover distinct facets (account, spaces, forms, widgets, labels, testimonials, stats, imports) without obvious filler. It sits at the upper edge of a comfortable set but each tool earns its place.
Testimonial lifecycle is well covered (read, import, update, tag, feature, moderate, delete), but resources like spaces, widgets and forms are read-only — no create/update/delete for them — leaving a real gap for setup workflows. The two import tools also don't fully clarify when to use which.
Available Tools
16 toolsdelete_testimonialsDelete testimonialsADestructiveIdempotentInspect
Permanently delete testimonials. Two steps: call WITHOUT confirm to get a preview (nothing is deleted), show it to the user, and only after they say yes call again with confirm=true. Prefer moderate_testimonials action=hide when the user just wants something off their site.
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | No | true only after the user confirmed the preview | |
| testimonial_ids | Yes | Testimonial ids (from list_testimonials). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare destructiveHint=true and readOnlyHint=false, but the description adds critical behavioral context beyond them: deletion is permanent, an initial call without confirm only previews and deletes nothing, and user confirmation is required before the destructive call. This preview/confirm workflow is not visible in the annotations and meaningfully reduces accidental deletion risk.
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 compact sentences, front-loaded with the core action ('Permanently delete testimonials'), followed by the required safety workflow and the preferred alternative. Every sentence carries necessary information 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?
For a destructive tool with no output schema, the description covers what an agent most needs: that deletion is permanent, the mandatory two-step confirmation flow, and a safer alternative for non-destructive intent. Combined with annotations that declare destructiveness, no critical calling 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 description coverage is 100%, so the baseline is 3. The description adds meaning beyond the schema by explaining the confirm flag's role in the two-step workflow (used only after the user approves the preview) and reinforcing that testimonial_ids are the targets of a permanent delete. It does not add format details, but the workflow context is a genuine value-add.
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 starts with a specific verb and resource: 'Permanently delete testimonials.' It immediately distinguishes the tool from the sibling 'moderate_testimonials' by naming the alternative and its hide action. An agent can identify the tool's operation and its scope 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?
It provides explicit when-to-use guidance via a two-step confirmation procedure (call without confirm to preview, then with confirm=true after user approval) and an explicit when-not-to-use alternative ('Prefer moderate_testimonials action=hide when the user just wants something off their site'). Nothing about selection 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.
feature_testimonialsStar and pin testimonialsAIdempotentInspect
Star (favorite) testimonials and optionally pin them, in the given order, to the top of a widget. Set favorite=false or unpin=true to undo.
| Name | Required | Description | Default |
|---|---|---|---|
| unpin | No | ||
| favorite | No | ||
| testimonial_ids | Yes | Testimonial ids (from list_testimonials). | |
| pin_to_widget_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare non-destructive, idempotent writes, and the description usefully adds reversal semantics and the fact that ordering of testimonial_ids is preserved when pinning. It doesn't disclose permission requirements or what a partial failure across up to 200 ids looks like, which keeps it below 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?
Two sentences, front-loaded with the primary action and followed by the reversal rule. No filler and 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?
For a 4-parameter mutation tool with no output schema, the description covers the action, the optional pin step, ordering, and undo. The remaining gap is the exact role of pin_to_widget_id and the response shape, but nothing critical 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 description coverage is only 25%, so the description must compensate, and it does: it clarifies the two boolean toggles (favorite default true, unpin) and that array order is meaningful. It leaves pin_to_widget_id implicit rather than stating whether it is required for pinning or what happens when omitted.
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 specific verbs (star/favorite, pin) against a specific resource (testimonials, to the top of a widget), plus the reversal actions. It is clearly distinguishable from siblings like tag_testimonials or moderate_testimonials, which mutate different attributes.
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 explains the conditional nature of pinning ('optionally pin them') and gives explicit undo instructions ('Set favorite=false or unpin=true'), which tells the agent how to reverse each effect. It does not name alternative tools or state when-not-to-use it, so it falls short of a full 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_account_overviewAccount overviewARead-onlyInspect
Start here. The workspace, your role, plan limits, usage, testimonial counts and every space (product or client site) with its id.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=false, so the safety profile is covered. With no output schema, the description carries the return-value burden and does so by enumerating the aggregate contents (plan limits, usage, counts, spaces with ids), which is the useful behavioral context an agent needs to decide to call it first.
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 actionable cue ('Start here') front-loaded ahead of the content inventory. Every clause earns its place by naming a distinct piece of returned data.
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 zero-parameter, read-only, closed-world tool with no output schema, the description supplies enough about the payload to call it correctly and interpret the result at a high level. It does not hint at shape or structure of the response, but nothing essential is missing for 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?
The tool takes no parameters, so there is no parameter semantics to document; per the rubric this is the baseline 4. The description correctly implies a single no-argument call rather than suggesting filters that do not exist.
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 exact contents of the resource: workspace, role, plan limits, usage, testimonial counts, and every space with its id. That is far more specific than the title 'Account overview' and makes it distinguishable from narrower siblings like list_spaces or get_stats. The verb itself ('get') is only implied, but the resource and its payload are 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?
'Start here' is an explicit, front-loaded instruction on when to reach for this tool — the orientation call before narrower queries. It gives clear positive context but names no alternatives or exclusions (e.g., whether it supersedes list_spaces), so it stops short of full routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_statsTestimonial statsARead-onlyInspect
Counts by status, type, source and month, average rating (all and live), rating distribution, favorites, imported count, abandoned drafts, and per label (tag) the count and average rating plus how many are untagged. Optional space, label and date range.
| Name | Required | Description | Default |
|---|---|---|---|
| label | No | Only testimonials carrying this label (name) | |
| since | No | Date, e.g. 2026-01-01 | |
| until | No | Date, e.g. 2026-12-31 | |
| space_id | No | Space id, slug or name. Optional when the account has one space. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only safety, so the description correctly focuses on what the operation returns. Because there is no output schema, the detailed enumeration of computed metrics is valuable transparency. It still does not clarify date-range semantics, default space behavior, or how 'live' is defined.
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 dense sentence with no filler, and every listed metric appears relevant to the tool's purpose. It is somewhat run-on and does not front-load a clear verb, but the information is appropriately sized for a stats tool with no output 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 read-only aggregation tool with full schema coverage and no output schema, the description does the important work of enumerating what is computed. The main remaining gap is usage context and filter semantics, but an agent can still understand what the tool returns and which optional filters it accepts.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline semantics are already supplied by the input schema. The description only restates that space, label, and date range are optional and adds no syntax, defaults, or filtering nuances 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?
The description makes the resource and metric set very concrete: counts by status/type/source/month, averages, distributions, favorites, imports, drafts, and per-label stats. It is clearly an aggregate testimonial-statistics tool. It does not explicitly distinguish itself from siblings such as get_account_overview, so it falls 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?
The only usage-related text is 'Optional space, label and date range,' which describes filters rather than when to choose this tool over alternatives. There is no explicit when-to-use guidance and no exclusion or alternative named despite nearby sibling tools like get_account_overview and list_testimonials.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_testimonialGet one testimonialBRead-onlyInspect
Everything about one testimonial: full text, reviewer details, source link, images, labels, video, and its moderation history.
| Name | Required | Description | Default |
|---|---|---|---|
| testimonial_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=false, and destructiveHint=false, so the safety profile is covered. The description adds value by enumerating what is returned (including moderation history), but says nothing about auth needs, error behavior, or pagination.
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 waste; the return-contents enumeration is compact. Slightly list-heavy but appropriately sized.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description usefully previews the return payload, which is the main thing an agent needs. However it omits how to source the ID and any failure modes, leaving a modest gap for a lookup 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 0% and the description never explains testimonial_id — no format, source, or how to obtain it. The parameter name is self-evident, but the description does nothing 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?
States a clear verb+resource ('get one testimonial') and enumerates the returned payload (text, reviewer details, source link, images, labels, video, moderation history). The word 'one' implicitly separates it from list_testimonials, but 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?
There is no when-to-use guidance, no mention of obtaining a testimonial_id, and no comparison to list_testimonials or get_stats. Usage context must be entirely inferred from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
import_from_urlImport every review from a review pageAInspect
Our server fetches EVERY review (all pages, with reviewer photos and review images) from a public review page and imports them into a space, exact words, duplicates skipped. Works directly, with no token, for G2, Trustpilot, Capterra, Yelp, Google Maps, Google Play, Facebook, Amazon and the App Store (full history: our server runs a scraper on testimonials.ltd's own account; paid plans unlimited, free workspaces 25 reviews a month), the Chrome Web Store and the Shopify App Store. For Tripadvisor, Product Hunt and Clutch it answers status "use_another_route" with what to do instead (Claude's own fetch, or an optional apify_token from the user's own Apify account), as it does when the monthly allowance is used up. Large imports take several calls: each call works for about 40 seconds and returns progress ("Imported N of M total reviews") and a job_id; call again with just job_id until status is "done". Use preview=true first to show the user the source, total and a sample.
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | Public review page, app store or Maps link | |
| stop | No | ||
| job_id | No | Continue (or with stop=true, stop) an earlier import | |
| method | No | auto | |
| status | No | approved | |
| preview | No | Only read the first page and return total + sample; imports nothing | |
| space_id | No | Space id, slug or name. Optional when the account has one space. | |
| countries | No | App Store storefront codes to include (default: the link's country plus the largest storefronts), or ["all"] | |
| min_rating | No | Leave out reviews below this many stars | |
| apify_token | No | Optional: the user's own Apify API token (never stored), billed to their Apify account. Not needed for G2, Yelp, Google Maps, Google Play, Facebook, Amazon or the App Store unless the monthly allowance is used up. When used, pass it again on every job_id call. | |
| copy_images | No | ||
| max_reviews | No | Optional cap; default is everything | |
| low_rating_status | No | Status for 1 to 3 star reviews (e.g. pending), overriding status |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover the safety profile, but the description adds substantial context they do not: duplicates are skipped, each call runs ~40 seconds and returns progress plus a job_id, free workspaces are capped at 25 reviews/month, the apify_token is never stored and is billed to the user's own Apify account, and it must be re-passed on every job_id call.
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 front-loaded with the core action and every clause carries information (supported sites, rate limits, continuation, fallbacks). It is a dense run-on paragraph with heavy parentheticals rather than scannable structure, which slightly hurts readability.
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 mutation tool with no output schema, the description covers the essential operational facts: the paginated job_id loop, the preview step, allowance limits, and the fallback route. Minor gaps remain (error behavior beyond 'use_another_route', space_id resolution).
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 69%, so most params are documented structurally, but the description adds real semantics the schema lacks: the job_id/stop continuation protocol, why apify_token is unnecessary for certain sites, and the preview-first workflow. It does not explain status, low_rating_status, countries, or method beyond the enum values.
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 ('fetches EVERY review ... from a public review page and imports them into a space') with scope qualifiers (all pages, photos, duplicates skipped). An agent can immediately distinguish this URL-scraping importer from the sibling import_testimonials.
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 conditions: use preview=true first, and for Tripadvisor/Product Hunt/Clutch (or exhausted allowance) the server returns 'use_another_route' with the alternatives (Claude's own fetch or an apify_token). It also explains the multi-call continuation via job_id. It stops short of contrasting with the sibling import_testimonials tool, so it is not a full 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
import_testimonialsImport reviewsAIdempotentInspect
Bulk-import reviews from any platform (Trustpilot, G2, Capterra, Google, Yelp, App Store, Product Hunt, ...) into a space. Up to 100 per call. Text must be the customer's exact words (never summarise or fix it). Duplicates (same review id, link, or same text and author) are skipped. Reviewer photos and review images are copied to the user's own storage. Run with dry_run=true first to preview. status sets whether they go live (approved), into the approval queue (pending) or stay hidden; a review can override it with its own status.
| Name | Required | Description | Default |
|---|---|---|---|
| status | No | approved | |
| dry_run | No | ||
| form_id | No | Optional form to file them under | |
| reviews | Yes | ||
| space_id | No | Space id, slug or name. Optional when the account has one space. | |
| copy_images | No | ||
| skip_duplicates | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations: it discloses the 100-per-call batch limit, deduplication rules (which is the mechanism behind idempotentHint), that reviewer photos/images are copied into the user's own storage, and how status values map to live/approval-queue/hidden. That is exactly the kind of side-effect detail annotations cannot carry.
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 and volume cap, then incremental detail; nearly every sentence adds a distinct rule (exactness, dedup, image copying, dry-run, status). The status sentence is slightly dense but not wasteful.
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 7-parameter, 100-item bulk mutation with no output schema and low schema coverage, the description supplies the operational essentials an agent needs to call it safely: preview-first guidance, dedup behavior, storage side effects, and status semantics. Remaining gaps (space_id/form_id, per-item validation failures) are minor.
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 29%, so the description must compensate, and it does for the highest-impact params: dry_run, status (all three enum meanings plus per-review override), copy_images (photos copied), skip_duplicates (duplicates skipped), and reviews content policy (exact words, up to 100). Only space_id and form_id remain unexplained, which is a modest gap rather than a failure.
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 ("Bulk-import reviews") and names the target container ("into a space"), listing concrete source platforms. It is clearly distinguishable from siblings like import_from_url (single URL scrape) and the list_/get_testimonial 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?
Gives a concrete operational rule ("Run with dry_run=true first to preview") and conditions under which items are skipped (duplicates by id, link, or text+author). It does not explicitly route to an alternative sibling such as import_from_url or moderate_testimonials, but the context is clear enough to select correctly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_formsList collection formsCRead-onlyInspect
Collection forms with their public share link (where customers leave a testimonial).
| Name | Required | Description | Default |
|---|---|---|---|
| space_id | No | Space id, slug or name. Optional when the account has one space. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=false, so the safety profile is covered. The description adds useful context about what the returned items contain (forms coupled with their public share link), but says nothing about pagination, ordering, or result size, which is material for a list 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?
One short sentence with no filler and the key detail (the public share link) front-loaded. It is efficient, though its fragmentary form leaves the action implicit.
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 one-parameter read-only list tool with no output schema and a fully documented parameter, the description covers the shape of the results adequately. However, it omits pagination/volume behavior and any routing guidance against closely related siblings, which would help an agent invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the space_id description already explains it accepts an id, slug, or name and is optional when the account has one space. The description contributes no additional meaning about space_id or scoping, so the 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?
The phrase names the resource (collection forms) and its payload (public share link where customers leave testimonials), which hints at the operation, but it is a noun fragment with no verb — the agent must rely on the tool name and title 'List collection forms' to know it retrieves rather than creates. It also does not distinguish itself from siblings like get_share_links or list_widgets that plausibly return overlapping data.
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 statement of when to use this tool, no prerequisites, and no mention of alternatives such as get_share_links for link-only retrieval or list_spaces for space enumeration. The agent must infer usage entirely from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_labelsList labelsBRead-onlyInspect
The account's labels (tags) with how many testimonials carry each, how many are live, and their average rating. Optional space. Tip: a collection link with ?tag= (or the collection widget's trigger(event, {tags: [...]})) labels new reviews automatically.
| Name | Required | Description | Default |
|---|---|---|---|
| space_id | No | Space id, slug or name. Optional when the account has one space. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is covered. The description adds useful return-value context about what label data is included, but does not discuss permissions, rate limits, or output shape beyond the listed metrics.
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 return description is front-loaded and compact. The collection-link tip is useful context but is somewhat tangential to selecting and invoking this specific 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?
There is no output schema, so the description appropriately explains the returned label metrics. For a simple read-only list tool with one fully documented optional parameter, this is nearly complete, though missing explicit alternatives guidance keeps it from 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 description coverage is 100%, and the single optional space_id parameter is fully documented in the schema. The description's 'Optional space' reinforces the optionality but adds no syntax or semantic detail 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?
The description clearly states the resource (labels/tags) and the specific returned data: testimonial counts, live counts, and average rating. It does not explicitly distinguish itself from siblings like tag_testimonials or list_testimonials, 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?
The only usage guidance is 'Optional space' and a tip about collection link tagging behavior. It does not explain when to use this tool versus alternatives such as tag_testimonials or list_testimonials, nor does it state any exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_spacesList spacesARead-onlyInspect
Every space with testimonial counts by status, form and widget counts, and its wall of love URL.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=false, so safety is covered; the description's added value is disclosing the return content (counts by status, form/widget counts, wall-of-love URL). With no output schema present, that return-shape context is genuinely useful, though it stops short of mentioning pagination or ordering.
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 parallel list ('testimonial counts by status, form and widget counts, and its wall of love URL') is slightly compressed and takes a beat to parse, but 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?
For a no-param, no-output-schema read tool the description covers the essentials by naming the returned fields. It omits whether things like space name/id or empty spaces are included, which a consumer would need, but the gap is minor.
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 tool takes zero parameters, so there is nothing for the description to disambiguate. Baseline 4 applies; no parameter meaning is missing or contradicted.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the resource (spaces) and enumerates the payload (testimonial counts by status, form/widget counts, wall-of-love URL), which sets it apart from siblings like list_forms, list_widgets, and list_testimonials. It never uses an explicit verb like 'list', but 'Every space with...' makes the operation 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?
For a zero-parameter list tool the usage is largely implied by the name, and no alternatives or when-not-to-use conditions are offered. There is no guidance linking it to get_account_overview or other aggregate reads, so the agent must infer when to reach for it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_testimonialsFind testimonialsBRead-onlyInspect
Search, filter and sort testimonials. Status "hidden" means rejected (not shown on widgets); "draft" means a reviewer started but never sent it. Long texts are shortened unless full_text is true; "words" is always the full word count. Paginate with offset.
| Name | Required | Description | Default |
|---|---|---|---|
| sort | No | newest | |
| label | No | Label name | |
| limit | No | ||
| offset | No | ||
| search | No | Case-insensitive match on text, reviewer name, title or company | |
| status | No | all | |
| favorite | No | ||
| has_text | No | false = rating-only testimonials | |
| space_id | No | Space id, slug or name. Optional when the account has one space. | |
| full_text | No | ||
| max_rating | No | ||
| min_rating | No | ||
| created_after | No | Date, e.g. 2026-01-01 | |
| imported_only | No | ||
| created_before | No | Date, e.g. 2026-06-30 | |
| source_platform | No | e.g. google, g2, trustpilot, capterra, direct | |
| testimonial_type | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish a safe read-only profile, and the description adds real behavioral value on top: it disambiguates status values ('hidden' = rejected, 'draft' = abandoned review), discloses that long texts are truncated unless full_text is true, and notes 'words' always reflects the full count. Pagination via offset is also stated.
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, front-loaded with the core action and free of filler. Efficient and readable, though quite terse relative to the size of the parameter surface it needs to support.
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 list tool with no output schema, the description usefully flags a couple of return-shape quirks (text truncation, 'words' field), but with 17 parameters and no output schema it omits most parameter behavior and any picture of the returned record fields. Adequate but incomplete.
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 17 parameters and only 41% schema description coverage, the description compensates for a few key ones (status, full_text, offset) but leaves most undocumented, including sort, limit, search, and the rating/date filters. It adds meaningful semantics for what it covers but is far from complete against a very wide schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb set (search, filter, sort) and the resource (testimonials), so the operation is unambiguous. It doesn't explicitly differentiate from siblings like get_testimonial or moderate_testimonials, but the list/query intent is clear 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?
No guidance on when to use this tool versus alternatives such as get_testimonial (single fetch) or moderate_testimonials. The status explanations describe domain semantics, not tool selection, so there are no when/when-not conditions or sibling routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_widgetsList widgetsARead-onlyInspect
Widgets (wall, carousel, quote, video, marquee, avatars, collage, popup, collection) with where they were last seen and how many testimonials are pinned.
| Name | Required | Description | Default |
|---|---|---|---|
| space_id | No | Space id, slug or name. Optional when the account has one space. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=false, and destructiveHint=false, so the safety profile is covered. The description adds useful context about returned fields, but does not mention pagination, result limits, or auth requirements 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?
The description is a single, front-loaded sentence with no filler. The parenthetical widget list earns its place by clarifying the resource scope.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only list tool with one fully documented optional parameter and no output schema, the description covers the resource and key return fields. It leaves minor gaps around pagination and complete return shape, but the annotations and schema carry most of the remaining load.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the single optional space_id parameter is fully documented in the schema. The description adds no parameter-specific syntax or filtering behavior beyond what the schema already provides, 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?
The description names the resource (widgets), enumerates the concrete widget types, and states the returned metadata (last seen location, pinned testimonial count). This is specific enough to distinguish it from sibling listing tools such as list_testimonials, list_spaces, and list_forms.
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 alternatives, nor does it state exclusions or prerequisites. The intended use is implied by the resource name, but no routing information is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
moderate_testimonialsApprove or hide testimonialsAIdempotentInspect
Bulk moderation. approve = live on widgets and the wall; hide = rejected, kept but never shown (reversible); pending = back to the approval queue. Approving a draft promotes it.
| Name | Required | Description | Default |
|---|---|---|---|
| note | No | Optional note for the audit log | |
| action | Yes | ||
| testimonial_ids | Yes | Testimonial ids (from list_testimonials). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare idempotentHint=true and destructiveHint=false; the description reinforces this by stating hide is reversible and data is 'kept but never shown', and adds the non-obvious side effect that approving a draft promotes it. It does not cover permission requirements, the 200-item cap, or partial-failure 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?
Four short clauses front-loaded with 'Bulk moderation' then mapping each action to its effect; no filler, and the reversibility/promotion caveats are placed exactly where they matter.
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 mutation tool with no annotations gap (idempotent/destructive already declared) and no output schema, the description covers state transitions and reversibility well. It omits authorization context and limits, but nothing essential for correct invocation 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 67%, and the description supplies the semantic meaning of the enum values that the schema lists bare, which is the key interpretation gap for this tool. The 'note' audit-log parameter is only documented by the schema, not the 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?
The tool is a bulk moderation verb applied to testimonials, and the description spells out the concrete outcome of each action ('live on widgets and the wall', 'kept but never shown', 'back to the approval queue'). This is materially more specific than the sibling 'update_testimonial' or 'delete_testimonials' and lets an agent tell moderation apart from 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?
Each enum value is explained so the agent knows which action accomplishes which state change, and the note that 'hide' is reversible implies when to prefer it over a destructive delete. It stops short of explicitly naming alternatives such as delete_testimonials for permanent removal or stating bulk-size constraints.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tag_testimonialsTag testimonialsBIdempotentInspect
Add or remove labels by name on many testimonials. Missing labels are created.
| Name | Required | Description | Default |
|---|---|---|---|
| add_labels | No | ||
| remove_labels | No | ||
| new_label_color | No | slate | |
| testimonial_ids | Yes | Testimonial ids (from list_testimonials). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare this is a non-readonly, non-destructive, idempotent write. The description adds one genuinely useful behavior beyond them: missing labels are auto-created. It still omits what happens when a remove_labels target doesn't exist, the 200-item cap, and any auth/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?
Two tight sentences, front-loaded with the core action and followed immediately by the side effect. 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?
For a 4-parameter bulk mutation with no output schema, the description covers the action and one side effect but leaves the per-parameter limits, partial-failure behavior, and removal semantics 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 25% (only testimonial_ids is documented), so the description must compensate more. "by name" usefully clarifies that add_labels/remove_labels take label names, and "missing labels are created" hints at new_label_color's role, but the color enum's exact purpose is never stated.
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 pair (add/remove) on a named resource (labels on testimonials), which is enough to distinguish it from list_labels or delete_testimonials. It does not explicitly name a sibling, but the action 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?
"on many testimonials" implies a bulk operation, but the description never says when to use this versus update_testimonial or list_labels, and gives no prerequisites or exclusions. Guidance is inferred at best.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_testimonialEdit a testimonialAIdempotentInspect
Edit reviewer details, rating, source, headline or favorite. Only pass text to fix an obvious typo when the user explicitly asks: never reword a customer's testimonial.
| Name | Required | Description | Default |
|---|---|---|---|
| text | No | ||
| rating | No | ||
| favorite | No | ||
| source_url | No | ||
| review_title | No | ||
| reviewer_name | No | ||
| reviewer_title | No | ||
| testimonial_id | Yes | ||
| source_platform | No | ||
| reviewer_company | No | ||
| reviewer_photo_url | No | http(s) image link, or "" to clear |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations establish the safety profile (write, idempotent, non-destructive), so the bar is lower. The description adds a genuine behavioral constraint beyond the annotations: edits to the testimonial body are restricted to typo fixes and must never reword a customer's words. It omits auth requirements and partial-update 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?
Two tight sentences with no filler, and the field list is front-loaded ahead of the constraint. Every clause earns its place, though the second sentence packs two distinct rules (typo-only and no rewording) into one.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an 11-parameter mutation tool with 9% schema coverage and no output schema, the description is under-specified: most parameter semantics are absent and no return/effect behavior is described. Annotations cover safety, and the typo rule is valuable, but the tool's complexity is not fully matched.
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 9% (just reviewer_photo_url), so the description carries most of the burden and only partially compensates: it names rating, source, headline, favorite and text, but leaves reviewer_name, reviewer_title, reviewer_company, source_platform, testimonial_id and photo_url semantics unaddressed. It adds real meaning for the text parameter via the typo rule.
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 (Edit) plus resource (testimonial) and enumerates the editable fields (reviewer details, rating, source, headline, favorite), so the agent knows exactly what is mutable. It does not, however, distinguish this from sibling mutators like moderate_testimonials or tag_testimonials, leaving sibling routing to 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?
Provides one strong, explicit usage rule for the text parameter ('Only pass text to fix an obvious typo when the user explicitly asks'). However, it gives no when-to-use versus-when-not guidance at the tool level, nor does it route the agent toward alternatives such as moderate_testimonials or delete_testimonials.
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.
2 tool updates
- Changed
get_stats1 field changed- added
Input schema / properties / labelAdded value: +{ + "description": "Only testimonials carrying this label (name)", + "type": "string" +}
- Changed
list_labels1 field changed- added
Input schema / properties / space_idAdded value: +{ + "description": "Space id, slug or name. Optional when the account has one space.", + "type": "string" +}
16 tool updates
- First observed
delete_testimonials - First observed
feature_testimonials - First observed
get_account_overview - First observed
get_share_links - First observed
get_stats - First observed
get_testimonial - First observed
import_from_url - First observed
import_testimonials - First observed
list_forms - First observed
list_labels - First observed
list_spaces - First observed
list_testimonials - First observed
list_widgets - First observed
moderate_testimonials - First observed
tag_testimonials - First observed
update_testimonial
Publisher details
- Operator
- testimonials.ltd · Publisher source
- Operator website
- https://testimonials.ltd · Publisher source
- Vendor relationship
- First-party · Publisher source
- Documentation
- https://testimonials.ltd/integrations/claude · Publisher source
- Trust center
- Not available
- Restrictions
- Requires a testimonials.ltd account. · Publisher source
Related MCP Connectors
Read-only tools for agency testimonial walls: list clients, testimonials, and embed widgets.
Read REVIEWS.io product and company reviews, ratings, UGC, surveys; tag reviews; invite one buyer.
Analyze customer feedback at scale — reviews, surveys, calls. AI-powered themes and sentiment.
Read, tag, assign and report on your customer reviews from 200+ platforms in Reviewflowz.
Related MCP Servers
- AlicenseAqualityBmaintenanceEnables AI agents to read, verify, and submit testimonials in a private Testimonial.to Space, including separate customer-consent handling for text and video imports, requested email invitations, and reviewed ordered batches. Also supports previewing exact tasks and exporting one bounded private array of testimonials.1026 npmAGPL 3.0
- AlicenseAqualityAmaintenanceEnables AI agents to manage Senja testimonials and invites through 12 shared tools, covering listing, reading, importing, approving, tagging, deleting, sending form invites, inspecting link and account data, and running exact reviewed batches and bounded private exports across isolated project profiles.1219 npmAGPL 3.0
- AlicenseAqualityAmaintenanceFeedback ingestion for AI agents. Record your screen and talk; your agent does the rest — files the bugs, writes the spec, builds the backlog.9455 PyPI32MIT

studiomeyer-crmofficial
AlicenseNot gradedqualityBmaintenanceAI-native CRM with 33 tools. Pipeline, leads, health scores, revenue analytics, CSV import/export.4MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.