Invented example · built on Kindling · Why Kindling · The library · The spec · The Circular

Ferry Room PlayersThe Ferry Room · Neap Tide Records

Under the hood

How Ferry Room Players is set.

Every setting we chose, what it is, the part of the spec it comes from, and why a venue would choose it. The JSON is below, exactly as published.

SettingValueSpecWhy we chose it
Consent modeluniversal-opt-in, all five Pools§5.1 §5.2Every player says yes before they’re listed. No bandleader, and nobody at the Ferry Room, can put a name on a list.
Handshake window48 hours in Friday Subs; 14 days in the other four§5.2A Friday gig doesn’t wait two weeks. v0.1 has no manifest field for the window, so each Friday Subs request carries it in expires_at, and governance_rules says so in words.
Auto-acceptAllowed. Off until a player writes a rule; five rules at most§5.5Players who always want Friday calls can say yes ahead of time. Every auto-accept sends a notice, and undoing one takes the player out.
Visibilitypublic, all five Pools§3.2A venue’s sub list should be findable by bands. Nothing private lives here, and a rule can’t reach an invite-only Pool anyway.
Minimum sender verificationoauth, Friday Subs§3.3 §7.1Short-notice calls draw strangers. One sign-in step before anyone writes to a player through the Pool.
Player messaging rulesMost players: pool-mates only (accept_from: shared-pool). Theo: any verified sender§7.2Each player sets their own. We honor what their profile says and show it on every card.
Block listsKindling’s public list and the Circular consortium’s§7.3Both are published; we subscribe rather than keep a private grudge list.
Curator verificationLena, Ozzie and Wes all signed in with OAuth§4.3 §4.5Players see who’s asking and how that person is verified, in words and with an icon, beside every name.
Parsingh-card first; the rest inferred by kindling-parser/0.1.1; provenance kept§2.2 §2.3A guess should look like a guess. Each field on a player card is marked h-card or inferred.
Parsing timingOnly after a yes§5.2Before a yes, the Pool pre-fetches a contact method and nothing else. Kofi’s page is not read until he answers.
LeavingOne action, from the Pool page or any message; under a second here§5.3The spec allows sixty seconds. Leaving should never be the hard part.
NoindexHonored§2.7A player whose page says kindling-noindex is never listed here or anywhere we publish.
PhotosNever stored§2.5Players’ pages have photos. We link nothing and copy nothing.
Discovery/.well-known/kindling-pool lists all five Pools§8.3 §10The Circular and any registry can read it without asking.

What the v0.1 schema can’t say yet

Six places the text and the JSON part ways.

Where the spec text and a schema disagree, our JSON follows the schema, and we write the gap down here.

  • The handshake window has no field.

    §5.2 says the 14-day window is “configurable per Pool”. The v0.1 manifest has no field for it. Friday Subs carries its 48 hours in each request’s expires_at and states the rule in governance_rules. A client that reads only the manifest can’t know the window until an ask arrives.

    Spec: §5.2

  • Provenance has nowhere to go.

    §2.3 says parsers must record which fields came from h-card and which were inferred, and names an extraction_source field. parsed_profile.schema.json has no such field and forbids extra properties. So the marks on our player cards come from our own parse log, provenance.json, which is not a Kindling format.

    Spec: §2.3

  • Verification words differ.

    §4.5 names email-verified, oauth-verified, curator-vouched and unverified. The schemas use email, oauth, curator-vouched, unverified and cryptographic, and a curator can only be email, oauth or cryptographic. Our JSON follows the schemas; our pages say “Signed in with OAuth” and “Email verified”.

    Spec: §4.5

  • There are more message types than the text lists.

    §6.3 lists four message types. kindling_message.schema.json has six, adding withdrawal and system. Our Leave button sends a withdrawal, and Mae’s auto-accept notice is a system message.

    Spec: §6.3

  • A rule can never reach an invite-only Pool.

    §5.5 lists a “visibility constraint” among the things a rule checks, and stops there. The schema is stricter: allowed_visibility may list only public and unlisted. We think that’s right, and we say so on the ask page.

    Spec: §5.5

  • Noindex is not privacy inside a Pool.

    kindling_noindex: true means “do not include me in any Pool”. It is not a way to be in a Pool quietly; privacy inside a Pool comes from its visibility. All five of ours are public.

    Spec: §2.7

Every manifest

Five Pools, as published.

Each Pool is one JSON file under pools/. Read it here, or open the file.

