Reference
The corpus is the product, and most of what wants it is not a browser. Public reads need no key. Everything returns JSON; every list tells you what it filtered on, so a misspelled parameter is visible rather than silently ignored.
MCP
One command, then your agent can read the whole library.
claude mcp add --transport http stealpage https://stealpage.com/api/mcp
search_contentHybrid search across the whole corpus, or one company.list_contentFaceted list — technicality, format, audience, funnel stage.list_collectionsThe curated shelves, and who is on each one.get_pageOne page's markdown plus everything we scored about it.get_domainA company: coverage, health, languages, sitemaps, recent changes.index_domainCrawl a domain we do not have yet.job_statusPoll a crawl.
Content
/api/contentFaceted list. Every filter is a column scored at index time, not a text match.
qdomaincollectiontypeformataudiencelocaletopicstechnicality_mindepth_minoriginality_minpromotional_maxhas_codewords_minpublished_aftersortlimitoffsetcurl "https://stealpage.com/api/content?technicality_min=4&promotional_max=2&sort=cited"
/api/content/:idOne page: markdown, facets, assets with alt text, screenshots, crawl history, and who cites it.
markdown=false to omit the bodycurl https://stealpage.com/api/content/pg_abc123
/api/searchHybrid vector + full text over page chunks, fused on rank. Filters apply inside both engines.
qmode=hybrid|vector|textdomaincollectionlocaletypetopicstechnicality_minlimitcurl "https://stealpage.com/api/search?q=retrying+failed+webhooks&technicality_min=4"
Companies
/api/domains/:rootCoverage, health, properties per language, their sitemaps, what changed, who they link to.
curl https://stealpage.com/api/domains/stripe.com
Markdown
/api/content/:id.mdThe same page as raw markdown with a frontmatter block, so it stays attributable after it is pasted somewhere else.
curl https://stealpage.com/api/content/pg_abc123.md
/api/domains/:root/content.mdA company's pages as one markdown file. Every heading inside a page is demoted one level so the bundle is a real tree, and it states how many pages it left out.
limittypetechnicality_mincurl https://stealpage.com/api/domains/stripe.com/content.md
Collections
/api/collectionsEvery shelf, with how many companies are on it and how many of those we have actually crawled.
curl https://stealpage.com/api/collections
/api/collections/:slugOne shelf and its members, each with the reason it is there and whether a person or an agent put it there.
curl https://stealpage.com/api/collections/dev-docs
Crawling
/api/crawlIndex a domain. Returns a job id immediately — a crawl is minutes to hours, so nothing is held open.
domainbudgetrefreshforceshotscurl -X POST https://stealpage.com/api/crawl -H 'content-type: application/json' -d '{"domain":"stripe.com","budget":500}'/api/jobs/:idLive status: indexed, pending, discovered, elapsed, pages/min, eta, and the coverage buckets.
curl https://stealpage.com/api/jobs/job_abc123
What the numbers mean
- coverage.buckets
- Every URL we know about lands in exactly one bucket, and
unaccountedis always zero. If pages went unfetched they are inbudgetorstoppedEarlywith the reason attached — a crawl cannot report partial work as complete. - inlinks_body
- Internal citations from the BODY of other pages, with template links excluded. Raw
inlinksranks /login top on every site on the web. - estimate
- A range with a confidence, never a single number. Sitemaps under-report orphans and over-report dead URLs at the same time.