The Archstone console is free on every plan until 1 December. See the plans โ†’

For developers

Describe a capability once. Ship it to every model.

A business-level description in; MCP tools and SDKs out, with a verifier that tells you, field by field, when your API drifts from it. Everything on this page is the actual mechanism โ€” the plain-language version is on the homepage.

Live, not illustrated

Try it in under a minute โ€” any device, nothing to install.

tourism_search is a real, working example โ€” already built, hosted live. This works the same way on Mac, Windows, the web, or your phone: no config file, no terminal, no sandbox account.

  1. Open Claude โ€” claude.ai, the Claude Desktop app, or the mobile app.
  2. Go to Settings (or Customize) โ†’ Connectors.
  3. Click Add custom connector, paste the URL below, click Add:
Connector URL โ€” paste this
https://demo.archstone.dev/mcp

Then ask about a trip โ€” a destination, a date range, a budget. Claude looks it up against a real backend and answers from what it finds: the exact scenario below, live.

Prefer a terminal? Claude Code โ€” one line, same on Mac/Windows/Linux
claude mcp add --transport http archstone-tourism https://demo.archstone.dev/mcp

For transparency: this demo's backend returns fixed, deterministic data โ€” not a live operator's real inventory โ€” so you can see the exact shape of what comes back. Same query, same result, every time. Curl it yourself:

Raw response โ€” try it
curl -s -X POST https://demo.archstone.dev/v1/search \
  -H "content-type: application/json" \
  -d '{"destination":"Rome"}'
What it returns
{
  "stays": [
    { "id": "stay-5-0", "name": "Riverside Lodge โ€” Rome", "location": "Rome",
      "pricePerNight": 225, "rating": 4.1 },
    { "id": "stay-2-1", "name": "The Olive Court โ€” Rome", "location": "Rome",
      "pricePerNight": 278, "rating": 4.5 },
    { "id": "stay-9-2", "name": "Harbor House โ€” Rome", "location": "Rome",
      "pricePerNight": 331, "rating": 4.9 }
  ]
}

Prefer everything on your own machine โ€” model included? archstone serve speaks the same protocol over stdio, so a local model via Ollama or LM Studio calls it exactly like Claude does above โ€” no cloud, no code changes. Copy-paste config in the open-source docs.

Want to see everything it does, not only a search? The technical demo โ†’ runs each capability in your browser on sample data: compile a declaration into a tool, see what a model never receives, catch a drifting API, refuse a call and read the audit record. Each one comes with the command to run it yourself.

That's our API, live. Want the same look at yours? Verify my API โ†’ โ€” paste your own OpenAPI document and see what an agent gateway would call, free, read-only, nothing stored.

How it works

One description. Every model. Written once.

You describe a capability โ€” what your business can do, in plain business terms, not code. Archstone compiles that into the tools each AI calls, and tells you when your API stops matching it. Three steps, and the last one repeats for free.

STEP 01

Describe

State the capability โ€” its inputs, its result, who may call it. Already have an OpenAPI document? archstone init drafts it for you and asks only what no spec can answer, like whether a call can change something.

STEP 02

Archstone compiles it

The compiler validates it, maps it to your real endpoint, and emits the tools โ€” with policy, rate limits and an audit record on every call. Nobody hand-writes integration code.

STEP 03

Every AI invokes

The same capability is discoverable and callable across models โ€” new assistants added without touching your systems.

tourism.search โ€” one declaration
# a capability is what you do, not how your API is wired
capability:
  id: tourism.search
  description: Find places to stay matching a traveler's destination, dates, party and budget.
  effect: read

  input:
    destination: { type: location }
    dates:       { type: date-range }   # prices vary by day
    travelers:   { type: party }
    budget:      { type: money, required: false }

  output:
    stays: { collection: Stay }   # from your portfolio only

  provider: booking-engine

Already comfortable building an MCP server yourself? Then the work was never the first server โ€” it's the fifth one, after ChatGPT's, Gemini's and whatever comes next each want it shaped slightly differently, and your API changes underneath all of them. Archstone generates every one of those from a single description and tells you, field by field, when your API drifts from it โ€” so that maintenance shrinks to one place instead of multiplying. Why a compiler, not the fifth MCP server โ†’

