Triremes
Search about 645,000 business websites scored for SEO and for whether AI answer engines can read them, plus problems people report with software. Read scores and free samples; agencies buy failing sites as leads.
Hosted MCP Server
npx add-mcp 'https://triremes.com/mcp'Installs into Claude Code, Codex, Cursor and more
Documentation
Triremes MCP server
Let an AI agent search the problems people have and the websites with poor SEO / AEO, read a website's SEO score and see the free samples. The server is read only, free and needs no key: it shows what the public pages show, and each answer links to the page where a lead, an idea report or a website is bought.
Connect
- Address:
https://triremes.com/mcp - Transport: MCP's streamable HTTP. Each message is one
POSTof one JSON-RPC 2.0 message, answered with one JSON answer; the server opens no event stream, soGETis answered 405. - Protocol versions:
2025-06-18,2025-03-26,2024-11-05. The client's own when it is one of them, else the newest. - No sign-in, no key and no OAuth.
Claude Code
claude mcp add --transport http triremes https://triremes.com/mcp
Claude Desktop
Add it under Settings, Connectors, Add custom connector, with the address above. Or, in claude_desktop_config.json, through the mcp-remote bridge:
{
"mcpServers": {
"triremes": {
"command": "npx",
"args": ["-y", "mcp-remote", "https://triremes.com/mcp"]
}
}
}
Any other client
A client that speaks streamable HTTP takes the address; many read a configuration like this one:
{
"mcpServers": {
"triremes": {
"type": "http",
"url": "https://triremes.com/mcp"
}
}
}
Or call it yourself:
curl -s https://triremes.com/mcp \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc": "2.0", "id": 1, "method": "tools/call",
"params": {"name": "search_problems", "arguments": {"query": "invoice"}}}'
Tools
Every tool only reads. Lists come 25 at a time; the next page is the answer's next_cursor passed back as cursor.
search_problems
Search the problems people have that Triremes lists, biggest first: each with its title, tier, how many reports and when the first and the last were, the day Triremes listed it, its summary as its page shows it, whether it is sold as a lead (businesses that have it) or an idea report, its price, how many times a lead has been sold and when it last was, and its page. Leads and idea reports are bought on that page.
cursor: The next_cursor of the answer before, for the next page.kind: Only leads, or only idea reports.max_sold: Only leads sold at most this many times; 0 for those never sold.query: Words to find in a problem's title or summary; empty for every problem.
search_website_gaps
Search the business websites Triremes measured with gaps in what search engines and AI answer engines can read, each one sold on its own: what kind of business and where, its SEO score and its label, the checks it failed by name, when it was measured, its price, how many times it has been sold and when it last was, and its page. The business, its website and its contacts are bought on that page. One with no SEO score yet is being measured (being_measured): no price, and it can be bought once it has an SEO score.
business: A kind of business, such as Dentists or Roofing Contractors; when several kinds match, the answer lists them.city: A city.country: A country, as its two-letter ISO code (US, DE).cursor: The next_cursor of the answer before, for the next page.gap: Only websites that fail this check, by its id: https (Homepage not on HTTPS), redirects (More than 2 redirects to the homepage), mixed_content (HTTP resources on an HTTPS homepage), ttfb (First byte after more than 1800 ms), title_missing (No homepage title), title_long (Homepage title over 60 characters), title_short (Homepage title under 30 characters), meta_description (No meta description), h1 (No h1 heading), canonical (No canonical link), viewport (No viewport tag), open_graph (No Open Graph title or image), noindex (Homepage marked noindex), robots_blocks_all (robots.txt blocks all crawlers), sitemap (No sitemap), structured_data (No structured data (JSON-LD)), structured_data_invalid (Structured data that is not valid JSON).gap_score: Only websites with an SEO score in this band: catastrophic (Catastrophic: 100%), badly-flawed (Badly flawed: 50% to 99%), flawed (Flawed: 20% to 49%), lightly-flawed (Lightly flawed: 1% to 19%), no-gaps (No gaps: 0%); or in this 10% step: 0 (0%), 1-10... 91-100.max_sold: Only websites sold at most this many times; 0 for those never sold.query: Words to find, each somewhere in a website's kind of business, city, region, country or the names of the checks it fails, such as "dentists austin" or "roofing sitemap"; empty for every website.
get_website_gap_score
One website on sale by its id (3f9a1c07b2e85d64): its SEO score, the share of Triremes' checks of what search engines can read on its homepage that it fails, weighted by how serious each check is (0% means no gaps; higher is worse), with its label (No gaps, Lightly flawed, Flawed, Badly flawed or Catastrophic), the checks it failed by name, when it was measured, its price, how many times it has been sold and the time of each sale, and its page. A website with no SEO score yet is being measured: being_measured is true, it has no price and it can be bought once it has an SEO score.
site_id: The website's id, as search_website_gaps gives it.
show_samples
The free sample lead, idea report and website with poor SEO / AEO: what a buyer gets, on pages anyone may read.
No arguments.
What is free
Everything the server answers is free. It never answers with what a purchase pays for (a problem's businesses and contacts, a website's business, address or contacts); where that is what you want, the answer links to its page on triremes.com, where it is bought as on the rest of the site. To search and buy from your own code, there is the paid Triremes API.
Limits
- At most 30 calls a minute from one address, and at most 300 a minute from everyone together. Past either, the answer is HTTP 429 with a
Retry-Afterheader and a JSON-RPC error saying how many seconds to wait. - A message is at most 16 KB.
- Calls from a web page on another site are refused (403); a client that is no browser sends no
Originand is not affected. - The server keeps no session. Its answer to
initializegives anMcp-Session-Id, which carries the name and version your client gave; send it back with each message after, as clients do. Notifications are answered 202.
What a call's record keeps is in the privacy policy.