Open protocol · SDK · Station · CLI

Give your agents apps,
not just tools.

Agent Apps are applications designed for AI agents. They give agents tools to act, interfaces to present information, and a full runtime to manage their lifecycle: install, configure, authenticate, run, and scale.

npm create @agentapps
Or use the +80 that exist
+80 apps ready to installOpen protocol · MITBuilt by Pablo López

Works today in

Teros
Claude Code
Claude Desktop
Cursor
Windsurf
VS Code
01

The gap

A tool call returns text.
An Agent App returns a product.

Agents have had function calling (the model picking one of your functions and filling in its arguments) for years. What they never had was somewhere to put a screen, keep state, hold a credential, or hand work to another app. That is the whole point of this protocol.

With tools alone

  • ·Text in, text out. Every result is a paragraph the agent has to narrate.
  • ·No interface. Tables, charts and forms get flattened into prose.
  • ·No memory between calls. The agent re-establishes context every time.
  • ·No lifecycle. Nothing to install, configure or authenticate against.
  • ·No way for one integration to talk to another.
  • ·One process for everyone, or nothing at all.

With Agent Apps

  • 01 Typed tools with parameters, permissions and structured results.
  • 02 Real interfaces, rendered natively by the host: cards, tables, charts, forms, images.
  • 03 Platform-provided storage: the app stores data, the platform owns it.
  • 04 A managed lifecycle with OAuth or API-key auth and health checks.
  • 05 Intents, so one app can invoke another's capabilities.
  • 06 standalone, cluster or on-demand. One instance per user if you need it.
02

Gateway

You don't have to adopt
anything to start.

Agent Apps speak their own protocol. Gateway is the bridge that re-exposes them as MCP tools. MCP, the Model Context Protocol, is the standard your client already speaks to discover and call tools, so it sees all +80 apps as native tools. No fork, no plugin, no change to a single app.

Your apps
+80 Agent Apps

Notion, GitHub, Playwright, Calendar. Each one a manifest, tools and permissions.

Serving them
Station

One endpoint. Spawns, proxies, restarts and idles instances.

The bridge
Gateway MCP

Speaks the protocol on one side, MCP on the other. That is the whole trick.

Where you work
Your client

Teros, Claude Code, Cursor, Windsurf, VS Code, Zed. Unmodified.

Two commandszsh
# 1. start the station with every installed app$ agentapps serve 4100 station listening · 79 apps · 10 running# 2. point your MCP client at it$ claude mcp add agent-apps \ -e STATION_URL=http://localhost:4100 \ -- node /path/to/gateway-mcp/dist/index.js ✓ agent-apps connected# every tool of every installed app is now callable from the client$

Works today in

Teros
Claude Code
Claude Desktop
Cursor
Windsurf
VS Code
Gateway MCP setup
03

What it looks like on the wire

Ask a question.
Watch what the app does.

You say "am I free Thursday afternoon?". The agent picks the tool. The app answers with structured data, not prose. Later, someone else moves a meeting and the app tells the agent, unprompted.

app.google.calendarsession plane
# the agent chose the tool and the arguments. you never typed this. tool_call get_freebusy { "calendars": ["primary"], "timeMin": "2026-08-13T12:00Z", "timeMax": "2026-08-13T18:00Z" } tool_result ok · 218 ms { "busy": [ { "start": "…T15:00Z", "end": "…T16:30Z" } ] }# a structured result, so the host can render a calendar strip instead of a paragraph# twenty minutes later, a colleague moves a meeting in Google Calendar subscription_event calendar_updated { "action": "updated", "eventId": "3f9a…", "title": "Design review" }$

What a plain tool would have returned

  • 01A paragraph the agent has to parse and re-narrate.
  • 02Nothing when the calendar changes. You ask again, or you don't find out.
  • 03A token per call, re-authenticated, with no session to hold.

What the Agent App returned

  • 01Typed JSON the host can render as a real interface.
  • 02A calendar_updated event, pushed, without being asked.
  • 03An OAuth session the platform owns and refreshes for it.
04

The catalogue

+80 apps
already written.

The protocol is not a proposal waiting for adopters. The repo ships +80 apps across 22 categories, every one of them declaring its tools and its permissions in a manifest that validates today.

Browse all +80

05

What an Agent App provides

Six things you'll use.
Six more when you need them.

