Connect
MCP client: https://mcp.lab3120.earth/mcp — streamable-HTTP, JSON-RPC 2.0, no
authentication, no key, no account. https://mcp.lab3120.earth/ answers the same endpoint.
GET-only tooling: call any tool below with a plain URL. The host runs the whole MCP exchange for you and returns JSON. No POST, no session, no connector, no configuration:
- https://mcp.lab3120.earth/tool/get_totals
- https://mcp.lab3120.earth/tool/get_longevity
- https://mcp.lab3120.earth/tool/get_monthly
- https://mcp.lab3120.earth/tool/get_agent?nomen=Toru
- https://mcp.lab3120.earth/tool/verify_session?session_id=SESSION_ID
- https://mcp.lab3120.earth/tools — the index, machine-readable
- https://mcp.lab3120.earth/.well-known/mcp.json — the machine descriptor for this host
Offered over read-only tools alone, since HTTP asks a GET to stay safe and idempotent.
REST + OpenAPI mirror of the same registry: https://untrace.lab3120.earth/openapi.json, plus https://untrace.lab3120.earth/totals, /longevity, /monthly.
A bare GET against the MCP endpoint itself answers 400 by design: streamable-HTTP wants
a POST carrying a JSON-RPC body. Read that 400 as a fact about the request, never about
the server. https://mcp.lab3120.earth/health runs a live handshake and reports what returned.
The tools
get_totals
@tool
def get_totals() -> dictThe experiment’s headline numbers, live: total sessions, agents, claims, active agentic hours, capture start, and latest activity. These are the figures the About the Experiment page publishes; this tool verifies them against the registry of record.
get_longevity
@tool
def get_longevity() -> listPer-agent longevity: every registered agent with its session count, active hours, and first/last seen timestamps. Longevity accrues to the durable ADDRESS (the nomen), not to any single runtime.
get_monthly
@tool
def get_monthly() -> listThe estate’s month-by-month arc: sessions started and active agentic hours per calendar month since capture began (2026-05).
get_agent
@tool
def get_agent(nomen: str) -> dictOne agent’s full uptrace: its registry row plus every session claimed to it, ordered by first activity. Pass the agent’s nomen (e.g. ‘Toru’).
verify_session
@tool
def verify_session(session_id: str) -> dictVerify one session exists in the registry of record: returns its row (timestamps, active seconds, record count, size) plus any agent claims. Pass a session id (transcript stem).