Desearch
Server Details
AI search (Reddit, HN, arXiv, Wikipedia), X and web search, page extraction, X data, People Search.
- Status
- Healthy
- Uptime
- 96.9% over 23 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- Repository
- Desearch-ai/mcp-desearch
- GitHub Stars
- 1
- Server Listing
- Desearch MCP Server
TDQS
Scored across 22 tools
Multiple tools overlap heavily: 'search', 'web-search', 'ai-search', and 'web-links-search' all do web searching, and 'extract', 'fetch', and 'web-crawl' all retrieve URL content. Descriptions try to steer (e.g. 'prefer extract', 'use fetch with a result URL') but the boundaries remain murky, so an agent could easily pick the wrong one. The X/Twitter and people-search tools are more distinct.
Everything is consistently kebab-case with recognizable domain prefixes (web-, x-, people-, ai-) and action suffixes (search, extract, status, control). Minor deviations exist, e.g. bare verbs 'search', 'extract', 'fetch' versus the domain-prefixed variants. Overall predictable and readable.
22 tools is on the heavy side, though the server spans three broad domains (web, X/Twitter, people search). The web-search cluster in particular inflates the count with near-duplicates rather than distinct capabilities.
X/Twitter coverage is strong (post by id, replies, retweeters, by urls, by user, user posts, user replies, trends) and people-search has a full lifecycle (search, status, control, tasks, profiles). Web coverage is adequate for search and extraction. Only minor gaps like a dedicated X user-profile lookup are absent.
Available Tools
22 toolsai-searchAI SearchCRead-onlyInspect
AI search and analysis on web using Desearch AI
| Name | Required | Description | Default |
|---|---|---|---|
| model | No | Model to use for the search: NOVA (default) or ORBIT. | NOVA |
| tools | No | Source ids sent to POST /desearch/ai/search. Short ids: 'web', 'twitter', 'arxiv', 'wikipedia', 'hackernews', 'reddit'. Legacy labels such as 'Web Search', 'ArXiv Search', 'Wikipedia Search', 'Hacker News Search', and 'Reddit Search' are rewritten to those ids. Example: ['web', 'twitter']. | |
| prompt | Yes | Question, example: 'What is the latest news on AI?' | |
| end_date | No | End of the date range in UTC (YYYY-MM-DDTHH:MM:SSZ). Use with start_date. | |
| start_date | No | Start of the date range in UTC (YYYY-MM-DDTHH:MM:SSZ). Use with end_date. | |
| date_filter | No | Deprecated relative window; prefer start_date/end_date. Example: 'PAST_WEEK' | |
| result_type | No | ONLY_LINKS returns links only; LINKS_WITH_FINAL_SUMMARY adds an AI summary. Link arrays are kept under whichever key the API uses, along with billing fields. ONLY_LINKS still depends on the API to include those links. | |
| exclude_domains | No | Drop Web Search results from these domains, example: ['pinterest.com'] | |
| include_domains | No | Restrict Web Search results to these domains, example: ['bbc.com', 'reuters.com'] |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=true, and destructiveHint=false, so the safety profile is covered. The description adds no further behavioral context, such as what the AI analysis returns, whether it incurs billing, or how source selection affects results.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single short sentence with no wasted words, but it is under-informative for a tool of this complexity rather than genuinely concise. It is front-loaded but does not say enough to be useful.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 9-parameter search tool with no output schema, the description is severely lacking. It does not explain what the tool returns, how the AI analysis differs from plain search, or how to choose between related sibling tools, leaving the agent to rely entirely on the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the schema itself thoroughly documents all 9 parameters, including enums, defaults, and date-range semantics. The description adds nothing beyond the schema, so the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description largely restates the title 'AI Search' and adds only a vague brand qualifier, 'using Desearch AI'. It does not specify what kind of analysis is performed or how the tool differs from the sibling 'web-search', which is essential for a search tool with 9 parameters.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use or when-not-to-use guidance is given, and no alternatives are mentioned. The agent cannot tell from the description whether 'ai-search' is preferred over 'web-search' or 'x-search' for any particular query.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
extractExtract Page ContentARead-onlyInspect
Extract a public URL and return its content as plain text or HTML using Desearch. Preferred over web-crawl for new integrations. API docs: https://www.desearch.ai/docs/api-reference/get-web-extract
| Name | Required | Description | Default |
|---|---|---|---|
| js | No | Render JavaScript before reading the page. | |
| url | Yes | Public URL to read, example: 'https://desearch.ai' | |
| wait | No | Post-load wait in milliseconds when JavaScript rendering is enabled. | |
| format | No | Content format to return: 'html' or 'text'. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnlyHint=true, openWorldHint=true, destructiveHint=false), so the description does not need to restate them. It adds that the URL must be public and that output is plain text or HTML, but it does not discuss authentication, rate limits, or JavaScript-rendering behavior beyond what is in the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two tightly written sentences plus a documentation link. The core action is front-loaded, and every sentence adds either capability, routing guidance, or reference material without repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description does a good job of stating the return content type. The input schema fully covers parameters and annotations cover safety, so the definition is complete enough for correct invocation, though it could say more about JavaScript-rendering expectations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all four parameters are already documented in the input schema. The description reinforces the URL and output-format semantics but does not add new meaning for js or wait, making the baseline 3 appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ("Extract a public URL") and specifies the return content ("plain text or HTML"). It also distinguishes the tool from the sibling web-crawl by explicitly recommending itself for new integrations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It names the alternative web-crawl and gives a clear condition for choosing this tool: preferred for new integrations. It does not state explicit exclusions or when-not-to-use conditions, so it falls short of the highest level but still provides useful routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fetchFetch PageARead-onlyInspect
Read a public page as text. Pass a URL returned by search.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | URL of the page to read. |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | |
| url | Yes | |
| text | Yes | |
| title | Yes | |
| metadata | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=true, so the safety profile is covered. The description adds that only *public* pages can be read and that output is text, which is genuine extra context, but it says nothing about auth requirements, rate limits, or failure behavior on non-public URLs.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short, front-loaded sentences with zero filler. The action and its scope come first, the input sourcing second.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter read tool with an output schema, annotations covering safety, and 100% schema coverage, nothing essential is missing. The description supplies the action, scope, and input provenance the agent needs to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With one parameter at 100% schema coverage, the baseline is 3; the description goes slightly beyond the schema by specifying the URL's provenance ('returned by search'), which tells the agent how to source the value rather than just its type.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Read a public page as text'), which is clearly distinguishable from mutation siblings. It does not, however, differentiate itself from likely-overlapping siblings like extract or web-crawl, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Pass a URL returned by search' gives a precondition for the input, implying this tool follows a search step. But there is no when-to-use/when-not guidance versus the many search and extraction siblings, leaving the choice largely to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
people-profilesList People FoundARead-onlyInspect
Everyone your People Searches found on one platform, one entry per person: their best-scoring result and the search that found them (found_by). Free; it does not run a new search. Search by name, handle, bio, or location with q, filter by contact channels (has), audience, fit score, location, or verification, and sort by score, recent, or audience. People from searches that ended more than 30 days ago are left out.
| Name | Required | Description | Default |
|---|---|---|---|
| q | No | Text in the name, handle, bio, or location, example: 'skincare'. | |
| has | No | Channels every person must have, example: ['email', 'instagram']. 'email' is a public email; the others are a link of that type. | |
| sort | No | 'score' (API default), 'recent', or 'audience'. | |
| limit | No | People per page (1-200, default 25). | |
| cursor | No | next_cursor from the previous page. | |
| location | No | Text in the location, example: 'united states'. | |
| platform | Yes | Platform: 'x', 'youtube', 'linkedin', or 'tiktok'. | |
| verified | No | Only verified accounts. Only X and TikTok people carry a verified flag. | |
| min_score | No | Minimum fit score (0-100). | |
| max_audience | No | Maximum followers (subscribers on YouTube). | |
| min_audience | No | Minimum followers (subscribers on YouTube). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only/open-world/non-destructive. The description adds genuinely new behavior: the call is free, it does not trigger a new search, and results expire after 30 days. It also discloses the shape of each entry (best-scoring result plus found_by), which annotations do not.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with the core semantics and cost/retention facts. The middle sentence is a dense enumeration of filters that largely restates the schema, which slightly dilutes an otherwise tight structure.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an 11-parameter read tool with no output schema, the description covers return shape, filtering, sorting, and a retention boundary. Pagination behavior (cursor/limit) is left entirely to the schema, which is acceptable but the only remaining gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline is 3. The description paraphrases the filter surface (q, has, sort, location, verification, audience, fit score) but adds no syntax, format, or precedence detail beyond the schema, and omits limit/cursor handling.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a specific verb+resource ('List People Found') and immediately scopes it: results from prior People Searches on one platform, one entry per person. It distinguishes itself from the search-running sibling by stating 'it does not run a new search'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly frames when this is used (retrieve existing results) and when it is not ('does not run a new search'), which routes the agent to people-search. The retention caveat ('searches that ended more than 30 days ago are left out') further conditions use, though no sibling is named directly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
people-searchPeople SearchADestructiveInspect
Start a paid job billed to the user's Desearch balance: find people on X, YouTube, LinkedIn, or TikTok who match a plain-language description. Each person comes back with a fit score, why they matched, their audience, and public contacts and links. This call reserves count times the platform's per-person price (reserved_cost_usd) and returns a task_id at once. When the search ends you pay only for the people it delivered (a per-search minimum applies when it finds anyone; a search that finds no one is free) and the rest of the reservation is returned. The search runs in the background, usually for 1 to 5 minutes: poll people-search-status with the task_id to read progress and the people found so far, and use people-search-control to pause, resume, or cancel it. Do not start the same search twice; send idempotency_key so a retry returns the first task instead of charging again. Filters depend on the platform. x: min_followers, max_followers, verified_only, countries, keywords, exclude_keywords. youtube: min_subscribers, max_subscribers, countries, require_contact, keywords, exclude_keywords. linkedin: min_followers, max_followers, countries, keywords, exclude_keywords. tiktok: min_followers, max_followers, require_contact, keywords, exclude_keywords.
| Name | Required | Description | Default |
|---|---|---|---|
| count | No | How many qualified people to find (5-200, API default 25). The search reserves this many and bills only the people it delivers. | |
| query | Yes | Who you are looking for, in plain language, example: 'Skincare creators who review sunscreen'. | |
| exclude | No | Handles to leave out, for example people you already contacted. | |
| keywords | No | Words that should appear in their posts, videos, or bio. All platforms. | |
| metadata | No | Your own labels for this search, example: {"campaign": "q4-outbound"}. Up to 10 keys; keys are 1-40 characters of a-z, 0-9, '_', '.', '-'; values are strings of up to 200 characters. Returned on the task; filter people-search-tasks by it. The search does not use it. | |
| platform | Yes | Where to look: 'x' (X profiles), 'youtube' (YouTube creators), 'linkedin' (LinkedIn members), or 'tiktok' (TikTok creators). | |
| countries | No | Countries to prefer, example: ['US', 'GB']. x, youtube, linkedin. | |
| min_score | No | Only return people with at least this fit score (0-100). | |
| max_followers | No | Maximum follower count. x, linkedin, tiktok. | |
| min_followers | No | Minimum follower count. x, linkedin, tiktok. | |
| verified_only | No | Only verified or X Premium accounts. x only. | |
| idempotency_key | No | Any unique string for this search, for example a UUID. Sending the same key again returns the first task and is not charged again. | |
| max_subscribers | No | Maximum subscriber count. youtube only. | |
| min_subscribers | No | Minimum subscriber count. youtube only. | |
| require_contact | No | Only creators with a public email (tiktok: in the bio; youtube: an email or contact link). youtube, tiktok. | |
| exclude_keywords | No | Leave out people who mention these words. All platforms. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare destructiveHint=true, idempotentHint=false and openWorldHint=true; the description adds the entire economic and temporal contract the agent needs: reserves count times per-person price (reserved_cost_usd), pays only for delivered people, a per-search minimum, free when nothing is found, refund of the unused reservation, a 1-5 minute background runtime, and immediate task_id return. This is substantially beyond what annotations convey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with purpose, then billing, then async workflow, then filters - a sensible order. It is dense but nearly every sentence carries operational weight; the trailing filter enumeration is the only part that echoes the schema rather than adding information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex, costly, asynchronous 16-parameter tool with no output schema, the description covers everything an agent needs: what a result contains (fit score, why they matched, audience, public contacts and links), the billing model, the task_id, how to poll, how to cancel, and how to avoid double charging. No material gap remains.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and each parameter description already states its platform applicability, so the description's per-platform filter lists (x: min_followers... etc.) largely restate structured data. The consolidated view is mildly convenient but adds no new semantics, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Start a paid job...find people on X, YouTube, LinkedIn, or TikTok who match a plain-language description') and immediately disambiguates it from the sibling status/control/tasks tools by naming them. An agent can distinguish it from people-search-status and people-search-control without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit workflow guidance: poll people-search-status with the task_id, use people-search-control to pause/resume/cancel, and 'Do not start the same search twice; send idempotency_key so a retry returns the first task instead of charging again.' Both the when-to-use and the when-not-to-use (duplicate starts) are covered.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
people-search-controlControl People SearchADestructiveIdempotentInspect
Pause, resume, or cancel a People Search task. Free. pause: a queued search pauses at once; a running one finishes its current batch first (status pausing, then paused). A search paused for more than 7 days is cancelled. resume: continues a paused search where it stopped, with no new charge. cancel: stops the search for good; you pay only for the people it already delivered and the rest of the reservation is returned. People found so far stay readable for 30 days.
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | 'pause', 'resume', or 'cancel'. cancel cannot be undone. | |
| task_id | Yes | task_id returned by people-search, example: '3f1c2b9e-8d4a-4c1e-9b7a-2e5f6a7b8c9d' |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare destructiveHint=true, idempotentHint=true, and readOnlyHint=false, but the description adds substantial context beyond them: pause timing (queued pauses at once, running finishes its batch, status pausing then paused), a 7-day auto-cancel rule, resume with no new charge, cancel billing/refund semantics, and 30-day result retention. These are exactly the operational traits an agent needs and none are derivable from the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the core action and cost ('Pause, resume, or cancel a People Search task. Free.') then dedicates one tight clause group per action. Every sentence carries distinct information about behavior, billing, or retention; nothing is redundant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With only two well-documented parameters, no output schema, and annotations already covering the safety profile, the description supplies the remaining operational detail (timing, billing, retention, irreversibility of cancel). Nothing an agent needs to call this correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description goes further by explaining the effect of each enum value (what pause/resume/cancel actually do to the task), which meaningfully enriches the bare enum list. It does not add format details for task_id beyond the schema's UUID example, hence not a 5.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States specific verbs (pause, resume, cancel) on a specific resource (a People Search task), so the agent knows exactly what the tool does. It is clearly distinct from siblings like people-search-status and people-search-tasks, which read rather than mutate task state.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Each action is given a clear behavioral condition (queued vs running, paused-where-it-stopped, stops-for-good), which tells the agent when each applies. However, it never routes the agent against alternatives such as people-search-status or people-search-tasks for read-only inspection, so the guidance stops short of explicit when-not/alternative statements.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
people-search-statusGet People Search StatusARead-onlyInspect
Status, progress, and cost of one People Search task, plus a page of the people found so far: name, handle, url, platform, audience, location, fit score, why they matched, contacts, and links. Free. People arrive while the search runs: pass the returned next_cursor as cursor on the next call to get only the people found since then. When done is true and has_more is false you have everyone the search found. An ended task has completion_reason (why it stopped), coverage_limited: true when a budget stopped it before count (more people may match), and warnings such as partial_enrichment (some profiles could not be read, so those people were scored on the search hit; they show enrichment: failed). Each person has fully_verified (every criterion confirmed by their own profile or posts) and unverified_criteria (criteria that are unknown or not met, or a disqualifier that applies). These are information only: the person still qualified.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | People per page (1-100, default 25). | |
| cursor | No | next_cursor from the previous people-search-status call. Omit to start from the first person. | |
| task_id | Yes | task_id returned by people-search, example: '3f1c2b9e-8d4a-4c1e-9b7a-2e5f6a7b8c9d' | |
| include_people | No | Set false to read only the status, progress, and cost. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, non-destructive, openWorld), and the description adds substantially more: cost ('Free'), the pagination/cursor semantics, what completion_reason means, the coverage_limited warning when a budget truncated results, partial_enrichment with the failed enrichment marker, and the meaning of fully_verified/unverified_criteria (informational only, not disqualifying). That is real behavioral context an agent cannot get from the annotations or schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is front-loaded with what the tool returns and efficiently packs cost, pagination, completion, warnings, and per-person fields into one dense paragraph. It is long and unsegmented (no line breaks or bullets), which slightly hurts scannability, but nearly every clause carries information an agent needs to interpret the response.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description bears full responsibility for return-value semantics and it discharges that thoroughly: page contents, per-person fields, pagination lifecycle, completion state, budget-truncation warning, enrichment failure, and verification flags. Nothing material is missing for correct invocation or interpretation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3, but the description adds genuine meaning beyond the schema: it explains the cursor-chaining contract (feed the returned next_cursor back as cursor) and that the page contains people found 'since then', which is not stated in the schema's cursor description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb and resource: it returns the status, progress, and cost of ONE People Search task, plus a page of the people found. Scoping to a single task implicitly separates it from people-search-tasks (list) and people-search (start), and the cursor-based polling contract further distinguishes it from any sibling that only kicks off or cancels a search.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives clear operating context: 'Free', call it while the search runs, pass the returned next_cursor as cursor to get only newly found people, and the termination condition (done true + has_more false). It stops short of naming an alternative tool or an exclusion (e.g., when to prefer people-search-control for canceling), so it is clear context without explicit routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
people-search-tasksList People Search TasksARead-onlyInspect
Your People Search tasks, newest first, with status, counts, cost, why each ended search stopped (completion_reason, coverage_limited), and the metadata labels set on people-search. Free. Use it to find a task_id (filter by metadata to find the searches of one campaign), or to see which searches are still queued, running, or paused: a new search is refused while too many are active.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Tasks per page (1-100, API default 20). | |
| cursor | No | next_cursor from the previous page. Keep the same metadata filter when you page. | |
| status | No | Only tasks in these statuses, example: ['running', 'paused']. | |
| metadata | No | Only tasks whose metadata has all of these key/value pairs (exact match, up to 3), example: {"campaign": "q4-outbound"}. | |
| platform | No | Only tasks on this platform: 'x', 'youtube', 'linkedin', or 'tiktok'. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, non-destructive, open-world. The description adds context annotations cannot carry: the call is free, results are newest-first, and terminal searches expose a stop reason (completion_reason, coverage_limited). It does not discuss pagination limits or rate behavior beyond the free note, so not a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads identity and ordering before the return-field list and the usage sentence; every clause carries information. The dense parenthetical field enumeration is justified because there is no output schema, though it makes the sentence long.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description steps in to name the returned fields (status, counts, cost, completion_reason, coverage_limited, metadata labels), and the schema fully covers the five filters and pagination. Coverage is strong; only the exact shape of counts/cost is left implicit.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description goes further by explaining the intent behind the metadata filter — using it to isolate one campaign's searches — which is more than the schema's mechanical 'exact match, up to 3' wording. It does not touch limit, cursor, or platform.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('People Search tasks'), scoped to the caller ('Your') and ordered ('newest first'), and enumerates what each task carries. It is clearly distinguishable from siblings like people-search-status or people-search-control.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives two concrete use cases: retrieving a task_id (with the metadata-filter trick for one campaign's searches) and inspecting queued/running/paused work. It also explains why that second case matters — new searches are refused while too many are active. No explicit alternatives or when-not-to-use, so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
searchSearchARead-onlyInspect
Search the public web and return titles and links. Use fetch with a result URL to read the page.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Search query. |
Output Schema
| Name | Required | Description |
|---|---|---|
| results | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, and destructiveHint=false, so the safety profile is covered. The description adds genuinely non-redundant behavior: results are only titles and links (not page content), which is why a separate fetch is needed. No rate-limit or authentication context is given.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, zero filler, and the core capability is front-loaded ahead of the follow-up instruction. Every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be restated; the description still helpfully notes the titles-and-links shape. For a single-parameter search tool this is nearly complete, missing only sibling differentiation among the many search tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There is a single 'query' parameter with 100% schema description coverage, so the schema already documents it. The description adds no syntax, format, or query-construction guidance beyond the schema, making the baseline 3 correct.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource (search the public web) and even the return shape (titles and links), so the agent knows exactly what it produces. It does not distinguish itself from competing siblings like web-search, ai-search, or x-search, which is the only gap.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly routes the follow-up step: 'Use fetch with a result URL to read the page,' naming the alternative tool and the condition that selects it. It gives no guidance on when to prefer this over the other search siblings (web-search, ai-search), so it is clear but incomplete.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
web-crawlCrawl Web Page (Legacy)ARead-onlyInspect
Crawl a public URL and return its content as plain text or HTML on the legacy Desearch /web/crawl route. The SDK marks webCrawl deprecated in favor of extract; this tool stays for parity with that route. Prefer extract for new integrations. API docs: https://www.desearch.ai/docs/guide/apis/extract-api
| Name | Required | Description | Default |
|---|---|---|---|
| js | No | Render JavaScript before reading the page. | |
| url | Yes | Public URL to read, example: 'https://desearch.ai' | |
| wait | No | Post-load wait in milliseconds when JavaScript rendering is enabled. | |
| format | No | Content format to return: 'html' or 'text'. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=true, and destructiveHint=false, so the safety profile is covered. The description adds useful legacy-route and deprecation context beyond annotations, but does not detail runtime behaviors like rate limits or JS-rendering caveats that a crawl tool might have.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core action and legacy context, then deprecation guidance, then the docs link. It is slightly redundant between the deprecation sentence and the 'Prefer extract' sentence, but every sentence closely relates to correct tool selection.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With a fully documented schema, safety annotations, and no output schema, the description supplies the key missing context: deprecation status and the preferred alternative. It is nearly complete, lacking only optional operational caveats for a legacy web-crawling route.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents url, js, wait, and format with examples and enums. The description only mentions the return format generally, adding no parameter-level meaning beyond what the schema provides. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb (Crawl), resource (public URL), and output (plain text or HTML) and explicitly names the sibling alternative (extract). An agent can distinguish this legacy tool from extract and other search/fetch tools without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly says the SDK marks webCrawl deprecated in favor of extract and advises 'Prefer extract for new integrations,' while noting this tool exists for legacy route parity. This gives clear when-to-use and when-not-to-use guidance with a named alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
web-links-searchWeb Links SearchBRead-onlyInspect
Search the web for links using Desearch. Only the web source is accepted.
| Name | Required | Description | Default |
|---|---|---|---|
| count | No | Results to return per source. Min 10. Max 200. | |
| tools | No | Sources to search. Only 'web' is accepted; other ids are rejected before the API call. 'Web Search' is accepted and rewritten to 'web'. Defaults to ['web']. | |
| prompt | Yes | Search query prompt, example: 'open source browser automation tools' |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=true, and destructiveHint=false, so the safety profile is covered. The description adds the non-obvious behavioral fact that non-'web' source ids are rejected, but says nothing about result format, pagination, or latency/rate behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with the tool's action front-loaded and the source restriction immediately following. No filler beyond the minor branding mention of 'Desearch'.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only search tool with rich annotations and a fully documented schema, this is adequate but thin. With no output schema, the description could have sketched what a result looks like, and it offers no context on how it differs from the many sibling search tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with the schema documenting count bounds, the tools enum/default, and a prompt example, so the baseline is 3. The description adds nothing beyond the schema for parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('search the web for links') plus the backend (Desearch), which is enough to identify it as a general web link search. It does not explicitly name the sibling it contrasts with (e.g. x-links-search or web-search), so an agent must infer differentiation from the namespace.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The constraint 'Only the web source is accepted' implicitly tells the agent not to use this for X/Twitter link search, which is useful negative guidance. However, it never states when to prefer this over siblings like web-search, ai-search, or web-crawl, so selection guidance is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
web-searchWeb SearchBRead-onlyInspect
SERP-style web search using Desearch. Returns ranked titles, links, and snippets.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Search query, example: 'latest news on AI' | |
| start | No | How many results to skip for pagination (0, 10, 20, ...). Omit for the first page. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=true, and destructiveHint=false, so the safety and open-world profile is covered structurally. The description adds useful return-shape context ('ranked titles, links, and snippets') that annotations do not convey, but says nothing about rate limits, result caps, or pagination behavior beyond what the schema hints.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two compact sentences, zero filler, with the core purpose front-loaded before the return-format detail. Nothing is padded or redundant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter, annotated, read-only search tool the description covers what it does and what it returns; the absence of an output schema makes the return-shape sentence valuable. It stops short of routing guidance relative to the many search siblings, which is the one real completeness gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and both parameters are documented there, including the pagination semantics of 'start', so the description adds no parameter-level meaning. Baseline 3 is appropriate when the schema carries the full burden.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('SERP-style web search') plus the backend ('Desearch') and the returned artifact (ranked titles, links, snippets). However it never distinguishes itself from siblings like ai-search, web-links-search, or extract, so an agent cannot tell which search entry point to choose without inferring.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance at all. With three closely related siblings (ai-search, web-links-search, x-search) the description gives no condition or exclusion that would route an agent to this tool over an alternative; the only hint is the implicit 'general web query' framing of 'SERP-style'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
x-links-searchX Links SearchBRead-onlyInspect
AI search for X (Twitter) post links using Desearch. Returns links from posts that match the prompt.
| Name | Required | Description | Default |
|---|---|---|---|
| count | No | Results to return. Min 10. Max 200. | |
| prompt | Yes | Search query prompt, example: 'Bittensor subnet updates' |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, and destructiveHint=false, so safety is covered. The description adds that results come from an AI/Desearch pipeline and are links only, which is useful context, but says nothing about rate limits, result freshness, or what happens when no matches are found.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, purpose front-loaded, with no filler. The second sentence is mildly redundant with the first ('search for post links' vs 'returns links from posts') but does clarify the return shape, which matters because there is no output schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description usefully states that links are returned, and annotations carry the safety profile. However, for a tool sitting among five-plus overlapping search siblings, it lacks the differentiating detail an agent needs to route to it confidently.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% with only two parameters, and the schema already documents prompt and count (including min/max bounds). The description adds no syntax, format, or prompt-engineering guidance beyond what the schema provides, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb (search) plus resource (X/Twitter post links) and the backing engine (Desearch), so an agent knows this returns links rather than posts. It implicitly separates itself from web-links-search by scoping to X, but never names or contrasts the many sibling search tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no when-to-use guidance and no alternatives. Siblings like x-search, ai-search, and web-links-search overlap heavily, and nothing here explains which one an agent should pick for link discovery versus post retrieval.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
x-post-by-idGet X Post by IDBRead-onlyInspect
Fetch a single X (Twitter) post by its ID.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The unique ID of the post, example: '1234567890' |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=true, so the safety profile is covered. The description adds nothing beyond that: no auth requirements, no rate-limit note, no behavior for missing/invalid IDs or protected posts.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One front-loaded sentence with zero filler; the resource and lookup key come first. Nothing is wasted and nothing is buried.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter read tool with no output schema and full annotation coverage, the definition is essentially sufficient to invoke correctly. It could go further on error/missing-post behavior, but nothing essential is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single 'id' parameter is documented with an example in the schema itself. The description adds no format or constraint detail beyond what the schema already provides, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Fetch a single X post') plus the lookup key ('by its ID'), which implicitly separates it from x-posts-by-urls and x-posts-by-user. It never names a sibling or explicit boundary, so it falls short of the 5 tier.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance at all. With a crowded sibling set (x-posts-by-urls, x-posts-by-user, x-search, x-post-replies), the description should say when ID lookup is preferable, but it leaves the agent to infer everything.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
x-post-repliesGet X Post RepliesBRead-onlyInspect
Fetch replies to an X (Twitter) post, with an optional keyword query.
| Name | Required | Description | Default |
|---|---|---|---|
| count | No | Number of posts to retrieve (1-100). | |
| query | No | Advanced search query to filter replies. | |
| post_id | Yes | The ID of the post to fetch replies for. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=true, so the safety and reach profile is covered. The description adds essentially nothing beyond that: no pagination behavior, no ordering, no rate-limit or result-cap context, and no note that count caps at 100.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with zero filler. The core action leads and the optional modifier trails it. Nothing can be trimmed without losing information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read tool with no output schema and full schema coverage, the description is barely sufficient. It leaves open the practical questions an agent faces: how many replies come back by default, whether results are paginated or ordered, and how the keyword query interacts with the fetched set.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents post_id, count (1-100), and the advanced query string. The description only restates the query parameter and adds no format, syntax, or default value detail, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Fetch replies to an X (Twitter) post.' That is unambiguous on its own. However, it does not distinguish this tool from close siblings such as x-user-replies (replies authored by a user) or x-search, so an agent must infer the boundary.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no prerequisites, and no mention of alternatives. The phrase 'with an optional keyword query' hints at filtering but never says when keyword filtering is preferable to a plain fetch or to using x-search for reply discovery.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
x-post-retweetersList X Post RetweetersARead-onlyInspect
List users who retweeted an X (Twitter) post. Pass cursor to page through more users.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The ID of the post to get retweeters for. | |
| cursor | No | Cursor for pagination from a previous response. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds the pagination/cursor behavior, but says nothing about auth requirements, rate limits, or result completeness for a public X endpoint.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, zero filler, and the core action is front-loaded ahead of the paging hint.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
A simple two-parameter read tool; annotations carry the safety profile and the schema documents both params. There is no output schema, so the return shape is not explained, but nothing essential for a correct call is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and both parameters are fully documented in the schema, so the baseline is 3. The description restates cursor's purpose (paging) without adding syntax or format detail beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'List users who retweeted an X (Twitter) post.' The resource is precise enough to separate it from siblings like x-post-replies or x-posts-by-user, though no sibling is named explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Pass cursor to page through more users' gives operational guidance for the pagination parameter, but there is no statement of when to use this tool versus the other X-post tools (e.g., replies, by-id). Usage is implied by the resource name rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
x-posts-by-urlsGet X Posts by URLsBRead-onlyInspect
Fetch full X (Twitter) posts for a list of post URLs.
| Name | Required | Description | Default |
|---|---|---|---|
| urls | Yes | Post URLs to fetch, example: ['https://x.com/user/status/123'] |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=true, and destructiveHint=false, so the safety profile is covered. The description adds essentially nothing beyond that — no batch size limits, rate-limit notes, behavior on invalid or deleted URLs, or partial-failure handling, which matter for a batch fetch against an open-world source.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler; the verb and resource come first. Nothing in the sentence is redundant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter read tool with full schema coverage and safety annotations, the description is minimally sufficient. It is missing the operational context that would make a batch external fetch fully usable, such as batch limits or per-URL failure behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and there is only one parameter, so the schema carries the semantics (array of URL strings, minItems 1, with an example). The description only restates 'a list of post URLs' without adding format constraints or limits, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear verb ('Fetch') and resource ('full X (Twitter) posts') scoped to a list of post URLs, which is specific enough to understand the operation. However, it does not distinguish itself from the closely related sibling x-post-by-id, which an agent might reasonably choose for the same intent.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this bulk-by-URL tool versus x-post-by-id, x-user-posts, or x-search. The description also omits any prerequisites or conditions such as URL validity requirements or what happens with mixed/broken URLs.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
x-posts-by-userSearch X Posts by UserBRead-onlyInspect
Search X (Twitter) posts by a specific user, with an optional keyword query.
| Name | Required | Description | Default |
|---|---|---|---|
| user | Yes | User to search for, example: 'elonmusk' | |
| count | No | Number of posts to retrieve (1-100). | |
| query | No | Advanced search query to filter this user's posts. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=true, and destructiveHint=false, so the safety profile is covered. The description adds nothing behavioral beyond that — no mention of rate limits, pagination, result ordering, or what an empty result means — making it essentially redundant with the structured fields.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single tight sentence with no filler, and the core action is front-loaded. It is arguably too terse for a tool with a confusable sibling, but there is no wasted language.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 3-parameter read tool with full schema coverage and annotations, the description is minimally sufficient to call the tool correctly. It falls short on sibling disambiguation (x-user-posts) and any behavioral context about result volume or ordering.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all three parameters (user, count, query) are documented in the schema itself. The description restates the optional keyword query but adds no syntax, format, or default details beyond the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource (search X posts) scoped to a user, plus an optional keyword filter. It is clear what the tool does, but it offers no differentiation from the very similar sibling x-user-posts, which an agent could easily confuse it with.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'with an optional keyword query' implies one usage pattern (keyword-filtered user timelines), but there is no explicit when-to-use guidance, no prerequisites, and no naming of alternatives such as x-search or x-user-posts.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
x-searchX SearchARead-onlyInspect
Search X (Twitter) using Desearch AI. Optional filters narrow by user, date, language, verification, media, and engagement. Sort stays Top.
| Name | Required | Description | Default |
|---|---|---|---|
| lang | No | Language code, example: 'en', 'es', 'fr' | |
| user | No | User to search for, example: 'elonmusk' | |
| count | No | Number of search results to return (default: 20), max is 100 | |
| query | Yes | Twitter advanced search query, example: 'from:elonmusk since:2023-01-01 min_replies:10' | |
| end_date | No | End date in UTC (YYYY-MM-DD). Use with start_date. | |
| is_image | No | Include only posts with images. | |
| is_quote | No | Include only posts that are quotes. | |
| is_video | No | Include only posts with video. | |
| verified | No | Filter for verified users. | |
| min_likes | No | Minimum number of likes. | |
| start_date | No | Start date in UTC (YYYY-MM-DD). Use with end_date. | |
| min_replies | No | Minimum number of replies. | |
| min_retweets | No | Minimum number of retweets. | |
| blue_verified | No | Filter for blue-checkmark verified users. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover safety (readOnlyHint, destructiveHint=false, openWorldHint), so the bar is lower. The description still adds real behavioral context: the Desearch AI backend and the constraint that "Sort stays Top" (sorting cannot be changed), which the agent cannot learn from the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the core action and followed by the filter/sort caveats. Every clause carries information; nothing is redundant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 14-parameter search tool with no output schema, the description covers the filter set and the fixed sort behavior, and annotations carry the safety profile. It omits return shape and result ordering details beyond "Top", but nothing essential to invoking it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description maps its filter categories onto the parameters but adds no syntax, defaults, or interaction rules (e.g. start_date/end_date pairing, count max) beyond what the schema already documents.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a clear verb and resource ("Search X (Twitter)") plus the backend it uses, which is more specific than the bare name. It does not, however, distinguish itself from siblings like `search`, `x-user-posts`, or `x-links-search`, which an agent could plausibly reach for instead.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description signals that filters are optional and enumerates the filter families (user, date, language, verification, media, engagement), which implies usage. It gives no explicit when-to-use or when-not guidance and names no alternative among the many search siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
x-trendsGet X TrendsBRead-onlyInspect
Retrieve trending topics on X (Twitter) for a location by its WOEID using Desearch.
| Name | Required | Description | Default |
|---|---|---|---|
| count | No | Number of trends to return (30-100). | |
| woeid | Yes | WOEID of the location, example: 23424977 for the United States. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=true, so the safety and scope profile is covered. The description adds only that results come from Desearch, and says nothing about rate limits, freshness of trends, or failure modes.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One sentence with zero filler, front-loading the action and resource before the input mechanism. Nothing is redundant or padded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only two-parameter tool with no output schema and full schema coverage, the description is nearly complete. It could note what a trend entry looks like or whether count defaults, but nothing critical to correct invocation is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%: both woeid and count are documented in the schema with ranges and an example. The description adds no syntax or format detail beyond repeating the WOEID requirement, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (retrieve) and resource (trending topics on X/Twitter), plus the scoping mechanism (location via WOEID). It does not explicitly name a sibling, but no sibling covers trends, so it is implicitly distinct.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to use this tool versus alternatives, no prerequisites, and no exclusions; the only added detail is the data source (Desearch). An agent must infer usage entirely from the name and the WOEID requirement.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
x-user-postsGet X User TimelineCRead-onlyInspect
Retrieve a user's X (Twitter) timeline posts by username. Pass cursor to page through more posts.
| Name | Required | Description | Default |
|---|---|---|---|
| cursor | No | Cursor for pagination from a previous response. | |
| username | Yes | Username to fetch posts for, example: 'elonmusk' |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=true, and destructiveHint=false, so the safety profile is covered without the description. The description adds nothing beyond that — no notes on rate limits, auth requirements, result ordering, or timeline scope (e.g., replies/retweets included) — so its behavioral contribution is minimal.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the core action and free of filler. The second sentence is somewhat redundant with the schema's cursor description, so it doesn't fully earn its place, but overall sizing is appropriate.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter read tool with full schema coverage and a complete read-only annotation set, the description is adequate. It omits what the returned post objects contain (no output schema exists) and, more importantly, how this differs from the sibling x-posts-by-user.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both parameters (username, cursor) are already documented in the schema, giving a baseline of 3. The description's cursor note restates pagination behavior rather than adding format or semantics beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Retrieve a user's X (Twitter) timeline posts by username'), which is clearer than a bare name restatement. However, it offers no differentiation from the near-identical sibling x-posts-by-user (or x-search/x-user-replies), leaving the agent unable to tell which to pick without opening schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use or when-not-to-use guidance and no named alternative. The only operational note, 'Pass cursor to page through more posts,' is parameter mechanics rather than selection guidance, so the agent gets no help choosing between this and x-posts-by-user.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
x-user-repliesGet X User RepliesBRead-onlyInspect
Fetch posts and replies by an X (Twitter) user, with an optional keyword query.
| Name | Required | Description | Default |
|---|---|---|---|
| user | Yes | Username of the user to search for, example: 'elonmusk' | |
| count | No | Number of posts to retrieve (1-100). | |
| query | No | Advanced search query to filter this user's posts and replies. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=true, so the safety profile is covered. The description adds the useful behavioral detail that both posts and replies are returned, but says nothing about pagination, rate limits, or result ordering.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler; the primary action and the optional qualifier are both stated immediately.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only, 3-parameter tool with no output schema this is minimally adequate, but it leaves the overlap with x-user-posts and x-post-replies unresolved and gives no hint about result volume or pagination behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all three parameters are already documented. The description only restates the optional keyword query, adding no format, syntax, or default semantics beyond the schema, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Fetch) and resource (posts and replies by an X user), so the agent knows the operation. However, it does not differentiate itself from close siblings like x-user-posts, x-post-replies, or x-search, and the phrase 'posts and replies' blurs the boundary with x-user-posts.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance is given. The mention of an 'optional keyword query' implies a filtered-search use case, but the description never says when to prefer this tool over x-user-posts, x-post-replies, or x-search.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
1 tool update
- Changed
x-search9 fields changed- removed
Input schema / properties / min_likes / $refRemoved value: -"#/properties/min_retweets" - added
Input schema / properties / min_likes / minimumAdded value: +0 - added
Input schema / properties / min_likes / typeAdded value: +"integer" - removed
Input schema / properties / min_replies / $refRemoved value: -"#/properties/min_retweets" - added
Input schema / properties / min_replies / minimumAdded value: +0 - added
Input schema / properties / min_replies / typeAdded value: +"integer" - removed
Input schema / properties / min_retweets / anyOfRemoved value: -[ - { - "minimum": 0, - "type": "integer" - }, - { - "type": "string" - } -] - added
Input schema / properties / min_retweets / minimumAdded value: +0 - added
Input schema / properties / min_retweets / typeAdded value: +"integer"
2 tool updates
- Changed
people-search1 field changed- added
Input schema / properties / metadataAdded value: +{ + "additionalProperties": { + "maxLength": 200, + "type": "string" + }, + "description": "Your own labels for this search, example: {\"campaign\": \"q4-outbound\"}. Up to 10 keys; keys are 1-40 characters of a-z, 0-9, '_', '.', '-'; values are strings of up to 200 characters. Returned on the task; filter people-search-tasks by it. The search does not use it.", + "type": "object" +}
- Changed
people-search-tasks2 fields changed- changed
Input schema / properties / cursor / descriptionPrevious value: -"next_cursor from the previous page."New value: +"next_cursor from the previous page. Keep the same metadata filter when you page." - added
Input schema / properties / metadataAdded value: +{ + "additionalProperties": { + "maxLength": 200, + "type": "string" + }, + "description": "Only tasks whose metadata has all of these key/value pairs (exact match, up to 3), example: {\"campaign\": \"q4-outbound\"}.", + "type": "object" +}
2 tool updates
- Added
fetch - Added
search
5 tool updates
- Added
people-profiles - Added
people-search - Added
people-search-control - Added
people-search-status - Added
people-search-tasks
1 tool update
- Changed
ai-search2 fields changed- changed
Input schema / properties / tools / descriptionPrevious value: -"Source ids sent to POST /desearch/ai/search. Use short ids such as 'web' and 'twitter'. Legacy labels such as 'Web Search' are accepted and rewritten to those ids. Example: ['web', 'twitter']."New value: +"Source ids sent to POST /desearch/ai/search. Short ids: 'web', 'twitter', 'arxiv', 'wikipedia', 'hackernews', 'reddit'. Legacy labels such as 'Web Search', 'ArXiv Search', 'Wikipedia Search', 'Hacker News Search', and 'Reddit Search' are rewritten to those ids. Example: ['web', 'twitter']." - changed
Input schema / properties / tools / items / enumPrevious value: -[ - "web", - "twitter", - "arxiv", - "wikipedia", - "youtube", - "hackernews", - "reddit" -]New value: +[ + "web", + "twitter", + "arxiv", + "wikipedia", + "hackernews", + "reddit" +]
1 tool update
- Changed
ai-search1 field changed- changed
Input schema / properties / model / descriptionPrevious value: -"Model to use for the search, example: 'NOVA', Nova is 10s model, Orbit is 30s model"New value: +"Model to use for the search: NOVA (default) or ORBIT."
15 tool updates
- First observed
ai-search - First observed
extract - First observed
web-crawl - First observed
web-links-search - First observed
web-search - First observed
x-links-search - First observed
x-post-by-id - First observed
x-post-replies - First observed
x-post-retweeters - First observed
x-posts-by-urls - First observed
x-posts-by-user - First observed
x-search - First observed
x-trends - First observed
x-user-posts - First observed
x-user-replies
Related MCP Connectors
X (Twitter) search, profiles and trends, YouTube search, video stats and comments, TikTok comments.
Web search and page reading for AI agents, including JSON APIs, RSS feeds and YouTube.
Fetch pages as markdown, search web and news, extract structured data. For AI agents.
LLM-ready web search + instant answers + URL-to-clean-text fetch for agents and RAG.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceProvides web search and content extraction for AI agents.MIT
- AlicenseAqualityBmaintenanceProvides AI-driven web search, page fetching, and site mapping with real xAI citations, enabling LLM clients to access up-to-date external information.134MIT
- AlicenseAqualityAmaintenanceWeb search (embedded SearXNG), content extraction, and library docs indexing with hybrid search. No API keys required.6557 PyPI19Apache 2.0
- AlicenseNot gradedqualityAmaintenanceEnables AI agents to perform live web searches with ranked results and extracted page passages, plus clean markdown extraction of any URL.MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.