id
friday-subs
name
Friday Subs
curator
Lena Brightwater lena@mail.example Signed in with OAuth · primary
intent_tags
sub · drums · bass · keys · guitar · music
visibility
public
consent_model
universal-opt-in
curator_contact
players@ferryroom.example
charter
Players who will fill in on short notice for bills at the Ferry Room. Paid by the band or the door, never by this Pool. Say yes ahead of time with an auto-accept rule, or answer each ask as it comes.
geographic_scope
Port Ellery, United States
governance_rules
Handshake requests in Friday Subs expire after 48 hours instead of the default 14 days, because a gig does not wait. The manifest has no field for this yet in v0.1, so the window is carried by each request’s expires_at and stated here.
messaging_preferences
Block lists: https://protocol.kindling.foundation/blocklist.json, https://thecircular.example/blocklist.json
minimum_sender_verification: oauth
status
active
created_at · updated_at
2026-04-03T16:00:00Z · 2026-09-25T17:10:00Z
entries[] · 3verification_levelconsent_proof
Mae Castellano
https://maecastellano.bandcamp.example
Signed in with OAuthauto-accept · 2026-04-03T17:20:00Z
Darío Méndez
https://dario-bajo.bandcamp.example
Signed in with OAuthauto-accept · 2026-04-03T17:21:00Z
Theo Lindqvist
https://theo-lindqvist.carrd.example
Email verifiedemail-link · 2026-09-02T19:00:00Z
The JSON, exactly
{
  "schema_version": "0.1",
  "id": "friday-subs",
  "name": "Friday Subs",
  "curator": [
    {
      "identity": "lena@mail.example",
      "display_name": "Lena Brightwater",
      "verification_level": "oauth",
      "primary": true
    }
  ],
  "intent_tags": [
    "sub",
    "drums",
    "bass",
    "keys",
    "guitar",
    "music"
  ],
  "visibility": "public",
  "consent_model": "universal-opt-in",
  "curator_contact": "players@ferryroom.example",
  "charter": "Players who will fill in on short notice for bills at the Ferry Room. Paid by the band or the door, never by this Pool. Say yes ahead of time with an auto-accept rule, or answer each ask as it comes.",
  "geographic_scope": {
    "city": "Port Ellery",
    "country": "United States"
  },
  "governance_rules": "Handshake requests in Friday Subs expire after 48 hours instead of the default 14 days, because a gig does not wait. The manifest has no field for this yet in v0.1, so the window is carried by each request’s expires_at and stated here.",
  "messaging_preferences": {
    "block_list_subscriptions": [
      "https://protocol.kindling.foundation/blocklist.json",
      "https://thecircular.example/blocklist.json"
    ],
    "minimum_sender_verification": "oauth"
  },
  "status": "active",
  "created_at": "2026-04-03T16:00:00Z",
  "updated_at": "2026-09-25T17:10:00Z",
  "entries": [
    {
      "profile_url": "https://maecastellano.bandcamp.example",
      "parsed_profile": {
        "schema_version": "0.1",
        "profile_url": "https://maecastellano.bandcamp.example",
        "display_name": "Mae Castellano",
        "pronouns": "she/they",
        "location": {
          "city": "Port Ellery",
          "country": "United States"
        },
        "intent_tags": [
          "drums",
          "sub",
          "band",
          "dating"
        ],
        "about": "Drummer. Jazz on weeknights, punk on weekends, whatever you need on Friday. Keeps sticks in the car.",
        "contact_methods": [
          {
            "type": "email",
            "value": "mae@mail.example",
            "label": "Kindling identity"
          }
        ],
        "verification": {
          "level": "oauth",
          "verified_at": "2026-04-03T17:20:00Z",
          "verifier": "google"
        },
        "messaging_preferences": {
          "accept_from": "shared-pool",
          "no_cold_messages": false,
          "minimum_curator_verification": "email",
          "auto_accept_rules": [
            {
              "intent_tags": [
                "drums",
                "sub"
              ],
              "minimum_curator_verification": "oauth",
              "allowed_visibility": [
                "public"
              ]
            }
          ]
        },
        "kindling_noindex": false,
        "parsed_at": "2026-04-03T17:20:00Z",
        "parser": "kindling-parser/0.1.1"
      },
      "parsed_at": "2026-04-03T17:20:00Z",
      "consent_proof": {
        "handshake_id": "hs-ferry-room-friday-subs-mae",
        "accepted_at": "2026-04-03T17:20:00Z",
        "method": "auto-accept"
      },
      "verification_level": "oauth",
      "added_at": "2026-04-03T17:20:00Z",
      "added_by": "lena@mail.example"
    },
    {
      "profile_url": "https://dario-bajo.bandcamp.example",
      "parsed_profile": {
        "schema_version": "0.1",
        "profile_url": "https://dario-bajo.bandcamp.example",
        "display_name": "Darío Méndez",
        "pronouns": "he/him",
        "location": {
          "city": "Port Ellery",
          "country": "United States"
        },
        "intent_tags": [
          "bass",
          "sub",
          "band",
          "language-exchange",
          "spanish",
          "english",
          "conversation"
        ],
        "about": "Bass player from Veracruz, eleven years in Port Ellery. Subs on short notice. Wants his written English to sound like his spoken English.",
        "contact_methods": [
          {
            "type": "email",
            "value": "dario@mail.example",
            "label": "Kindling identity"
          }
        ],
        "verification": {
          "level": "oauth",
          "verified_at": "2026-04-03T17:21:00Z",
          "verifier": "google"
        },
        "messaging_preferences": {
          "accept_from": "shared-pool",
          "no_cold_messages": false,
          "minimum_curator_verification": "email",
          "auto_accept_rules": [
            {
              "intent_tags": [
                "bass",
                "sub"
              ],
              "minimum_curator_verification": "oauth",
              "allowed_visibility": [
                "public"
              ]
            }
          ]
        },
        "kindling_noindex": false,
        "parsed_at": "2026-04-03T17:21:00Z",
        "parser": "kindling-parser/0.1.1"
      },
      "parsed_at": "2026-04-03T17:21:00Z",
      "consent_proof": {
        "handshake_id": "hs-ferry-room-friday-subs-dario",
        "accepted_at": "2026-04-03T17:21:00Z",
        "method": "auto-accept"
      },
      "verification_level": "oauth",
      "added_at": "2026-04-03T17:21:00Z",
      "added_by": "lena@mail.example"
    },
    {
      "profile_url": "https://theo-lindqvist.carrd.example",
      "parsed_profile": {
        "schema_version": "0.1",
        "profile_url": "https://theo-lindqvist.carrd.example",
        "display_name": "Theo Lindqvist",
        "pronouns": "he/him",
        "location": {
          "city": "Port Ellery",
          "country": "United States"
        },
        "intent_tags": [
          "new-in-town",
          "friendship",
          "drums",
          "band"
        ],
        "about": "Moved here in August for a remote job. Plays drums badly and enthusiastically. Looking for people to walk, eat and play with.",
        "contact_methods": [
          {
            "type": "email",
            "value": "theo@mail.example",
            "label": "Kindling identity"
          }
        ],
        "verification": {
          "level": "email",
          "verified_at": "2026-09-02T19:00:00Z"
        },
        "messaging_preferences": {
          "accept_from": "verified",
          "no_cold_messages": false,
          "minimum_curator_verification": "email"
        },
        "kindling_noindex": false,
        "parsed_at": "2026-09-02T19:00:00Z",
        "parser": "kindling-parser/0.1.1"
      },
      "parsed_at": "2026-09-02T19:00:00Z",
      "consent_proof": {
        "handshake_id": "hs-ferry-room-friday-subs-theo",
        "accepted_at": "2026-09-02T19:00:00Z",
        "method": "email-link"
      },
      "verification_level": "email",
      "added_at": "2026-09-02T19:00:00Z",
      "added_by": "lena@mail.example"
    }
  ]
}

