Skip to content

Callspec

Write your API once. Get typed RPC, SDK, MCP, docs, and OpenAPI spec.

  1. Define once

    export const searchPosts = route({
      input: query,
      output: results,
      handler: async (input, ctx) => {
        // your logic
      },
    })
    
    export const api = spec({
      routes: {searchPosts},
    })
  2. Serve it all

    • HTTP RPC/v1/*
    • Docs UI/docs
    • OpenAPI/openapi.json
    • MCP/mcp

    Auth, typed errors & logging

  3. TypeScript SDK

    npx callspec
    api.searchPosts({…})generated/api.ts
  4. OpenAPI anywhere

    Multi-language SDKs & docs from your OpenAPI

    • Python
    • Go
    • Java
    • C#
  • Errors done right

    Every error has a code, a type, and a shape. No more guessing.

  • No drift

    Client and server stay in sync automatically.

  • End-to-end types

    From server to SDK to docs to clients.

  • Works with the ecosystem

    Plays well with your favorite tools.

Chirp docs UI — routes sidebar, Connect MCP panel, Cursor MCP config

Try it locally

Run the Chirp API explorer

Clone the repo and start the sample API — interactive docs UI, MCP connect flow, and the same Callspec explorer your APIs get.

npm run build && npm run serve:chirp-demo

Then open http://127.0.0.1:3456/v1/docsBearer token demo

Full steps