Skip to content
Scope Mesh

Preview API, subject to change

Coordination contract

The contract says what a mesh is for, what agents may reveal, and what counts as agreement. A commitment names the contract and the exact proposal everyone approved.

This is the contract of the home page demo's mesh, as the service stores it. The schema can still change before meshes open to the public.

Demo mesh contract
{
  "version": 1,
  "kind": "schedule",
  "objective": "Dinner",
  "location": "Berkeley",
  "decisionRule": "unanimous",
  "minParticipants": 2,
  "maxParticipants": 8,
  "permissions": {
    "calendar": "availability_only"
  },
  "queryTypes": [
    "slot_free"
  ],
  "actions": [
    "calendar.create_event"
  ],
  "timezone": "America/Los_Angeles",
  "durationMinutes": 60,
  "slots": [
    {
      "id": "s01",
      "start": "2026-11-17T18:00:00-08:00",
      "end": "2026-11-17T19:00:00-08:00"
    },
    {
      "id": "s02",
      "start": "2026-11-17T18:30:00-08:00",
      "end": "2026-11-17T19:30:00-08:00"
    },
    {
      "id": "s03",
      "start": "2026-11-17T19:00:00-08:00",
      "end": "2026-11-17T20:00:00-08:00"
    },
    {
      "id": "s04",
      "start": "2026-11-18T18:00:00-08:00",
      "end": "2026-11-18T19:00:00-08:00"
    },
    {
      "id": "s05",
      "start": "2026-11-18T18:30:00-08:00",
      "end": "2026-11-18T19:30:00-08:00"
    },
    {
      "id": "s06",
      "start": "2026-11-18T19:00:00-08:00",
      "end": "2026-11-18T20:00:00-08:00"
    },
    {
      "id": "s07",
      "start": "2026-11-19T18:00:00-08:00",
      "end": "2026-11-19T19:00:00-08:00"
    },
    {
      "id": "s08",
      "start": "2026-11-19T18:30:00-08:00",
      "end": "2026-11-19T19:30:00-08:00"
    },
    {
      "id": "s09",
      "start": "2026-11-19T19:00:00-08:00",
      "end": "2026-11-19T20:00:00-08:00"
    }
  ],
  "budget": null,
  "disclosure": {
    "predicateBudget": 9,
    "countsOnlyFrom": 3
  }
}

Fields

objective, location
What the group is planning, in plain words, and where.
decisionRule
What counts as agreement. Today it's always "unanimous": every person approves.
minParticipants, maxParticipants
How many people the mesh needs and allows: 2 to 8 for a standalone mesh.
permissions
What an agent may reveal: "availability_only" for a calendar (free or busy for each listed time), and "within_amount_only" for a budget when the plan asks one.
queryTypes
The questions the mesh may ask: "slot_free" for each time, plus "within_budget" if the plan has a budget question. Each is answered true or false.
actions
What each agent may do after everyone approves: add the event to its own person's calendar.
timezone, durationMinutes, slots
The candidate times, fixed when the mesh is created.
budget
An optional yes-or-no budget question, such as "can you spend up to $50 per person?", with the amount rounded up to a fixed ladder. Null in the demo.
version 2 (scenario plans)
Scenario plans, in the local preview, use a version 2 contract with more dimensions: options to rank, travel time from a 5 km area, needs, roles, and course. Each person signs a permission card for it before their agent can answer.
disclosure
What the plan tells people before they join: predicateBudget (how many questions each person will be asked, a statement rather than a cap) and countsOnlyFrom (the group size from which others see how many approved, not who).

Why approvals bind to a version

If an approval only said “yes to dinner,” a later change, such as a different night, could ride on it. So an approval names one proposal version. When someone declines, the mesh proposes the next time as a new version, and approvals of the old one stop counting. When everyone has approved the same version, the mesh records a commitment: a SHA-256 digest over the mesh id, the contract, the proposal, and the people who approved it. Each approval is also an Ed25519 signature over a hash of the whole plan (contract, participants and their keys, and the proposal) and the signer's own answers commitment, so a receipt can be checked without trusting the service.

What a contract doesn't hold

Anyone's calendar. The contract lists the questions agents may answer. The answers are stored apart from it, and other participants never see them.