Desearch

AI search, X search, web search, page extraction, and X trends.

Should I use this

Quality & Safety

A
Description quality
92%
Schema completeness
100%
Naming quality
52%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Findings (14)

  • LOWTool 'ai-search' doesn't follow camelCase/snake_casein ai-search
  • LOWTool 'x-search' doesn't follow camelCase/snake_casein x-search
  • LOWTool 'web-search' doesn't follow camelCase/snake_casein web-search
  • LOWTool 'web-links-search' doesn't follow camelCase/snake_casein web-links-search
  • LOWTool 'x-links-search' doesn't follow camelCase/snake_casein x-links-search
  • LOWTool 'x-posts-by-urls' doesn't follow camelCase/snake_casein x-posts-by-urls
  • LOWTool 'x-post-by-id' doesn't follow camelCase/snake_casein x-post-by-id
  • LOWTool 'x-posts-by-user' doesn't follow camelCase/snake_casein x-posts-by-user
  • LOWTool 'x-post-retweeters' doesn't follow camelCase/snake_casein x-post-retweeters
  • LOWTool 'x-user-posts' doesn't follow camelCase/snake_casein x-user-posts

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~2,967Tokens (tool definitions)
~1.6 KBTypical response size
Significant attention impact (2.32% of 128k context)

This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.

Install

One-Click Install

Add this to your `claude_desktop_config.json` file:

{
  "mcpServers": {
    "mcp-desearch": {
      "command": "npx",
      "args": [
        "desearch-mcp-server"
      ]
    }
  }
}

Runnable packages

npmdesearch-mcp-server0.1.3stdio

Remote endpoints

https://mcp.desearch.ai/mcpstreamable-http

What it can do

Tool inventory

Tools (15)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟢ai-search(prompt, tools, date_filter, start_date, end_date, ...)

AI search and analysis on web using Desearch AI

Input Schema

