A feedback collection and customer engagement platform with AI-powered automation (Quinn) for handling support conversations, routing feedback, and managing feature requests
Quackback's MCP tool definitions are severely underdeveloped. Of 8 tools, only 1 (close_conversation) has a visible input schema in the source code. The remaining 7 tools have minimal descriptions (under 50 chars) with no detectable input schemas, parameter types, or output documentation. Tool names are action-oriented (search, set_attribute, create_ticket, etc.) which is correct, but lack the descriptor detail needed for LLM disambiguation. Two tools (search and search_knowledge) appear to be duplicates serving the same function, violating the single-responsibility principle. No error handling guidance is visible. No pagination, no structured output documentation, no parameter constraints. This server appears to be a stub or very early-stage implementation rather than a production-ready agent interface.
Capture feedback
Close a conversation with a specified reason
Create a ticket
End a conversation
Find an answer
Find an answer (historical ledger rows predate the tool's rename to `search`)
Update customer details
Share a feedback post
7 of 8 tools lack detectable input schemas. Only close_conversation shows a schema in source code.
Tool descriptions are trivially short (15-20 chars).
Duplicate tools: search and search_knowledge appear to serve the same intent (find an answer). Per composition pattern, this violates single responsibility and forces the LLM to reason about which to call.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | F | 41 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 0 | - | v1 |
No parameter descriptions. Even close_conversation (the only tool with visible schema) lacks descriptions for its 'reason' parameter beyond a bare example. LLMs cannot infer parameter semantics from names alone.
No error handling or recovery guidance visible. Tools returning errors provide no actionable next steps for the LLM.
No output schemas documented. The LLM has no visibility into what fields are returned, what types they have, or how to chain results to downstream tools.
No indication of pagination support. Tools like search_knowledge likely return multiple results but no limit/offset/cursor parameters are visible.
Write tools (set_attribute, create_ticket, capture_feedback, share_post, close_conversation) lack explicit mention of their destructive nature in descriptions. LLMs need to know which calls modify state and cannot be safely retried.