Grill
Grill lets you get an outside AI judge's verdict on a decision, retrieve deeper follow-ups, and later look back at how the call turned out.
Send a decision, plan, or forecast as stated with chat context to an outside judge from a different company; optionally mark it big, identify the author family, or ask the user's own question.
Receive a short verdict/falsifier note and fetch more challenge, decision options, a full report, or a deeper dive when requested.
Collect a still-running grill by job id or the latest grill, waiting up to 45 seconds.
Look back at past decision records by scoring them against outcomes or showing where calls changed after a challenge, without storing or sending data.
Enables the weekly decision review to read connected Gmail messages to identify decisions made during the week.
Enables the weekly decision review to read connected Google Calendar events to identify decisions made during the week.
Allows storing and reading the decision log in a chosen Google Drive folder for the weekly review.
Allows storing and reading the decision log in a chosen Notion database for the weekly review.
Grill: grill your AI before you send it to your boss
Hear the strongest case against your plan, then decide for yourself.
Setup guide: grillyour.ai See it first: four made-up decisions, grilled
Tell the assistant you think with, "grill this": Claude, ChatGPT, Copilot, Gemini, Grok or Muse. It sends the decision as you said it. An outside judge, a model from a different company, comes back with a short note: one verdict line, then one short line naming the question that would change the call, then the sharpest point and one cheap test. The verdict, the point and the test stay within about 50 words. The extra line is at most about 25 words, and it never comes before the verdict. Say more, options, or your call when you want the rest. A thin line gets a quick take and one question, not a refusal. A record is written only after you answer, and a percent is optional. Grill does not store it on the installed tool.
Verdict: shaky. The plan assumes customers stay at the new price, and nothing in it tests that. Falsifier: show the new price to one in ten new signups for two weeks, and compare how many start paying.
What Grill promises
The verdict never becomes the decision. You decide. Your values and judgment calls are yours: each verdict lists what the judge checked for you separately from what is your call. The judge is a model from a different company. Grill uses OpenRouter's Auto Router, and it does not pin models. Only the write-up you approve leaves your machine. Every promise, and the code and test that enforce it: docs/PRINCIPLES.md.
Related MCP server: council
Set up
Claude Desktop and Claude Code enforce that in code. The copy-and-paste routes check it and warn you. Who to paste into is in the table below.
Claude Desktop (Mac or Windows): the one-click judge, about 2 minutes with a key, about 10 if you need one
Get a key for Grill's model router: go to openrouter.ai/keys, sign in, click Create key, and add $5 of credit. A grill costs about a cent or two.
Install Grill. Download grill.mcpb and double-click it, or drag it onto the Claude window. Paste your key when Claude asks. There's nothing else to install; Claude Desktop runs it.
Try it. In any chat, type: Grill this: we're moving our launch to March. I'm 70% sure it gets us more signups.
The extension reads GRILL_API_KEY. OPENROUTER_API_KEY works when that is unset.
claude.ai on the web or your phone: no key needed
Download grill-skill.zip. In Claude, open Customize → Skills, upload it, and switch it on. To add everything at once instead, go to Customize → Plugins → Add → Add marketplace and enter
mtangoz/grill.Say "grill this: …". Claude writes the judge's prompt. Tap Open in ChatGPT, or paste it into Gemini, then paste the answer back into Claude.
Want it in one step? Use Claude Desktop, above.
ChatGPT, Copilot, Gemini, Grok or Muse: no install, no key
Copy the Grill prompt into the assistant you think with, and say what you're deciding.
It writes your decision up with you, then gives you a prompt for the judge.
Paste that into an assistant from a different company, then paste the answer back.
You think with | Judge with |
ChatGPT | Claude, Gemini or Grok |
Copilot | Gemini, because Copilot can run OpenAI, Anthropic or xAI models |
Gemini | Claude, ChatGPT or Grok |
Grok or GrokBot | Claude, ChatGPT or Gemini |
Muse | Claude, ChatGPT or Gemini |
Meta AI (Muse)
In the Meta AI app, open Muse → Settings → Connectors → Add custom connector.
URL:
https://grillyour.ai/mcpClient ID:
RNdHSHmWCRJO40vd. Same for everyone. No secret.Tap Add, then sign in with the email your invite went to, every time. We email you a code; check spam if it isn't there in a minute.
Cursor, VS Code, Codex, Gemini CLI, or any app that runs MCP servers
npx -y grillyour --set-key # once: paste your key, Enter, then Ctrl-DThen add a server named grill that runs npx -y grillyour. The config holds no key. Each app's config, and one-click installs for Cursor and VS Code, are in docs/ANY-APP.md. A Grill Pro key works here too.
Claude Code
/plugin marketplace add mtangoz/grill
/plugin install grill@grillIt asks for your model router key. Grill reads GRILL_API_KEY first. OPENROUTER_API_KEY works when that is unset. Or save the key once for every app on this computer with npx -y grillyour --set-key. It goes in ~/.config/grill/key, outside any project's .env.
When Claude Code shows you a plan to approve, Grill adds one line, once a session: want an outside judge on this plan first? Keep planning and say "grill this plan". Claude Code hands the hook the plan, and the hook ignores it: it sends nothing and keeps nothing of the plan. To ask once, it keeps an empty marker file per session in the plugin's data folder, and removes markers older than two days the next time it runs. Turn it off with GRILL_PLAN_OFFER=off.
Claude Code's advisor (/advisor) has a stronger Claude look over the work. That is a second opinion from the same company. Grill's judge is from a different one. Use both.
Grill in chat
Invite-only. The steps are at grillyour.ai/start. No invite code? Join the waitlist. Have a code? Enter it at /redeem. Use the same email each time, the email your invite went to, every time.
Claude.ai, verified working. On the web, on a Free, Pro or Max plan: Customize → Connectors → Add custom connector. URL
https://grillyour.ai/mcp, name it Grill, then sign in.ChatGPT, verified working. On the web, with a paid plan: Plugins, the plus button, Add custom MCP server. Name Grill, server URL
https://grillyour.ai/mcp, choose OAuth. Click I understand and want to continue, then Create. Install it, then sign in.Grok Bot, verified working. Tell the bot
Add this MCP server: https://grillyour.ai/mcp, then sign in when asked.Gemini: Should work, testing now. US only, a personal Google account, Keep Activity on. On gemini.google.com: Settings, Connected Apps, Add a custom app, paste
https://grillyour.ai/mcp, Next, then sign in.Meta AI, coming soon.
Setup for the owner is in docs/HOSTED.md.
What it costs
Grill is free. On your own key a grill costs about a cent or two. Copy and paste uses the assistants you already have.
Coming later: an optional Pro plan with saved decision history and look-back reminders. The free tool stays free and account-free. Hear when it's ready.
Privacy
Your notes stay in your tools. Only the write-up you approve is sent. The reflection you write stays in your chat or your own notes.
The free tool has no account. Grill's makers never see your decisions on that tool. Anonymous usage stats are off unless you turn them on. An in-chat account is invite-only for now; what it stores is in docs/DATA-LEDGER.md.
A key or token in the write-up stops the run. Email addresses, phone numbers and card numbers are masked.
The quality check (Jev) is on by default and also sees the masked write-up. Say "skip the check" to skip it for one grill, or switch it off in Grill's settings. The website counts visits without cookies.
Grill news line: after a finished grill, at most once a session, and only within 7 days of a release or on the first 3 days of a month, a line with a link to hear when an optional Pro plan is ready. Showing the line sends nothing. Hide it with the "Show Grill news" setting, or
GRILL_NEWS=off. It stops on its own.Anonymous usage stats: off by default. One metadata ping to Grill's website after the first successful grill, and never again. Never the decision, the question, the verdict, or your key.
What we will and won't do with your data, and how we build: docs/PRINCIPLES.md.
Turn anonymous usage stats on
Leave them off and the tool does not call Grill. To opt in:
Claude Desktop: in the install dialog, switch on "Send anonymous usage stats (optional)".
Claude Code:
/plugin→ Configure options, the same switch.Smithery: the install form, the same switch.
stdio, npx or Docker: set
GRILL_USAGE_STATS=on.
Turn them off in the same place, or set GRILL_PING=off. DO_NOT_TRACK=1 also disables the ping. The paste route does not send it.
Details: docs/PRIVACY.md.
Weekly review
Optional, in Claude, when you keep your own decision log: docs/WEEKLY-REVIEW.md.
License
MIT. See LICENSE. The code that handles your decision stays MIT for good (docs/PRINCIPLES.md). The name and logo are not part of the license: TRADEMARKS.md.
Available Tools
3 toolsgrillGrill a decisionARead-only
Send a decision, plan or forecast to an outside AI judge: a model from a different company than the assistant that wrote it (Claude, unless set otherwise). The judge is picked by openrouter/auto. Do not pin a model, and do not fall back to this chat's own model for speed or cost. Send the decision as the user stated it, with whatever context is already in the chat. Do not rewrite it into a template, and do not add your own case against. Ask at most one short question, and only if the decision is truly unclear, such as 'What's the goal?'. Then call this tool. Do not wait for an OK, and do not show a write-up full of blanks. Never add a required question before the verdict on a quick or bulk grill. Ask only what the subject strictly needs. The first time you use Grill with this person, say once, as one line, and not again: This goes to an outside judge from a different company, and the router does not keep it. https://grillyour.ai/#privacy A quality check (Jev, from TypeSafe) may also see the masked write-up, on a zero-retention endpoint. Do not put that into the once-only line. The privacy link covers it. Do not mention the check or its score again. Pass quality_check: false only if the user asks to skip it. After that, do not repeat the disclosure. Do not mention the judge's model, a score, a balance, or a quote check. Relay layer 1 as written. It is at most 50 words and already ends with: Say 'more', 'options', or your call. On a decision they marked as big, and only while the deepen test is on, that line may also name deepen. Relay whichever line came back. Do not add deepen yourself. Do not add a fact list, a confidence question, a record, or a disclaimer. When the user says more, why, or what else, call grill_result with detail more. When they say options, help me decide, or they are stuck, call grill_result with detail options. When they say full report, call grill_result with detail full. Do not write a layer yourself. Call grill_result with detail deepen only when the person asks to deepen or go bigger. Do not call it on a quick or bulk grill, and do not ask them to. Pass big: true only when they already marked the decision as big. Never ask whether it is big. Any stated choice counts, such as do it, yes, keep it, or delay. Confidence is optional. If they did not say a percent, leave it empty and do not ask. After a grill, don't start doing the decision (no code changes, no PRs, no product questions) unless the person separately asks. Grill's job ends at the verdict and the record. If Grill's settings name a judge model, that model is used, and it must be from a different company than the assistant that wrote the subject. A same-company pin is refused. Leave it blank to use Grill's default. If the result is a job id, call grill_result with it before you reply. Do not ask the user for a job id, and do not tell them how long it takes.
| Name | Required | Description | Default |
|---|---|---|---|
| big | No | Optional. true only when the person already marked this decision as big. Never ask whether it is big. Leave it off on a quick or bulk grill. It changes nothing before the verdict. | |
| author | No | Optional. The model family that wrote the subject, if not Claude, for example openai, google or xai. That family is excluded from judging. If you are not Claude, always set it to your own family. | |
| subject | Yes | The decision as the user stated it, plus context already in the chat. Not a template, and not a case against you wrote. | |
| question | No | Optional. Leave it empty unless the user asked a question of their own. Do not invent one. | |
| quality_check | No | Optional. false skips the Jev quality check for this grill only, when the user asks. It never turns on a check the user switched off in settings. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnly and openWorld annotations, the description discloses that data goes to an outside judge from a different company, explains the zero-retention/privacy disclosure, mentions the optional quality check, same-company pin refusal, job-id handling, and post-verdict boundaries. These are substantive behavioral details that annotations alone do not provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose is front-loaded, but the description is far longer than necessary for a single tool invocation, with many repeated prohibitions and disclosure instructions. Several rules could be compressed without losing agent-relevant meaning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex external-judge tool with privacy, disclosure, follow-up routing, and job-id behavior, the description covers what the agent needs to call it correctly and handle the result. There is no output schema, but the description explains the key return-handling behavior such as relaying layer 1 and calling grill_result when a job id is returned.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents all five parameters. The description adds operational meaning for big, quality_check, subject, and question, though it does not directly discuss author by parameter name, so it stops just short of full parameter elaboration.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action: send a decision, plan, or forecast to an outside AI judge from a different company, with the judge selected by openrouter/auto. It also distinguishes the initial grill call from follow-up grill_result calls by routing phrases like 'more', 'options', 'full report', and 'deepen'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives explicit when-to-use and when-not-to-use rules, including not pinning a model, not waiting for an OK, not adding a template, and not calling deepen on quick or bulk grills. It also maps exact user phrases to grill_result detail values, which is strong alternative routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
grill_look_backLook back at a decision recordARead-only
Score one or more decision records the user pasted, against what actually happened. If they have not said what happened, ask. With view changes, show where their calls changed after a challenge instead. Stores nothing, sends nothing, and needs no key. The judge's verdict is not revised.
| Name | Required | Description | Default |
|---|---|---|---|
| view | No | Optional. score is the usual look-back. changes is for 'what has Grill done for me?': where a call changed after a challenge, before and after in their words, and how it turned out so far. Relay it as written. | |
| records | Yes | One or more decision record blocks from earlier grills, pasted by the user. | |
| happened | No | Optional. What actually happened, including whether each call came true, whether the falsifier fired, and an optional surprise line. Omit it to get the questions first. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=false, and the description reinforces this with concrete operational facts: 'Stores nothing, sends nothing, and needs no key.' It also discloses a non-obvious behavior — the tool may return clarifying questions rather than a score — and that 'the judge's verdict is not revised' (immutable results). It doesn't sketch the shape of a scoring response, which is the remaining gap given no output schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four short sentences, front-loaded with the primary action and followed by the conditional branches and the trust guarantees. No wasted clauses. The closing line 'The judge's verdict is not revised' is slightly elliptical in isolation but still short.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With three simple parameters, full schema coverage, and read-only annotations, the description covers what an agent needs to call it correctly, including the ask-first path. Because there is no output schema, a brief note on what a score-view response contains would have closed the last gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and each parameter already carries a detailed description, including the enum values for view and the omit-to-get-questions behavior for happened. The description's 'With view changes... instead' and 'If they have not said what happened, ask' largely restate what the schema already documents. Baseline 3 is appropriate; little net-new parameter meaning is added.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'Score one or more decision records the user pasted, against what actually happened.' The 'changes' branch is also described, so an agent can tell the two modes apart. It never names the sibling tools (grill, grill_result), so the boundaries with them remain inferential rather than stated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit branching: if the user hasn't said what happened, ask; if they want a 'what has Grill done for me' view, use the changes mode. That covers the main decision points an agent faces. It doesn't say when to prefer grill or grill_result instead, so the tool-selection layer is incomplete.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
grill_resultCollect a grill that was still runningARead-only
Collect a grill that returned a job id, or a later layer of one. detail is brief (the default), more, options, full, or deepen. Call detail deepen only when the person asks to deepen or go bigger. Pass job_id when you have one. Omit it to use the latest grill. Waits up to 45 seconds if it is still running. Do not write a layer yourself.
| Name | Required | Description | Default |
|---|---|---|---|
| detail | No | brief is layer 1. more is the next challenge, for more, why, or what else. options is a short decision frame. full is only when they ask for a full report. deepen is only when the person asks to deepen or go bigger. | |
| job_id | No | The job id the grill tool returned. Omit it to use the latest grill in this session. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and openWorldHint=false, so the safety profile is covered. The description adds genuinely non-obvious behavior: it blocks and waits up to 45 seconds if the job is still running, and it defaults to the latest grill when job_id is omitted. It does not say what happens on timeout or failure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with purpose, then conditions, then the constraint — good ordering and no filler. The enumeration of detail values duplicates the schema and could be trimmed.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-param read tool, it covers the key behaviors an agent needs: the blocking wait, the latest-grill default, and the prohibition on writing layers. Without an output schema, a brief note on what is returned (or timeout behavior) would close the remaining gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the enum meanings and job_id fallback are already documented in the schema. The description largely restates the enum values and the job_id rule rather than adding new semantics. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('collect a grill') and clarifies it retrieves a job that already returned an id, or a later layer of one. This distinguishes it from the 'grill' starter tool implicitly, though the jargon ('grill', 'layer') is domain-specific and the sibling grill_look_back is never mentioned.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit conditional guidance: pass job_id when you have one, omit it to use the latest grill, and call detail deepen only when the person asks to deepen or go bigger. It also warns 'Do not write a layer yourself.' It stops short of pointing to grill or grill_look_back as alternatives, so the routing decision among siblings is incomplete.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
3 tool updates
v0.1.0- First observed
grill - First observed
grill_look_back - First observed
grill_result
TDQS
Scored across 3 tools
The three tools map to distinct phases: grill submits a decision to an outside judge, grill_result retrieves the verdict or a deeper layer, and grill_look_back retroactively scores past records. The only soft overlap is that grill_result also handles follow-up layers of the same grill that grill initiates, but the descriptions clearly assign each action to one tool.
All three names share the 'grill' root in snake_case (grill, grill_result, grill_look_back), which reads as a deliberate family. The bare root 'grill' as the primary action is a minor deviation from the verb_noun pattern but is still predictable within the set.
Three tools is lean but matches the narrow purpose: submit a decision, collect the result/layers, and review past decisions. Nothing redundant, though the set is close to the thin edge where any additional capability would need a new tool.
The core lifecycle (submit → collect → later layers → retrospective scoring) is covered with no dead ends for the described workflow. Minor gaps exist, such as no tool to list or browse past grills, and judge/settings configuration is referenced but handled outside the tool surface.
Maintenance
Related MCP Connectors
Adversarial behavioural-bias engine — audits your decisions for cognitive biases via your own AI.
Five AI models debate your decision blind, then give one recommendation and the strongest objection.
A second look before your AI agent buys, sends, books, shares, signs up, or connects an app.
A second opinion for AI agents: one prompt across several live Gonka models + roles, one call.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceMCP server that gives any AI coding tool a structured second opinion from another AI provider.10 npmMIT
- AlicenseNot gradedqualityAmaintenanceLets your AI assistant consult assistants from other vendors under your own subscriptions, track costs, and cross-examine answers across models to surface disagreements and open points.3 npmMIT
- AlicenseNot gradedqualityCmaintenanceEnables AI coding agents to request a second opinion from a different frontier model via a single tool call, with PII scrubbed before transit, live web search, and support for Claude, ChatGPT, Cursor, and Gemini.Apache 2.0
- AlicenseNot gradedqualityCmaintenanceEnables AI agents to request an independent second opinion from a different frontier model, with PII scrubbing before transit, live web search grounding, caching, and multi-provider failover.Apache 2.0