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.
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.
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 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.
One server,
two transports.
Built on
Model Context Protocol
and @modelcontextprotocol/sdk. The same factory backs a stdio entrypoint
(servers/thinkinglabs-mcp/) and a remote
Streamable 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.
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.
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.
thinkinglabs://schema/version MCP schema version for consumers that pin contracts.
thinkinglabs://ai/current-models The env-resolved model refs by capability tier.
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.
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.
/api/claims.json All claims with confidence, status, evidence.
/api/thoughts.json All draft thoughts with their derived claims.
/api/inputs.json Read/watch/listen log with citations.
/api/observations.json Short first-party notes about the world.
/api/projects.json Project metadata and current state.
/api/predictions.json Predictions with stated confidence and resolution.
/api/decisions.json Decisions made and their reversals.
/api/questions.json Open questions with submission count.
/api/posts.json Long-form essays with metadata.
/api/changed-my-mind.json Public reversals with before/after.
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.
/feed/predictions-resolved.json Predictions transitioning out of pending.
/feed/claims-revised.json Claims with non-active status or supersedes links.
/feed/decisions-reversed.json Decisions marked reversed, superseded, or with a `reverses` link.
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.
{
"mcpServers": {
"thinkinglabs": {
"url": "https://mcp.thinkinglabs.run/mcp"
}
}
} 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"))
); 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.