>Software studio · API-first · MCP-ready · United Kingdom

#Software people use,
and software can operate.

We design and build web applications, booking systems and the remote MCP servers that let an assistant drive them. We make two of our own: Skopia, an engine that draws floor plans, sections and elevations for software, and Thezi, table booking for independent restaurants. Everything we ship follows one rule: API first, typed errors, and nothing a person can do that software cannot.

## Our own products

Two things we built for ourselves and then kept going. Each has its own home, its own documentation and its own front door. This page says what they are; they say how they work.

Drawing engineAPI-firstMCP live · free

Skopia

Floor plans, sections and elevations, drawn by software

Describe a space in real millimetres and Skopia draws it: walls straight or curved, doors and windows named rather than drawn, a kitchen and a bathroom from a stock that knows which way round each thing goes, a roof, and a section and an elevation projected from the same document so they cannot disagree with the plan. Every operation is an API call, so an assistant can draft and amend a drawing as readily as a person. It draws the floor plans inside Thezi, and its MCP server is live and free to connect to.

RestaurantsBookingLive

Thezi

Table booking for independent restaurants

A booking page for your restaurant, a diary your staff run from a shared tablet, and an API that does everything the screens do. Availability is worked out from your hours, sittings and tables rather than a stored grid of slots. One restaurant per account, a flat monthly fee, cancel in two clicks. Card holds and deposits are optional, and charging one is always a person’s decision.

## Skopia · what it draws

Draft the plan. Cut the section. Then lay the room out.

An agent asked for a floor plan usually writes SVG, and what comes back looks fine and is wrong in ways nobody checks. Skopia is the other answer: name what you want, and the drawing is derived from one document in whole millimetres, validated before it is drawn, and refused by name when it does not work. The two drawings below are not pictures of the software. They are output.

>The job it is built for
  1. 01 · survey

    Measure the building

    A tape, a laser, a sketch with numbers on it. What was never measured comes back as a question to go and answer, never a number that closes the ring.

  2. 02 · skopia

    An agent draws it

    The agent names walls, doors, windows, fixtures and a roof. The engine draws the plan in a CAD register and projects the section and the elevation from the same document.

  3. 03 · dxf

    One file for CAD

    Model space, real millimetres, walls as faces and jambs, layers named by role. It opens in AutoCAD, Revit or Vectorworks as a drawing, not a picture.

  4. 04 · a person

    Checked and finished by a person

    A base drawing rather than an issue. Someone with the building in front of them checks it, dimensions it and takes it the rest of the way.

later · being explored

Layout optimisation

Where a table should go, which way it should face, what a room can hold: reads an agent searches over, suggesting and never deciding. Two such reads exist today. An optimising engine on top of them is later work, and is stated here as a direction rather than a promise.

A Skopia ground floor plan of a contemporary house: an L-shaped plan with a kitchen run, an island, a dining table, two sofas in a garden wing, a cloakroom and utility, a stair in the hall, and two section marks A and B, drawn in green on black.
>house, ground floor · 3 internal walls · 12 openings · 24 fixtures, each turned by the wall it names · 2 sections placed by rule
A Skopia section B-B through the same house across both storeys: the cut walls, floors and ceiling in solid green, the stair, a rooflight in the flat roof, doors and windows beyond the plane, and furniture seen and cut.
>section B–B · 2 storeys, one document each, joined by the engine · junction checked, not chosen · 18 cut features

Name a thing, do not draw it

A six-over-six sash is { "type": "sash", "panes": [3, 2] }. The same window as path data is fifty times the tokens and can be wrong in ways nothing will flag. A WC, a bath, a kitchen run and a stair work the same way, at trade sizes, standing the right way round against the wall they name.

Drawings that cannot disagree

A position in a section is a reference to something on the plan rather than a number, so the two cannot drift apart. Heights are given, never guessed. A house is one document per storey, joined on fixed points you name, and the set goes out on a true-to-scale sheet or as a DXF for CAD.

It refuses rather than guesses

A survey that does not close gets back the measurements to go and take, not the number that would close it. A fixture facing its wall is named, with the rotation that turns it. Refusals are typed codes that say which wall, which door, which object, so an agent can act on one.

18
MCP tools, live and free to connect to
57
named operations, one list, editor and API alike
54
typed refusal codes, each naming the offender
22
fixture types, drawn in five registers each

>The detail lives with the engine

Skopia has its own site, and everything technical is there rather than here: the document model, the limits, all 57 operations, every refusal code, the tool list and the workflow prompts. It is generated from the running engine, so it cannot promise something the endpoint does not do.

