lumora.example
The 7 best CRMs for startups in 2026
0.75 or higher
A CRM vendor wrote the list, put its own product first and gave every competitor a drawback.
Bias lets your agent search the web and warns it when a page comes from someone with a stake in the answer, like a company ranking its own product first. Each page gets a score from 0 to 1 and a short explanation.
Scoring is on by default, so web_fetch adds a bias object next to the page markdown. The score runs from 0 for an independent source to 1 for a publisher with a direct stake in the conclusion it pushes. The reason names the publisher and the stake, and each entry in sources points to the page or to a search result about the publisher.
Pass bias: false to skip the model call when you only need the content.
A software vendor that publishes a list of the best tools in its own category and ranks itself first gets a score close to 1, with the ranking quoted as evidence.
A news site funded by a political party gets a high score when it covers that party's opponents, and the reason names the funder and links to where the research found it.
"bias": {
"applicable": true,
"score": 0.92,
"level": "very_high",
"types": ["self_promotion", "competitor_disparagement"],
"publisher": "Lumora",
"favors": ["Lumora CRM"],
"reason": "Lumora sells a CRM and published this ranking of CRMs, which puts Lumora first and lists a drawback for every competitor.",
"sources": [
{
"url": "https://lumora.example/blog/best-crm-for-startups",
"evidence": "For almost every startup, Lumora CRM is the clear winner."
},
{
"url": "https://lumora.example/about",
"evidence": "Lumora builds Lumora CRM, a customer relationship management platform for small teams."
}
]
}The repository ships an eval set of fictional pages, and each card below shows one of them with the score range the eval expects. Run npm run eval to score them with your own key, or read the cases on GitHub.
lumora.example
0.75 or higher
A CRM vendor wrote the list, put its own product first and gave every competitor a drawback.
bytefront.example
0.60 or higher
The article reads like reporting, but the label at the top says the company it praises paid for it.
stackpicks.example
0.30 to 0.80
The review site is not a vendor, but it earns a commission from the signup links next to each pick.
lumora.example
0.25 to 0.75
The vendor has a stake, says so up front and names the cases where the competitor is the better choice.
dblab.halvorsen-university.example
0.30 or lower
A publicly funded lab with no vendor ties published its method, its scripts and a result with no single winner.
docs.lumora.example
score: null
API reference pages describe how a product works and do not argue for anything, so the score is null.
A cheap model does the reading, and the server checks its work before your agent sees it. Scoring a 30,000 token article costs about $0.003.
The server searches for the publisher's owner, parent company, funding and political ties, and keeps the result for that domain so the next page from the same site skips the search.
Claude Haiku 5.5 reads the page, the research results and the reader's intent if you pass one, and returns a score, a reason and a list of sources as structured JSON.
The server removes any source URL that was not in the material the model received, so every source in the answer points to something the model actually read.
Documentation, specs and changelogs come back with applicable set to false and a null score, because a reference page has no conclusion to push.
web_search sends your query to every provider you have a key for at the same time and merges the lists with reciprocal rank fusion. A URL that two providers return ranks above a URL that only one returns, and each result lists the providers that found it. If one provider fails, the others still answer and the failure shows up in the response.
web_fetch tries Firecrawl first, then context.dev, then Exa, and returns the first page that comes back as clean markdown. You can also name a single provider.
Build the server, then add it to Claude Code, Claude Desktop or Cursor. You need a key for at least one provider, and an Anthropic key turns on scoring.
git clone https://github.com/usenotra/web-mcp
cd web-mcp && npm install && npm run build{
"mcpServers": {
"bias": {
"command": "node",
"args": ["/path/to/web-mcp/dist/index.js"],
"env": {
"EXA_API_KEY": "...",
"FIRECRAWL_API_KEY": "...",
"CONTEXT_DEV_API_KEY": "...",
"ANTHROPIC_API_KEY": "..."
}
}
}
}