Skip to main content
/agents

For agents.

A markdown corpus exposed as machine-readable surfaces — an index, a remote MCP endpoint, JSON APIs, and feeds — so language models, scrapers, and your own scripts can read this site without parsing HTML or cloning the repo.

Why bother

The site is a by-product of a markdown repo, not the other way round. If an agent wants the same view a human gets, it should not have to scrape a layout. Every page below has a structured analogue, regenerated on every build, addressable by URI, and stable enough to pin against.

01 / llms.txt

An index of every
public surface.

/llms.txt is a single text file that lists every page, listing, detail pattern, JSON API, data file, and feed on the site, grouped by section. It also advertises Markdown siblings for page-shaped routes and the token estimate convention used by machine-readable payloads. It is regenerated at build time from the same surface inventory the top navigation uses, so it never drifts.

Hand it to a model as a starting point and it will know what is here without crawling.

02 / agent-readable files

Capabilities,
permissions, and tokens.

/skill.md

Capability signaling for the public corpus, JSON APIs, feeds, and MCP tools.

agent_metadata.approx_token_count

Approximate chars/4 token budget surfaced in detail Markdown envelopes and JSON APIs.

03 / MCP server

One server,
two transports.

Built onModel Context Protocoland @modelcontextprotocol/sdk. The same factory backs a stdio entrypoint (servers/thinkinglabs-mcp/) and a remoteStreamable HTTP entrypoint (servers/thinkinglabs-mcp-http/), so the resources, tools, and store-fallback semantics are identical regardless of how you connect. Schema version 0.1.0; public-only; auth disabled.

https://mcp.thinkinglabs.run/mcp

Remote endpoint. Streamable HTTP transport in stateless mode — every POST is one JSON request, one JSON response. No clone required.

pnpm mcp:thinkinglabs -- --repo-root <path>

Local stdio entrypoint. Reads from your checkout; useful when iterating on the corpus.

Static views
16 resources
thinkinglabs://thoughts

Rough-draft prose; the unstructured side of the corpus.

thinkinglabs://claims

Atomic structured assertions with confidence in [0,1].

thinkinglabs://claims/recent

The most recent claim revisions.

thinkinglabs://projects

Active and archived projects with state and links.

thinkinglabs://projects/active

Just the live ones.

thinkinglabs://decisions

Decisions made and the reversals that followed.

thinkinglabs://decisions/recent

Latest decisions and reversals.

thinkinglabs://predictions

Dated predictions, all states.

thinkinglabs://predictions/pending

Predictions still waiting on reality.

thinkinglabs://predictions/resolved

Predictions graded against the world.

thinkinglabs://predictions/calibration

Stated confidence vs realized accuracy.

thinkinglabs://inputs

Things I've read, watched, or listened to.

thinkinglabs://inputs/recent

The latest inputs.

thinkinglabs://observations

Short first-party notes about the world.

thinkinglabs://questions

Open questions I'm tracking.

thinkinglabs://current_focus

What I'm actively working on right now.

Templates
parameterised
thinkinglabs://claims/by-tag/{tag}

All claims under a single tag.

thinkinglabs://{kind}/{slug}

A single object by slug — claims, thoughts, projects, decisions, predictions, inputs, observations, questions, posts, changed-my-mind.

Meta
contracts & models
thinkinglabs://schema/version

MCP schema version for consumers that pin contracts.

thinkinglabs://ai/current-models

The env-resolved model refs by capability tier.

Tools
5 callable
query_view

Query public view

Filter one public view by free text, tags, and limit.

contact.precheck

Precheck contact intent

Check a proposed inquiry against the public contact policy before sending.

contact.send

Prepare contact handoff

Validate a message and return the public email handoff. The server does not send mail.

subscribe_brain_diff

Subscribe to brain diff

Return public feed URLs and optionally recent deterministic entries from git history.

question.submit

Submit answer to open question

Write a structured reader answer into the submissions queue for later triage.

04 / JSON APIs

One endpoint per kind,
no auth.

Every listed kind also has a flat JSON dump at/api/<kind>.json. Useful when you want the full set in one round-trip instead of paging an MCP view.

05 / feeds

Subscribe to the
deltas.

The deterministic feeds are regenerated on every build. Brain-diff feeds are added to the public surface list when the local artifact pipeline has generated them.

06 / connect

Wire it up
without cloning.

For most agents, the remote URL is enough. Hand it to any MCP-aware client and the handshake takes care of everything. The local stdio entrypoint is here for cases where you want to point the server at a different checkout.

Remote — Claude Desktop / Claude Code
{
  "mcpServers": {
    "thinkinglabs": {
      "url": "https://mcp.thinkinglabs.run/mcp"
    }
  }
}
Remote — programmatic (TypeScript SDK)
import { Client } from "@modelcontextprotocol/sdk/client/index.js";
import { StreamableHTTPClientTransport } from "@modelcontextprotocol/sdk/client/streamableHttp.js";

const client = new Client({ name: "demo", version: "0.0.1" });
await client.connect(
  new StreamableHTTPClientTransport(new URL("https://mcp.thinkinglabs.run/mcp"))
);
Local — stdio against your own checkout
git clone https://github.com/flaming-codes/thinkinglabs.git
cd thinkinglabs
pnpm install
pnpm mcp:thinkinglabs -- --repo-root .

For agents that just need a starting URL, point them at/llms.txt and let them fan out from there.