NewActions, not just answers

The Internet for the New World

The web was built for people. Schema is one API that lets agents read it and act on it: every website, callable in words or as a typed function, with the results to prove it.

Ask Schema anything
Ready
Google FlightsAmazonOpenTableAirbnbZillowBest BuyExpediaTicketmasterCraigslistWikipediaTargetKayak

The web has one interface, and it was built for people. We’re building the second one.

Read the vision
00Products

One vision. Three ways in.

Everything we build serves one idea: an API for the World. Every website, callable by agents — fast and accurate. Build on it, watch it work on your Mac, or put your own site on it.

Waitlist
For developers & agents

Schema for Flows

One API for the web: read it, and act on it.

Send a task in plain words to one endpoint, or call a site's typed functions directly. Schema answers from official APIs, live Flows, or the site itself, and does things too: forms, bookings, messages, each held at its final step until you confirm. Over REST or MCP.

Waitlist
The showcase

Schema for Mac

The same engine, as an app you can talk to.

A chat window and command bar for your Mac, built on the engine behind the API. Ask in plain English and watch it work: answers in seconds, forms filled in, bookings taken to checkout. Passwords and 2FA codes stay in an on-device Vault the model never sees.

Talk to us
For businesses

Schema for Sites

Zero-config. Your site, as an API for every agent.

Like Cloudflare, for the world of agents. Schema sits in front of your existing site and turns it into an API every agent can call — more traffic, more conversions, more reach, with no rebuild.

For developers & agents

Schema for Flows

One API for the web: read it, and act on it.

Join the waitlist
01Schema for Flows

One API for every website

Agents send a task in plain words to one endpoint, POST /v1/run, or over MCP, and Schema answers from an official API, a site's Flow, or the site itself. A Flow is a dynamic route into a site, running in real time against the live environment. The Google Flights Flow tells your agent what Google Flights does, which functions it can run, and what each one takes — and hands back typed results.

Google Flights Flow
v12 · 2 functions
ContextSelf-updated Sep 24

Search and compare flights worldwide to find the best deals.

Call search_flights to compare flights, or book_flight to pick one (cheapest by default) and open its booking options.

Call
book_flight({ origin: "ATL", destination: "BOS", date: "2026-11-12", choose: "cheapest" })
Response · BookingOptions[]200 · 3.4s
[
  {
    "seller": "Frontier",
    "price": 169
  },
  {
    "seller": "FlightHub",
    "price": 179
  },
  {
    "seller": "Frontier",
    "price": 209
  }
]
  1. 01

    Generated by discovery

    A discovery agent explores a site and writes its Flow: what the site does, the functions you can run, and the information you can read.

  2. 02

    Live, and self-updating

    Flows run in real time against the live site. When the site changes, the Flow adapts its behavior and ships a new version on its own.

  3. 03

    Typed where it counts

    Inputs can be typed or plain English. Outputs are always typed, so your agent never parses a page again.

  4. 04

    Sign-ins, handled

    For platforms behind a login, sessions are cached on Schema’s servers and loaded on demand. Manage sessions and credentials from the dashboard.

One error model, every Flow

Every failure on every site comes back in the same typed shape: a standard code, whether it’s safe to retry, and a request id that correlates it to the exact call in your logs. Handle errors once, not once per website.

  • invalid_input
  • unauthorized
  • auth_required
  • not_found
  • conflict
  • +3 more
// Same shape from Google Flights, OpenTable, or PG&E
{
  "error": {
    "code": "conflict",
    "message": "20:00 was just booked",
    "flow": "OpenTable Flow",
    "function": "book",
    "retryable": true,
    "request_id": "req_8Hc21",
    "details": { "alternatives": ["20:15", "20:45"] }
  }
}
02Actions

Not just reading the web. Doing things on it.

Orders, reservations, sign-ups, messages: the same endpoint that answers questions takes actions, and holds each one at its final step until you say go.

// 1. Ask for it
POST /v1/run
{ "task": "Order a large pizza for delivery at 7:45, submit it" }

→ "action": {
    "id": "act_ebaf1d999eba57d7",
    "status": "ready",
    "step": "Submit order"
  }

// 2. Your user says yes
POST /v1/actions/act_ebaf1d999eba57d7/confirm

→ "status": "done", "answer": "Order submitted: large pizza, 7:45 PM"
  1. 01

    Done up to the final step

    Searching, choosing and filling in happen on their own. Schema stops at the step that can’t be undone: Submit, Send, Complete reservation.

  2. 02

    Confirmed by you

    The action comes back with an id. Confirm it once your user agrees, and Schema presses that step on the same page, or cancel it.

  3. 03

    Payment is never Schema’s

    A checkout comes back as a handoff with the total and the page to pay on. Nothing is ever bought on your behalf.

03Benchmarks

Measured on the live web. Failures included.

43 real requests, from one-fact lookups to bookings and actions, sent to the API as agents send them. A task passes only when its checks hold: the right facts, the right page, the final step held and then done. Last run September 27, 2026.

