Skip to content
Eden Engine

Web Search Plus Top Page Text (One Query)

omnial/serp-read

Given a search query, runs one web search and returns the ranked results (rank, title, link, snippet and the engine setting it ran with), plus, for each of the top few results, the page that was read: its link, HTTP status, title, meta description, word count, a flag for cut-off text and the page text as markdown with its links removed.

activeper callv1

Price

Up to $0.121 per call; you pay what the call used

The price shown is the price you pay. No monthly minimum. Top-ups start at $5.

Data source

Brave, Yahoo and Yandex search

Search results from Brave, Yahoo or Yandex, whichever engine answered your query; page text from the web pages those results link to.

Use it

Five steps: search, inspect, learn, run, settle. No per-tool setup; your agent reaches this tool through the meta-tools it already has.

agent
// 1. search: find the tool
omnial_search({ query: "what you need" })

// 2. inspect: price and input schema
omnial_inspect({ tool: "omnial/serp-read" })

// 3. learn: read the usage guide at runtime
omnial_learn({ tool: "omnial/serp-read" })

// 4. run: price the exact call first, then run it
omnial_execute({ tool: "omnial/serp-read", input: { /* see input_schema */ }, dry_run: true })
omnial_execute({ tool: "omnial/serp-read", input: { /* ... */ } })

// 5. settle: the call is charged when it finishes, nothing to do

Not connected yet? Point your MCP client at https://mcp.eden-engine.com/mcp, then copy a config for your client.

Pricing

Every charge this tool can incur.

ChargePrice
Per call
$0.121
Updated
Oct 14, 2026

Input and output schemas

Input schema
input_schema.json
{
  "type": "object",
  "required": [
    "q"
  ],
  "properties": {
    "q": {
      "type": "string",
      "examples": [
        "latest quarterly results of a public company"
      ],
      "minLength": 1,
      "description": "The search query, in plain words."
    },
    "fetch_top": {
      "type": "string",
      "default": "3",
      "pattern": "^[1-5]$",
      "description": "How many of the top results to read for their page text, 1 to 5, as text."
    },
    "num_results": {
      "type": "string",
      "default": "5",
      "pattern": "^(?:[1-9]|1[0-9]|2[0-5])$",
      "description": "How many ranked search results to return, 1 to 25, as text."
    }
  },
  "additionalProperties": false
}
Output schema
output_schema.json
{
  "type": "object",
  "properties": {
    "count": {
      "type": "number",
      "description": "The number of entries in `items`: one search entry plus one per page read."
    },
    "items": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "url": {
            "type": "string",
            "description": "The link of the page read (page entry)."
          },
          "rank": {
            "type": "number",
            "description": "The search rank of the page read (page entry)."
          },
          "type": {
            "type": "string",
            "description": "serp_read for the search entry, page_extract for a page read."
          },
          "query": {
            "type": "string",
            "description": "The query searched (search entry)."
          },
          "title": {
            "type": [
              "string",
              "null"
            ],
            "description": "The page's title (page entry)."
          },
          "results": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "url": {
                  "type": "string",
                  "description": "The result page's link."
                },
                "rank": {
                  "type": "number",
                  "description": "The result's position, from 1."
                },
                "type": {
                  "type": "string",
                  "description": "The kind of result."
                },
                "title": {
                  "type": "string",
                  "description": "The result page's title."
                },
                "engine": {
                  "type": "string",
                  "description": "The search-engine setting the query ran with (automatic selection), not the name of the engine that answered."
                },
                "snippet": {
                  "type": "string",
                  "description": "A short excerpt of the page."
                }
              }
            },
            "description": "The ranked search results (search entry)."
          },
          "markdown": {
            "type": [
              "string",
              "null"
            ],
            "description": "The page text as markdown, with links and markup removed (page entry). Null when the text could not be cleaned."
          },
          "wordCount": {
            "type": [
              "number",
              "null"
            ],
            "description": "The number of words in the page text (page entry)."
          },
          "httpStatus": {
            "type": "number",
            "description": "The HTTP status the page answered with (page entry)."
          },
          "resultCount": {
            "type": "number",
            "description": "The number of ranked results (search entry)."
          },
          "metaDescription": {
            "type": [
              "string",
              "null"
            ],
            "description": "The page's meta description, when it has one (page entry)."
          },
          "markdownTruncated": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Whether the page text was cut off at the length cap (page entry)."
          }
        }
      },
      "description": "The search entry (type serp_read) first, then one entry per page read (type page_extract)."
    }
  },
  "description": "One query's search results and the text of the top pages."
}