MCP

A web search server for MCP clients

trawlia-mcp gives any Model Context Protocol client two tools: search the live web, and read the pages it finds. It is the shortest route into this API, because there is no code to write.

Claude Code

One command. It writes the config for you.

claude mcp add trawlia --env TRAWLIA_API_KEY=twl_... -- npx -y trawlia-mcp

Claude Desktop, Cursor, Windsurf

Anything that reads a JSON config takes the same block.

{
  "mcpServers": {
    "trawlia": {
      "command": "npx",
      "args": ["-y", "trawlia-mcp"],
      "env": { "TRAWLIA_API_KEY": "twl_..." }
    }
  }
}

Both need a key. Signing up is free and gives you 100 credits a month with no card, which is enough to wire it up and see whether the results are any good before deciding anything.

The two tools

trawlia_search

Ranked, deduplicated results from the live web.

  • Natural language in, not keywords.
  • basic returns snippets and costs one credit. advanced fetches and extracts every result and costs two.
  • news reaches news indexes and returns publication dates.
  • Host filters, and a time range down to the day.

trawlia_extract

URLs you already have, returned as readable content.

  • Navigation, cookie banners and newsletter modals removed.
  • Billed per batch of 5 URLs, so pass the whole list at once.
  • A URL that could not be read is named with the reason rather than going missing.

What the model actually sees

Results come back as readable text rather than raw JSON, and carry two things a plain response would lose.

A page that could not be read says so

The result names the reason instead of presenting a search snippet as though it were the article. A model that is told a page was blocked can say so; one handed a snippet will summarise it as fact.

A thin result set says it is thin

When a source was unavailable, a coverage line comes back with the results. That is the difference between "the web has little on this" and "we could not look properly", and only one of them should be reported confidently.

Errors say whether to retry

Readable sentences, not status codes. Running out of credits says so and says not to retry. A rate limit says how long to wait. An empty result set is never how a failure is reported.

API reference → Pricing →