Typestate

A managed backend your AI agent builds: database, sign-in, files, endpoints. You approve each step.

Should I use this

Quality & Safety

A
Description quality
100%
Schema completeness
93%
Naming quality
100%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~1,151Tokens (tool definitions)
~2.0 KBTypical response size
Moderate attention impact (0.90% of 128k context)

This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.

Install

One-Click Install

Add this to your `claude_desktop_config.json` file:

{
  "mcpServers": {
    "typestate": {
      "url": "https://mcp.typestate.com/mcp"
    }
  }
}

Remote endpoints

https://mcp.typestate.com/mcpstreamable-http

What it can do

Tool inventory

Tools (4)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟢get_blueprint(blueprint)

One blueprint's whole setup in English: every action's definition in full, the record types, web endpoints, schedules, sign-in, payments and MCP server it declares, what it cannot do, and what the person does after it starts. Read it before start_from_blueprint, and tell the person which rule they will most likely want to change.

Input Schema

{
  "type": "object",
  "properties": {
    "blueprint": {
      "description": "The blueprint's slug or name, as list_blueprints answers it.",
      "type": "string"
    }
  },
  "required": [
    "blueprint"
  ]
}

Output Schema

{
  "type": "object",
  "properties": {
    "answer": {
      "description": "The whole setup, in English, as Markdown.",
      "type": "string"
    },
    "notice": {
      "description": "Background work that did not end well since your last call. list_runs names each run.",
      "type": "string"
    }
  },
  "required": [
    "answer"
  ]
}
🟢get_started(about, service)

What Typestate is, what it costs, and how to connect to it. Call this first if you have met this server for the first time and want to know what it is for. Ask with no `about` and it answers all three parts at once. Name a `service` and it also lists what a person must do before Live works for that service (decision 0776).

Input Schema

{
  "type": "object",
  "properties": {
    "about": {
      "description": "Which part to answer: \"what_it_is\" for what the platform does, \"connecting\" for how an agent authenticates, \"plans\" for what it costs. Omit it to get all three.",
      "enum": [
        "what_it_is",
        "connecting",
        "plans"
      ],
      "type": "string"
    },
    "service": {
      "description": "A service slug. With it, the answer lists what a person must do before Live works for that service, one line each, with the page; hand them the list before the change.",
      "type": "string"
    }
  }
}

Output Schema

{
  "type": "object",
  "properties": {
    "answer": {
      "description": "The answer, in English, ready to show a person.",
      "type": "string"
    },
    "live_steps": {
      "description": "What a person must do before Live works for the service named, one line each. Empty when Live needs nothing, or no service was named.",
      "items": {
        "type": "string"
      },
      "type": "array"
    },
    "mcp_endpoint": {
      "description": "The address this server answers on.",
      "type": "string"
    },
    "notice": {
      "description": "Background work that did not end well since your last call. list_runs names each run.",
      "type": "string"
    },
    "sign_up_url": {
      "description": "Where a person opens an account.",
      "type": "string"
    },
    "website": {
      "description": "Where a person reads more about the platform.",
      "type": "string"
    }
  },
  "required": [
    "answer",
    "website",
    "live_steps",
    "mcp_endpoint",
    "sign_up_url"
  ]
}
🟢list_blueprints(purpose)

The blueprints: whole backends for a named kind of business, each a set of English definitions proven on this platform. Ask with the purpose in the customer's words, such as "salon appointments with a deposit", before you define the first entity of a new backend. A blueprint that fits is started with start_from_blueprint, and every definition in it is the customer's own to change afterwards.

Input Schema

{
  "type": "object",
  "properties": {
    "purpose": {
      "description": "What the backend is for, in the customer's words. Leave it out to list every blueprint.",
      "type": "string"
    }
  }
}

Output Schema

{
  "type": "object",
  "properties": {
    "answer": {
      "description": "The matching blueprints, one paragraph each, in English.",
      "type": "string"
    },
    "notice": {
      "description": "Background work that did not end well since your last call. list_runs names each run.",
      "type": "string"
    },
    "slugs": {
      "items": {
        "type": "string"
      },
      "type": "array"
    }
  },
  "required": [
    "answer",
    "slugs"
  ]
}
🟢list_integration_catalog(need)

The integration catalog: the systems a Typestate backend works with, made and checked by Typestate. A built-in one is turned on with one setting tool, which the answer names. A declared one was called against the real vendor on the date the answer gives, and apply_integration copies it into a service. Ask before you write a declaration yourself with define_integration.

Input Schema

{
  "type": "object",
  "properties": {
    "need": {
      "description": "What the backend needs, or a vendor's name: \"payments\", \"send email\", \"Slack\". Leave it out to list the whole catalog.",
      "type": "string"
    }
  }
}

Output Schema

{
  "type": "object",
  "properties": {
    "answer": {
      "description": "The matching integrations, one paragraph each.",
      "type": "string"
    },
    "notice": {
      "description": "Background work that did not end well since your last call. list_runs names each run.",
      "type": "string"
    },
    "slugs": {
      "items": {
        "type": "string"
      },
      "type": "array"
    }
  },
  "required": [
    "answer",
    "slugs"
  ]
}

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded4 tools
verifiedversion not recorded4 tools
verifiedversion not recorded4 tools
verifiedversion not recorded4 tools
verifiedversion not recorded1 tools
verifiedversion not recorded1 tools