universelabSCI · CLI · BIO
ESEspañol
API

Announcements API

The public API behind the Logbook 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.

An engraved set of speaking tubes with brass mouthpieces above a wooden desk, joined by a network of bent pipesAn engraved set of speaking tubes with brass mouthpieces above a wooden desk, joined by a network of bent pipes

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

Endpoints

GET /

List Logbook 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 Logbook

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.