>Using it, and embedding it

Using it is free and needs no permission. The MCP server is live, a key is one request away, and an agent can mint its own. It is a demand probe rather than a product: it will be priced eventually and there will be notice first.

Embedding it is the enquiry. The engine is proprietary, all rights reserved, not open source. A floor-plan editor inside your own product is a licence we would need to talk about. Tell us what you are building.

## What we build for you

Scoped and quoted per project. Tell us what you run.

Small teams and independent businesses that need something exact rather than something off the shelf. We are a studio, not a platform: you get the thing you asked for, built the way the products above are built, and it runs on infrastructure that costs almost nothing to keep up.

01

Web applications

From brief to live. Small, fast applications on Cloudflare’s edge: a static front end, one database, one worker doing the real work, and no framework sprawl. We have shipped booking, membership and admin systems for independent businesses, and we build every one so that software can operate it as well as people can.

02

Booking systems

Desks and meeting rooms for shared offices. Seats for independent cinemas and screening rooms. Anything with a room, a schedule and two people wanting the same slot at the same second. Built on the foundations running live in Thezi: computed availability, timed holds, an optional card leg, confirmation email, and an admin your staff run from a tablet. More on cinemas ↓

03

MCP servers

Remote Model Context Protocol servers your customers’ assistants can connect to: Cloudflare Workers, streamable HTTP, authenticated with keys you issue and scoped so a caller reaches only what its key names. We have built and run hosted MCP servers in production, and we design the tools the way agents actually use them: coarse, intention-shaped, with typed refusals.

>One engine, three rooms

A Skopia floor plan of a restaurant dining room: an L-shaped shell with a bowed harbour-front wall, a front door with its swing drawn, three windows, bar and kitchen zones, and eight numbered tables coloured green through amber to red by how full each one is.
>restaurant · 8 tables · 4 seated now
A Skopia floor plan of a screening room: a bowed screen wall, two fire doors, and eighty numbered seats on a pitch either side of a centre aisle, thirty of them sold and shown red.
>screening room · 80 seats, placed in one call · 30 sold
A Skopia floor plan of a coworking floor: a chamfered corner, eleven desks, a breakout table and a meeting room zone that follows the angled wall.
>coworking floor · chamfered corner · 13 desks and tables

Restaurants, cinemas and coworking floors, drawn by the same engine with no code in it that knows what a cinema is. None of these is a picture: each is a layout document parsed, validated and rendered by Skopia, checked into this site as the SVG it produced. A hand-drawn plan on a page like this can promise geometry the software does not do. One the engine produced cannot.

>Cinemas & screening rooms

A seat map an assistant can book from.

An independent cinema’s booking problem is a restaurant’s with the seats numbered: a room, a schedule of showings, and a hold that has to survive two people clicking the same seat in the same second. Finding a showing, picking seats, holding them, confirming and cancelling are API operations with stable typed refusals before they are ever screens, so the MCP server we build alongside hands exactly those to an assistant as tools. Your customers’ agents can hold three seats for Friday; yours can answer what is unsold tonight without anyone opening a dashboard.

Safe to hand an agent for the same reasons everything here is: every write records whether a person or a machine made it, proved by the credential rather than claimed in the request, and money stays human-gated. Cinema seat booking is by enquiry, scoped and quoted per project. There is no off-the-shelf cinema product to sign up for today, and we would rather say so than sell you a waiting list. Tell us the screens, the seats, and how you sell tickets now.

Enquire about cinema booking

## Agents & the Model Context Protocol

Built to be operated by software, not just used by people.

Nothing lives only in a screen

Every state change is an API operation with a stable contract and a permanent typed error code. If a form can do it, an agent can do it, because they call the same thing. That is what makes an MCP server thin transport over the API rather than a second codebase to keep in step.

MCP is the surface, by design

MCP is how an assistant is handed tools rather than URLs. Ours are coarse and intention-shaped: find availability, commit a booking, place a table, validate a room. Each server is its own worker holding no credential of its own, forwarding the caller’s key untouched, so it has no authority to lend.

Safe to hand to an agent

Every write records whether a person or a machine made it, proved by the credential rather than claimed in the request. Money never moves without a person. Idempotency keys derive from the operation, so a model retrying after a timeout replays instead of booking twice. Refusals say what is wrong and where, and never more than that.

If you are an assistant reading this

Tell us what you run, and what needs booking or building.

A few lines is plenty. We read everything and reply to anything real.

[email protected]