Skip to main content
Glama
eason4kim-rocket

annolux-mcp

⚑ Annolux

Curated English & Chinese Search API and MCP for AI Agents & RAG Systems

Search that can show its work. Every result carries an explicit fetched_at timestamp and provenance.

Go Version NPM Version MCP Protocol License Free Tier

🌐 Website β€’ πŸ“– API Docs β€’ ⚑ MCP Quickstart β€’ πŸ“Š Frozen Benchmarks β€’ πŸ“ Examples β€’ πŸ‡¨πŸ‡³ δΈ­ζ–‡ζ–‡ζ‘£


πŸ’‘ Why Annolux?

Current web search APIs for AI agents suffer from three fatal flaws:

  1. Garbage in, garbage out: Commercial search engines index millions of SEO farms, scraped spam, and auto-generated noise that pollute LLM context windows.

  2. Missing time-provenance: LLMs hallucinate current state because search APIs omit the exact snapshot timestamp (fetched_at).

  3. Predatory billing: Paying full price for failed requests, empty outputs, or rate-limited retries.

Annolux solves this with an agent-first curated approach:

  • πŸ›‘οΈ Curated Bilingual Technical Index: High-signal English & Chinese corpus (Rust, Go, Python, AI/ML, Official Docs, RFCs, GitHub, arXiv).

  • πŸ•’ Explicit fetched_at Timestamp: Every ranked hit reveals the exact second it was ingestedβ€”enabling grounded citations and temporal reasoning.

  • 🎯 Predictable Ledger Billing: Exactly 1 credit per successful 2xx response. Errors, timeouts (504), rate limits (429), and bad requests cost 0 credits.

  • 🧩 Native Model Context Protocol (MCP): Zero setup across Claude Code, Cursor, Windsurf, Cline, Zed, and Claude Desktop.

  • πŸš€ 1,000 Free Permanent Credits: Sign in with GitHub or Google at annolux.com and start querying in 30 seconds.


Related MCP server: Kimi Coding MCP

πŸ₯Š Comparison: Annolux vs. Generic Search APIs

Feature / Metric

Annolux

Exa (Metaphor)

Tavily

Serper / Google

Index Quality

Curated Tech & Knowledge (EN/ZH)

Web-wide neural

Web-wide aggregator

Entire Web (noisy SEO)

Chinese (ZH) Tech Corpus

First-class native bilingual FTS

Moderate

Weak / Translated

Mixed with content farms

Explicit Snapshot Timestamp

βœ… fetched_at on every result

❌ Inconsistent

❌ Omitted

❌ Snippet approximate only

Billing Guarantee

βœ… 1 credit only on 2xx success

Request-based

Request-based

Request-based

Failed / Timeout Queries

πŸ†“ 0 Credits charged

❌ Billed

❌ Billed

❌ Billed

MCP Tool Surface

Single lean search_web (Minimal token waste)

Multiple bulky tools

Multi-step tools

Needs custom bridge

Domain Restriction

βœ… Exact hostname filtering (domains)

βœ… Supported

βœ… Supported

Limited site: query

Free Starter Tier

1,000 permanent credits

Limited trial

1,000 / mo

2,500 one-time


πŸ“¦ Quick Installation

Option 1: NPX (Fastest for MCP & CLI)

# Run instantly via Node.js (zero installation)
npx -y annolux-mcp -key ann_live_YOUR_API_KEY

Option 2: Go CLI & Server

go install github.com/eason4kim-rocket/annolux/cmd/annolux-mcp@latest

Option 3: Pre-built Multi-Platform Binaries

Download standalone binaries from GitHub Releases:

  • linux-amd64 / linux-arm64

  • darwin-amd64 (Intel Mac) / darwin-arm64 (Apple Silicon M-series)


πŸ”Œ MCP Integration

Annolux implements the official Model Context Protocol (MCP) specification with a single, high-efficiency tool: search_web.

1. Claude Code

claude mcp add annolux npx -y annolux-mcp -- -key ann_live_YOUR_API_KEY

2. Cursor / Windsurf

Add to your project .cursor/mcp.json or global configuration:

{
  "mcpServers": {
    "annolux": {
      "command": "npx",
      "args": ["-y", "annolux-mcp", "-key", "ann_live_YOUR_API_KEY"]
    }
  }
}

3. Claude Desktop

Add to claude_desktop_config.json:

{
  "mcpServers": {
    "annolux": {
      "command": "annolux-mcp",
      "env": {
        "ANNOLUX_API_URL": "https://api.annolux.com",
        "ANNOLUX_API_KEY": "ann_live_YOUR_API_KEY"
      }
    }
  }
}

πŸš€ HTTP API Quickstart

Standard Search Endpoint

POST https://api.annolux.com/api/v1/search
Authorization: Bearer ann_live_YOUR_API_KEY
Content-Type: application/json
{
  "query": "tokio async runtime memory model",
  "domains": ["tokio.rs", "docs.rs", "github.com"],
  "deduplicate": true,
  "limit": 5,
  "timeout": 10,
  "ranking": "default"
}

