Skip to main content
Lotlsoft Labs

Lotlsoft Labs

API

Read any of it over HTTP, or let an agent call it directly. No key, no signup, no rate card.

Everything is read-only. There is no writable surface at all, so nothing here is stored on your behalf and nothing can be made to ingest anything.

Published right now: bootstrapped-founders (dataset).

MCP

One endpoint for the whole site, over Streamable HTTP. POST only: it is stateless, so there is no session to resume, and a GET returns 405 rather than leaving a client waiting on a stream that will never open.

https://labs.lotlsoft.com/mcp

labs_entries lists what is here, whatever kind each entry is. Everything else is namespaced by entry, so a second one adds its own tools rather than changing what the existing ones mean.

Entries

What bootstrapped founders actually said about AI, pricing and getting acquired

GET /api/bootstrapped-founders

Counts, the failure-mode breakdown, and the list of subjects. sourcesCited and corpusDocuments are separate fields because they are separate things: the URLs the surviving claims point at and the pages that were read.

GET /api/bootstrapped-founders/claims

All claims. ?status=held|refused to filter, ?predicate=revenue-at to narrow, ?q= to search the claim text. No pagination: the whole thing is small enough to hand to a model in one go.

GET /api/bootstrapped-founders/refusals

The refusals, with the reason each was refused and the breakdown by failure mode. This is the interesting one.

GET /api/bootstrapped-founders/subjects/:key

One subject, with every claim that held and every claim that did not.

curl https://labs.lotlsoft.com/api/bootstrapped-founders/refusals

MCP tools

ToolDoes
bootstrapped_founders_searchSearch claims by text, with every quote behind each
bootstrapped_founders_subjectsList subjects, or fetch one with all its claims
bootstrapped_founders_refusalsClaims that failed the check, and why
bootstrapped_founders_failure_modesHow the refusals break down by shape of mistake

Coming soon

Bring your own sources. Point the same checking at your own research: create a directory, ingest the pages you fetched, and get back what held and what did not. That is the part we would actually build if someone asked for it, which is why it is the only thing listed here.

The caveat that matters

Where an entry carries checked claims, the check asks whether a claim follows from the evidence cited for it. That is all it asks.

A claim that held can still be false, because a quote can faithfully support something the speaker got wrong. A claim that was refused is unproven rather than false. And the sentences were written by research agents reading public statements, so a refusal is a mark against our sourcing and never against the person quoted.

Quotes come back as a list because most claims rest on more than one, and the sentence doing the work is often not the first. Read them all before deciding whether a claim earns its keep.

The method note goes through all of it, including why a pass rate should not be read as an error rate.

Using it

No authentication and no quota today, and a rate limit generous enough that you will not meet it by accident. Responses are CORS-open, so a browser can call this directly.

We do count MCP tool calls, and for searches we record the query text. That is the experiment: whether an agent calls a free evidence tool a second time is the only question this is trying to answer, and we would rather tell you we are counting than find out quietly. No addresses, headers or sessions are recorded, and there is nothing to tie one call to another.

If something here is useful to you, an email saying so is worth more to us than the traffic.

Licence: the claims and quotes are excerpts from public pages, cited in every response. Attribute the original source, not us.