{
  "type": "object",
  "properties": {
    "prompt": {
      "type": "string",
      "description": "Question, example: 'What is the latest news on AI?'"
    },
    "tools": {
      "type": "array",
      "items": {
        "type": "string",
        "enum": [
          "web",
          "twitter",
          "arxiv",
          "wikipedia",
          "youtube",
          "hackernews",
          "reddit"
        ]
      },
      "default": [
        "web",
        "twitter"
      ],
      "description": "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']."
    },
    "date_filter": {
      "type": "string",
      "enum": [
        "PAST_24_HOURS",
        "PAST_2_DAYS",
        "PAST_WEEK",
        "PAST_2_WEEKS",
        "PAST_MONTH",
        "PAST_2_MONTHS",
        "PAST_YEAR",
        "PAST_2_YEARS"
      ],
      "description": "Deprecated relative window; prefer start_date/end_date. Example: 'PAST_WEEK'"
    },
    "start_date": {
      "type": "string",
      "description": "Start of the date range in UTC (YYYY-MM-DDTHH:MM:SSZ). Use with end_date."
    },
    "end_date": {
      "type": "string",
      "description": "End of the date range in UTC (YYYY-MM-DDTHH:MM:SSZ). Use with start_date."
    },
    "result_type": {
      "type": "string",
      "enum": [
        "ONLY_LINKS",
        "LINKS_WITH_FINAL_SUMMARY"
      ],
      "description": "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."
    },
    "include_domains": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Restrict Web Search results to these domains, example: ['bbc.com', 'reuters.com']"
    },
    "exclude_domains": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Drop Web Search results from these domains, example: ['pinterest.com']"
    },
    "model": {
      "type": "string",
      "enum": [
        "NOVA",
        "ORBIT"
      ],
      "default": "NOVA",
      "description": "Model to use for the search: NOVA (default) or ORBIT."
    }
  },
  "required": [
    "prompt"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢x-search(query, count, user, start_date, end_date, ...)

Search X (Twitter) using Desearch AI. Optional filters narrow by user, date, language, verification, media, and engagement. Sort stays Top.

Input Schema

{
  "type": "object",
  "properties": {
    "query": {
      "type": "string",
      "description": "Twitter advanced search query, example: 'from:elonmusk since:2023-01-01 min_replies:10'"
    },
    "count": {
      "type": "number",
      "default": 20,
      "description": "Number of search results to return (default: 20), max is 100"
    },
    "user": {
      "type": "string",
      "description": "User to search for, example: 'elonmusk'"
    },
    "start_date": {
      "type": "string",
      "description": "Start date in UTC (YYYY-MM-DD). Use with end_date."
    },
    "end_date": {
      "type": "string",
      "description": "End date in UTC (YYYY-MM-DD). Use with start_date."
    },
    "lang": {
      "type": "string",
      "description": "Language code, example: 'en', 'es', 'fr'"
    },
    "verified": {
      "type": "boolean",
      "description": "Filter for verified users."
    },
    "blue_verified": {
      "type": "boolean",
      "description": "Filter for blue-checkmark verified users."
    },
    "is_quote": {
      "type": "boolean",
      "description": "Include only posts that are quotes."
    },
    "is_video": {
      "type": "boolean",
      "description": "Include only posts with video."
    },
    "is_image": {
      "type": "boolean",
      "description": "Include only posts with images."
    },
    "min_retweets": {
      "anyOf": [
        {
          "type": "integer",
          "minimum": 0
        },
        {
          "type": "string"
        }
      ],
      "description": "Minimum number of retweets."
    },
    "min_replies": {
      "$ref": "#/properties/min_retweets",
      "description": "Minimum number of replies."
    },
    "min_likes": {
      "$ref": "#/properties/min_retweets",
      "description": "Minimum number of likes."
    }
  },
  "required": [
    "query"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢web-search(query, start)

SERP-style web search using Desearch. Returns ranked titles, links, and snippets.

Input Schema

{
  "type": "object",
  "properties": {
    "query": {
      "type": "string",
      "description": "Search query, example: 'latest news on AI'"
    },
    "start": {
      "type": "integer",
      "minimum": 0,
      "description": "How many results to skip for pagination (0, 10, 20, ...). Omit for the first page."
    }
  },
  "required": [
    "query"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢web-links-search(prompt, tools, count)

Search the web for links using Desearch. Only the web source is accepted.

Input Schema

{
  "type": "object",
  "properties": {
    "prompt": {
      "type": "string",
      "description": "Search query prompt, example: 'open source browser automation tools'"
    },
    "tools": {
      "type": "array",
      "items": {
        "type": "string",
        "enum": [
          "web"
        ]
      },
      "minItems": 1,
      "default": [
        "web"
      ],
      "description": "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']."
    },
    "count": {
      "type": "integer",
      "minimum": 10,
      "maximum": 200,
      "description": "Results to return per source. Min 10. Max 200."
    }
  },
  "required": [
    "prompt"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢x-links-search(prompt, count)

AI search for X (Twitter) post links using Desearch. Returns links from posts that match the prompt.

Input Schema

{
  "type": "object",
  "properties": {
    "prompt": {
      "type": "string",
      "description": "Search query prompt, example: 'Bittensor subnet updates'"
    },
    "count": {
      "type": "integer",
      "minimum": 10,
      "maximum": 200,
      "description": "Results to return. Min 10. Max 200."
    }
  },
  "required": [
    "prompt"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢x-posts-by-urls(urls)

Fetch full X (Twitter) posts for a list of post URLs.

Input Schema

{
  "type": "object",
  "properties": {
    "urls": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "minItems": 1,
      "description": "Post URLs to fetch, example: ['https://x.com/user/status/123']"
    }
  },
  "required": [
    "urls"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢x-post-by-id(id)

Fetch a single X (Twitter) post by its ID.

Input Schema

{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "description": "The unique ID of the post, example: '1234567890'"
    }
  },
  "required": [
    "id"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢x-posts-by-user(user, query, count)

Search X (Twitter) posts by a specific user, with an optional keyword query.

Input Schema

{
  "type": "object",
  "properties": {
    "user": {
      "type": "string",
      "description": "User to search for, example: 'elonmusk'"
    },
    "query": {
      "type": "string",
      "description": "Advanced search query to filter this user's posts."
    },
    "count": {
      "type": "integer",
      "minimum": 1,
      "maximum": 100,
      "description": "Number of posts to retrieve (1-100)."
    }
  },
  "required": [
    "user"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢x-post-retweeters(id, cursor)

List users who retweeted an X (Twitter) post. Pass cursor to page through more users.

Input Schema

{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "description": "The ID of the post to get retweeters for."
    },
    "cursor": {
      "type": "string",
      "description": "Cursor for pagination from a previous response."
    }
  },
  "required": [
    "id"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢x-user-posts(username, cursor)

Retrieve a user's X (Twitter) timeline posts by username. Pass cursor to page through more posts.

Input Schema

{
  "type": "object",
  "properties": {
    "username": {
      "type": "string",
      "description": "Username to fetch posts for, example: 'elonmusk'"
    },
    "cursor": {
      "type": "string",
      "description": "Cursor for pagination from a previous response."
    }
  },
  "required": [
    "username"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢x-user-replies(user, count, query)

Fetch posts and replies by an X (Twitter) user, with an optional keyword query.

Input Schema

{
  "type": "object",
  "properties": {
    "user": {
      "type": "string",
      "description": "Username of the user to search for, example: 'elonmusk'"
    },
    "count": {
      "type": "integer",
      "minimum": 1,
      "maximum": 100,
      "description": "Number of posts to retrieve (1-100)."
    },
    "query": {
      "type": "string",
      "description": "Advanced search query to filter this user's posts and replies."
    }
  },
  "required": [
    "user"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢x-post-replies(post_id, count, query)

Fetch replies to an X (Twitter) post, with an optional keyword query.

Input Schema

{
  "type": "object",
  "properties": {
    "post_id": {
      "type": "string",
      "description": "The ID of the post to fetch replies for."
    },
    "count": {
      "type": "integer",
      "minimum": 1,
      "maximum": 100,
      "description": "Number of posts to retrieve (1-100)."
    },
    "query": {
      "type": "string",
      "description": "Advanced search query to filter replies."
    }
  },
  "required": [
    "post_id"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢extract(url, format, js, wait)

Extract a public URL and return its content as plain text or HTML using Desearch. Preferred over web-crawl for new integrations.

Input Schema

{
  "type": "object",
  "properties": {
    "url": {
      "type": "string",
      "description": "Public URL to read, example: 'https://desearch.ai'"
    },
    "format": {
      "type": "string",
      "enum": [
        "html",
        "text"
      ],
      "description": "Content format to return: 'html' or 'text'."
    },
    "js": {
      "type": "boolean",
      "description": "Render JavaScript before reading the page."
    },
    "wait": {
      "type": "number",
      "description": "Post-load wait in milliseconds when JavaScript rendering is enabled."
    }
  },
  "required": [
    "url"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢web-crawl(url, format, js, wait)

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.

Input Schema

{
  "type": "object",
  "properties": {
    "url": {
      "type": "string",
      "description": "Public URL to read, example: 'https://desearch.ai'"
    },
    "format": {
      "type": "string",
      "enum": [
        "html",
        "text"
      ],
      "description": "Content format to return: 'html' or 'text'."
    },
    "js": {
      "type": "boolean",
      "description": "Render JavaScript before reading the page."
    },
    "wait": {
      "type": "number",
      "description": "Post-load wait in milliseconds when JavaScript rendering is enabled."
    }
  },
  "required": [
    "url"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢x-trends(woeid, count)

Retrieve trending topics on X (Twitter) for a location by its WOEID using Desearch.

Input Schema

{
  "type": "object",
  "properties": {
    "woeid": {
      "type": "integer",
      "description": "WOEID of the location, example: 23424977 for the United States."
    },
    "count": {
      "type": "integer",
      "minimum": 30,
      "maximum": 100,
      "description": "Number of trends to return (30-100)."
    }
  },
  "required": [
    "woeid"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded15 tools