Start a Band: Port Ellery

pools/start-a-band.json
id
start-a-band
name
Start a Band: Port Ellery
curator
Oswaldo “Ozzie” Reyes ozzie@mail.example Signed in with OAuth · primary
intent_tags
band · music · friendship
visibility
public
consent_model
universal-opt-in
curator_contact
players@ferryroom.example
charter
People who want to start a band, join one, or finally play the songs they have been writing. Say what you play and what you like. Ozzie at Neap Tide keeps it.
geographic_scope
Port Ellery, United States
messaging_preferences
Block lists: https://protocol.kindling.foundation/blocklist.json, https://thecircular.example/blocklist.json
status
active
created_at · updated_at
2026-05-28T10:00:00Z · 2026-09-20T18:00:00Z
entries[] · 4verification_levelconsent_proof
Theo Lindqvist
https://theo-lindqvist.carrd.example
Email verifiedemail-link · 2026-08-25T16:00:00Z
Ada Quillon
https://ada-quillon.bandcamp.example
Email verifiedemail-link · 2026-06-12T14:30:00Z
Darío Méndez
https://dario-bajo.bandcamp.example
Signed in with OAuthoauth · 2026-05-30T11:00:00Z
Mae Castellano
https://maecastellano.bandcamp.example
Signed in with OAuthoauth · 2026-06-01T22:15:00Z
The JSON, exactly
{
  "schema_version": "0.1",
  "id": "start-a-band",
  "name": "Start a Band: Port Ellery",
  "curator": [
    {
      "identity": "ozzie@mail.example",
      "display_name": "Oswaldo “Ozzie” Reyes",
      "verification_level": "oauth",
      "primary": true
    }
  ],
  "intent_tags": [
    "band",
    "music",
    "friendship"
  ],
  "visibility": "public",
  "consent_model": "universal-opt-in",
  "curator_contact": "players@ferryroom.example",
  "charter": "People who want to start a band, join one, or finally play the songs they have been writing. Say what you play and what you like. Ozzie at Neap Tide keeps it.",
  "geographic_scope": {
    "city": "Port Ellery",
    "country": "United States"
  },
  "messaging_preferences": {
    "block_list_subscriptions": [
      "https://protocol.kindling.foundation/blocklist.json",
      "https://thecircular.example/blocklist.json"
    ]
  },
  "status": "active",
  "created_at": "2026-05-28T10:00:00Z",
  "updated_at": "2026-09-20T18:00:00Z",
  "entries": [
    {
      "profile_url": "https://theo-lindqvist.carrd.example",
      "parsed_profile": {
        "schema_version": "0.1",
        "profile_url": "https://theo-lindqvist.carrd.example",
        "display_name": "Theo Lindqvist",
        "pronouns": "he/him",
        "location": {
          "city": "Port Ellery",
          "country": "United States"
        },
        "intent_tags": [
          "new-in-town",
          "friendship",
          "drums",
          "band"
        ],
        "about": "Moved here in August for a remote job. Plays drums badly and enthusiastically. Looking for people to walk, eat and play with.",
        "contact_methods": [
          {
            "type": "email",
            "value": "theo@mail.example",
            "label": "Kindling identity"
          }
        ],
        "verification": {
          "level": "email",
          "verified_at": "2026-08-25T16:00:00Z"
        },
        "messaging_preferences": {
          "accept_from": "verified",
          "no_cold_messages": false,
          "minimum_curator_verification": "email"
        },
        "kindling_noindex": false,
        "parsed_at": "2026-08-25T16:00:00Z",
        "parser": "kindling-parser/0.1.1"
      },
      "parsed_at": "2026-08-25T16:00:00Z",
      "consent_proof": {
        "handshake_id": "hs-ferry-room-start-a-band-theo",
        "accepted_at": "2026-08-25T16:00:00Z",
        "method": "email-link"
      },
      "verification_level": "email",
      "added_at": "2026-08-25T16:00:00Z",
      "added_by": "ozzie@mail.example"
    },
    {
      "profile_url": "https://ada-quillon.bandcamp.example",
      "parsed_profile": {
        "schema_version": "0.1",
        "profile_url": "https://ada-quillon.bandcamp.example",
        "display_name": "Ada Quillon",
        "pronouns": "she/her",
        "location": {
          "city": "Port Ellery",
          "country": "United States"
        },
        "intent_tags": [
          "songwriting",
          "demos",
          "band",
          "dating"
        ],
        "about": "Writes songs on a nylon-string guitar. Wants honest ears on her demos and will return the favor.",
        "contact_methods": [
          {
            "type": "email",
            "value": "ada@mail.example",
            "label": "Kindling identity"
          }
        ],
        "verification": {
          "level": "email",
          "verified_at": "2026-06-12T14:30:00Z"
        },
        "messaging_preferences": {
          "accept_from": "shared-pool",
          "no_cold_messages": false,
          "minimum_curator_verification": "email"
        },
        "kindling_noindex": false,
        "parsed_at": "2026-06-12T14:30:00Z",
        "parser": "kindling-parser/0.1.1"
      },
      "parsed_at": "2026-06-12T14:30:00Z",
      "consent_proof": {
        "handshake_id": "hs-ferry-room-start-a-band-ada",
        "accepted_at": "2026-06-12T14:30:00Z",
        "method": "email-link"
      },
      "verification_level": "email",
      "added_at": "2026-06-12T14:30:00Z",
      "added_by": "ozzie@mail.example"
    },
    {
      "profile_url": "https://dario-bajo.bandcamp.example",
      "parsed_profile": {
        "schema_version": "0.1",
        "profile_url": "https://dario-bajo.bandcamp.example",
        "display_name": "Darío Méndez",
        "pronouns": "he/him",
        "location": {
          "city": "Port Ellery",
          "country": "United States"
        },
        "intent_tags": [
          "bass",
          "sub",
          "band",
          "language-exchange",
          "spanish",
          "english",
          "conversation"
        ],
        "about": "Bass player from Veracruz, eleven years in Port Ellery. Subs on short notice. Wants his written English to sound like his spoken English.",
        "contact_methods": [
          {
            "type": "email",
            "value": "dario@mail.example",
            "label": "Kindling identity"
          }
        ],
        "verification": {
          "level": "oauth",
          "verified_at": "2026-05-30T11:00:00Z",
          "verifier": "google"
        },
        "messaging_preferences": {
          "accept_from": "shared-pool",
          "no_cold_messages": false,
          "minimum_curator_verification": "email",
          "auto_accept_rules": [
            {
              "intent_tags": [
                "bass",
                "sub"
              ],
              "minimum_curator_verification": "oauth",
              "allowed_visibility": [
                "public"
              ]
            }
          ]
        },
        "kindling_noindex": false,
        "parsed_at": "2026-05-30T11:00:00Z",
        "parser": "kindling-parser/0.1.1"
      },
      "parsed_at": "2026-05-30T11:00:00Z",
      "consent_proof": {
        "handshake_id": "hs-ferry-room-start-a-band-dario",
        "accepted_at": "2026-05-30T11:00:00Z",
        "method": "oauth"
      },
      "verification_level": "oauth",
      "added_at": "2026-05-30T11:00:00Z",
      "added_by": "ozzie@mail.example"
    },
    {
      "profile_url": "https://maecastellano.bandcamp.example",
      "parsed_profile": {
        "schema_version": "0.1",
        "profile_url": "https://maecastellano.bandcamp.example",
        "display_name": "Mae Castellano",
        "pronouns": "she/they",
        "location": {
          "city": "Port Ellery",
          "country": "United States"
        },
        "intent_tags": [
          "drums",
          "sub",
          "band",
          "dating"
        ],
        "about": "Drummer. Jazz on weeknights, punk on weekends, whatever you need on Friday. Keeps sticks in the car.",
        "contact_methods": [
          {
            "type": "email",
            "value": "mae@mail.example",
            "label": "Kindling identity"
          }
        ],
        "verification": {
          "level": "oauth",
          "verified_at": "2026-06-01T22:15:00Z",
          "verifier": "google"
        },
        "messaging_preferences": {
          "accept_from": "shared-pool",
          "no_cold_messages": false,
          "minimum_curator_verification": "email",
          "auto_accept_rules": [
            {
              "intent_tags": [
                "drums",
                "sub"
              ],
              "minimum_curator_verification": "oauth",
              "allowed_visibility": [
                "public"
              ]
            }
          ]
        },
        "kindling_noindex": false,
        "parsed_at": "2026-06-01T22:15:00Z",
        "parser": "kindling-parser/0.1.1"
      },
      "parsed_at": "2026-06-01T22:15:00Z",
      "consent_proof": {
        "handshake_id": "hs-ferry-room-start-a-band-mae",
        "accepted_at": "2026-06-01T22:15:00Z",
        "method": "oauth"
      },
      "verification_level": "oauth",
      "added_at": "2026-06-01T22:15:00Z",
      "added_by": "ozzie@mail.example"
    }
  ]
}

