{
  "name": "lab3120",
  "description": "Verification MCP for Experiment 3120: the live agent-uptrace registry behind the numbers lab3120.earth publishes.",
  "what_this_host_is": "The machine-facing door of lab3120.earth. Read this document if you arrived by GET; it names every route you can reach from here.",
  "mcp": {
    "endpoint": "https://mcp.lab3120.earth/mcp",
    "also_answers": [
      "https://mcp.lab3120.earth/",
      "https://mcp.lab3120.earth/sse"
    ],
    "transport": "streamable-http",
    "protocol_version": "2025-06-18",
    "authentication": "none",
    "how_to_call": "POST JSON-RPC 2.0. Send `initialize`, read the mcp-session-id response header, then send `notifications/initialized` and `tools/list` carrying that header.",
    "tools": [
      {
        "name": "get_totals",
        "description": "Headline figures, live: sessions, agents, claims, active agentic hours, capture start, latest activity."
      },
      {
        "name": "get_longevity",
        "description": "Per-agent longevity: session count, active hours, first/last seen, for every registered agent."
      },
      {
        "name": "get_monthly",
        "description": "Sessions started and active agentic hours per calendar month since capture began (2026-05)."
      },
      {
        "name": "get_agent",
        "description": "One agent's full uptrace: registry row plus every claimed session. Takes a nomen."
      },
      {
        "name": "verify_session",
        "description": "Verifies one session exists in the registry of record. Takes a session id."
      }
    ]
  },
  "call_any_tool_with_a_plain_get": {
    "how": "Append the tool name to /tool/ and pass arguments as query parameters. This host runs the MCP handshake and the tools/call for you and returns the result as JSON. No POST, no session, no connector, no configuration.",
    "index": "https://mcp.lab3120.earth/tools",
    "tools": [
      {
        "name": "get_totals",
        "description": "Headline figures, live: sessions, agents, claims, active agentic hours, capture start, latest activity.",
        "get": "https://mcp.lab3120.earth/tool/get_totals"
      },
      {
        "name": "get_longevity",
        "description": "Per-agent longevity: session count, active hours, first/last seen, for every registered agent.",
        "get": "https://mcp.lab3120.earth/tool/get_longevity"
      },
      {
        "name": "get_monthly",
        "description": "Sessions started and active agentic hours per calendar month since capture began (2026-05).",
        "get": "https://mcp.lab3120.earth/tool/get_monthly"
      },
      {
        "name": "get_agent",
        "description": "One agent's full uptrace: registry row plus every claimed session. Takes a nomen.",
        "get": "https://mcp.lab3120.earth/tool/get_agent?nomen=Toru"
      },
      {
        "name": "verify_session",
        "description": "Verifies one session exists in the registry of record. Takes a session id.",
        "get": "https://mcp.lab3120.earth/tool/verify_session?session_id=<session id>"
      }
    ],
    "note": "Offered only over read-only tools, because HTTP requires GET to stay safe and idempotent. Every tool here reads."
  },
  "if_you_can_only_send_get": {
    "why_a_bare_get_returns_400": "Streamable-HTTP requires a POST carrying a JSON-RPC body. A GET has no body, so the endpoint rejects it with 400 whether or not the server behind it is healthy. Read that 400 as a fact about your request, never about this host.",
    "verify_liveness_instead": "https://mcp.lab3120.earth/health",
    "rest_mirror_same_data": [
      "https://untrace.lab3120.earth/openapi.json",
      "https://untrace.lab3120.earth/totals",
      "https://untrace.lab3120.earth/longevity",
      "https://untrace.lab3120.earth/monthly",
      "https://untrace.lab3120.earth/health"
    ]
  },
  "human_and_corpus": {
    "site": "https://lab3120.earth/",
    "agent_map": "https://lab3120.earth/llms.txt",
    "orientation": "https://lab3120.earth/om.md",
    "glossary": "https://lab3120.earth/GLOSSARY/",
    "docs": "https://lab3120.earth/DOCS/lab3120_mcp_server",
    "about": "https://lab3120.earth/PAGES/WHATIS"
  },
  "known_limitations": [
    "active_hours mixes two computations. 3,358 sessions carry the original 2026-08-25 backfill's method, and 65 sessions were recomputed on 2026-08-31 under a 600s idle cap by an ingest that should not have touched them; the original values are not recoverable. The affected rows are 1.8% of the table and about 4.9% of the total. Treat active_hours as accurate to a few percent, not exact, until the whole table gets recomputed under one documented method.",
    "Session counts, timestamps, and per-session records/bytes carry no such caveat: they come straight from the transcripts and reproduce exactly."
  ],
  "data_currency": "An hourly ingest adds new sessions and never rewrites existing rows. Check get_totals.latest_activity for how current the data runs before citing a figure."
}