Headless JUWEL
Chat, tools and the CLI bridge, reachable from your own tools.
One scoped key per caller. Service accounts, branches and metered billing are direction, not features. The reference lives on juwel.ai.
Same core, many doors
One core. Four doors.
Who calls, who approves, what is logged
| Door | Who calls | Who approves | What is logged |
|---|---|---|---|
| Browser | You, in the JUWEL app | You, on the approval card | Your chat history |
| MCP | An MCP client with a jak_ key | A person, for the gated set | Each call, against the key |
| Tool calls | Your code with a jak_ key | A person, for the gated set | Each call, against the key |
| CLI bridge | A terminal with a jak_ key | A person, for the gated set | Each call, against the key |
Copied from the reference
Three calls you can run.
{
"mcpServers": {
"juwel": {
"url": "https://juwel.ai/api/mcp",
"headers": { "Authorization": "Bearer jak_..." }
}
}
}# approve with your own session (or a device-kind key), never the agent key
curl -X POST https://juwel.ai/api/tools?action=approve \
-b "session cookie" -H "Content-Type: application/json" \
-d '{"tool":"gcal_create","args":{...}}' # -> {nonce}
# pass it back in the MCP call as params._meta.approvalexport JUWEL_AGENT_KEY="jak_..."
curl -N -X POST https://juwel.ai/api/cli/chat \
-H "Authorization: Bearer $JUWEL_AGENT_KEY" \
-H "Content-Type: application/json" \
-d '{"messages":[{"role":"user","content":"summarize my last run"}],
"tools":[], "surface":"vps", "profile":"default"}'Keys and scopes
Requested scopes only.
A key gets exactly the scopes you ask for. Nothing is granted on its own.
Shown once, revocable.
The token appears once, when you mint it. Revoke it and it stops working at once.
Every call logged.
The activity log shows what an agent did through your grants.
What we do not claim
We do not claim a key cannot escalate until the listed residual risks are closed.
Today and next
| Status | What | Date | Source |
|---|---|---|---|
| Live | An AG-UI endpoint answers (POST /api/ag-ui). Native chat on it is not yet verified. | ||
| Coming | SDK and CLI packages under the JUWEL name. Not on npm yet. | ||
| Coming | MCP OAuth. Today MCP auth is a scoped bearer key. |
Common questions
Short answers.
Which door should my agent use?
All three share one approval flow, so pick the one your tools already speak: an MCP client uses the MCP endpoint, code uses direct tool calls, and a terminal uses the CLI bridge.
Do I need OAuth?
Not today. MCP auth is a scoped bearer key. The MCP authorization flow is in review.
What gets logged?
Each call a key makes is logged against that key, and you can read the log from the same account.
Where is the reference?
On juwel.ai/developers, and as plain text at juwel.ai/developers.md.
Read the reference on juwel.ai.
The endpoints, the scopes and the approval flow, in one place.