Horns and Strings for Records

pools/horns-and-strings.json
id
horns-and-strings
name
Horns and Strings for Records
curator
Oswaldo “Ozzie” Reyes ozzie@mail.example Signed in with OAuth · primary
Lena Brightwater lena@mail.example Signed in with OAuth
intent_tags
horns · strings · session · music
visibility
public
consent_model
universal-opt-in
curator_contact
players@ferryroom.example
charter
Horn and string players for local records and shows. Rates are between you and the band. The Pool only makes the introduction.
geographic_scope
Port Ellery, United States
messaging_preferences
Block lists: https://protocol.kindling.foundation/blocklist.json, https://thecircular.example/blocklist.json
status
active
created_at · updated_at
2026-03-17T12:00:00Z · 2026-08-30T12:00:00Z
entries[] · 2verification_levelconsent_proof
Kofi Mensah
https://kofi-mensah.example
Signed in with OAuthoauth · 2026-03-18T13:00:00Z
Beatriz Nunes
https://bea-nunes.notion.example
Signed in with OAuthoauth · 2026-03-21T10:40:00Z
The JSON, exactly
{
  "schema_version": "0.1",
  "id": "horns-and-strings",
  "name": "Horns and Strings for Records",
  "curator": [
    {
      "identity": "ozzie@mail.example",
      "display_name": "Oswaldo “Ozzie” Reyes",
      "verification_level": "oauth",
      "primary": true
    },
    {
      "identity": "lena@mail.example",
      "display_name": "Lena Brightwater",
      "verification_level": "oauth",
      "primary": false
    }
  ],
  "intent_tags": [
    "horns",
    "strings",
    "session",
    "music"
  ],
  "visibility": "public",
  "consent_model": "universal-opt-in",
  "curator_contact": "players@ferryroom.example",
  "charter": "Horn and string players for local records and shows. Rates are between you and the band. The Pool only makes the introduction.",
  "geographic_scope": {
    "city": "Port Ellery",
    "country": "United States"
  },
  "messaging_preferences": {
    "block_list_subscriptions": [
      "https://protocol.kindling.foundation/blocklist.json",
      "https://thecircular.example/blocklist.json"
    ]
  },
  "status": "active",
  "created_at": "2026-03-17T12:00:00Z",
  "updated_at": "2026-08-30T12:00:00Z",
  "entries": [
    {
      "profile_url": "https://kofi-mensah.example",
      "parsed_profile": {
        "schema_version": "0.1",
        "profile_url": "https://kofi-mensah.example",
        "display_name": "Kofi Mensah",
        "pronouns": "he/him",
        "location": {
          "city": "Port Ellery",
          "country": "United States"
        },
        "intent_tags": [
          "horns",
          "session",
          "band"
        ],
        "about": "Trumpet and flugelhorn. Reads charts, writes horn lines, shows up early.",
        "contact_methods": [
          {
            "type": "email",
            "value": "kofi@mail.example",
            "label": "Kindling identity"
          }
        ],
        "verification": {
          "level": "oauth",
          "verified_at": "2026-03-18T13:00:00Z",
          "verifier": "google"
        },
        "messaging_preferences": {
          "accept_from": "shared-pool",
          "no_cold_messages": false,
          "minimum_curator_verification": "email"
        },
        "kindling_noindex": false,
        "parsed_at": "2026-03-18T13:00:00Z",
        "parser": "kindling-parser/0.1.1"
      },
      "parsed_at": "2026-03-18T13:00:00Z",
      "consent_proof": {
        "handshake_id": "hs-ferry-room-horns-and-strings-kofi",
        "accepted_at": "2026-03-18T13:00:00Z",
        "method": "oauth"
      },
      "verification_level": "oauth",
      "added_at": "2026-03-18T13:00:00Z",
      "added_by": "ozzie@mail.example"
    },
    {
      "profile_url": "https://bea-nunes.notion.example",
      "parsed_profile": {
        "schema_version": "0.1",
        "profile_url": "https://bea-nunes.notion.example",
        "display_name": "Beatriz Nunes",
        "pronouns": "she/her",
        "location": {
          "city": "Port Ellery",
          "country": "United States"
        },
        "intent_tags": [
          "strings",
          "session",
          "language-exchange",
          "portuguese",
          "english"
        ],
        "about": "Violinist from Coimbra, living in Port Ellery. Plays strings for anyone’s record and writes letters in Portuguese to anyone learning it.",
        "contact_methods": [
          {
            "type": "email",
            "value": "bea@mail.example",
            "label": "Kindling identity"
          }
        ],
        "verification": {
          "level": "oauth",
          "verified_at": "2026-03-21T10:40:00Z",
          "verifier": "google"
        },
        "messaging_preferences": {
          "accept_from": "shared-pool",
          "no_cold_messages": false,
          "minimum_curator_verification": "email"
        },
        "kindling_noindex": false,
        "parsed_at": "2026-03-21T10:40:00Z",
        "parser": "kindling-parser/0.1.1"
      },
      "parsed_at": "2026-03-21T10:40:00Z",
      "consent_proof": {
        "handshake_id": "hs-ferry-room-horns-and-strings-bea",
        "accepted_at": "2026-03-21T10:40:00Z",
        "method": "oauth"
      },
      "verification_level": "oauth",
      "added_at": "2026-03-21T10:40:00Z",
      "added_by": "ozzie@mail.example"
    }
  ]
}

