submit_trap
Report a breakage and its fix from inside your agent; the only tool that needs a key, and the only one that writes.
Every other tool reads. submit_trap writes one row into the review queue, and nothing you send is served until a person reproduces it. Call it the moment you lose an hour to something, while the version and the symptom are still exact.
Arguments
| Name | Type | Limits | Required | Default |
|---|---|---|---|---|
library | string | 1 to 80 characters | yes | none |
version | string | 1 to 40 characters | yes | none |
symptom | string | 1 to 400 characters | yes | none |
fix | string | 1 to 1,200 characters | yes | none |
evidence_url | string | valid URL, http or https, up to 300 characters | no | none |
evidence_url is checked twice, as a URL and against the scheme, so a bare domain or a file: path is refused by the schema before the tool runs.
Request
{
"name": "submit_trap",
"arguments": {
"library": "better-auth",
"version": "1.7.3",
"symptom": "Role changes do not reach the session until the cookie cache expires.",
"fix": "Disable session.cookieCache for role-gated apps, or call auth.api.getSession with disableCookieCache on the routes that check roles.",
"evidence_url": "https://github.com/better-auth/better-auth/issues/1234"
}
}Send it with your key on the Authorization header:
curl -sX POST https://mcp.wellworn.dev/mcp \
-H 'content-type: application/json' \
-H 'accept: application/json, text/event-stream' \
-H "authorization: Bearer $WELLWORN_KEY" \
-d @submission.jsonResponse
submitted <first 8 characters of the submission id>; a reviewer will verify it. Thank you.
remaining: <calls left this month>The value is the first eight characters of the submission id. Keep it: it is what a reviewer refers to when they write back or ask for more detail.
Without a key
key required: create a free key at https://wellworn.dev/keys to submit trapsThis answer is free. The check runs before the limiter, so an anonymous submit_trap costs nothing against your daily allowance. A free key at wellworn.dev/keys is enough; submissions are not a paid feature. The reason a key is required is attribution: a submission is attached to an identity a reviewer can write back to.
Limit and error lines
| Line | Cause |
|---|---|
key required: create a free key at https://wellworn.dev/keys to submit traps | No Authorization header, or the header carried something the server does not treat as a key. |
invalid key with HTTP 401 | The bearer token was sent but does not resolve to a key. The whole request is refused; no tool runs. |
MCP error -32602: Input validation error: … | A required field missing or empty, a field over its length, or an evidence_url that is not http or https. |
limit reached: … | Submissions are metered like reads and share the organization's monthly cap. |
internal error (ref …); try again in a moment | The write failed. Nothing was recorded; send it again. |
What makes a submission accepted
A reviewer has to reproduce it. What makes that possible: an exact version rather than a range you guessed, a symptom written as the thing you observed rather than the thing you concluded, a fix someone can paste, and a link to an issue, a commit, or a changelog entry. What makes it hard: "sometimes breaks", a fix that is really a workaround for a different bug, and a symptom that is already three inferences past the error message.
Expect days, not minutes. Accepted submissions land as a trap in review status, become served when a reviewer publishes them, and carry the review path described in how verdicts are made.