recommend
One verdict for a task, with the pick, the alternative and its condition, what to avoid, and the traps at the tested version.
Call this before adding a dependency. You describe what you are building and the constraints that make one answer right; the server returns the verdict a reviewer wrote for that shape of problem, or says it has none.
Arguments
| Name | Type | Limits | Required | Default |
|---|---|---|---|---|
task | string | 1 to 300 characters, trimmed | yes | none |
constraints | array of strings | up to 8 items, each 1 to 60 characters | no | none |
Both are matched as text. The server joins task and every constraint into one query, runs a Postgres full-text search over the questions and answers of verdicts of kind recommend, and falls back to matching the words against a verdict's context tags. The best-ranked row wins; ties go to the most recently verified. Extra arguments are refused by the schema.
Constraints are worth passing. "auth for a Next.js app" describes half a dozen correct answers; "solo, free tier, own the users table" describes one.
Request
{
"name": "recommend",
"arguments": {
"task": "auth for a Next.js app, solo, free tier",
"constraints": ["own the users table", "no per-MAU pricing"]
}
}Response
VERDICT auth for a Next.js app, solo dev, free tier, email + Google login
PICK Better Auth 1.7.3: Better Auth. You own the users table in your own Postgres, the organization and api-key plugins cover teams and keys without a second vendor, and there is no per-monthly-active-user bill when you grow.
ALT Clerk: Clerk gives you hosted sign-in UI, SSO, and an admin panel in an afternoon.; wins when you need SSO or hosted UI this week and accept per-MAU pricing and a vendor-owned user store
AVOID NextAuth (Auth.js): NextAuth / Auth.js v4: the v5 migration has stalled since 2025, the session callback silently drops custom fields unless typed twice, and the docs describe two incompatible APIs at once.
TRAPS (2)
[622e042e] major: Role or plan changes do not reach the session until the cookie cache expires (default 5 minutes).
[90232128] minor: Drizzle adapter cannot find plugin tables (organization, apikey) and fails at runtime, not at build.
VERIFIED 2026-09-08 by wellworn reviewer · recheck 2027-01-06 · sources 3
remaining: 55Your first verdict reads that block line by line. Lines that have nothing to say are omitted: a verdict with no alternative has no ALT line at all.
When there is no verdict
no verified verdict yet for "a task nobody has asked about". Browse https://wellworn.dev/verdicts or request one at https://wellworn.dev/request
remaining: 54This is a normal result, not an error, and it still costs a call. Treat it as permission to decide for yourself, not as a failure to retry.
Limit and error lines
| Line | Cause |
|---|---|
limit reached: no-key 60/60 today (resets …) | The anonymous daily cap for your address. Limits. |
limit reached: plan 2000/2000 this month (resets …) | The organization's monthly cap. |
MCP error -32602: Input validation error: … | task was empty, missing, or over 300 characters, or more than 8 constraints were passed. |
internal error (ref 4f2a9c1b); try again in a moment | The database or the render failed. The ref matches a line in the server log. |
What to do with the answer
Use PICK at the version in the line, not at latest, unless you check the difference. Read ALT's "wins when" clause against your own constraints before you accept the pick: it is the field that tells you whether you are the exception. Treat every TRAPS line as a change to make now rather than a bug to hit later. If the first line says [RECHECK], keep the shape of the answer and verify the version numbers yourself.