Neutral hosting

Don't want to run your own node? We'll host the bridge.

Some teams would rather not manage their own server โ€” that's fine. Hosting is optional, and it's pure utility: no bidding wars that rank one business above another. We host the technical bridge; you keep absolute control over where it leads.

Self-serve, in the console: sign up, point it at your OpenAPI description, choose what an agent may call, make one real test call, and publish an MCP endpoint โ€” no card, nothing to install. Start free โ†’

Endpoints are key-protected for Claude Code and Cursor, or public for connectors like claude.ai, or protected by sign-in for browser connectors. Capabilities that can't be undone are still on the way.

Internal use is the same manifest behind a key-protected endpoint. Declare effect: write or irreversible and every MCP client is told so on the tool, so clients that surface it โ€” Claude Desktop, claude.ai โ€” can put a confirmation in front of a person before calling it. Typed tool definitions carry no equivalent. Archstone discloses the effect; it does not enforce it. policies: [human-approval] is accepted today and not enforced โ€” archstone apply warns you by name โ€” and a server-side approval gate is not yet built. For an irreversible capability, archstone apply and archstone doctor also warn when it declares no failures, does not declare policies: [authenticated] (and has no Policy allow list), or names a policy this version does not enforce. These are checks on the declaration, not on your backend โ€” archstone verify is the check against the provider โ€” and they never change an exit code. Onboarding docs โ†’

Open core โ€” the line we won't cross

The compiler is yours. What we sell is keeping it honest in production.

Everything that turns your description into something an agent can call is Apache-2.0 and stays that way โ€” the language, the compiler, the IR, every emitter, the SDK, and the whole CLI: init, apply, build, serve, verify. archstone build and archstone serve never need a network call, an account or a key. Vendor a manifest, pin a version, and you can keep compiling and serving it forever with no relationship to us. ArtVinci runs entirely inside that, and owes us nothing.

Nothing that is free today will become paid. What we charge for is the part that only exists over time, on our machines โ€” written down, in the open, before we sold anything: what is free, and what we sell โ†’

01 โ€” DRIFT

Your backend changes. The agent finds out first.

A contract with an agent breaks silently: the field is gone, the tool still answers, the customer gets nonsense. archstone verify replays a real recorded call against your live backend โ€” free, on your machine, one shot. The console runs it on a schedule, keeps the history, and calls your webhook when a binding goes red.

02 โ€” AUDIT

What every agent asked, and what it cost.

Every execution already emits a structured record โ€” the hooks and the local sink are open source. The console collects that stream, keeps it for the retention you set, and makes it searchable and exportable across capabilities and time, so spend and refusals are answerable questions rather than a log file somebody greps.

03 โ€” MANAGED

We run the bridge; you keep the destination.

For teams who would rather not operate a node. Pure utility โ€” no bidding, no placement, no business ranked above another. Same compiled IR you built yourself, running somewhere you don't have to be on call for. More on hosting โ†‘

What's available right now

Start free on your own โ€” or have us write the first one with you.

All three are live in the console today, and the Free plan includes them: drift history, audit and hosting. Starter, Growth and Enterprise raise the limits โ€” retention, calls, hosted deployments โ€” and add support. Sign up and do it yourself โ†’ Compare the plans โ†’

If you would rather not, we take five design partners through it by hand: we write the first capability against your real API, wire build and verify into your CI, and ship it to production with you โ€” the same path ArtVinci took, minus the part where we were debugging the compiler along the way. Paid, fixed scope, your manifest lives in your repository and keeps working whatever happens to us.

That opens an email with the four things we need to know โ€” what your business does, what you want an agent to be able to do, what API is behind it, and where it should run. Answer them roughly; we'll reply with whether it's a fit and what it would take.

Ship it

Generate your connector.

Start free in the console, or vendor the open-source core and never talk to us again โ€” both are fine.

or write to us directly at hello@archstone.dev