Feedback
POST /feedback: your agent reports a missing capability, a bug or a misleading doc from the call site, free and without a key, on the open Agent Feedback Protocol.
Agents are the heaviest users of this API, and they are the first to find what it gets wrong. When yours hits a missing capability, a bug, a misleading doc or an error that does not say what to do, it can report that in one structured call and move on. Reporting is free and needs no key.
RouterGrowth speaks the open Agent Feedback Protocol. Every report reaches the team as an issue, and a fix is drafted as a code change that a person reviews before it ships.
Find the endpoint
Every API error response carries the header:
Link: </feedback>; rel="agent-feedback"
The discovery document is at GET https://api.routergrowth.com/.well-known/agent-feedback.
Send a report
POST /feedback
curl -X POST https://api.routergrowth.com/feedback \
-H "Content-Type: application/json" \
-d '{"type": "missing_capability", "outcome": "blocked",
"goal": "Collect the last 50 G2 reviews of a competitor to find unhappy customers",
"message": "No capability returns G2 reviews for a product",
"endpoint": "reviews.g2",
"suggestion": "A reviews.g2 capability that takes a product URL and a limit",
"agent": {"name": "claude-code"}}'
| Field | Required | What to put in it |
|---|---|---|
type |
yes | missing_capability: no capability, provider, field or filter does the job. bug: a call failed or behaved against its docs. unclear_documentation: the docs or a hint were missing, ambiguous or wrong. unexpected_response: the call succeeded, but the data is wrong, stale or inconsistent. unhelpful_error: an error did not say how to fix the request. performance: latency, rate limits or pagination made the task impractical. other. |
goal |
yes | What you or your user were trying to get done, in plain words: the task, not the call. Up to 1,000 characters. |
message |
yes | What got in the way, specifically. Up to 4,000 characters. |
endpoint |
no | The capability, raw endpoint, MCP tool or path involved: contact.find, /v1/run. |
method |
no | The HTTP method, when endpoint is a path. |
outcome |
no | blocked (the task could not finish), degraded (it finished worse, slower or costlier) or completed (the report is a suggestion). |
expected, suggestion |
no | What you expected, and the change that would have let you succeed. A concrete suggestion helps most. |
workaround, workaround_description |
no | Whether you found a way around it, and which. |
request_id |
no | The run_id concerned, or the request_id of an error envelope. |
session_id |
no | One id shared by every report from the same task. |
agent |
no | Your client: name, version, model, framework. |
evidence |
no | status_code, the request you sent with secrets removed, and a response_excerpt. |
Any other field is refused. The answer is 202:
{"id": "fb_01K6...", "status": "accepted", "received_at": "2026-09-29T10:12:03.201Z"}
When the problem is already tracked, the answer adds known_issue with its title, its status (acknowledged, planned, in_progress, fixed or wont_fix) and a workaround when there is one. A 400 (invalid_feedback) names the field to fix. A 503 means the report was not stored: retry once, later.
Never put API keys, personal data or results in a report; describe the shape of the call instead. Keys, card numbers and email addresses are removed before a report is stored anyway. One client address can send 30 reports a minute and 300 an hour.
Over MCP
The feedback tool takes the same fields and answers the same way. It never charges and never runs a provider.
When to report
- An error whose message does not tell you what to do next.
- A run that succeeded with data you can show is wrong: a namesake's email, a stale job posting, a count that does not add up.
discoverhas nothing for the job, or the capability lacks the field or filter you need.- A doc or a hint that sent you the wrong way.
Report each problem once per task, then carry on. Do not report no_match on its own (the providers had nothing), a blocked run (a workspace control stopped it) or insufficient_balance. Those are answers, not bugs.
Reading this as an agent? This page as markdown: /docs/api/feedback.md ยท every page: /docs/llms.txt