OpenSEO
Keyword research, site audits, rank tracking and AI visibility for your AI agent.
Build and run grounded business agents over MCP: agents, knowledge bases, skills, Storylines.
Pick the AI app you use, then copy the settings.
Passed 2/3 checks · What you ask goes through the maker’s server (api.agent4.io) · ✓ Commands checked Nov 13, 2026
First: which AI do you use?
Pick your app and the steps appear below.
Works with Claude · about 5 min
You need a agent4.io key (create it on the maker’s site) · Set it up once on claude.ai or the desktop app, then use it in chat · free accounts can add 1 · on Team/Enterprise an Owner adds it
Open the maker’s site, sign up and create an API key for the next step. Check the maker’s site for pricing and free plans.
CustomizeConnectors
Copy each value into the field with the same name in Claude, then click Continue
agent4.iohttps://api.agent4.io/v1/mcpUnder Request headers, add this name and value
X-API-Key<paste your key here>Paste the key only into the app’s field, never into a chat or to anyone
Click Continue past the sign-in settings Claude detected · under Authentication choose what the maker says (Sign in now, Sign in when needed or No sign in), then click Add
+Connectorsagent4.io
Use agent4.io and tell me what you can do for me, then show me one thing✓ If Claude says it is using agent4.io or shows a agent4.io tool in the answer, you are connected
Menu names checked against Anthropic’s help page on Nov 11, 2026 · your screen may differ slightly by app version
ChatGPT cannot connect agent4.io yet
agent4.io needs your own key to connect, but OpenAI’s help page only describes OAuth sign-in; there is no key option we could verify
A · Use an app that can connect agent4.io
Works with Claude Code · about 5 min
You need a agent4.io key (create it on the maker’s site)
Open the maker’s site, sign up and create an API key for the next step. Check the maker’s site for pricing and free plans.
Mac: press Command+Space and type Terminal · Windows: open PowerShell
claude mcp add --transport http --scope user agent4-tenant https://api.agent4.io/v1/mcp --header 'X-API-Key: your-value'Replace “your-value” with your key before pressing Enter
Paste the key only into the app’s field, never into a chat or to anyone
You should see agent4.io listed as connected
Use agent4.io and tell me what you can do for me, then show me one thing✓ If Claude Code says it is using agent4.io or shows a agent4.io tool in the answer, you are connected
Menu names checked against Anthropic’s help page on Nov 11, 2026 · your screen may differ slightly by app version
Works with Cursor · about 5 min
You need a agent4.io key (create it on the maker’s site)
Open the maker’s site, sign up and create an API key for the next step. Check the maker’s site for pricing and free plans.
In the agent4.io settings, X-API-Key is empty; add your key and save
Paste the key only into the app’s field, never into a chat or to anyone
Use agent4.io and tell me what you can do for me, then show me one thing✓ If Cursor says it is using agent4.io or shows a agent4.io tool in the answer, you are connected
Menu names checked against Cursor’s help page on Nov 11, 2026 · your screen may differ slightly by app version
Works with VS Code · about 5 min
You need a agent4.io key (create it on the maker’s site)
Open the maker’s site, sign up and create an API key for the next step. Check the maker’s site for pricing and free plans.
In the agent4.io settings, X-API-Key is empty; add your key and save
Paste the key only into the app’s field, never into a chat or to anyone
Use agent4.io and tell me what you can do for me, then show me one thing✓ If VS Code says it is using agent4.io or shows a agent4.io tool in the answer, you are connected
Menu names checked against VS Code’s help page on Nov 11, 2026 · your screen may differ slightly by app version
Other apps that use MCP, such as Windsurf, Zed or Gemini CLI, each add servers differently. See how in the app list.
Address for apps that connect over the web
https://api.agent4.io/v1/mcpJSON settings are under “For developers” below
Claude Code
claude mcp add --transport http --scope user agent4-tenant https://api.agent4.io/v1/mcp --header 'X-API-Key: your-value'Cursor (~/.cursor/mcp.json)
{
"mcpServers": {
"agent4-tenant": {
"url": "https://api.agent4.io/v1/mcp",
"headers": {
"X-API-Key": "your-value"
}
}
}
}VS Code (mcp.json)
{
"servers": {
"agent4-tenant": {
"type": "http",
"url": "https://api.agent4.io/v1/mcp",
"headers": {
"X-API-Key": "your-value"
}
}
}
}Descriptions are as written by the maker.
These settings are generated from the maker’s registry entry. If the README says otherwise, follow the README.
Based on how this server connects and on each app’s own docs, checked Nov 10, 2026.
Connect over the internet in
ClaudeGooseLM StudioMsty StudioCherry StudioCursorVS Code + GitHub CopilotVisual StudioWindsurf (Devin Desktop)ZedKiroClineContinueJetBrains AI AssistantClaude CodeCodex CLIGemini CLIOpenCodenodecodeWarpLibreChatOpen WebUIRaycast
Tool names and descriptions exactly as the server reported them on Nov 10, 2026. The maker wrote them, not us; we show them as plain text.
list_agentsList all agents in this tenant (name + published state).
get_agentGet one agent's full configuration (soul/task/tools/skills/knowledge_bases/model/params).
create_agentCreate an agent. `name` is lower-cased on save — it is a key, not a display name. soul = persona/identity; task = duties and boundaries; tools = tool-name whitelist (check list_tools first; the system tools time/geo/weather **and `compute_chart`** are **auto-enabled by default**,
update_agentUpdate **part** of an agent — fields you don't pass stay as they are. ⚠️ List-field semantics, don't mix them up: `tools=[...]` / `skills=[...]` / `knowledge_bases=[...]` are **full-list replacement** — items you didn't read first get pushed out. To "add one / remove one", use `a
list_toolsList tool names assignable to agents, with their descriptions (incl. the tenant's connected MCP tools).
list_mcp_serversList the MCP servers connected in this tenant's tool library (read-only; secret fields omitted).
create_shareCreate a **share / integration entry point** for an agent — this is how end users actually reach it. **`published=True` only means "visible", not "reachable"**: for end users to talk to the agent you must create a share. The response carries a directly openable chat link (`{publi
list_sharesList an agent's shares (token / label / disabled / chat link / embed URL / appearance config). When the top-level `pretty_url` is non-empty it is the preferred link to give humans (see create_share).
configure_shareConfigure this share — its name and its **appearance** — fields you don't pass stay as they are (server-side partial merge). - `label`: the name at the top of the chat page, and the browser tab's title. **Renaming a share is this call**; you never need to create a replacement and
set_pwa_brandingConfigure a specific **agent's** PWA branding and install experience (applies to that agent's `/s/` standalone chat pages — what gets installed to the home screen is one agent's entry page, so each agent is its own app). - `agent`: the agent name whose install branding to configu
set_custom_domainBind the client's own domain to this tenant's chat pages: `https://chat.client.com/` serves the tenant's branded page (or a specific agent's chat), the address bar keeps the client's domain, and the TLS certificate is issued automatically. **Have the client configure DNS first**:
list_skillsList this tenant's skills.
get_skillGet one skill's full content (including the complete instructions text).
create_skillCreate a skill. description = "when to use" (goes into the system prompt, keep it short); instructions = the detailed guide (fetched on demand via load_skill). The paradigm (important): instructions are visible only AFTER the model calls load_skill — if calling some tool is **man
update_skillUpdate part of a skill — fields you don't pass stay as they are (server-side PATCH merge, no GET+PUT round-trip). ⚠️ `tools=[...]` is **full-list replacement**; to add/remove one use `add_tools`/`remove_tools` (incremental, idempotent). Tools bound to a skill take effect automati
test_skill_triggerReality-check whether your prompts actually trigger tool calls (dry-run) — run this after writing/changing a skill instead of counting corpses in production. Replays your messages N times against the **production** system-prompt assembly, tool schemas and this tenant's actual mod
list_knowledge_basesList this tenant's knowledge bases (with doc/chunk counts and relevance cutoff).
get_knowledge_baseGet one knowledge base's configuration (including the full instructions text shown to the model).
create_knowledge_baseCreate a knowledge base. **Write `description` — it is what routes questions to this base.** Before each answer the platform reads every attached base's `description` and decides which ones this question needs; a base whose description is vague or blank gets searched when it shou
update_knowledge_baseUpdate part of a knowledge base — fields you don't pass stay as they are (server-side PATCH merge).
add_knowledge_textAdd a **text** document to a knowledge base (chunking + embedding happen synchronously; returns the real chunk count). For **local files** (pdf/docx…) see `add_knowledge_file`.
add_knowledge_fileAdd a local file's content to a knowledge base (txt/md/html/pdf/docx). **This MCP runs on the platform server and cannot read paths on YOUR machine.** For text files, read the content yourself and call `add_knowledge_text`; for binaries (pdf/docx), upload via the console, or curl
search_knowledge_baseSearch this knowledge base; returns matching chunks with distances. Uses **exactly the same retrieval path as real conversations** — use it to validate the cutoff and chunking: an empty result means this question will be judged "not covered" and the agent will answer "not in the
build_knowledge_indexBuild (or rebuild) the structured index for a knowledge base — the second leg beside vector search. Vector search answers "what does this passage say". It **cannot count, filter numerically or aggregate**, so "how many documents", "which ones are between 1000 and 2000 words", "ho
get_knowledge_indexShow the structured index profile: per column coverage, type, numeric range, top values, warnings. **The warnings are the point.** On a real 4,500-document catalogue this surfaced three data problems nobody knew about: 1,058 documents with `page_count` 0, 505 with `reading_level`
patch_knowledge_indexChange the structured index schema from one sentence of plain language. Example requests: "also track the author so users can find other books by them", "I want to filter by illustrator", "drop the cover link". The model may only emit add/modify/remove/refused — it cannot rewrite
improve_promptRewrite a field's text to work better as an AI system prompt; returns the improved text. field ∈ persona | task | greeting | storyline_task | storyline_opening | storyline_ai_trigger | storyline_ai_criteria | skill_description | skill_instructions | kb_description | kb_instructio
diagnose_promptRead a field and return a list of **specific** improvement suggestions (string array). field: same values as improve_prompt. current = the text to diagnose (required — an empty text has nothing to diagnose). Typical flow: diagnose_prompt first, pick the suggestions you want, then
test_planner_triggerDry-run the Dynamic Planner's escalation judge: would these messages be offered a step-by-step plan? Use it after editing the agent's `task`, since the task text is the **business-domain gate** — a vague task lets out-of-domain requests through, a narrow one turns real customers
preview_planGenerate a plan for a goal and return it for review **without persisting anything** — no temporary storyline, no enrollment, no user affected. Use it to inspect plan quality before trusting the feature in production, or to see how the agent's `task` constrains the steps. Returns
usage_statsUsage statistics. group ∈ total | agent | user | space | day | model. Metadata only — token counts and event counts, never any conversation content. Use group="user" to see who uses the most, group="agent" for the busiest agent.
tenant_infoThis tenant's basic info and quota (plus custom-domain binding status, if any).
search_agent4_docsSearch agent4.io's own product docs — concepts (what a thing *is*) and cookbook recipes (which tool to *call*). Use when you're unsure how an agent4.io feature works, what a term means, or how to build something on the platform. Returns top passages with title, layer ("concept"|"
list_end_usersList this tenant's **end users** (the people chatting with your agents) — roster only, never any conversation content. Each user carries: display name, login method (email / oauth:* / proxy), email (if any), space/session/document counts, last-24h token usage, and a `console_url`
get_end_userGet one end user's detail: basic profile (name, contact email/phone, city, timezone) + their spaces. Never any conversation content. Carries a `console_url` to the user's detail page.
list_user_sessionsList one end user's **sessions** — metadata only: agent, title (AI summary), message count, tokens, timestamps. **Message bodies are not returned.** Transcripts are rendered in the console: each session carries a `console_url` that **deep-links straight to that conversation, auto
list_page_contextsList all page playbooks of this tenant (with match rules, greeting mode, position).
upsert_page_contextCreate or fully replace a page playbook. `context` is the page background the **server** injects for the agent — write "who lands on this page, what they are deciding, what they usually worry about"; do NOT write facts like prices or quotas (those belong in a knowledge base, whic
resolve_page_contextGiven a URL (or key), show which playbook it resolves to — always verify after writing a match rule. Globs make it easy to write rules that "look right but never match" (one `*` short, one path level too many) — and in production the only symptom is visitors silently getting the
page_context_statsOpen counts and suggested-question click counts per playbook — find copy nobody clicks.
list_storylinesList this tenant's storylines (optionally filtered by agent). Includes state, version, default flag.
get_storylineGet one storyline's full definition (whole graph + profile_schema + top-level fields).
create_storylineCreate a storyline draft. After creating, self-check with validate_storyline, then publish_storyline. user_visibility — what the end user sees of their own run: "invisible" (default, no UI), "named" (a banner with the storyline name only), "trail" (banner + read-only view where u
update_storylineUpdate **part** of a storyline draft — fields you don't pass stay as they are (GET-then-merge on top of a full PUT underneath). concurrency: "user" = progress belongs to the person (shared across sessions); "session" = progress belongs to the case (one run per session). Changes a
validate_storylineValidate the storyline graph (entry / dead ends / unreachable / dangling / cross-line targets / rule dimensions). Returns {ok, errors}. Must pass before publishing.
publish_storylinePublish a storyline: validates first (blocking errors → 422), then freezes an immutable version and marks it published.
unpublish_storylineUnpublish (archive): no more auto-enrolment; in-flight users silently degrade to the plain agent on their next turn (progress kept — re-publishing resumes it).
clone_storylineClone a storyline into a new draft (new key, unpublished, doesn't claim default, no chain pointer) for tweaking.
export_storylineExport a portable storyline JSON (schema_version + definition; no tenant/version/id) for backup, migration or re-import.
import_storylineImport an exported storyline JSON as a draft. **Artifacts like "generate a storyline from a novel / source material" land here.** payload = the structure returned by export_storyline (schema_version + graph + profile_schema + top-level fields). Version-aware: payloads newer than
We check information anyone can see; we have not read the code. Checks that do not apply are left out of the count. · Checked Nov 15, 2026
The registry lists no source repo, so we cannot match the publisher (agent4.io) to the code
We have not read this repo from GitHub yet
We have not read this repo from GitHub yet
Responded in 327 ms (HTTP 200)
No sign-in needed
Read 50 tool descriptions and found no hidden instructions to the AI
Ask, share a tip or report that it does not work. Sorted by what people marked helpful.
No posts yet. Be the first to ask or share.
Posts here are written by users, not the PopNx team.
No reviews yet
Compared with every active server in this category in the registry. Stars count only when the publisher owns the repo.
It passed 2 of 3 applicable basic checks. We have not read the code. Before adding a key or token, see what access the server asks for and use a key with only the permissions you need.
You need to fill in: X-API-Key
It runs in the maker’s cloud. Connect over the internet with nothing to install, but what you send passes through the maker’s servers.
The GitHub repo last changed –, and the latest version (1.4.0) reached the registry 4 months ago.
Apps that support MCP, such as Claude Desktop, Claude Code, Cursor and VS Code. It connects by URL, so apps that accept remote MCP servers work too, such as ChatGPT on the web (full MCP on Business and above; Pro read-only).
In the same category: OpenSEO, Exa, Mockserver, Microsoft Learn MCP, Docs
Same category, other makers, commands already checked. Official ones first, then by stars.
Reading a card:↓ Downloads per weeki★ GitHub starsiThree pillars: reviews · checks · usageiUpdated = latest version published to the registryi
Keyword research, site audits, rank tracking and AI visibility for your AI agent.
Connect AI agents to Exa for web search, content fetching, and multi-step research.
Mock, record/replay, verify and chaos-test any HTTP, REST, gRPC or LLM dependency over MCP.
Official Microsoft Learn MCP Server – real-time, trusted docs & code samples for AI and LLMs.
Search and read Empryo's documentation. Read-only, no auth, no local access.
No README found in the repo