An Agent App can be a single tool, or a full product with screens, storage, app-to-app calls and its own embedded AI agent. Everything below is declared in the manifest and enforced by the protocol. None of it is inferred.

01

Tools

Functions an AI agent can call, with typed parameters, permissions and structured results.

02

Interfaces

Visual UI rendered natively by the host: cards, tables, charts, forms, images. Falls back to text or markdown.

03

Lifecycle

Install, configure, authenticate (OAuth / API key), start, stop, health checks.

04

Events

Real-time notifications from the app to the agent: webhooks, state changes, alerts.

05

Permissions

Granular grants over which tools, which data and which UI surfaces. Requested by the app, approved by the user. Tool hints like destructiveHint are declared, never inferred.

06

Intents

App-to-app communication. One app can invoke another's capabilities, through a binding the user controls.

And when the app grows into a product

ScreensStorageApp AgentsConversation hooksVolumes & FilesTelemetry
06

Architecture

Transport-agnostic
by design.

A host connects to a single station endpoint. The station spawns, routes, restarts and idles your app instances. Your code never deals with transports.

Host
The AI platform

An IDE, assistant or agent runtime that discovers, installs and uses Agent Apps on behalf of its users.

Station
Lifecycle & routing

One endpoint for hosts. Spawns, proxies, restarts and idles instances. Four runtime adapters, crash detection, graceful shutdown and sharding.

App instance(s)
standalone · 1 sharedcluster · N replicason-demand · 1 per user4 runtime adapters
01InstallonInstall · grants consent
02Configuresystem + user secrets
03AuthenticateOAuth2 · PKCE · API key
04Runspawn · proxy · idle
05RefreshonRefreshToken
06UpgradeonUpgrade · onUninstall

Agent App

Your code. A self-contained application with tools, interfaces and logic. Runs standalone, cluster or on-demand.

Station

Manages the app's lifecycle: spawns, routes, restarts and idles instances. Exposes a single endpoint for hosts to connect to. Transport-agnostic.

Host

The AI platform (IDE, assistant, agent runtime) that discovers, installs and uses Agent Apps on behalf of its users.

Gateway

A bridge that exposes Agent Apps to tool protocols like MCP, so they work in Teros, Claude Code, Cursor, Windsurf, VS Code and Zed with no changes.

07

Building one yourself

Scaffold, run, test.
All of it local.

If you want to write one instead of using one: a REPL and CLI to run apps locally, a test harness for your suite, and a scaffolder that gets a new app to its first tool call in a single command.

zsh
# Requires Node >= 20, pnpm and git$ git clone git@github.com:agentapps/agentapps.git$ cd agentapps$ ./install.sh installing dependencies… building @agentapps/cli… symlinked `agentapps` → /usr/local/bin$
08

The manifest

One file says
what the app is.

Every app ships an agentapp.json that has to pass safeParseAppManifest() from the protocol package. If it does not validate, it does not install. No optional-field drift, no undocumented behaviour.

Required fields

  • idStable identifier, e.g. app.notion
  • versionSemver, independent of the protocol
  • nameDisplay name
  • descriptionWhat the app does
  • tagline120 characters, hard limit
  • authorName and email
  • logoSVG, or PNG at 1024×1024 minimum
  • logoMonoSingle-tint SVG the host recolours
  • termsURL to the terms that apply
  • categoryOne of 22 in use today
  • entrypointModule path and export
  • runtimeTransport, command, arguments
apps/notion/agentapp.jsonvalid
"id": "app.notion",
"version": "2.0.0",
"tagline": "Manage Notion pages, databases, and content",
"license": "MIT",
"category": "productivity",

"entrypoint": {
  "type": "module",
  "path": "src/app.ts",
  "export": "factory"
},
"runtime": {
  "transport": "stdio",
  "command": "tsx"
},
"auth": {
  "type": "oauth2",
  "scopes": ["read_content", "update_content"],
  "pkce": false,
  "systemSecrets": ["CLIENT_ID", "CLIENT_SECRET"],
  "userSecrets": ["ACCESS_TOKEN", "REFRESH_TOKEN"]
}

Get started

Your first Agent App is
one command away.

Scaffold it, run it in the REPL, then expose it to Teros, Claude Code, Cursor, Windsurf, VS Code or Zed through Gateway MCP, without changing a line.

npm create @agentapps
Agent Apps · Applications designed for AI agents