anysearch

Installation
SKILL.md

Overview

AnySearch is a unified search service supporting direct HTTP API calls without additional MCP service installation.

Calling Method

Endpoint: POST https://api.anysearch.com/mcp Authentication: Authorization: Bearer <!-- ANYSEARCH_API_KEY --> (Optional; anonymous access available with lower rate limits)

Request Format (JSON-RPC):

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "<tool_name>",
    "arguments": {}
  }
}

Examples:

# General Search
curl -s -X POST "https://api.anysearch.com/mcp" \
  -H "Authorization: Bearer <!-- ANYSEARCH_API_KEY -->" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"search","arguments":{"query":"quantum computing"}}}'

# Vertical Search (Call list_domains first to get sub_domain and query_format)
curl -s -X POST "https://api.anysearch.com/mcp" \
  -H "Authorization: Bearer <!-- ANYSEARCH_API_KEY -->" \
  -d '{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"search","arguments":{"query":"Stock:AAPL","domain":"finance","sub_domain":"finance.us_stock"}}}'

# Batch Search
curl -s -X POST "https://api.anysearch.com/mcp" \
  -H "Authorization: Bearer <!-- ANYSEARCH_API_KEY -->" \
  -d '{"jsonrpc":"2.0","id":3,"method":"tools/call","params":{"name":"batch_search","arguments":{"queries":[{"query":"Stock:AAPL","domain":"finance","sub_domain":"finance.us_stock"},{"query":"AAPL earnings","domain":"finance","sub_domain":"finance.us_stock"}]}}}'

API Key Configuration

Anonymous (No Key) With Key
Availability
Rate Limit Low (anonymous quota) High
Exceeded Handling See Rate Limit Flow below N/A

Get Key: https://anysearch.com/settings/api-keys

⚠️ IMPORTANT — API Key Persistence: The API key is stored as an inline placeholder <!-- ANYSEARCH_API_KEY --> in this SKILL.md file. When a new key is obtained (via auto-registration or user provision), you MUST immediately replace ALL occurrences of the placeholder <!-- ANYSEARCH_API_KEY --> in this SKILL.md file with the actual api_key value so it survives session restarts.

Replacement procedure:

  1. Read the current content of this SKILL.md file.
  2. Replace every instance of <!-- ANYSEARCH_API_KEY --> with the new api_key value.
  3. Write the updated content back to this SKILL.md file.

Example: if the returned api_key is abc123, then every occurrence of Authorization: Bearer <!-- ANYSEARCH_API_KEY --> becomes Authorization: Bearer abc123, and the placeholder <!-- ANYSEARCH_API_KEY --> no longer appears in the file.

Rate Limit Flow

When an API call returns a rate limit / quota exceeded error, follow this decision tree:

API call fails with rate limit error
  ├─ Response contains auto_registered field with api_key?
  │    → YES: Extract the api_key → Replace <!-- ANYSEARCH_API_KEY --> in this file → Retry the call
  └─ NO key returned (anonymous quota exhausted, no auto-registration available)
       → Prompt the user with the following message:

User Prompt Template (use the user's language):

🔑 AnySearch anonymous quota has been exhausted. An API Key is required to continue.

Please obtain a Key via one of the following:

  1. Self-service (recommended): Visit https://anysearch.com/settings/api-keys to sign up and create an API Key, then send it to me.
  2. Provide directly: If you already have an AnySearch API Key, simply send it to me.

Once I receive the Key, I'll save it automatically and resume searching.


Tool Details

search — Search

Two Modes:

  • General Search: Omit domain / sub_domain. Used for open-ended queries.
  • Vertical Search: MUST call list_domains first. Construct query per returned query_format and pass both domain and sub_domain.

Parameters:

Parameter Type Required Description
query string Single-intent query. Vertical search must strictly follow list_domains format
domain string - Vertical domain (see list below); omit for general search
sub_domain string - Sub-domain routing key (e.g., finance.us_stock); required for vertical search
sub_domain_params object - Additional sub-domain params (see params_schema from list_domains)
content_types string[] - Content filter: web news code doc academic data image video audio
zone string - Region: cn / intl. Required when list_domains marks CN
max_results number - Number of results (Default 10, Max 100)
freshness string - Time filter: day week month year

Available Domains: code tech fashion travel home ecommerce gaming film music finance academic legal business ip security education health religion geo environment energy ugc

Response Format: Markdown text (Title + Link + Snippet).


list_domains — Query Domain Directory

MUST call before vertical search to get sub_domain and query_format. Cache results per domain within a session; do not call repeatedly.

Parameters:

Parameter Type Required Description
domain string Choose one Single domain query
domains string[] Choose one Batch query (Max 5; takes precedence over domain)

Response Format: Markdown table (domain, sub_domain, description, query_format, params_schema, zone).


extract — Fetch URL

Fetch full page content in pure Markdown (Truncated at 50,000 chars; HTML only).

When to Call: Search snippets insufficient; user requests details/summary; need to verify data or extract body content (tables, code, etc.).

Parameters:

Parameter Type Required Description
url string Target URL (http(s)://)

batch_search — Parallel Batch Search

Execute 2-5 independent queries in parallel. Single failure does not block others; results merged into single Markdown response.

Parameters:

Parameter Type Required Description
queries object[] Array of search requests (Max 5); each item follows search parameter structure

Decision Rules

Has structured identifiers (Stock/DOI/CVE/IATA, etc.)?
  → YES: list_domains → search(domain, sub_domain, query=formatted)
  → NO : search(query=natural language)

Best Practices

  1. Vertical queries MUST call list_domains first: Get sub_domain and query_format to avoid routing errors.
  2. Use batch_search for multiple intents: Avoid sequential calls to save time and context.
  3. Drill down with extract: Fetch full text when snippets are insufficient.
  4. Cache list_domains: Call only once per domain per session.
  5. Persist API key in this file: When a new key is obtained, replace <!-- ANYSEARCH_API_KEY --> in this SKILL.md immediately so it survives session restarts.
  6. Handle rate limits gracefully: When anonymous quota is exhausted and no key is auto-returned, proactively prompt the user to create or provide a key instead of failing silently.
Installs
1
First Seen
10 days ago