API v1 · 4xx
feature_unavailable
| HTTP | When |
|---|---|
| 403 | A listed MCP tool cannot run for this workspace or this connection, for a reason other than the plan or a missing admin role. |
Some tools are switched on per workspace, or only run inside Scripe.
When one of them is called where it cannot run, nothing is read or
written, and the call is refused with this code. The refusal never
changes on a second call: details.retryable is false, and
details.reason says what would have to change.
details.reason | What it means | What to tell the user |
|---|---|---|
pilot | The tool is part of Scripe's Signals pilot, which is not switched on for this workspace. | It becomes available once Scripe enables Signals for their workspace. |
flag | The tool is part of a rollout that has not reached this workspace yet. | It is not available to them yet; the Scripe dashboard does the same job. |
surface | The tool runs only inside Scripe, not over MCP. | Do it in the Scripe dashboard. |
partsVersion | The tool needs a newer Scripe client than the one making the call. | Update the app, or use the Scripe dashboard. |
custom | The tool cannot run in this workspace or for this connection right now. | Do it in the Scripe dashboard, which explains what is missing. |
{
"error": {
"code": "feature_unavailable",
"message": "\"Get ideal customer\" is part of Scripe's Signals pilot, which is not switched on for this workspace. Nothing was read or written. Do not retry: tell the user it becomes available once Scripe enables Signals for their workspace.",
"details": {
"capability": "get_icp",
"reason": "pilot",
"retryable": false
},
"request_id": "mcp-…",
"docs_url": "https://scripe.io/developers/api/v1/errors#feature_unavailable"
}
}Two other locks have codes of their own, and carry the same
retryable: false:
- A tool the workspace's plan does not include answers
plan_not_eligible(details.reason: "plan"). Upgrading lifts it. - A tool limited to workspace admins answers
admin_required(details.reason: "role"). An admin has to do it.
Only the MCP server answers this code; no REST route returns it, and
today the server answers it rarely. The tools behind pilot and flag
are served only to connections they can run for — a connection outside
the Signals pilot is not served get_icp or update_icp — and a tool
that runs only inside Scripe is not on the MCP server at all, so a call
to one of those by name, from an older tool list, answers that the tool
does not exist. Switch on this code anyway: it is what every lock that
is not a plan or a role answers with. See
MCP § Limits and quotas.