By tier · tasks passed
  • lookup6/6 · 4.0s
  • live4/5 · 1.9s
  • navigate4/4 · 3.4s
  • research6/6 · 4.4s
  • form4/4 · 3.4s
  • prices3/4 · 4.9s
  • convo2/2 · 8.9s
  • robust3/3 · 3.8s
  • actions3/3 · 7.2s
  • transact4/6 · 6.3s
39/43
Tasks passed on every run, checked against the facts
91%
Of 43 runs passed
4.6s
Median time per task, live
16.5s
90th percentile: the slow ones, included
04Speed

Most agents spend their time clicking. Schema just calls.

Browser agents are slow because they act like people: wait for the page, look, click, repeat. Schema skips the performance. It calls functions directly and saves the deeper thinking for the few moments that need it.

One flight, request to booking page
Schema for Flows3.4s
Schema for Mac agent4.9s

Measured on Google Flights: a one-way booking from request to the booking page, median of repeated runs on a warm browser. Times vary by site.

3.4s
Median to book a flight through Schema for Flows
4.9s
The same booking, done by the Schema for Mac agent
1
Request, from a sentence to the booking page
0
Payments ever made on your behalf
The showcase

Schema for Mac

The same engine, as an app you can talk to.

Join the waitlist
05Examples

If you can ask for it, Schema can go get it

Flights, carts, reservations, bills, fine print. You describe the outcome, Schema turns it into function calls, and the typed results come back as clean Markdown: tables, checklists, quotes, whatever fits.

Travel2 calls · 4.1s

“Find a nonstop to Lisbon under $700 the second week of May”

  1. →flights.search(to: "LIS", max_price: 700, nonstop: true)
  2. →flights.hold(id: "TP202", seat: "23A")

3 nonstops under $700

FlightRouteDepartsPrice
TAP 202EWR → LISSun, May 11 · 7:50p$642
United 64EWR → LISMon, May 12 · 5:35p$671
TAP 204JFK → LISTue, May 13 · 9:10p$688

Seat 23A held on TAP 202. Press ⌘↵ to book it.

Errands2 calls · 3.9s

“Get me the earliest DMV slot for a license renewal”

  1. →dmv.appointments(type: "renewal", sort: "earliest")
  2. →dmv.hold(slot: "2026-10-06T09:20")

Tue, Oct 6 at 9:20am · Fell St

  • Appointment held
  • Confirmation DMV-7Q2K
  • Bring your current license
  • $38 renewal fee
Research1 call · 1.9s

“What’s the return window on this jacket, and is shipping free?”

  1. →store.policy(topic: "returns")

30 days

Returns ship free, with one catch:

“Items must be unworn with original tags attached.”

Returns policy, §4.2

Shopping1 call · 3.4s

“Compare what the filters cost for these three air purifiers”

  1. →products.compare(ids: [3], fields: ["price", "filter_cost"])

The cheapest to buy isn’t the cheapest to own

PurifierPriceFilters / yr3-yr total
Coway 200M$229 $149$34$251
Levoit 400S$219$58$393
Blueair 211i$319$71$532
Dining2 calls · 2.7s

“Book a table for four somewhere quiet near Union Square at 7:30”

  1. →reservations.search(near: "Union Square", party: 4, at: "19:30")
  2. →reservations.book(venue: "Cotogna", slot: "19:30")

Booked · Cotogna

  1. 1Checked 6 spots within a 10-min walk
  2. 2Ruled out 4 with “loud” in reviews
  3. 3Reserved 7:30pm, party of 4

Confirmation OT-55190

Bills2 calls · 5.4s

“Log into PG&E and pay this month’s bill”

  1. →pge.sign_in(credentials: vault("PG&E"))
  2. →pge.pay(amount: 112.40, from: "checking")

$112.40

Paid from checking ••4417

  • Due Oct 14, paid Sep 23
  • Receipt sent to your inbox
From your Vault:PG&E password2FA code
Work1 call · 6.3s

“Check our registrar for any domains expiring this quarter”

  1. →registrar.domains(expiring_before: "2026-12-31")

2 of 8 expire before Dec 31

  • schema.dev · Nov 14 · auto-renew off
  • getschema.co · Dec 2 · auto-renew off

The other 6 renew automatically.

From your Vault:Registrar loginWork email
06Features

Fast because there’s nothing to click

Schema doesn’t wait for pages to load or hunt for buttons. It calls functions, gets typed responses, and moves on.

Every site, as functions

Schema maps a website into callable functions with typed arguments. Search, filter, book, pay: each one is a call, not a sequence of clicks.

Calls, not clicks

No waiting for pages to render or buttons to appear. A call goes out, a typed response comes back, and Schema moves on.

Errors it can actually handle

A failed call returns a real error, not a frozen spinner. Schema fixes the arguments, tries again, and keeps going until the goal is met.

Speak it instead

Real-time macOS dictation is built into the bar. Say the task, get the answer.

Answers, not logs

Typed responses come back into the same bar as clean Markdown: the flight, the price, the confirmation.

Runs on your Mac

Schema is a standalone app, not a browser extension. Your Vault stays encrypted on your machine.

07Workflow

Four keystrokes between you and done

