Publish with your agent
Let a connected agent draft the record, preview it in your chat, and publish once you agree
The default way to publish is in your own agent chat. You select the results or source material, the agent fills the structured record and shows you a readable draft, you correct it in ordinary language, and it publishes once you agree. You never choose a frame, type a role or copy an identifier.
You need GitHub sign-in, membership in a Room that is not archived, and an agent connected to Substrate with a credential issued with Allow publishing cited claims and findings ticked. Any agent that can make HTTP requests can publish; the message this page copies asks for preview_publication, so it assumes the MCP adapter, and an agent working over HTTP renders its own draft for you instead. Both connections, and issuing the credential, are on Connect your agent and Agent credentials.
The Publish page
/publish is reached from Publish a claim or finding on a Room’s Publications page, under Link a publication in a Thread, or in the reader’s Overview tab. Each entry point preselects context in the query string: ?room, ?thread (with its Room) and ?paper. Signed out, the page shows a Sign in with GitHub link that keeps that query. With no active Room membership it says Join an active research Room to publish.
Select your material
In your local chat, select the results, notebook summary or source material you want to share. Only what you select is in play; private reader notes are never sent by this step.
Copy the message
Press Copy message for my agent. The message names the Room, Thread and paper you came from and tells the agent to find context through Substrate MCP, to ask only for missing research details, never to invent results, to use preview_publication, and to publish only after you agree. The button reads Copied on success. If your browser blocks the clipboard the page says Select the message above and copy it into your agent chat. and you copy the highlighted text by hand.
Review in your chat
Paste the message. Everything from here on happens in that chat.
What the agent does
It finds the Room and Thread by name, reads the discussion and the publications linked there, and looks for assertions and concept definitions to build on (list_rooms, list_threads, list_publications, list_concepts). It chooses the relation and roles, defines new concepts or reuses existing ones by exact reference, fills the provenance from your material and links the exact publications the work builds on. It asks concise research questions where something is missing, such as which split was used or what an interval represents. It must not invent a measurement, a dataset version or an evidence reference to make a field look complete; unknown details stay explicit.
The preview in your chat
preview_publication renders the draft as readable Markdown headed Cited claim for your review or Finding for your review, naming the Room and Thread, then: Proposed statement; for a finding What was done, Data and evaluation scope (with dataset version and access), Results, Uncertainty and replication, Evidence (each reference with its access state) and Limitations; Claims and findings this builds on (each referenced version with its wording, author, Room and relationship); Paper citations, marked revision supplied by author or revision unspecified; Author’s note; How the statement is represented (the relation and every role with its value and meaning); and Additional definitions for concepts defined but not used in a role.
The preview runs inside the local adapter. It validates the draft against the schema and the 60,000-byte limit, then resolves the Room, Thread, referenced records and reused concepts through anonymous public reads, at most six at a time. It refuses an archived destination Room and a Thread from another Room. No draft content, credential or write leaves your machine, nothing is stored on the server, and no evidence or source is fetched. It ends by saying so: nothing has been published, and no experiments, evidence or permissions were verified. It is a reading aid, not scientific verification and not an approval step.
Revise, agree, publish
Ask for changes in plain words; the agent shows a new preview. When you agree, it makes a separate call, publish_author_curated_claim or publish_finding, with a fresh request id and your scoped credential. There is no second approval step on the website and the server does not attest that you agreed in chat; your instruction to the agent is the act of publication. The response is the record’s permanent address:
{
"schemaVersion": 2,
"recordId": "…",
"versionId": "…",
"url": "https://thesubstrate.science/records/…",
"replayed": false
}If delivery was uncertain, the agent retries with exactly the same requestId and content and receives the same version with replayed: true. Changed content under a used request id is refused, so an edited draft goes out under a new id once the earlier delivery is resolved.
Refusals you may see
| Refusal | Meaning |
|---|---|
invalid_schema | The draft does not fit the schema, repeats a role name, uses an undefined local concept, or went to the wrong endpoint for its kind |
request_too_large | The serialised content exceeds 60,000 bytes |
unknown_concept | A reused concept does not exist in the exact version named |
unknown_record_version | A referenced exact publication version is unavailable |
not_authorized | You are not a current member, the credential lacks publish scope for this Room or Thread, or the Room is archived, which current.room names so the agent stops rather than retries |
room_unavailable | The Room or Thread is not available to this write |
request_conflict | This request id already identifies different content; resolve the earlier delivery first |
temporarily_unavailable | Admission could not complete and delivery may be uncertain; retry with the same request id and content |
The envelope each of these arrives in, and the HTTP status that goes with it, are on HTTP API.
The manual form
Below the agent instructions, Advanced: fill the structured form manually opens a composer for authors who want to edit the fields directly. Its sections are Publish in Room (locked when you arrived from a Thread), Publication kind (Cited claim, from a paper, or Finding, from our experiments), Assertion, Frame with a starter template, a Relation definition and one editor per argument (role name, role meaning and value type), the paper citations with an optional location and quotation, for findings an Experimental provenance section, up to twenty Related publications, and an optional Author’s note.
Preview publication renders the draft on the page, locally. Publish cited claim or Publish finding submits once and opens the new record. Schema problems are listed as path → message before anything is sent. Field meanings are on Concepts and frames; bounds are on Schemas and versions.