Skip to content
Eden Engine

Research Topic & Field Seed Cluster

omnial/topic-search

Given a broad field, discipline, or short topic phrase (e.g. 'crispr', 'exercise science'), returns one seed cluster: the matched research topic plus a mixed list of the field's top-cited and recent-influential papers, each with title, abstract, authors, year, venue, citation count, and DOI. A phrase that matches no known topic still returns a result, with an empty paper list and a note explaining the fallback.

activeper callv3

Price

$0.0301 per call

You pay the price shown. If a call turns out to cost more than its quote, you pay the actual price, capped at twice the quote. No monthly minimum. Top-ups start at $5.00.

Data source

OpenAlex

Data from OpenAlex.

Use it

Your AI assistant does the work: it finds this tool, shows you the price first, runs it, and you are charged when the run finishes. There is nothing to set up for this tool in particular.

Connect once and your AI can find and run this tool, and any other it needs.

For developers: the calls your assistant makes
agent
// 1. search: find the tool
omnial_search({ query: "what you need" })

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

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

// 4. run: price the exact call first, then run it
omnial_execute({ tool: "omnial/topic-search", input: { /* see input_schema */ }, dry_run: true })
omnial_execute({ tool: "omnial/topic-search", 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.0301
Updated
Oct 27, 2026

Input and output schemas

Input schema
input_schema.json
{
  "type": "object",
  "required": [
    "q"
  ],
  "properties": {
    "q": {
      "type": "string",
      "description": "a field, discipline, or short topic phrase (e.g. 'crispr', 'exercise science')"
    },
    "maxItems": {
      "type": "string",
      "default": "12",
      "description": "cluster size cap (1-25)"
    }
  },
  "additionalProperties": false
}
Output schema
output_schema.json
{
  "type": "object",
  "properties": {
    "count": {
      "type": "number",
      "description": "Number of entries in `items` (typically 1)."
    },
    "items": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "mode": {
            "type": "string",
            "description": "How the query was resolved: 'topic' when it matched the taxonomy (e.g. 'crispr'), 'fallback-search' when it did not (e.g. a nonsense query). Other values are unconfirmed."
          },
          "note": {
            "type": "string",
            "description": "Present only on a no-match fallback (observed value: 'taxonomy had no match; fell back to plain relevance search'); absent when `mode` is 'topic'."
          },
          "type": {
            "type": "string",
            "description": "Typically the literal string 'topic_search'."
          },
          "count": {
            "type": "number",
            "description": "Number of entries in this item's `results`; 0 on a no-match query."
          },
          "query": {
            "type": "string",
            "description": "Echoes the requested `q` phrase."
          },
          "results": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "doi": {
                  "type": "string",
                  "description": "Bare DOI string, e.g. '10.1126/science.1225829' (not a URL)."
                },
                "type": {
                  "type": "string",
                  "description": "Observed as the literal string 'paper'."
                },
                "year": {
                  "type": "number"
                },
                "title": {
                  "type": "string"
                },
                "venue": {
                  "type": "string",
                  "description": "Publishing journal or venue name."
                },
                "source": {
                  "type": "string",
                  "description": "Observed as the literal string 'openalex'."
                },
                "authors": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  },
                  "description": "Author full names, as published on the paper."
                },
                "abstract": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "description": "Null on several observed papers, not always present."
                },
                "published": {
                  "type": "string",
                  "description": "Date string, e.g. '2012-06-29'."
                },
                "clusterRole": {
                  "type": "string",
                  "description": "'top_cited' or 'recent_influential', observed values only."
                },
                "citedByCount": {
                  "type": "number",
                  "description": "Typically identical to citationCount."
                },
                "citationCount": {
                  "type": "number"
                }
              },
              "additionalProperties": true
            },
            "description": "The paper cluster. Empty on a no-match query (see the sibling `note` field for that case). On a match, a mix of `clusterRole: 'top_cited'` and `clusterRole: 'recent_influential'` entries."
          },
          "routing": {
            "type": "object",
            "properties": {
              "wordCount": {
                "type": "number"
              },
              "confidence": {
                "type": "number",
                "description": "0-1; 0 on a no-match query."
              },
              "isQuestion": {
                "type": "boolean"
              },
              "matchedVia": {
                "type": "string",
                "description": "e.g. 'topic-name' on a match, 'none' when nothing matched. Other values are unconfirmed."
              },
              "groundingLevel": {
                "type": "string",
                "description": "e.g. 'topic' on a match, 'none' when nothing matched."
              }
            },
            "description": "Diagnostics about how the query phrase was interpreted and matched.",
            "additionalProperties": true
          },
          "grounding": {
            "type": "object",
            "properties": {
              "id": {
                "type": [
                  "string",
                  "null"
                ],
                "description": "Taxonomy topic id, e.g. 'T10878'."
              },
              "name": {
                "type": [
                  "string",
                  "null"
                ],
                "description": "The matched topic's name."
              },
              "field": {
                "type": [
                  "string",
                  "null"
                ],
                "description": "The topic's parent field."
              },
              "level": {
                "type": "string",
                "description": "e.g. 'topic', or 'none' on no match."
              },
              "subfield": {
                "type": [
                  "string",
                  "null"
                ],
                "description": "The topic's parent subfield."
              }
            },
            "description": "The taxonomy entry the query resolved to. Every field below is `null` when `routing.groundingLevel` is 'none' (e.g. on a no-match query) rather than the field being absent.",
            "additionalProperties": true
          },
          "candidateTopics": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string"
                },
                "name": {
                  "type": "string"
                },
                "field": {
                  "type": "string"
                },
                "share": {
                  "type": "number",
                  "description": "0-1 fraction of total votes."
                },
                "votes": {
                  "type": "number"
                },
                "subfield": {
                  "type": "string"
                }
              },
              "additionalProperties": true
            },
            "description": "Alternate taxonomy topics considered before settling on `grounding`, ranked by vote share. Empty on a no-match query."
          }
        },
        "additionalProperties": true
      }
    }
  },
  "description": "The topic search result.",
  "additionalProperties": true
}