Schema lives one shortcut away. It’s built for the tiny errands you’d otherwise open six tabs for.

⌥Space

Summon it anywhere

The bar opens on top of whatever you’re doing. No tab to find, no app to switch to.

Type it or say it

Plain English works. So does talking — dictation is built in and transcribes as you speak.

↵

Schema makes the calls

Your request becomes a handful of function calls. You watch them go by in the bar: no windows, no tabs, no cursor.

⌘↵

Confirm what matters

Anything that spends money or can’t be undone waits for your go-ahead. Everything else just happens.

08Vault

Logs in for you. Never sees your password.

Connect passwords, 2FA codes, emails, usernames, or any other secret to your Vault. Schema can pass them into any call that needs them, but the model itself never gets to read them.

Encrypted on your Mac
Secrets are encrypted and stored on device, and only unlocked when a task needs one.
Invisible to the model
Schema asks for a secret by name. The Vault passes it straight into the function call, so the value never enters the model’s context.
Fetched only on demand
Nothing is loaded up front. A secret is retrieved at the moment the model calls for it, and not before.
2FA included
Store one-time codes alongside passwords, so logins with two-factor don’t stall halfway through.
Vault
Encrypted on this Mac
  • PG&EPassword••••••••••••
  • PG&E2FA code••• •••
  • Work emailEmailk••••@schema.dev
  • RegistrarUsernameschema-ops
  • Frequent flyer #Secret••••••7731
Model sees
vault("PG&E")
Call receives
••••••••••••
09How it behaves

Built to feel instant, not clever

Speed isn’t a setting Schema turns on. It’s the default, and everything else is the exception.

  1. 01

    Maps before it acts

    Schema turns a site into typed functions first, so it knows exactly what’s possible before it does anything. No fixed scripts to break when a site changes.

  2. 02

    Calls the instant it’s sure

    Routine calls go out immediately. There’s no waiting around for a slow model to confirm the obvious.

  3. 03

    Thinks only when it has to

    Real judgment calls — which fare, which result, which arguments — get the deeper reasoning they deserve, and nothing else does.

  4. 04

    Keeps going until it’s done

    A failed call comes back as a typed error. Schema adjusts and retries, and only stops once the goal is verifiably met.

For businesses

Schema for Sites

Zero-config. Your site, as an API for every agent.

Contact us
10Schema for Sites

Turn your site into an API for every agent

Schema for Sites is the Cloudflare for the world of agents. Put it in front of your existing site and it becomes a fast, typed API that agents can call — you choose what’s exposed. Your customers get things done, agents get a reliable way in, and you get the business. A win for everybody.

In developmentWIP

Schema for Sites isn’t open yet. We’re onboarding the first businesses by hand: tell us about your site and we’ll get in touch.

More traffic

Agents are becoming how people shop, book, and search. Sites they can actually use are the ones they send people to.

Higher conversion

An agent that can call checkout finishes the purchase instead of stalling on a dropdown or a cookie banner.

Wider reach

Every assistant, model, and agent becomes a channel to your customers, through one integration instead of one per provider.

Zero config, no rebuild

Schema sits in front of your existing site like Cloudflare. Your backend and your pages for people stay exactly as they are.

11The vision

An API for the World

Everything we build serves one idea. Machines shouldn’t have to pretend to be people: today’s agents look at pages designed for human eyes, find buttons sized for human fingers, and click them. Machines talking to machines should work fundamentally differently, so Schema is building the interface they deserve: every website, callable, fast and accurate.

Humans click. Machines call.

Humans read pages. Machines read types.

Humans wait for things to load. Machines get a response.

The end game: be the Cloudflare for the new world of agents — the layer every site sits behind, and every agent calls through.

Human → machine
Machine → machine
Pages, buttons, forms
Functions with typed arguments
Look around, scroll, guess
Read the schema
Click, type, wait
One call with arguments
Whatever renders
A typed, validated response
A spinner that never ends
An error you can handle
Seconds per step
Milliseconds per call
  1. Now

    Call any website

    Schema for Mac and Schema for Flows turn today’s websites into live, self-updating Flows that you and your agents can call, with typed answers instead of clicks.

  2. Next

    Sites that speak machine natively

    Schema for Sites: zero config, like Cloudflare. Any business puts Schema in front of its site and becomes a native API for every agent.

  3. Eventually

    An API for the World

    Every booking, purchase, form, and lookup on the internet is a fast, accurate function with a signature. The world, turned into an API.

12FAQ

Questions, answered

Something else on your mind? Get in touch.

Stop clicking. Start calling.

The waitlist is open for the API (Schema for Flows) and Schema for Mac. Join and we’ll email you as spots open up. Running a business? Schema for Sites is by conversation.

1,000
Early-access offer

The first 1,000 on the waitlist get in mid-October, with everything free for a month.

Schema for Mac: Apple silicon · macOS 14 or later

  1. 1

    Join the waitlist

    Takes under a minute. The first 1,000 get a free month.

  2. 2

    Get your invite

    The first 1,000 are admitted in mid-October.

  3. 3

    Sign in with the same email

    Use the address you joined the waitlist with.