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"
  }
}
ModeBehavior
auto (default)Direct tools if ≤ 5 procedures, otherwise code-mode-only.
code-onlyAlways reached via clawnify.execute, regardless of count.
direct-onlyEvery procedure projects as a direct tool, regardless of count.

Identity headers

Every authenticated call into your app carries identity headers your app can read:

HeaderValue
X-Clawnify-User-IdThe user the call was made on behalf of.
X-Clawnify-Org-IdThe org.
X-Clawnify-Calleragent, user, or system.
X-Clawnify-Server-IdSet 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.