You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
docs(configure+changelog): align MCP, batch, and user-import docs with 16.0; add 16.0 changelog entry
mcp (en + zh-Hans):
- new 'The stdio transport (16.0)' section: OS_MCP_STDIO_ENABLED own
switch (default off; legacy OS_MCP_SERVER_ENABLED=true trigger for
one release with a deprecation warning) and the mandatory
OS_MCP_STDIO_API_KEY principal — same verify+authz chain as HTTP,
RLS/FLS/tenant apply, revocation live, fail-closed boot, no system
bypass (ADR-0101);
- tool table gains validate_expression (read-only, data:read-scoped,
fail-closed on sys_*); dev-banner claude mcp add note; new
troubleshooting row.
api-access (all 7 locales):
- MCP row reflects default-on (disable with =false);
- /api/v1/batch documented as atomic-only with per-op gating before
the transaction, ids required, {$ref} resolution enforced,
atomic:false → 400 BATCH_NOT_ATOMIC (#1604); discovery advertises
capabilities.transactionalBatch (#3298).
users + authentication (en + zh-Hans):
- import-users default passwordPolicy is 'auto' since 16.0 (invite
deliverable rows; temp password only for unreachable; pass 'none'
for the old identity-only behavior; rows[].delivery outcomes).
changelog (en + zh-Hans):
- new 16.0 entry in the page's own style (organizationId rename,
approvals quorum/会签 + metadata-driven inbox, time-relative
automations, filtered roll-ups, strict widgets, MCP stdio principal,
enforce-or-remove sweep, engine-owned read-only rows, date-equality
fix + date-arithmetic build errors, bulk-import auto policy);
14.x entry no longer claims to be the current train.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012Kj2MJEPXoUXC4LiC3XYJc
Copy file name to clipboardExpand all lines: content/docs/configure/api-access.es.mdx
+2-1Lines changed: 2 additions & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -24,7 +24,8 @@ Superficies destacadas:
24
24
|`/api/v1/auth/*`| Autenticación (inicio de sesión, sesiones, OAuth, OIDC) |
25
25
|`/api/v1/meta/*`| APIs de metadatos (objetos, campos, vistas) cuando está habilitado |
26
26
|`/api/v1/keys`| Genera un `sys_api_key` de un solo uso para el usuario que llama (POST) |
27
-
|`/api/v1/mcp`| Servidor Model Context Protocol sobre Streamable HTTP, cuando `OS_MCP_SERVER_ENABLED=true`|
27
+
|`/api/v1/batch`| Batch transaccional entre objetos (POST) — solo atómico, cada operación validada por objeto |
28
+
|`/api/v1/mcp`| Servidor Model Context Protocol sobre Streamable HTTP — activo de forma predeterminada; se desactiva con `OS_MCP_SERVER_ENABLED=false`|
28
29
|`/api/v1/health`| Sonda de liveness/readiness (sin autenticación) |
29
30
30
31
El prefijo es `/api/v1` de forma predeterminada (el `basePath` de la API,
claude mcp add --transport http my-app https://your-deployment.example.com/api/v1/mcp
35
35
```
36
36
37
+
> On a local dev server you don't even have to type this: since 16.0 the
38
+
> `os dev` startup banner prints the MCP endpoint, the agent-skill URL,
39
+
> and a ready-to-paste `claude mcp add` command.
40
+
37
41
For headless use (CI, containers) skip OAuth and attach an
38
42
[API key](#headless-api-keys) instead:
39
43
@@ -91,14 +95,35 @@ For a long-lived integration, bind the key to a dedicated service user
91
95
with a minimal permission set — see
92
96
[Service accounts & API keys](/docs/configure/users#service-accounts--api-keys).
93
97
98
+
## The stdio transport (16.0)
99
+
100
+
Besides HTTP, the runtime can serve MCP over **stdio** for hosts that
101
+
spawn the server as a child process. Since 16.0 (ADR-0101) stdio has its
102
+
own switch and always runs under a real identity:
103
+
104
+
-**`OS_MCP_STDIO_ENABLED=true`** turns stdio auto-start on (default
105
+
**off**). `OS_MCP_SERVER_ENABLED` now governs only the HTTP surface —
106
+
the legacy behavior where `OS_MCP_SERVER_ENABLED=true` also started
107
+
stdio still works for one release, with a deprecation warning.
108
+
- Stdio **requires `OS_MCP_STDIO_API_KEY=osk_...`**. The key is resolved
109
+
through the same verify + authorization chain as HTTP and REST, so
110
+
object permissions, record access, field-level security, and tenant
111
+
scoping apply to stdio calls exactly as on `/api/v1/mcp` — and the key
112
+
is re-resolved per read, so revoking it takes effect immediately.
113
+
- The transport is **fail-closed**: enabling auto-start without a
114
+
resolvable key refuses to boot, and there is deliberately no unscoped
115
+
fallback and no `system` bypass. For full authority, mint the key on a
116
+
platform-admin or dedicated service identity.
117
+
94
118
## What the agent gets
95
119
96
-
Ten dataand action tools, generated from your metadata:
120
+
Eleven data, action, and authoring tools, generated from your metadata:
97
121
98
122
| Tool | What it does |
99
123
|---|---|
100
124
|`list_objects` / `describe_object`| Discover which objects exist and their fields |
101
125
|`query_records` / `get_record`| Read data (list queries are capped at 50 rows per page by default) |
126
+
|`validate_expression`| Lint a formula against the real object schema *before* saving it (16.0): errors (bare field refs, unknown fields with did-you-mean), warnings (type-soundness, date-equality pitfalls), the in-scope field/function inventory, and the inferred result type. Read-only, `data:read`-scoped, fail-closed on `sys_*`|
102
127
|`aggregate_records`| Grouped aggregation (registered when the active driver supports it) |
103
128
|`create_record` / `update_record` / `delete_record`| Write data |
104
129
|`list_actions` / `run_action`| Discover and invoke your business actions by name |
@@ -157,6 +182,7 @@ fully operational.
157
182
|---|---|
158
183
|`404` on `/api/v1/mcp`| The surface is disabled — unset `OS_MCP_SERVER_ENABLED` (default is on) |
159
184
|`501 Not Implemented`| The MCP plugin isn't part of this build — check your stack's plugins |
185
+
| Boot refuses with stdio enabled | Stdio is fail-closed (16.0) — set `OS_MCP_STDIO_API_KEY` to a resolvable `osk_` key, or turn `OS_MCP_STDIO_ENABLED` off |
160
186
|`401` on every call | Anonymous or invalid credentials. Interactive clients: complete the browser login. Headless: check the `osk_` key and header spelling |
161
187
|`403 insufficient_scope`| The OAuth token lacks the scope for that tool family (e.g. writes without `data:write`) — reconnect and grant the scope |
162
188
| 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`|
0 commit comments