Desearch MCP Server
OfficialServer Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| DESEARCH_API_KEY | Yes | Your Desearch API key from console.desearch.ai/api-keys |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
| prompts | {} |
| resources | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| ai-searchC | AI search and analysis on web using Desearch AI |
| x-searchA | Search X (Twitter) using Desearch AI. Optional filters narrow by user, date, language, verification, media, and engagement. Sort stays Top. |
| web-searchB | SERP-style web search using Desearch. Returns ranked titles, links, and snippets. |
| web-links-searchB | Search the web for links using Desearch. Only the web source is accepted. |
| x-links-searchB | AI search for X (Twitter) post links using Desearch. Returns links from posts that match the prompt. |
| x-posts-by-urlsB | Fetch full X (Twitter) posts for a list of post URLs. |
| x-post-by-idB | Fetch a single X (Twitter) post by its ID. |
| x-posts-by-userB | Search X (Twitter) posts by a specific user, with an optional keyword query. |
| x-post-retweetersA | List users who retweeted an X (Twitter) post. Pass cursor to page through more users. |
| x-user-postsC | Retrieve a user's X (Twitter) timeline posts by username. Pass cursor to page through more posts. |
| x-user-repliesB | Fetch posts and replies by an X (Twitter) user, with an optional keyword query. |
| x-post-repliesB | Fetch replies to an X (Twitter) post, with an optional keyword query. |
| extractA | 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 |
| web-crawlA | 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 |
| x-trendsB | Retrieve trending topics on X (Twitter) for a location by its WOEID using Desearch. |
| searchA | Search the public web and return titles and links. Use fetch with a result URL to read the page. |
| fetchA | Read a public page as text. Pass a URL returned by search. |
| people-searchA | 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. |
| people-search-statusA | 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. |
| people-search-controlA | 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. |
| people-search-tasksA | 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. |
| people-profilesA | 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. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 22 tools
The set contains many overlapping search and fetch tools: search, web-search, web-links-search, ai-search, x-search, x-links-search, fetch, extract, and web-crawl. Descriptions distinguish some cases, but an agent can easily choose the wrong web-search or page-reading tool.
All names use kebab-case, which is good, but the patterns are mixed: x-post-by-id, x-posts-by-urls, x-user-posts, web-search, and bare search/fetch/extract do not follow one consistent prefix or verb_noun convention. Readable but not predictable.
22 tools is heavy for this scope, largely because multiple search and extraction variants duplicate coverage. The People Search job lifecycle tools are justified, but the overall count feels over-expanded.
Coverage is broad across web search, X/Twitter posts, extraction, and the People Search lifecycle including status, control, tasks, and profiles. Minor gaps remain, such as no direct X user-profile lookup, but core workflows are covered.