Skip to content

Commit a91959e

Browse files
os-zhuangclaude
andcommitted
docs(ai): connect-mcp — api actions have no headless dispatch either
The exposure rules and the troubleshooting table listed `url` / `modal` / `form` as the types that never reach `list_actions`, omitting `api`. isHeadlessInvokableAction only admits `script` (with target or body) and `flow` (with an automation service) — everything else, `api` included, returns false in the open framework. (`api` dispatch exists only in the ObjectOS runtime bridge, which actions-as-tools.mdx already scopes correctly.) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
1 parent 3a8ce9d commit a91959e

1 file changed

Lines changed: 5 additions & 3 deletions

File tree

content/docs/ai/connect-mcp.mdx

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -103,8 +103,10 @@ Two exposure rules to know:
103103
are blocked fail-closed.
104104
- **Actions require the author's opt-in**: `ai: { exposed: true }` plus an
105105
`ai.description` of at least 40 characters, and the action must be callable
106-
without a UI (`script` with a body or registered handler, or `flow`).
107-
See [Actions as Tools](/docs/ai/actions-as-tools) and
106+
without a UI. In the open framework that means exactly two types — `script`
107+
(with an inline body or a registered handler) and `flow` (with the automation
108+
service registered). `url`, `modal`, `form`, and `api` have no headless
109+
dispatch here. See [Actions as Tools](/docs/ai/actions-as-tools) and
108110
[Actions](/docs/ui/actions).
109111

110112
## The security model
@@ -148,7 +150,7 @@ skill and a guided `/objectstack:connect` command.
148150
| `501 Not Implemented` | The MCP plugin isn't part of this build — check your stack's plugins |
149151
| `401` on every call | Anonymous or invalid credentials. Interactive clients: complete the browser login (the `WWW-Authenticate` header advertises the OAuth metadata). Headless: check the `osk_` key and header spelling |
150152
| `403 insufficient_scope` | The OAuth token lacks the scope for that tool family (e.g. writes without `data:write`) — reconnect and grant the scope |
151-
| An action is missing from `list_actions` | `ai.exposed` is not `true`, `ai.description` is shorter than 40 characters, the type isn't headless-callable (`url` / `modal` / `form` never appear), it targets a `sys_*` object, or the caller fails its `requiredPermissions` |
153+
| An action is missing from `list_actions` | `ai.exposed` is not `true`, `ai.description` is shorter than 40 characters, the type isn't headless-callable here (only `script` with a body/handler and `flow` with an automation service are — `url`, `modal`, `form`, and `api` never appear), it targets a `sys_*` object, or the caller fails its `requiredPermissions` |
152154
| Reads return few rows / writes denied | Working as designed — the caller's permissions and RLS apply. Verify with the same user in the Console |
153155

154156
## Related

0 commit comments

Comments
 (0)