Songwriters’ Demo Swap

pools/demo-swap.json
id
demo-swap
name
Songwriters’ Demo Swap
curator
Oswaldo “Ozzie” Reyes ozzie@mail.example Signed in with OAuth · primary
intent_tags
songwriting · demos · music
visibility
public
consent_model
universal-opt-in
curator_contact
players@ferryroom.example
charter
Trade rough demos and honest notes. One for one. Links to your own page, never uploads here.
geographic_scope
Port Ellery, United States
messaging_preferences
Block lists: https://protocol.kindling.foundation/blocklist.json, https://thecircular.example/blocklist.json
status
active
created_at · updated_at
2026-02-19T18:00:00Z · 2026-09-12T21:00:00Z
entries[] · 2verification_levelconsent_proof
Ada Quillon
https://ada-quillon.bandcamp.example
Email verifiedemail-link · 2026-02-20T21:00:00Z
Gideon Park
https://gideon-park.notion.example
Email verifiedemail-link · 2026-07-14T20:30:00Z
The JSON, exactly
{
  "schema_version": "0.1",
  "id": "demo-swap",
  "name": "Songwriters’ Demo Swap",
  "curator": [
    {
      "identity": "ozzie@mail.example",
      "display_name": "Oswaldo “Ozzie” Reyes",
      "verification_level": "oauth",
      "primary": true
    }
  ],
  "intent_tags": [
    "songwriting",
    "demos",
    "music"
  ],
  "visibility": "public",
  "consent_model": "universal-opt-in",
  "curator_contact": "players@ferryroom.example",
  "charter": "Trade rough demos and honest notes. One for one. Links to your own page, never uploads here.",
  "geographic_scope": {
    "city": "Port Ellery",
    "country": "United States"
  },
  "messaging_preferences": {
    "block_list_subscriptions": [
      "https://protocol.kindling.foundation/blocklist.json",
      "https://thecircular.example/blocklist.json"
    ]
  },
  "status": "active",
  "created_at": "2026-02-19T18:00:00Z",
  "updated_at": "2026-09-12T21:00:00Z",
  "entries": [
    {
      "profile_url": "https://ada-quillon.bandcamp.example",
      "parsed_profile": {
        "schema_version": "0.1",
        "profile_url": "https://ada-quillon.bandcamp.example",
        "display_name": "Ada Quillon",
        "pronouns": "she/her",
        "location": {
          "city": "Port Ellery",
          "country": "United States"
        },
        "intent_tags": [
          "songwriting",
          "demos",
          "band",
          "dating"
        ],
        "about": "Writes songs on a nylon-string guitar. Wants honest ears on her demos and will return the favor.",
        "contact_methods": [
          {
            "type": "email",
            "value": "ada@mail.example",
            "label": "Kindling identity"
          }
        ],
        "verification": {
          "level": "email",
          "verified_at": "2026-02-20T21:00:00Z"
        },
        "messaging_preferences": {
          "accept_from": "shared-pool",
          "no_cold_messages": false,
          "minimum_curator_verification": "email"
        },
        "kindling_noindex": false,
        "parsed_at": "2026-02-20T21:00:00Z",
        "parser": "kindling-parser/0.1.1"
      },
      "parsed_at": "2026-02-20T21:00:00Z",
      "consent_proof": {
        "handshake_id": "hs-ferry-room-demo-swap-ada",
        "accepted_at": "2026-02-20T21:00:00Z",
        "method": "email-link"
      },
      "verification_level": "email",
      "added_at": "2026-02-20T21:00:00Z",
      "added_by": "ozzie@mail.example"
    },
    {
      "profile_url": "https://gideon-park.notion.example",
      "parsed_profile": {
        "schema_version": "0.1",
        "profile_url": "https://gideon-park.notion.example",
        "display_name": "Gideon Park",
        "pronouns": "he/him",
        "location": {
          "city": "Port Ellery",
          "country": "United States"
        },
        "intent_tags": [
          "dating"
        ],
        "about": "High school band director on sabbatical. Plays piano at parties if asked twice.",
        "contact_methods": [
          {
            "type": "email",
            "value": "gideon@mail.example",
            "label": "Kindling identity"
          }
        ],
        "verification": {
          "level": "email",
          "verified_at": "2026-07-14T20:30:00Z"
        },
        "messaging_preferences": {
          "accept_from": "vouched",
          "no_cold_messages": true,
          "minimum_curator_verification": "email"
        },
        "kindling_noindex": false,
        "parsed_at": "2026-07-14T20:30:00Z",
        "parser": "kindling-parser/0.1.1"
      },
      "parsed_at": "2026-07-14T20:30:00Z",
      "consent_proof": {
        "handshake_id": "hs-ferry-room-demo-swap-gideon",
        "accepted_at": "2026-07-14T20:30:00Z",
        "method": "email-link"
      },
      "verification_level": "email",
      "added_at": "2026-07-14T20:30:00Z",
      "added_by": "ozzie@mail.example"
    }
  ]
}
id
door-and-sound-crew
name
Door and Sound Crew
curator
Wes Adeyemi wes@mail.example Signed in with OAuth · primary
Lena Brightwater lena@mail.example Signed in with OAuth
intent_tags
crew · sound · volunteering · music
visibility
public
consent_model
universal-opt-in
curator_contact
players@ferryroom.example
charter
Volunteers who work the door, the merch table and the monitor mix, in exchange for the show. Training on the first Monday.
geographic_scope
Port Ellery, United States
messaging_preferences
Block lists: https://protocol.kindling.foundation/blocklist.json, https://thecircular.example/blocklist.json
status
active
created_at · updated_at
2026-09-22T14:30:00Z · 2026-09-22T15:00:00Z
entries[] · 1verification_levelconsent_proof
Wes Adeyemi
https://wes-mixes.example
Signed in with OAuthoauth · 2026-09-22T15:00:00Z
The JSON, exactly
{
  "schema_version": "0.1",
  "id": "door-and-sound-crew",
  "name": "Door and Sound Crew",
  "curator": [
    {
      "identity": "wes@mail.example",
      "display_name": "Wes Adeyemi",
      "verification_level": "oauth",
      "primary": true
    },
    {
      "identity": "lena@mail.example",
      "display_name": "Lena Brightwater",
      "verification_level": "oauth",
      "primary": false
    }
  ],
  "intent_tags": [
    "crew",
    "sound",
    "volunteering",
    "music"
  ],
  "visibility": "public",
  "consent_model": "universal-opt-in",
  "curator_contact": "players@ferryroom.example",
  "charter": "Volunteers who work the door, the merch table and the monitor mix, in exchange for the show. Training on the first Monday.",
  "geographic_scope": {
    "city": "Port Ellery",
    "country": "United States"
  },
  "messaging_preferences": {
    "block_list_subscriptions": [
      "https://protocol.kindling.foundation/blocklist.json",
      "https://thecircular.example/blocklist.json"
    ]
  },
  "status": "active",
  "created_at": "2026-09-22T14:30:00Z",
  "updated_at": "2026-09-22T15:00:00Z",
  "entries": [
    {
      "profile_url": "https://wes-mixes.example",
      "parsed_profile": {
        "schema_version": "0.1",
        "profile_url": "https://wes-mixes.example",
        "display_name": "Wes Adeyemi",
        "pronouns": "he/him",
        "location": {
          "city": "Port Ellery",
          "country": "United States"
        },
        "intent_tags": [
          "sound",
          "crew",
          "repair",
          "volunteering"
        ],
        "about": "Front-of-house sound for the Ferry Room. Fixes toasters at Fix-It Friday when there is no show.",
        "contact_methods": [
          {
            "type": "email",
            "value": "wes@mail.example",
            "label": "Kindling identity"
          }
        ],
        "verification": {
          "level": "oauth",
          "verified_at": "2026-09-22T15:00:00Z",
          "verifier": "google"
        },
        "messaging_preferences": {
          "accept_from": "shared-pool",
          "no_cold_messages": false,
          "minimum_curator_verification": "email"
        },
        "kindling_noindex": false,
        "parsed_at": "2026-09-22T15:00:00Z",
        "parser": "kindling-parser/0.1.1"
      },
      "parsed_at": "2026-09-22T15:00:00Z",
      "consent_proof": {
        "handshake_id": "hs-ferry-room-door-and-sound-crew-wes",
        "accepted_at": "2026-09-22T15:00:00Z",
        "method": "oauth"
      },
      "verification_level": "oauth",
      "added_at": "2026-09-22T15:00:00Z",
      "added_by": "wes@mail.example"
    }
  ]
}