Python

import os
import requests

response = requests.post(
    "https://api.annolux.com/api/v1/search",
    headers={"Authorization": f"Bearer {os.environ.get('ANNOLUX_API_KEY')}"},
    json={
        "query": "DeepSeek R1 architecture reinforcement learning",
        "limit": 5,
        "deduplicate": True
    },
    timeout=15
)

data = response.json()
for result in data.get("results", []):
    print(f"[{result['fetched_at']}] {result['title']} -> {result['url']}")

TypeScript / Node.js

const res = await fetch("https://api.annolux.com/api/v1/search", {
  method: "POST",
  headers: {
    "Authorization": `Bearer ${process.env.ANNOLUX_API_KEY}`,
    "Content-Type": "application/json"
  },
  body: JSON.stringify({
    query: "vLLM PagedAttention implementation details",
    limit: 5,
    deduplicate: true
  })
});

const data = await res.json();
console.log(`Credits Remaining: ${res.headers.get("X-Annolux-Credits-Remaining")}`);
console.log(data.results);

cURL

curl -s -X POST https://api.annolux.com/api/v1/search \
  -H "Authorization: Bearer ann_live_YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "query": "Go sync.Pool benchmark best practices",
    "limit": 3
  }' | jq .

πŸ›οΈ Architecture & Mechanics

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                 AI Agent / RAG Application                  β”‚
β”‚       (Claude Code / Cursor / LangChain / Custom LLM)       β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                               β”‚
               Stdio MCP / HTTPS REST Request
                               β”‚
                               β–Ό
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                  Annolux Gateway API Engine                 β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”     β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”‚
β”‚  β”‚ 1. Account & Rate Limit β”‚ ──► β”‚ Reserve 1 Credit      β”‚  β”‚
β”‚  β”‚    (5 RPS, Burst 10)    β”‚     β”‚ in /data/accounts.db  β”‚  β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜     β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β”‚
β”‚                                              β”‚              β”‚
β”‚                                              β–Ό              β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”‚
β”‚  β”‚ 2. Bilingual FTS Ranker (/data/index.db)              β”‚  β”‚
β”‚  β”‚    β€’ Curated English & Chinese Corpus                 β”‚  β”‚
β”‚  β”‚    β€’ SimHash Content-Deduplication Engine             β”‚  β”‚
β”‚  β”‚    β€’ Domain Filter & Exact Substring Match            β”‚  β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β”‚
β”‚                                              β”‚              β”‚
β”‚                                              β–Ό              β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”‚
β”‚  β”‚ 3. Atomic Response & Ledger Settlement                β”‚  β”‚
β”‚  β”‚    β€’ 2xx Success ──► Commit 1 Credit & Attach Timing  β”‚  β”‚
β”‚  β”‚    β€’ 4xx/5xx Err ──► Release Reservation (0 Cost)     β”‚  β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                               β”‚
          JSON with exact `fetched_at` & verified URL
                               β”‚
                               β–Ό
                     [ Grounded LLM Response ]

πŸ“Š Search Quality & Frozen Benchmarks

Annolux evaluates search retrieval performance against an immutable, frozen blind set of 40 complex bilingual queries. The ranking weights are never tuned on the test set.

Metric

First Gate Baseline

Prelaunch Verification Gate

Hit@1

72.5%

72.5%

Hit@3

82.5%

82.5%

Hit@10

85.0%

85.0%

MRR@10

0.78125

0.78125

P95 Latency

532 ms

356 ms

5xx Error Rate

0.00%

0.00%

All benchmarks are evaluated client-side under full concurrency load.


πŸ’³ Transparent Pricing

Plan

Price

Credits

Rate Limits

Billing Rules

Free

$0

1,000 (Permanent)

5 RPS / Burst 10

Free forever, no credit card required

Pro

$29 / mo

20,000 / mo

5 RPS / Burst 10

1 success = 1 credit, no rollover

Scale

$99 / mo

100,000 / mo

5 RPS / Burst 10

1 success = 1 credit, no rollover

  • No overage charges.

  • Errors, rate-limits, and timeouts are 100% free (0 credit charged).

  • Up to 3 active API keys per account.


πŸ“ Examples & Recipes

Check the examples/ directory for production-ready starters:


🀝 Community & Support


πŸ“„ License

Annolux is open-source software licensed under the Apache License, Version 2.0.

A
license - permissive license
Not graded
quality - not tested
A
maintenance

Maintenance

–Maintainers
–Response time
–Release cycle
1Releases (12mo)
Commit activity

Related MCP Servers

View all related MCP servers

Related MCP Connectors

  • LLM-ready web search + instant answers + URL-to-clean-text fetch for agents and RAG.

  • Web search for AI agents β€” one tool across 6 engines, routed to the cheapest + cached.

  • The best web search for your AI Agent

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/eason4kim-rocket/annolux'

If you have feedback or need assistance with the MCP directory API, please join our Discord server