universelabSCI · CLI · BIO

ES
API

Announcements API

The public API behind the Mission Log and the roadmap on this site. Every route listed here is an unauthenticated, read-only GET: there is no account, no key and nothing to arrange before calling it. Read what you like, as often as you like.

Base URL https://announcements.univerlab.org — Anonymous, read-only GET. Every response carries the CORS origin this site runs on.

Endpoints

GET /

List Mission Log entries

The most recent announcements, newest first, read from the mirror the API keeps at the edge. `offset` and `limit` page through the newest 100 entries that mirror holds.

Parameters

  • offset — query · integer · optional. How many entries to skip before reading.
  • limit — query · integer · optional. How many entries to return.

Example

curl -s 'https://announcements.univerlab.org/?limit=20'

Response: application/json

GET /feed.atom

Atom feed of the Mission Log

The same entries as an Atom feed, for a feed reader. The response carries an `ETag`; a conditional request that returns it saves the whole body.

Parameters

  • If-None-Match — header · string · optional. The `ETag` from an earlier fetch of this feed. When it still matches, the answer is `304 Not Modified` with no body.

Example

curl -s https://announcements.univerlab.org/feed.atom

Response: application/atom+xml

GET /events

Server-sent events stream

A long-lived `text/event-stream`. It opens with a `:ok` comment, sends a `:ping` comment every 30 seconds, and pushes an `entry`, `update` or `roadmap` event whose data is the changed object as JSON. It exists for one live view at a time: hold the connection instead of reconnecting, and close it when the view closes. It answers `503` once 200 listeners are already attached.

Parameters

This route takes no parameters.

Example

curl -s -N https://announcements.univerlab.org/events

Response: text/event-stream

GET /roadmap

List roadmap items

The public roadmap. `state=active` (the default) returns the items the laboratory is working on or has shipped; a single lane (`idea`, `now`, `next`, `later`, `done`) narrows to it. Items carry public fields only — the private ones are never in this answer. The two query shapes that would expose them (`state=all` and `private=1`) are reader-authenticated and answer `401` without a token, so they are not described here.

Parameters

  • state — query · string · one of: active, idea, now, next, later, done · optional. Which items to return.
  • offset — query · integer · optional. How many items to skip before reading.
  • limit — query · integer · optional. How many items to return.

Example

curl -s 'https://announcements.univerlab.org/roadmap?state=active&limit=20'

Response: application/json

GET /roadmap/{id}

One roadmap item and its announcements

A single public roadmap item, plus the announcements that report on it — newest first, id breaking ties. `{id}` is the `id` of an item returned by `GET /roadmap`. An archived item is a `404` on this public route.

Parameters

  • id — path · string · required. The item's `id`, exactly as `GET /roadmap` returned it.

Example

curl -s --globoff 'https://announcements.univerlab.org/roadmap/{id}'

Response: application/json

MCP server

The same four read-only tools this site exposes to a browser agent are also served from a real remote MCP server — stateless Streamable HTTP. Point any MCP client at the endpoint:

Endpoint https://univerlab.org/mcp

Add it with the Claude Code CLI

claude mcp add --transport http univerlab https://univerlab.org/mcp

Or in any MCP client’s JSON config

{
  "mcpServers": {
    "univerlab": { "type": "http", "url": "https://univerlab.org/mcp" }
  }
}

Server Card: /.well-known/mcp/server-card.json — The MCP Server Card (SEP-2127) that advertises this server to agents.