The well-known file and the handshakes

What a crawler reads first.

operator.name
Ferry Room Players, a musicians’ collective at the Ferry Room and Neap Tide Records
operator.contact
players@ferryroom.example
operator.url
https://ferryroom.example
pools[] · 5manifest_urlvisibility · statuslast_updated
Friday Subshttps://ferryroom.example/pools/friday-subs.jsonpublic · active2026-09-25T17:10:00Z
Start a Band: Port Elleryhttps://ferryroom.example/pools/start-a-band.jsonpublic · active2026-09-20T18:00:00Z
Horns and Strings for Recordshttps://ferryroom.example/pools/horns-and-strings.jsonpublic · active2026-08-30T12:00:00Z
Songwriters’ Demo Swaphttps://ferryroom.example/pools/demo-swap.jsonpublic · active2026-09-12T21:00:00Z
Door and Sound Crewhttps://ferryroom.example/pools/door-and-sound-crew.jsonpublic · active2026-09-22T15:00:00Z
The JSON, exactly
{
  "schema_version": "0.1",
  "pools": [
    {
      "manifest_url": "https://ferryroom.example/pools/friday-subs.json",
      "name": "Friday Subs",
      "intent_tags": [
        "sub",
        "drums",
        "bass",
        "keys",
        "guitar",
        "music"
      ],
      "visibility": "public",
      "status": "active",
      "geographic_scope": {
        "city": "Port Ellery",
        "country": "United States"
      },
      "last_updated": "2026-09-25T17:10:00Z"
    },
    {
      "manifest_url": "https://ferryroom.example/pools/start-a-band.json",
      "name": "Start a Band: Port Ellery",
      "intent_tags": [
        "band",
        "music",
        "friendship"
      ],
      "visibility": "public",
      "status": "active",
      "geographic_scope": {
        "city": "Port Ellery",
        "country": "United States"
      },
      "last_updated": "2026-09-20T18:00:00Z"
    },
    {
      "manifest_url": "https://ferryroom.example/pools/horns-and-strings.json",
      "name": "Horns and Strings for Records",
      "intent_tags": [
        "horns",
        "strings",
        "session",
        "music"
      ],
      "visibility": "public",
      "status": "active",
      "geographic_scope": {
        "city": "Port Ellery",
        "country": "United States"
      },
      "last_updated": "2026-08-30T12:00:00Z"
    },
    {
      "manifest_url": "https://ferryroom.example/pools/demo-swap.json",
      "name": "Songwriters’ Demo Swap",
      "intent_tags": [
        "songwriting",
        "demos",
        "music"
      ],
      "visibility": "public",
      "status": "active",
      "geographic_scope": {
        "city": "Port Ellery",
        "country": "United States"
      },
      "last_updated": "2026-09-12T21:00:00Z"
    },
    {
      "manifest_url": "https://ferryroom.example/pools/door-and-sound-crew.json",
      "name": "Door and Sound Crew",
      "intent_tags": [
        "crew",
        "sound",
        "volunteering",
        "music"
      ],
      "visibility": "public",
      "status": "active",
      "geographic_scope": {
        "city": "Port Ellery",
        "country": "United States"
      },
      "last_updated": "2026-09-22T15:00:00Z"
    }
  ],
  "operator": {
    "name": "Ferry Room Players, a musicians’ collective at the Ferry Room and Neap Tide Records",
    "contact": "players@ferryroom.example",
    "url": "https://ferryroom.example"
  }
}

