anysearch
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 actualapi_keyvalue so it survives session restarts.Replacement procedure:
- Read the current content of this SKILL.md file.
- Replace every instance of
<!-- ANYSEARCH_API_KEY -->with the newapi_keyvalue.- Write the updated content back to this SKILL.md file.
Example: if the returned
api_keyisabc123, then every occurrence ofAuthorization: Bearer <!-- ANYSEARCH_API_KEY -->becomesAuthorization: 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:
- Self-service (recommended): Visit https://anysearch.com/settings/api-keys to sign up and create an API Key, then send it to me.
- 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_domainsfirst. Construct query per returnedquery_formatand pass bothdomainandsub_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
- Vertical queries MUST call
list_domainsfirst: Getsub_domainandquery_formatto avoid routing errors. - Use
batch_searchfor multiple intents: Avoid sequential calls to save time and context. - Drill down with
extract: Fetch full text when snippets are insufficient. - Cache
list_domains: Call only once per domain per session. - 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. - 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.