A little bird says what to try next.
What a refusal from the connection means, and what to do about it.
Every tool error carries a message, a next step, and whether it can be retried. Reconnecting does not change access, monitoring or allowance. When a change or a check may have started, read back before you ask again.

Pick what you saw
It says I have no sites.
Error codeslist_sites returns entryKind no_access or pending_setup
What it means
Your account has no site access yet, or setup is not finished. An empty list does not mean the account is ready.
What to do
- Ask your assistant for the
entryPaththatlist_sitesreturned, and open it. - For a new account, that path leads to setup, to pricing, or to an invitation from your team.
- If you expected a site, check that you signed in with the intended Dr. Canary account.
It asked me to sign in again.
Error codesunauthenticated, invalid_token
What it means
The connection could not be authenticated, or is no longer authorized. Your app may renew an ordinary expired sign-in on its own. Give it that chance before you reconnect.
What to do
- Let your app renew the connection first.
- Reconnect only if renewal cannot recover it, from your app’s connection settings.
- In Codex,
codex mcp login dr-canaryopens sign-in again. In Claude Code, run/mcpand select dr-canary.
It refused a change.
Error codesowner_or_admin_only, not_a_member, no_monitoring, quota_exhausted
What it means
Your role, your membership, the site’s monitoring or its allowance does not allow it. Reconnecting will not grant it.
What to do
- Read the error’s next step. It names the action that would allow it.
- Ask an owner or admin to save a shopper change, or review monitoring for the site in Dr. Canary.
- Review the site’s allowance in Dr. Canary before requesting another check.
The check did not start, or I cannot tell.
Error codesoutcome: unknown, unavailable, inspection_in_flight
What it means
A check may have started even though the answer was lost. That is an unknown outcome, not a failure.
What to do
- Read the site’s recorded checks with
list_runsbefore asking again. - For a Group, read the same Group with
get_group. For a finding, read the finding’s thread in Dr. Canary. - Asking twice can start two checks and use allowance twice.
- If it says
inspection_in_flight, a check is already in progress. Follow that one.
The report came back as a link only.
Error codesresult_too_large
What it means
The report is too large to return through the connection. It is not an empty report.
What to do
- Open the link in Dr. Canary to read the report.
- Your assistant has not read the report’s body, so it cannot summarise what is in it.
It says too many requests.
Error codesrate_limited
What it means
Either your account made 60 tool calls in a rolling minute on one server instance, or that instance was already serving as many signed-in people as it holds at once.
What to do
- Wait for the seconds given in
retryAfterSeconds. - Then continue. This limit is not your check allowance.
It tested the wrong thing.
Error codesNo error code
What it means
The basic check uses the first saved shopper that has not been retired, including a paused one. A check request names a site, not a shopper, a journey or a web address.
What to do
- Ask your assistant to list your saved shoppers with
list_assignments. - A shopper you just created or edited is not necessarily the one that runs.
- Retire a shopper you no longer want, so it stops its future checks.
Reading an error
A refused tool call comes back marked as an error, with JSON that carries these fields:
| Field | What it carries |
|---|---|
code | The refusal, such as no_monitoring. |
message | What happened, in one sentence. |
nextStep | What to do about it. |
retryable | Whether the same call can be tried again. |
outcome | On a change or a check: not_started or unknown. |
retryAfterSeconds | On rate_limited: how long to wait. |
An input refusal such as invalid_input, invalid_focus or departments_required means the request needs correcting. Nothing was changed.
Renewing, then reconnecting
Let the app renew
Your app may renew an ordinary expired sign-in on its own. Give it that chance before you reconnect.
Reconnect only if renewal fails
In ChatGPT, open Settings › Plugins › Dr. Canary and choose Reconnect. In Claude Code, run
/mcp, select dr-canary, and authenticate. In Codex, run this command.codex mcp login dr-canaryKnow what it cannot fix
Reconnecting does not grant access, a role, monitoring or allowance the account does not have.
A change with an unknown outcome
The rule that matters most: read back before you repeat. A change or a check whose answer was lost may still have happened.
- After a check request: read the site’s recorded checks with
list_runs. For a Group, readget_groupfor the same Group. For a finding, read its thread in Dr. Canary. - After a shopper save, a calendar change or a retirement: read the saved shoppers with
list_assignments. - A missing row does not prove the change failed, and does not make a repeat safe.
- Retry a change only when the error says
outcome: not_startedandretryable: true, after its next step.
Slow or pending is not failed
- A check request comes back
queuedorrunning. That means it was admitted, not that it finished. - A report can be
assembling, which means it is being put together. It is not published yet. - A finished check is not a published report.
- A check’s status is not a verdict about your website.
When to open Dr. Canary instead
- A report too large to return: open the link it came back with.
- An allowance or monitoring question: review the site in Dr. Canary.
- A finding recheck you cannot confirm: read the finding’s thread.
unavailableorintegration_unavailablethat keeps coming back: try again later. If it continues, contact support at tom@drcanary.com.
What it does not do
- Reconnecting does not grant access, monitoring or allowance.
- A check request names a site, not a shopper, a journey or a web address.
- A missing record does not confirm that a change failed or that a repeat is safe.
- A queued check is not a finished check, and a finished check is not a published report.
Ask your assistant
More examplesDid my last check request go through? Read the recorded checks before asking again.
list_runs
Why was my shopper change refused?
list_assignments
Which Dr. Canary sites can you see, and is setup finished?
list_sites
Questions
Why does my assistant say I have no sites?
Your account has no site access yet, or setup is not finished. list_sites returns an entryPath that leads to the next step. Open it in Dr. Canary.
Will reconnecting fix a refused change?
No. A refusal about your role, monitoring or allowance stays until that changes. Reconnect only when the app cannot renew an expired sign-in.
The answer was lost after I asked for a check. Should I ask again?
Not yet. Read the site’s recorded checks first, because asking twice can start two checks and use allowance twice. Retry only when the error says outcome: not_started and retryable: true.
Why did I only get a link to the report?
The report was too large to return through the connection. It is not empty. Open the link in Dr. Canary to read it.
What does too many requests mean?
Either your account made 60 tool calls in a rolling minute on one server instance, or that instance was already serving as many signed-in people as it holds at once. Wait the seconds in retryAfterSeconds, then continue. It is not your check allowance.
Why did it test a different shopper than the one I just edited?
The basic check uses the first saved shopper that has not been retired, including a paused one. It is not necessarily the one you just created or edited. There is no way to pick another.
Who do I contact if it keeps failing?
If unavailable keeps coming back after you try again later, contact support at tom@drcanary.com.

Give your assistant something to read.
A checkup is one report. Monitoring keeps the bird shopping your site on a schedule, so there is a fresh report every time you ask.