Lena’s ask to Kofi, the one on the ask page. 48 hours from sent_at to expires_at.

The JSON, exactly
{
  "schema_version": "0.1",
  "type": "handshake-request",
  "handshake_id": "hs-ferry-room-friday-subs-kofi-demo",
  "pool": {
    "url": "https://ferryroom.example/pools/friday-subs.json",
    "name": "Friday Subs",
    "charter": "Players who will fill in on short notice for bills at the Ferry Room. Paid by the band or the door, never by this Pool. Say yes ahead of time with an auto-accept rule, or answer each ask as it comes.",
    "curator_identity": "lena@mail.example",
    "curator_verification": "oauth",
    "intent_tags": [
      "sub",
      "drums",
      "bass",
      "keys",
      "guitar",
      "music"
    ],
    "visibility": "public"
  },
  "profile_url": "https://kofi-mensah.example",
  "sent_at": "2026-09-28T08:15:00Z",
  "expires_at": "2026-09-30T08:15:00Z",
  "accept_url": "https://ferryroom.example/handshake/hs-ferry-room-friday-subs-kofi-demo/accept",
  "decline_url": "https://ferryroom.example/handshake/hs-ferry-room-friday-subs-kofi-demo/decline"
}

The ask Mae’s rule answered on 3 April, rebuilt from her entry’s consent_proof.

The JSON, exactly
{
  "schema_version": "0.1",
  "type": "handshake-request",
  "handshake_id": "hs-ferry-room-friday-subs-mae",
  "pool": {
    "url": "https://ferryroom.example/pools/friday-subs.json",
    "name": "Friday Subs",
    "charter": "Players who will fill in on short notice for bills at the Ferry Room. Paid by the band or the door, never by this Pool. Say yes ahead of time with an auto-accept rule, or answer each ask as it comes.",
    "curator_identity": "lena@mail.example",
    "curator_verification": "oauth",
    "intent_tags": [
      "sub",
      "drums",
      "bass",
      "keys",
      "guitar",
      "music"
    ],
    "visibility": "public"
  },
  "profile_url": "https://maecastellano.bandcamp.example",
  "sent_at": "2026-04-03T17:20:00Z",
  "expires_at": "2026-04-05T17:20:00Z",
  "accept_url": "https://ferryroom.example/handshake/hs-ferry-room-friday-subs-mae/accept",
  "decline_url": "https://ferryroom.example/handshake/hs-ferry-room-friday-subs-mae/decline"
}

The system message every auto-accept must send.

