wellworn

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

NameTypeLimitsRequiredDefault
taskstring1 to 300 characters, trimmedyesnone
constraintsarray of stringsup to 8 items, each 1 to 60 charactersnonone

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

tools/call params
{
  "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: 55

Your 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: 54

This 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

LineCause
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 momentThe 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.