Install
Requires Node.js 20 or newer.Start the service
Install the durable background service, then open the web UI:executor install registers Executor so it keeps running across restarts. For a
throwaway foreground runtime instead, run executor web --foreground.
Connect an agent
Add Executor to any MCP client (Claude Code, Cursor, OpenCode) withnpx add-mcp.
It detects the client and writes its config for you. Connect over HTTP or through
the CLI:
- HTTP
- CLI (stdio)
Executor serves a streamable-HTTP MCP endpoint at The Connect card in the web UI shows this command with your exact URL
(and port, if it differs) already filled in.
http://127.0.0.1:4788/mcp:Add an integration
From the web UI, click Add Source and paste an OpenAPI, GraphQL, or MCP URL. Executor detects the type, indexes the tools, and handles auth. Or add one from the CLI:baseUrl when the OpenAPI document has relative servers entries (e.g. "/api/v3").
Confirm it’s live:
Call tools
executor call, executor resume, and executor tools … auto-start the local
daemon if it isn’t already running. If an execution pauses for auth or approval,
resume it:
Generate a typed client
executor generate exports your tool catalog as an OpenAPI 3.1 document:
one REST operation per tool, with full input/output schemas. Feed it to
whatever client generator you already use (openapi-typescript,
openapi-generator, Kiota, …) and every call is typed end to end while still
executing through Executor (auth, policies, and approvals included):
GET /api/tools/export/openapi (bearer
auth), so generators that take a URL can point straight at the instance. The
operations it describes are real endpoints: POST /api/tools/invoke/{tool path} runs the tool and returns { ok: true, data } or { ok: false, error };
approval-gated calls return error.code: "execution_paused" with resume
coordinates.
Prefer a ready-made client instead of running a generator? --format typescript writes a single self-contained TypeScript file with a
dependency-free runtime client:
ExecutorPausedError with the approval
URL. Re-run executor generate whenever your catalog changes.