Troubleshooting
Most problems come down to one of three things: the client can’t connect, a request is refused, or a change didn’t run. Here’s where each shows up and how to fix it.
A client won’t connect
Section titled “A client won’t connect”“Not connected”, sign-in fails, or requests are refused from the start.
- No access rule for the source. A valid token or sign-in isn’t enough — the request must come from a source the site allows and the person’s rules allow. A brand-new site has no rules and refuses everyone. Check Configuration ▸ Network access: add the rule for the client (Claude, ChatGPT, or a network), and make sure the person isn’t flagged as having no rules.
- No grant (OAuth clients). ChatGPT and Claude sign in as the person, so the person needs scopes granted first. With none, they can’t connect at all — set them under Configuration ▸ Grants.
- Token revoked or expired. Check its state on Connect ▸ Tokens; mint a fresh one if so.
- Wrong server URL. Confirm the client has the exact MCP server address from the Connect sub-tab.
A change was refused
Section titled “A change was refused”The AI proposed a change, but approving it (or running it) failed.
- Missing import right. A user can only run the import types their Fishbowl group allows. Ask “what am I allowed to import?”, or check the user’s Fishbowl rights. The full list is in Reference.
- Order status not allowed. Whether an order may be set to Issued also follows the approver’s Fishbowl group rights, not a scope.
- Missing scope. A write needs the right scope (
imports:write,reports:install, …) on the connection — see Reference ▸ Access scopes. - A referenced record doesn’t exist. Orders and some imports don’t create customers, vendors, parts, or BOMs — those must already exist. The proposal’s error says which one is missing.
- A row failed mid-batch. A change set runs in order and stops at the first failure, so a bad row leaves the rest unwritten. Fix that row and re-run; the Change log shows where it stopped.
A read returned nothing, or the wrong thing
Section titled “A read returned nothing, or the wrong thing”- Blocked column or table. The SQL guard refuses blocked columns and tables for everyone, and PII suppression hides personal fields. If a legitimate read comes back empty, check Configuration ▸ MySQL access.
- Raw SQL needs an admin.
sql_queryandsql_schemaare MCP-admin only; a non-admin reads through saved queries. If ad-hoc lookups “don’t work” for a user, that’s why. - Timed out. Reads are killed at the server timeout. A slow query comes back as a timeout in the Query log — narrow it and try again.
A report or dashboard didn’t appear
Section titled “A report or dashboard didn’t appear”- Not installed yet. Drafting and previewing don’t install anything — the operator has to approve the install. Confirm it under the right Reporting panel.
- CloudPage needs
reports:install. Publishing to production is a separate, per-person scope. - A TV screen shows nothing. It may be paired but unassigned, or its page was unpublished. Assign a page under Reporting ▸ TV dashboards. “Offline” means it hasn’t checked in for four minutes.
Where to look
Section titled “Where to look”- Logs — the Tool, Change, and Query logs show exactly what ran, what was refused, and why. Start here for anything that “didn’t work.”
- Ask the AI to check. “What am I allowed to import?” and similar questions report the user’s own rights without a trip to Fishbowl.