Publish A Dotabase To The Web

Publish selected views of a Dotabase as an anonymous public page, share the link, and read the same publication back over the public MCP, CLI, and REST surfaces.

Publishing produces two surfaces: a public page anyone can open without signing in, and a public data surface any agent can read. Both are served from the same publication record, so a visitor and an agent see the same rows and the same properties.

A publication names exactly what is public — the Dotabase, the view or views to serve, the properties that may be shown, and the public slug. Nothing outside that list leaves the workspace.

Before You Start

  • You need three inputs: the 's id, the id of each saved you want to publish, and the exact property keys visitors may see.
  • Authority. Publishing, editing, and unpublishing require workspace settings management; comment moderation requires row-update rights. See Access and Tenancy for how that authority is resolved.
  • The publication is tenant-scoped, but the slug is globally unique across the platform. A slug already taken is a conflict, not a silent overwrite.

1. Gather The ids

Read the Dotabase, then list its saved views:

CODE
dots dotabases describe reading-list
dots views list reading-list

Publish views you have already shaped for an outside reader. A view carries its own filters, sorts, grouping, and property order, and the public page renders it as configured, so filtering a view to the rows you want shown is how you control which rows appear. Views and Lenses covers what a saved view holds.

2. Publish

CODE
dots publications publish \
  --dotabase <dotabase-uuid> \
  --slug reading-list \
  --view <view-uuid> \
  --property title \
  --property status \
  --property body \
  --reactions
  • --dotabase takes the Dotabase's UUID, not its slug.
  • --slug is the public URL token: lowercase letters, digits, and hyphens, with no leading or trailing hyphen.
  • --view is repeatable; at least one is required. Each one adds a view to the public page.
  • --property is repeatable and is the whitelist. Only the keys you name are serialized; every other property is stripped, and relation targets are never followed into rows you did not publish. The reserved key body opts the row body in.
  • --reactions / --comments (and their --no- forms) turn public reactions and comments on or off. --calendar-property names the whitelisted date property a public calendar view should use.

Confirm it landed:

CODE
dots publications list

The published page is served by the app itself, outside the login gate, at /roadmap/<slug> and /embed/<slug> — on the hosted platform, https://app.mydots.ai/roadmap/reading-list. Open it in a logged-out browser and confirm the views render and only the whitelisted properties appear.

The served page is frame-locked, so framing it inside another site is refused — verify by navigating to it directly rather than by embedding it.

4. Read It As An Agent

The same publication is a machine surface with no credential involved. From a terminal, the dots public family reads it:

CODE
dots public manifest reading-list
dots public rows reading-list <view-uuid>
dots public get reading-list READ-1
dots public search reading-list "behavioural economics"

The manifest returns the publication's name, its published views, the whitelisted property schema, and the engagement configuration — enough for a client to know what it may ask for before asking. dots public graph <slug> <human-id> walks the neighbour graph around one published row, spanning every publication the same company has published and projecting each node through its own whitelist. No credential is read or sent; point the commands at another instance with --api-url=https://app.mydots.ai/api/v1.

The same plane is reachable two other ways: the anonymous Model Context Protocol endpoint at POST /api/v1/public/mcp, and the REST namespace the other two are built on, under /api/v1/public/publications/{slug}/. Public reads carry cache headers and an ETag, so a repeated fetch of unchanged content is a cheap 304.

5. Take It Offline

CODE
dots publications unpublish <publication-id>

The publication row is retained and its status flips to unpublished; public reads deny immediately. Because the retired row keeps the slug, publishing something new on the same slug while it exists is a conflict — change the slug or bring the original back.

What Stays Private

The public plane fails closed. An unknown slug, an unpublished publication, a view outside the publication, a foreign or archived row, an empty whitelist, and a disabled reactions or comments surface all return the same non-disclosing "not found". A caller cannot tell which of those it hit, so probing the public surface reveals nothing about the structure behind it.

Publish A Dotabase To The Web · This page in the graph

Connected Records11

Documented by
Mentions
DOT
References
11 connections.

Where To Go Next

Reading this as an agent?For Agents
Something wrong on this page?Dots On GitHub