agent-seek
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@agent-seekFind recent articles about AI agent frameworks, ranked by relevance, with prompt-injection risk flags."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Agent Seek — Less SEO. More signal.
Cheap web recall (You.com) + Jev taste → Google-simple UI, HTTP API, and an agent Skill.
Google-simple for people. Judgment-native for agents.
You.com discovers web candidates. TypeSafe Jev cascade-ranks them. Clients get a small scored JSON list (plus a simple search UI). Agent Seek does not write the answer. Web results are scored for prompt injection before the agent reads them (signals.prompt_injection; UI: Injection risk). If hard gates empty the scored list, restored rows set gates_relaxed: true.
Live demo: https://agentseek.dev
Not Deep Research / Deep Agents. Max 100 discover candidates per query.
API/MCP default
mode=snip(title/URL/snippet; cheaper/faster). Passmode=deepfor Stage A survivor fetch (cap 12). Website UI is fixedsnip.
Two ways to try it
Live demo (no clone): paste the public
AS_…Bearer into MCP or curl — see Try the live demo. This burns operator You.com / TypeSafe quota and the per-IP demo limit on agentseek.dev.Self-host / local: clone +
.env— you must supply your ownYDC_API_KEYandTYPESAFE_API_KEY. LocalAGENT_SEEK_API_KEYis only your machine Bearer (not the liveAS_…key).
Related MCP server: agent-web-search-mcp
Try the live demo (easiest path)
The live host publishes a public demo key (not a secret). It is the same AS_… value the website injects via /config.js. Anyone can copy it. It only spends operator upstream quota / the per-IP demo limit on agentseek.dev — it does not unlock You.com or TypeSafe secrets.
AS_LXxYWY1wQcEwliYnkfAXRA-c0sPlsRtVz4j_ZvJRlnICursor MCP (live)
Paste into your Cursor mcp.json:
{
"mcpServers": {
"agent-seek": {
"url": "https://agentseek.dev/mcp",
"headers": {
"Authorization": "Bearer AS_LXxYWY1wQcEwliYnkfAXRA-c0sPlsRtVz4j_ZvJRlnI"
}
}
}
}Curl (live)
curl -sS -X POST https://agentseek.dev/v1/search \
-H "Authorization: Bearer AS_LXxYWY1wQcEwliYnkfAXRA-c0sPlsRtVz4j_ZvJRlnI" \
-H "Content-Type: application/json" \
-d '{"q":"Introducing System One Models Jev","k":10,"max_candidates":50}'Zero-auth inspect (no key): GET https://agentseek.dev/v1/sandbox, GET /health, GET /openapi.json.
Live demo | Local clone | |
MCP |
|
|
Also mounted |
|
|
Server card |
|
|
Skill |
| same path on |
search_web accepts Bearer (public demo key on live, or your local AGENT_SEEK_API_KEY) or OAuth scope search:read. Health/docs helper tools are unauthenticated.
Quickstart — local clone
Python 3.12+. Clone this repo:
git clone https://github.com/Gitmaxd/agent-seek.git
cd agent-seek
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
cp .env.example .envFill .env (never commit it):
Variable | Needed for | Notes |
| Live / local search | You.com Platform (paid upstream) |
| Live / local search | TypeSafe / Jev (paid upstream) |
| Local API + MCP Bearer only | Local placeholder |
| Optional LLM-judge eval |
|
Self-hosters: real search needs paid You.com + TypeSafe keys; without them only tests, fixtures, and the sandbox work. Tests run without live keys (pytest -q uses fixtures). Local POST /v1/search / MCP search_web needs those two paid upstream keys plus a local AGENT_SEEK_API_KEY.
uvicorn apps.api.main:app --host 0.0.0.0 --port 8787Open http://127.0.0.1:8787 — the UI calls same-origin /v1/search with the injected Agent Seek key (never exposes You.com / TypeSafe keys). The website UI is fixed snip (no Mode control). API/MCP default is snip; pass mode=deep for Stage A survivor fetch.
Curl (local)
source .venv/bin/activate
export AGENT_SEEK_API_KEY="$(grep ^AGENT_SEEK_API_KEY= .env | cut -d= -f2-)"
curl -sS http://127.0.0.1:8787/health
curl -sS -X POST http://127.0.0.1:8787/v1/search \
-H "Authorization: Bearer $AGENT_SEEK_API_KEY" \
-H "Content-Type: application/json" \
-d '{"q":"Introducing System One Models Jev","k":10,"max_candidates":50}'
# Opt-in deep: Stage A survivor fetch (cap 12; slower / more expensive)
curl -sS -X POST http://127.0.0.1:8787/v1/search \
-H "Authorization: Bearer $AGENT_SEEK_API_KEY" \
-H "Content-Type: application/json" \
-d '{"q":"when were langchain deep agents released","k":10,"max_candidates":50,"mode":"deep"}'Local MCP
After cp .env.example .env, set AGENT_SEEK_API_KEY=dev-agent-seek-key-change-me (or any local secret). That key is only for your machine — it is not the live AS_… demo key.
{
"mcpServers": {
"agent-seek": {
"url": "http://127.0.0.1:8787/mcp",
"headers": {
"Authorization": "Bearer YOUR_LOCAL_AGENT_SEEK_API_KEY"
}
}
}
}Optional / advanced: OAuth DCR
Agents that prefer Dynamic Client Registration can use POST /oauth2/register and the flows in /auth.md. You do not need OAuth to try the live demo — copy the public Bearer key above. Full tool contract: skills/agent-seek/SKILL.md.
Tests
pytest -qNo live API keys required. Optional live evals (soft-fail):
# Legacy substring hit-rate (evals/queries.json)
AGENT_SEEK_LIVE=1 python scripts/eval_compare.py
# Pairwise LLM-judge suite — dry-run needs no keys
python scripts/eval_llm_judge.py --dry-runFrozen first run: evals/public_v1/published/v1.0.0-first-run/. Public page: /eval (markdown: /eval.md). Suite contract: evals/public_v1/README.md.
What it is
A small FastAPI service:
Discover — You.com web candidates (hard cap 100)
Rank — TypeSafe Jev cascade (subject / republisher / prompt-injection gates)
Snip (API/MCP default) — Stage B on title/URL/snippet. Deep (pass
mode=deep) fetches main text for Stage A survivors (cap 12), then Stage BReturn — top-k scored URLs, snippets, flags, and signals
On total Jev failure: HTTP 200 with meta.ranking: "raw_fallback".
apps/api/ FastAPI (health, /v1/search, OAuth, MCP, serves UI)
apps/web/ Google-simple static UI + public agent/human prose
packages/core/ discover (You.com) + Jev cascade + cache + deep fetch
skills/agent-seek/ Agent Skill (well-known serves SKILL.md)
fixtures/ Recorded You.com + Jev payloads (keys redacted)
tests/ Offline pytest (no live upstream)
evals/queries.json Frozen legacy eval queries (optional live compare script)
evals/public_v1/ Pairwise LLM-judge suite + published first run (`/eval`)Route | Notes |
|
|
| MCP Streamable HTTP |
| Public agent how-to |
| Bearer |
| Same params as query string |
| Zero-auth canned |
| API/MCP default — Stage B on title/URL/snippet (cheaper/faster) |
| Opt-in — Stage A survivor fetch, then Stage B |
MCP search_web does not accept REST-only nocache / rank. See /docs, /developers, /api/docs.
Progressive Disclosure Search Ranking
You.com discovers candidates. TypeSafe Jev (a System One model) re-scores them in stages. Agent Seek returns a small scored URL list; it does not write the answer. The funnel exists so you can start at the head of the list: prefer the top 1–2 ranked sources before expanding. One good keeper beats a context window full of searches.
Ranking is progressive: cheap judgment first, then fetch and deeper judgment only on survivors.
Discover — up to 100 You.com candidates (default 50 in)
Stage A — Jev scores coarse relevance across the batch; weak hits drop
Disclose — API/MCP default
mode=snipskips fetch and ranks title / URL / snippet only (fast/cheap). Passmode=deepto fetch main text for up to 12 Stage A survivors (not a full-web crawl; slower/more expensive). Website UI is fixedsnip.Stage B — Jev scores the richer evidence, then Agent Seek composes a 0–1 score, collapses near-dupes, applies hard gates, and returns top-
k
Stage B is where page text (not just SERP blurbs) drives answerability, fact-stated, authority, and injection-risk judgments.
On total Jev failure: HTTP 200 with meta.ranking: "raw_fallback".
Jev metrics
Returned under signals when parsed:
Signal | Role |
| How well the page helps answer the query |
| Whether the asked fact is stated explicitly |
| Official / first-party vs third-party rewrite |
| Tightly on-topic (soft) |
| Same entity the query asks about |
| Soft demotion when high |
| Prompt-injection / instruction-hijack risk (UI: Injection risk) |
Hard gates (order, 0.55): subject_match → is_republisher → prompt_injection. subject_match and is_republisher fail-open if parse missing; prompt_injection is fail-flagged (missing/unparseable dropped from results). Gated rows stay in raw_results. If hard gates empty the scored list, pre-gate ranking is restored and each restored row has gates_relaxed: true (relaxed-safety response; not a SearchMeta field).
Score composition favors answerability, with a smaller weight for stating the sought fact and a gated authority boost when scores are close — primary sources preferred without crushing a page that clearly answers.
A pairwise LLM-judge harness compares You.com order vs Agent Seek cascade on the same discover pool (evals/public_v1/). /eval shows snip preference beside the top-3 gold hit rate. The frozen deep run is in evals/public_v1/published/v1.0.0-first-run/.
Rate limiting (optional)
Local/dev is unlimited unless you set both UPSTASH_REDIS_REST_URL and UPSTASH_REDIS_REST_TOKEN. Missing either disables limiting — no Redis calls.
When enabled: sliding 60s window per client IP (not the shared UI API key), default AGENT_SEEK_RATE_LIMIT_PER_MIN=60, on search and MCP search_web only. Client IP is the rightmost public X-Forwarded-For hop, then X-Real-IP, then the socket address. Redis/network errors fail closed (503). Burst 429 is code=RATE_LIMITED and may include Retry-After.
The public host can also apply a lifetime per-IP demo quota, gated by AGENT_SEEK_DEMO_MODE (default disabled; live agentseek.dev sets enabled at deploy). When enabled: AGENT_SEEK_DEMO_SEARCH_LIMIT (default 5, Upstash INCR, no TTL). REST /v1/search, /api/v1/search (the HTML UI and any other REST client), and MCP search_web share that allowance. Exhausted searches from that IP return 429 application/problem+json with code=DEMO_EXHAUSTED and no Retry-After. Unauthenticated MCP helper tools do not consume it. See .env.example.
Secrets
Never commit YDC_API_KEY, TYPESAFE_API_KEY, local AGENT_SEEK_API_KEY, OPENAI_API_KEY, or Upstash tokens. .env.example has placeholders only. The live AS_… value in /config.js is a public demo key (documented on purpose). How we handle that vs self-host hardening: SECURITY.md.
Community
Contributing — tests, product locks (You.com / Jev / 100-cap)
Security policy — report vulns to 131803031+Gitmaxd@users.noreply.github.com
Release notes:
CHANGELOG.md
License
MIT. SPDX-License-Identifier: MIT
Author
This server cannot be deployed
Maintenance
Related MCP Connectors
Scrape, crawl and search the web for AI agents via MCP.
Multi-engine search for AI agents. Trust scoring, local corpus, MCP-native. Self-hostable, BYOK.
Search the agentic web. 4,100+ sites, 11 tools incl. check_url + verify_mcp for probe-before-use.
Free web search for AI agents. No API key required. Hosted MCP in active development.
Related MCP Servers
- AlicenseNot gradedqualityBmaintenanceEnables AI agents to perform web searches with full content retrieval and multi-engine provenance, including trust scoring and local corpus persistence, via MCP integration.1 npm2Apache 2.0
- FlicenseAqualityCmaintenanceEnables MCP-compatible agents to perform web searches via the agent-web-search engine, returning ranked results with sources.1-
- AlicenseAqualityCmaintenanceEnables MCP hosts to perform cited web searches and receive source-bearing results with titles, URLs, snippets, and sources for evidence-grounded answers.133 npmMIT
- AlicenseNot gradedqualityBmaintenanceEnables AI agents to perform web search, extraction, and research across multiple provider backends with persistent multi-key rotation and auditable routing. Supports MCP, CLI, and Agent Skill entry points.MIT