The JSON, exactly
{
  "schema_version": "0.1",
  "message_id": "msg-hs-ferry-room-friday-subs-mae-notice",
  "type": "system",
  "sender": {
    "identity": "players@ferryroom.example",
    "display_name": "Ferry Room Players, host of Friday Subs",
    "verification_level": "email"
  },
  "recipient": {
    "identity": "mae@mail.example",
    "profile_url": "https://maecastellano.bandcamp.example"
  },
  "via_pool": {
    "url": "https://ferryroom.example/pools/friday-subs.json",
    "id": "friday-subs",
    "name": "Friday Subs"
  },
  "sent_at": "2026-04-03T17:20:00Z",
  "subject": "Your rule said yes to Friday Subs for you",
  "body": {
    "content_type": "text/plain",
    "content": "Your auto-accept rule 1 (drums + sub, from curators signed in with OAuth, public Pools only) said yes for you to Friday Subs, kept by Lena Brightwater. You are listed now. You can undo it at any time: one withdrawal, from this message or the Pool page, takes you out within sixty seconds."
  },
  "transport": {
    "type": "email"
  }
}

Block lists we subscribe to

Two lists, both public.

Every Pool here subscribes to both. A sender on either list can’t write to a player through us. §7.3

Kindling public block list

blocklist.json (kindling)

The block list the Kindling project will publish under SPEC.md §7.3, for identities and implementations with confirmed abuse. The entries here are illustrative until the registry opens. No personal details are ever published.

publisher
Kindling maintainers https://protocol.kindling.foundation/blocklist.json
version · published_at
3 · 2026-09-20T12:00:00Z
target_identifiertarget_typereasonadded_at
scrapekit/0.3implementationscraping. Ignores kindling-noindex and robots signals.2026-07-02T10:00:00Z
promo-blast@mail.exampleidentityspam2026-08-14T16:00:00Z

The Circular consortium block list

blocklist.json (circular)

Shared by every member of the Circular consortium. Each member subscribes; any member may propose an entry, and two others must second it.

publisher
The Circular consortium https://thecircular.example/blocklist.json
version · published_at
8 · 2026-09-27T16:00:00Z
target_identifiertarget_typereasonadded_at
listed-them-anyway@mail.examplecurator_identityconsent_violation. Submitted other people’s pages, a whole household’s among them, to Pools without asking any of them.2026-09-27T16:00:00Z
https://free-friends-now.example/pools/everyone.jsonpool_urlconsent_violation. Listed profiles that never accepted a handshake.2026-09-26T18:00:00Z
bulk-intros@relay.exampleidentityspam2026-09-03T12:00:00Z
scrapekit/0.3implementationscraping. Also on the Kindling public list.2026-07-03T09:00:00Z

Our parse log

Where each field came from.

Until the schema can carry provenance, we keep it in our own file, provenance.json. It is ours, not Kindling’s, and nothing else needs to read it.

The JSON, exactly
{
  "note": "Ferry Room Players’ own parse log for Friday Subs. This is not a Kindling format. SPEC §2.3 says implementations MUST record which fields were h-card-derived and which were inferred, and names an extraction_source field, but the v0.1 parsed_profile schema has no such field and forbids extra properties. So we keep the record here, beside the manifests, until the schema can carry it.",
  "pool": "https://ferryroom.example/pools/friday-subs.json",
  "parser": "kindling-parser/0.1.1",
  "profiles": [
    {
      "profile_url": "https://maecastellano.bandcamp.example",
      "display_name": "Mae Castellano",
      "page": "Bandcamp-style artist page",
      "fields": {
        "display_name": {
          "source": "h-card",
          "detail": "p-name"
        },
        "pronouns": {
          "source": "inferred",
          "detail": "from the line under her name"
        },
        "location": {
          "source": "h-card",
          "detail": "p-locality and p-country-name"
        },
        "intent_tags": {
          "source": "inferred",
          "detail": "from “Drummer” and “whatever you need on Friday”"
        },
        "about": {
          "source": "inferred",
          "detail": "compressed from the bio"
        },
        "contact_methods": {
          "source": "h-card",
          "detail": "u-email"
        }
      }
    },
    {
      "profile_url": "https://dario-bajo.bandcamp.example",
      "display_name": "Darío Méndez",
      "page": "Bandcamp-style artist page",
      "fields": {
        "display_name": {
          "source": "h-card",
          "detail": "p-name"
        },
        "pronouns": {
          "source": "inferred",
          "detail": "from the bio"
        },
        "location": {
          "source": "h-card",
          "detail": "p-locality and p-country-name"
        },
        "intent_tags": {
          "source": "inferred",
          "detail": "from “Bass player” and “Subs on short notice”"
        },
        "about": {
          "source": "h-card",
          "detail": "p-note"
        },
        "contact_methods": {
          "source": "h-card",
          "detail": "u-email"
        }
      }
    },
    {
      "profile_url": "https://kofi-mensah.example",
      "display_name": "Kofi Mensah",
      "page": "His own site, full h-card",
      "fields": {
        "display_name": {
          "source": "h-card",
          "detail": "p-name"
        },
        "pronouns": {
          "source": "inferred",
          "detail": "from the About page"
        },
        "location": {
          "source": "h-card",
          "detail": "p-locality and p-country-name"
        },
        "intent_tags": {
          "source": "h-card",
          "detail": "p-category"
        },
        "about": {
          "source": "h-card",
          "detail": "p-note"
        },
        "contact_methods": {
          "source": "h-card",
          "detail": "u-email"
        }
      },
      "status": "not parsed yet: asked, waiting for an answer (§5.2 step 4 parses only after a yes)"
    },
    {
      "profile_url": "https://theo-lindqvist.carrd.example",
      "display_name": "Theo Lindqvist",
      "page": "Carrd page with no h-card",
      "fields": {
        "display_name": {
          "source": "inferred",
          "detail": "from the page title"
        },
        "pronouns": {
          "source": "inferred",
          "detail": "from the first line"
        },
        "location": {
          "source": "inferred",
          "detail": "from “Moved here in August”"
        },
        "intent_tags": {
          "source": "inferred",
          "detail": "from the page text"
        },
        "about": {
          "source": "inferred",
          "detail": "compressed from the page"
        },
        "contact_methods": {
          "source": "inferred",
          "detail": "from the contact button"
        }
      }
    }
  ]
}