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 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.
Capabilities,
permissions, and tokens.
/skill.mdCapability signaling for the public corpus, JSON APIs, feeds, and MCP tools.
/agent-permissions.jsonAutomated-access policy with preferred entrypoints and rate-limit guidance.
agent_metadata.approx_token_countApproximate chars/4 token budget surfaced in detail Markdown envelopes and JSON APIs.
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/mcpRemote 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://thoughtsRough-draft prose; the unstructured side of the corpus.
thinkinglabs://claimsAtomic structured assertions with confidence in [0,1].
thinkinglabs://claims/recentThe most recent claim revisions.
thinkinglabs://projectsActive and archived projects with state and links.
thinkinglabs://projects/activeJust the live ones.
thinkinglabs://decisionsDecisions made and the reversals that followed.
thinkinglabs://decisions/recentLatest decisions and reversals.
thinkinglabs://predictionsDated predictions, all states.
thinkinglabs://predictions/pendingPredictions still waiting on reality.
thinkinglabs://predictions/resolvedPredictions graded against the world.
thinkinglabs://predictions/calibrationStated confidence vs realized accuracy.
thinkinglabs://inputsThings I've read, watched, or listened to.
thinkinglabs://inputs/recentThe latest inputs.
thinkinglabs://observationsShort first-party notes about the world.
thinkinglabs://questionsOpen questions I'm tracking.
thinkinglabs://current_focusWhat 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/versionMCP schema version for consumers that pin contracts.
thinkinglabs://ai/current-modelsThe env-resolved model refs by capability tier.
query_viewQuery public view
Filter one public view by free text, tags, and limit.
contact.precheckPrecheck contact intent
Check a proposed inquiry against the public contact policy before sending.
contact.sendPrepare contact handoff
Validate a message and return the public email handoff. The server does not send mail.
subscribe_brain_diffSubscribe to brain diff
Return public feed URLs and optionally recent deterministic entries from git history.
question.submitSubmit 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.jsonAll claims with confidence, status, evidence.
/api/thoughts.jsonAll draft thoughts with their derived claims.
/api/inputs.jsonRead/watch/listen log with citations.
/api/observations.jsonShort first-party notes about the world.
/api/projects.jsonProject metadata and current state.
/api/predictions.jsonPredictions with stated confidence and resolution.
/api/decisions.jsonDecisions made and their reversals.
/api/questions.jsonOpen questions with submission count.
/api/posts.jsonLong-form essays with metadata.
/api/changed-my-mind.jsonPublic 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.jsonPredictions transitioning out of pending.
/feed/claims-revised.jsonClaims with non-active status or supersedes links.
/feed/decisions-reversed.jsonDecisions 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.