Apps

Clawnify apps are full web apps — internal tools, CRMs, dashboards, client portals — that your agent builds and deploys for you. Describe what you want in natural language and the agent generates the app, provisions its database and storage, and ships it to a live URL at <slug>.apps.clawnify.com.

Every app is also a typed API: its procedures become tools your agent — and any MCP client connected to mcp.clawnify.com — can call directly. So an app is both something people use in the browser and something agents drive programmatically.

Two ways to create an app

  • Natural language (App Builder). Ask your agent — “build me a CRM for tracking deals” — and it scaffolds, deploys, and iterates on the app for you.
  • From a project (CLI). Deploy an existing TypeScript project yourself with clawnify deploy.

Deploying from the CLI

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.