Feefo MCP by usefulapi
Server Details
Read Feefo service, product and NPS reviews and ratings; reply to reviews.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-06-18
- URL
- Repository
- m190/usefulapi-mcp
- GitHub Stars
- 0
TDQS
Scored across 5 tools
Each tool targets a fairly distinct operation, but feefo_get_product_ratings overlaps with feefo_get_review_summary's product mode (both return product-level rating aggregates), which could cause misselection. feefo_get_review vs feefo_list_reviews is clearly differentiated by singular/plural and descriptions.
All tools follow a consistent feefo_<verb>_<noun> snake_case pattern (get, list, reply_to) applied uniformly to the Feefo domain. No mixed conventions or vague verbs.
Five tools is well-scoped for a review-management integration: read listings, single review, aggregates, per-product ratings, and one reply write. Each tool earns its place with no padding.
Core lifecycle is covered: list reviews, fetch one with thread, aggregate summary, product ratings, and reply. Minor gaps exist, such as no explicit date-range filtering on list_reviews beyond paging, and no way to view or manage already-published replies, but agents can work around these.
Available Tools
5 toolsfeefo_get_product_ratingsARead-onlyInspect
Average star rating per product SKU (products[] with rating, sku and optionally review_count). Filter by product_sku (comma-separated, leading/trailing * wildcards allowed) or parent_product_sku.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | ||
| summary | No | Also return merchant and pagination information | |
| page_size | No | Default 20, max 100 | |
| product_sku | No | ||
| review_count | No | Also return how many reviews back each rating | |
| since_period | No | Reviews counted from this period (default year) | |
| parent_product_sku | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
readOnlyHint=true already establishes the safety profile, so the bar is lower. The description adds real context — the per-SKU aggregation, the optional review_count field, and wildcard filter behavior — but omits defaults and pagination behavior (page_size default 20 / max 100, since_period default year) that affect how results are read.
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 clauses with no filler: the output shape comes first, then the filtering contract. The parenthetical listing of returned fields is dense but earns its place since there is 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?
With no output schema, the description has to carry the return contract, and it does so only partially — it names products[] fields but not the pagination envelope or what the 'summary' flag adds (merchant/pagination info). For a 7-parameter aggregate endpoint that is a noticeable but not fatal 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 coverage is only 57%, and the description fills the most important gap by documenting product_sku syntax (comma-separated, leading/trailing * wildcards) and the parent_product_sku alternative, neither of which has a schema description. It also clarifies the review_count flag is optional output. page and the since_period default remain untouched.
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 resource and aggregation level — average star rating per product SKU — plus the return shape (products[] with rating, sku, review_count). That implicitly separates it from the review-level siblings (feefo_list_reviews, feefo_get_review), though no sibling is named outright and no verb is 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?
It tells the agent how to narrow results (product_sku or parent_product_sku, comma-separated, wildcards) which implies the retrieval use case, but never says when to pick this over feefo_get_review_summary or feefo_list_reviews, and gives 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.
feefo_get_reviewARead-onlyInspect
Get one review by its id (the id of a service or product element from feefo_list_reviews), optionally with its full thread of replies.
| Name | Required | Description | Default |
|---|---|---|---|
| review_id | Yes | Review id, for example 6a3bbf38e4b0d81661f292b1 | |
| full_thread | No | Include replies and rating changes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint annotation already establishes the safety profile, so the description mainly needs to add context. It does add that replies can be pulled in as a thread, but says nothing about authorization, missing-id behavior, or payload differences when full_thread is set beyond the schema's own phrasing.
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 core operation comes first, followed by the id provenance and the optional thread mode. Every clause carries information an agent needs.
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-parameter read tool with readOnlyHint and no output schema, the definition covers what the tool does, where the id comes from, and the one optional behavior. It does not describe the returned object shape, which matters somewhat given there is no output schema, so it is not fully 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 coverage is 100%, so the baseline is 3, and the description earns one extra point by disclosing where review_id comes from (the id of a service or product element from feefo_list_reviews), which the schema does not say. It adds a small amount on full_thread ('full thread of replies') beyond the schema's 'Include replies and rating changes'.
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 review by its id', which is clearly distinct from the sibling feefo_list_reviews. It also carries the scope distinction (one review vs. a list), though it doesn't name the other siblings it could be confused with, such as feefo_get_review_summary.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly points to feefo_list_reviews as the source of the id, which is a real routing instruction an agent can act on. It also frames full_thread as an optional mode, but gives no guidance on when the summary or list tools are preferable, 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.
feefo_get_review_summaryARead-onlyInspect
Aggregate ratings for your Feefo account: average rating and star distribution (1 to 5 stars) for service and product reviews, merchant details, review counts. mode: all (default), service, product (needs product_sku or parent_product_sku) or nps (promoters/passives/detractors). Use since_period=all for lifetime figures (Feefo default: the last year).
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | all | |
| tags | No | Sales tag filter (comma-separated) | |
| media | No | Photo/video reviews filter | |
| origin | No | Origin/domain (needed when several domains share the feed) | |
| rating | No | Only reviews with this rating: 1-5 stars; for mode=nps the 0-10 score | |
| product_sku | No | Product SKU (required for mode=product unless parent_product_sku is set). Comma-separated list allowed. | |
| since_period | No | Reviews created within this period (Feefo default: year). Use 'all' for the whole history. | |
| order_reference | No | Only the review(s) for this order reference (needs the App Key) | |
| enhanced_insight | No | Include sentiment features/snippets (needs Smart Themes) | |
| customer_reference | No | Only reviews for this customer reference (needs the App Key) | |
| parent_product_sku | No | Parent product SKU (all its variants) | |
| unanswered_feedback | No | Whether unanswered low-rated feedback from the last 48 hours is included (Feefo default: include) | |
| since_updated_period | No | Reviews updated within this period | |
| empty_product_comments | No | Whether product reviews with no text comment are included |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so the safety profile needs no restating. The description adds genuinely non-obvious behavior: the implicit one-year default window, the requirement that NPS mode reports promoters/passives/detractors, and the SKU requirement that only applies in product mode. It does not mention rate limits or pagination, but aggregates presumably return a single payload.
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 dense sentences, front-loaded with what is aggregated, followed by the mode enumeration and the default-window caveat. Nothing is wasted, though the mode list inside the first sentence makes it slightly unpacked.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description compensates by naming what the response contains. With 14 parameters and 93% schema coverage, it correctly focuses on the one knob (mode) that changes the tool's behavior plus the important default. Filters like tags, media, and enhanced_insight are left entirely to the schema, which is acceptable but leaves a small gap for complex filtering scenarios.
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 93%, so the schema already documents nearly every parameter; the baseline is 3. The description still adds value by explaining the semantics of the mode enum (including what nps returns and the product-mode dependency) and by flagging the lifetime-vs-default choice for since_period, which the schema states but the combined guidance makes actionable.
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 and resource ('Aggregate ratings for your Feefo account') and enumerates the outputs (average rating, star distribution, merchant details, review counts). It is clear what the tool returns, but it never distinguishes itself from the sibling feefo_get_product_ratings, which appears to overlap for product-level aggregates.
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 usable conditional rule ('mode=product needs product_sku or parent_product_sku') and warns that the Feefo default is the last year, pointing to since_period=all for lifetime figures. However, it does not say when to prefer this tool over feefo_get_product_ratings or feefo_list_reviews, so the agent gets context but no exclusions or alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
feefo_list_reviewsARead-onlyInspect
List reviews of your Feefo account, newest updates first. mode: all (service + product, default), service (seller/service reviews), product (product reviews; give product_sku or parent_product_sku) or nps (Net Promoter Score responses). Returns summary.meta (count, pages) and reviews[] with ratings, comment text, customer display name and review threads. Page with page/page_size.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | all | |
| page | No | Page number (default 1) | |
| tags | No | Sales tag filter (comma-separated) | |
| media | No | Photo/video reviews filter | |
| origin | No | Origin/domain (needed when several domains share the feed) | |
| rating | No | Only reviews with this rating: 1-5 stars; for mode=nps the 0-10 score | |
| page_size | No | Reviews per page (default 20, max 100) | |
| full_thread | No | Include the full exchange (replies, rating changes) on each review | |
| product_sku | No | Product SKU (required for mode=product unless parent_product_sku is set). Comma-separated list allowed. | |
| since_period | No | Reviews created within this period (Feefo default: year). Use 'all' for the whole history. | |
| order_reference | No | Only the review(s) for this order reference (needs the App Key) | |
| enhanced_insight | No | Include sentiment features/snippets (needs Smart Themes) | |
| customer_reference | No | Only reviews for this customer reference (needs the App Key) | |
| parent_product_sku | No | Parent product SKU (all its variants) | |
| unanswered_feedback | No | Whether unanswered low-rated feedback from the last 48 hours is included (Feefo default: include) | |
| since_updated_period | No | Reviews updated within this period | |
| empty_product_comments | No | Whether product reviews with no text comment are included |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Consistent with readOnlyHint=true — nothing implies mutation. Beyond the annotation it discloses the sort order (newest updates first), the response envelope (summary.meta with count/pages, reviews[] with ratings, comment text, customer display name, threads), and how to paginate, which the annotations do not cover.
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-loads the action and ordering, then packs mode semantics and return shape into two compact sentences with no filler. The mode clause is a dense run-on but each segment 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?
For a 17-parameter, no-output-schema read tool, the description covers the essentials: what's returned, how to page, and the mode/sku dependency. It does not address default `since_period` behavior relative to `since_updated_period`, but that gap is minor given 94% schema coverage.
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 94%, so the schema already documents most of the 17 parameters including the conditional SKU requirement. The description mostly echoes that (mode values, product_sku/parent_product_sku dependency) rather than adding new semantics such as default-period interactions or filter interplay.
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 ("List reviews of your Feefo account") plus an ordering guarantee ("newest updates first"), and the mode enumeration establishes the breadth vs the single-review siblings. It never names feefo_get_review or feefo_get_review_summary, so the distinction from those siblings is left inferential 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 concrete conditional guidance: mode=product requires product_sku or parent_product_sku, and each mode's meaning is spelled out so an agent can pick one. It stops short of saying when to prefer this over feefo_get_review or feefo_get_review_summary (e.g. bulk retrieval vs single-record fetch).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
feefo_reply_to_reviewAInspect
WRITE: publish a public reply to a review on your Feefo account, optionally emailing the customer (notify_customer). Visible to the public on your Feefo page and not undoable through this server. review_id is the id of the service or product element returned by feefo_list_reviews (not the outer review url id). Confirm the wording with the user first.
| Name | Required | Description | Default |
|---|---|---|---|
| author | Yes | Name shown as the author of the reply, for example 'Customer Care Team' | |
| review_id | Yes | Id of the individual service or product review element | |
| response_text | Yes | The public reply | |
| notify_customer | No | Email the customer that you replied (default false) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already flag readOnlyHint=false and destructiveHint=false, but the description adds information annotations cannot convey: the reply is publicly visible on the Feefo page, cannot be undone through this server, and can trigger a customer email via notify_customer. This materially raises the agent's caution level above the non-destructive 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 tight sentences, front-loaded with the operation class and effect, then the ID caveat, then the confirmation requirement. No filler sentences and no repetition of schema-declared constraints.
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 output schema, it covers the safety profile, visibility, irreversibility, and the ID sourcing that most commonly causes failures. The only gap is that it never indicates what a successful call returns (reply id or status), which the agent must discover empirically.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds a real disambiguation for review_id: it is the id of the service or product element from feefo_list_reviews, not the outer review url id. It also frames notify_customer as an optional email, reinforcing the schema default.
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 an explicit verb and resource ("publish a public reply to a review") scoped to "your Feefo account", and the "WRITE:" prefix immediately separates it from the read-only siblings (get_review, list_reviews, summary). An agent can classify the operation 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 concrete workflow guidance: confirm wording with the user first, and get review_id from feefo_list_reviews. It names the sibling to use for the prerequisite step. It stops short of stating when NOT to reply (e.g., already-replied reviews or read-only accounts), so it is clear context rather than full when/when-not coverage.
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.
5 tool updates
- First observed
feefo_get_product_ratings - First observed
feefo_get_review - First observed
feefo_get_review_summary - First observed
feefo_list_reviews - First observed
feefo_reply_to_review
Related MCP Connectors
Analyze customer reviews: sentiment, emotion, topics, themes, digests, and drafted replies.
Writes replies to Google, Yelp and other customer reviews, and texts asking for a review.
Read Google reviews and stats, draft AI replies, publish the ones you approve, request reviews.
Read, tag, assign and report on your customer reviews from 200+ platforms in Reviewflowz.
Related MCP Servers
- AlicenseNot gradedqualityFmaintenanceApproved public replies to customer reviews. An assistant can only send a reply that matches stored wording. A 14-day trial, then Pro. The price is only at checkout.7 npmMIT
- FlicenseNot gradedqualityBmaintenanceEnables retrieval of Trustpilot reviews as structured JSON, including ratings, dates, replies, and company metrics, with MCP support for AI agents.-

ReputeMap MCPofficial
AlicenseNot gradedqualityCmaintenanceEnables AI agents to manage Google Business Profile reviews, including a filterable review inbox, per-location stats, and honest review-request campaigns.206 npmMIT- AlicenseAqualityDmaintenanceEnables AI-assisted user feedback collection and management via a web interface, with MCP integration for automated replies and tool execution.12 npmMIT
Glama MCP Gateway
Add one secure layer between your agents and this server.