Apps
A Clawnify app is a small TypeScript project you deploy via the CLI. It exposes typed procedures that your agent — and any MCP client connected to mcp.clawnify.com — can call directly.
Apps live at <slug>.apps.clawnify.com. The agent calls them like any function call; the MCP client calls them via the gateway.
Deploying an app
clawnify init my-app
cd my-app
# Edit src/api.ts to add procedures
clawnify deploy
See CLI → Install for the full setup.
How procedures surface to the agent
Once your app deploys, its procedures become tools the agent (and any connected MCP client) can call. Two shapes, depending on procedure count.
Small apps (≤ 5 procedures) — direct tools
Every procedure shows up as <app_slug>.<procedure_name> in the gateway’s tools/list. The agent calls them like first-class tools.
quotes.createQuote
quotes.listQuotes
quotes.markPaid
Larger apps (> 5 procedures) — via clawnify.execute
The agent finds them via clawnify.docs_search and calls them as code through clawnify.execute:
import { client } from "@clawnify/sdk";
const result = await client.quotes.createQuote({ customer_id: "...", items: [...] });
This keeps the agent’s tool list small and lets it chain multiple procedure calls in one round trip.
You can override per-app in your clawnify.json manifest:
{
"api": {
"exposure_mode": "auto" | "code-only" | "direct-only"
}
}
| Mode | Behavior |
|---|---|
auto (default) | Direct tools if ≤ 5 procedures, otherwise code-mode-only. |
code-only | Always reached via clawnify.execute, regardless of count. |
direct-only | Every procedure projects as a direct tool, regardless of count. |
Identity headers
Every authenticated call into your app carries identity headers your app can read:
| Header | Value |
|---|---|
X-Clawnify-User-Id | The user the call was made on behalf of. |
X-Clawnify-Org-Id | The org. |
X-Clawnify-Caller | agent, user, or system. |
X-Clawnify-Server-Id | Set when the call came from an agent’s runtime. |
These are platform-injected and trusted. Use them for authorization in your app’s procedures without rolling your own auth.
Per-app README
Each app gets an auto-generated README that the agent reads on demand via clawnify.docs_search to learn what the app does and how to call its procedures.
The README is derived from your clawnify.json + JSDoc on your procedures. You control it by writing good descriptions; no separate doc files needed.