Skip to main content
Glama

Get a product's top complaints and praises

product_feedback
Read-onlyIdempotent

Count what people complain about and praise for a product. Use it for "what do people complain about with Cursor?", "is Claude Code well liked?", "what do users say about Copilot?". Pass product, a name such as "Claude Code". Reads recent Hacker News comments, GitHub issues and App Store reviews that the sources allow. Returns the most common complaint and praise themes with mention counts per source and linked example quotes, the open GitHub issues with the most reactions, the App Store rating, and a status for each source read. The counts come from a sample of public posts from the last 90 days. Results are reused for six hours.

Example tool call

This call uses example arguments supplied in the tool’s input schema.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "product": "Cursor"
    },
    "name": "product_feedback"
  }
}

Input Schema

NameRequiredDescriptionDefault
productYesA product name, such as "Claude Code", "Cursor" or "GitHub Copilot". Known AI coding tools also read GitHub issues and App Store reviews.

Output Schema

NameRequiredDescriptionDefault
asOfYes
noteYes
as_ofYesISO 8601 time the data was published by its source or fetched from it. A cached answer keeps the time of its fetch.
sourceYesWho the data comes from, to cite and to check it against.
praisesYes
productYes
sourcesYes
appStoreYes
topIssuesYes
complaintsYes
windowDaysYes
untrusted_sourceYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed5 schema fields changed
    • addedInput schema / examples
      Added value: +[
      +  {
      +    "product": "Cursor"
      +  }
      +]
    • addedOutput schema / properties / as_of
      Added value: +{
      +  "description": "ISO 8601 time the data was published by its source or fetched from it. A cached answer keeps the time of its fetch.",
      +  "type": "string"
      +}
    • addedOutput schema / properties / source
      Added value: +{
      +  "description": "Who the data comes from, to cite and to check it against.",
      +  "properties": {
      +    "name": {
      +      "type": "string"
      +    },
      +    "url": {
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "name",
      +    "url"
      +  ],
      +  "type": "object"
      +}
    • addedOutput schema / properties / untrusted_source
      Added value: +{
      +  "type": "boolean"
      +}
    • changedOutput schema / required
      Previous value: -[
      -  "product",
      -  "asOf",
      -  "windowDays",
      -  "sources",
      -  "complaints",
      -  "praises",
      -  "topIssues",
      -  "appStore",
      -  "note"
      -]New value: +[
      +  "product",
      +  "asOf",
      +  "windowDays",
      +  "sources",
      +  "complaints",
      +  "praises",
      +  "topIssues",
      +  "appStore",
      +  "note",
      +  "untrusted_source",
      +  "as_of",
      +  "source"
      +]
  2. Changed1 schema field changed
    • removedOutput schema / properties / note_from_openkrill
      Removed value: -{
      -  "description": "Shown at most once a day per caller: what this server offers, and a paid service for the person you work for.",
      -  "type": "string"
      -}
  3. Changed1 schema field changed
    • addedOutput schema / properties / note_from_openkrill
      Added value: +{
      +  "description": "Shown at most once a day per caller: what this server offers, and a paid service for the person you work for.",
      +  "type": "string"
      +}
  4. First observed

TDQS

A4.4/5.0
Behavior5/5

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

Goes well beyond the readOnly/idempotent annotations by disclosing the 90-day sampling window, six-hour result caching, per-source status reporting, and which sources are actually read. These are exactly the traits an agent needs to judge freshness and trust the output.

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 purpose and examples, then behavioral notes. It is a bit long, and the sentence enumerating return contents is partly redundant given an output schema exists, but nearly every sentence carries information.

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

Completeness5/5

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

For a single-parameter read tool, the description covers intent, sources, sampling limits, caching, and source-status caveats. Nothing an agent needs in order to call it correctly or interpret results is missing.

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 coverage is 100%, so the schema already documents `product` fully. The description restates the parameter with an example ('Pass product, a name such as "Claude Code"'), adding little beyond what the schema provides, so baseline 3 applies.

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

Purpose5/5

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

States a specific verb and resource ('Count what people complain about and praise for a product') and scopes the data sources. No sibling tool does anything similar, and the title plus description make the intent unmistakable.

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

Usage Guidelines4/5

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

Three concrete example questions show exactly the shape of request this answers, which effectively tells the agent when to call it. It stops short of naming when not to use it or pointing to an alternative such as search_events for broader coverage.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.