MCP tool for accessing Async Praise/Rebuke public feedback APIs
AsyncPraiseRebuke has 6 tools with basic descriptions and Zod schemas for parameters. However, critical gaps limit production readiness: (1) Tool names lack clear action verbs, 'listPublicReviews' and 'getTopRatedLocations' are acceptable, but 'discoverAndLogBusinessEmail' violates single-responsibility (combines discovery AND logging); (2) Parameter descriptions are minimal (10-30 chars), below the 72-char baseline for A+ tools; (3) Output schemas are undocumented, responses are JSON-stringified text, not structured objects; (4) No error handling guidance, API failures return raw errors without recovery hints; (5) Two tools (listPublicReviews, getTopRatedLocations) have empty input schemas but lack pagination/limit parameters despite potentially returning large datasets. Tool definitions are explicit in src/main.ts, so no inference penalty applies.
Discover contact emails via ClicknContact and log new entries to the directory
Return top and lowest rated feedback locations
Get all available public feedback reviews
Submit a new business email discovered by an agent or a user
Search for a business email by establishment name
Search for reviews by partial or full business name
Tool 'discoverAndLogBusinessEmail' violates single-responsibility principle by combining discovery and logging in one tool. Should split into 'discoverBusinessEmails' and 'logBusinessEmail' (already exists separately). LLMs cannot compose these concerns independently.
Output schemas are undocumented. All tools return JSON-stringified text wrapped in {type:'text', text:...} without declaring the structure of the underlying data. LLMs cannot plan downstream calls or extract fields reliably.
Parameter descriptions are too brief (10-30 chars vs. 72-char baseline). E.g., 'Business name to search for' lacks context on format, length, or when to use this tool vs. searchBusinessDirectory. Descriptions should explain WHAT, WHEN, and any prerequisites.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 52 | 2026-07-28+ | v2 |
No error handling guidance. API failures (e.g., 'Invalid API key', 'Business not found') return raw errors without recovery hints. LLMs cannot determine if they should retry, ask the user, or try an alternative tool.
No pagination or result limits. Tools returning lists (listPublicReviews, getTopRatedLocations, searchReviews) lack limit/offset parameters and do not cap results. Large datasets will blow context windows and degrade LLM reasoning.