MCP serverio.agent4/agent4-tenant
Build and run grounded business agents over MCP: agents, knowledge bases, skills, Storylines.
Overview
Score?
UNRATED 0.672
of what a free look can see, on 30 looks
Looks
36
last 1 hr ago
Tools
50
More info
URL
api.agent4.io/v1/mcp
streamable-http
Says it is
agent4-io
protocol 2025-06-18
In the record since
32 days ago
Among servers18,413 with a card
0median 0.606 · this server 0.672 · highest on record 0.8561
Toolsfrom sha256:f6c8db8ce7…da33e2
| Tool | Schema |
|---|---|
| add_knowledge_file Add 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 |
input · output |
| add_knowledge_text Add a **text** document to a knowledge base (chunking + embedding happen synchronously;
returns the real chunk count).
For **local files** (pdf/docx…) see `add_knowledge_f |
input · output |
| build_knowledge_index Build (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, filt |
input · output |
| clone_storyline Clone a storyline into a new draft (new key, unpublished, doesn't claim default, no chain
pointer) for tweaking. |
input · output |
| configure_share Configure 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 pag |
input · output |
| create_agent Create 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 (chec |
input · output |
| create_knowledge_base Create 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 |
input · output |
| create_share Create 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 |
input · output |
| create_skill Create 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 paradig |
input · output |
| create_storyline Create 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 |
input · output |
| diagnose_prompt Read 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 empt |
input · output |
| export_storyline Export a portable storyline JSON (schema_version + definition; no tenant/version/id) for
backup, migration or re-import. |
input · output |
| get_agent Get one agent's full configuration (soul/task/tools/skills/knowledge_bases/model/params). |
input · output |
| get_end_user Get 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 |
input · output |
| get_knowledge_base Get one knowledge base's configuration (including the full instructions text shown to the model). |
input · output |
| get_knowledge_index Show 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 surf |
input · output |
| get_skill Get one skill's full content (including the complete instructions text). |
input · output |
| get_storyline Get one storyline's full definition (whole graph + profile_schema + top-level fields). |
input · output |
| import_storyline Import an exported storyline JSON as a draft. **Artifacts like "generate a storyline from a
novel / source material" land here.**
payload = the structure returned by expor |
input · output |
| improve_prompt Rewrite a field's text to work better as an AI system prompt; returns the improved text.
field ∈ persona | task | greeting | storyline_task | storyline_opening
| s |
input · output |
| list_agents List all agents in this tenant (name + published state). |
input · output |
| list_end_users List 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 |
input · output |
| list_knowledge_bases List this tenant's knowledge bases (with doc/chunk counts and relevance cutoff). |
input · output |
| list_mcp_servers List the MCP servers connected in this tenant's tool library (read-only; secret fields omitted). |
input · output |
| list_page_contexts List all page playbooks of this tenant (with match rules, greeting mode, position). |
input · output |
| list_shares List 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 hu |
input · output |
| list_skills List this tenant's skills. |
input · output |
| list_storylines List this tenant's storylines (optionally filtered by agent). Includes state, version, default flag. |
input · output |
| list_tools List tool names assignable to agents, with their descriptions (incl. the tenant's connected MCP tools). |
input · output |
| list_user_sessions List one end user's **sessions** — metadata only: agent, title (AI summary), message count,
tokens, timestamps.
**Message bodies are not returned.** Transcripts are render |
input · output |
| page_context_stats Open counts and suggested-question click counts per playbook — find copy nobody clicks. |
input · output |
| patch_knowledge_index Change 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 |
input · output |
| preview_plan Generate 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 be |
input · output |
| publish_storyline Publish a storyline: validates first (blocking errors → 422), then freezes an immutable
version and marks it published. |
input · output |
| resolve_page_context Given 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" (o |
input · output |
| search_agent4_docs Search 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 te |
input · output |
| search_knowledge_base Search this knowledge base; returns matching chunks with distances.
Uses **exactly the same retrieval path as real conversations** — use it to validate the cutoff
and chun |
input · output |
| set_custom_domain Bind 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 cl |
input · output |
| set_pwa_branding Configure 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' |
input · output |
| tenant_info This tenant's basic info and quota (plus custom-domain binding status, if any). |
input · output |
| test_planner_trigger Dry-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
**b |
input · output |
| test_skill_trigger Reality-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 |
input · output |
| unpublish_storyline Unpublish (archive): no more auto-enrolment; in-flight users silently degrade to the plain
agent on their next turn (progress kept — re-publishing resumes it). |
input · output |
| update_agent Update **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=[...]` |
input · output |
| update_knowledge_base Update part of a knowledge base — fields you don't pass stay as they are (server-side PATCH merge). |
input · output |
| update_skill Update 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/rem |
input · output |
| update_storyline Update **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 t |
input · output |
| upsert_page_context Create 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, wha |
input · output |
| usage_stats Usage statistics. group ∈ total | agent | user | space | day | model.
Metadata only — token counts and event counts, never any conversation content.
Use group="user" to se |
input · output |
| validate_storyline Validate the storyline graph (entry / dead ends / unreachable / dangling / cross-line targets
/ rule dimensions). Returns {ok, errors}. Must pass before publishing. |
input · output |
Verify it yourself
npx teppi-check https://api.agent4.io/v1/mcpcurl -s https://api.teppi.xyz/v1/trust/mcp/mcs_01M1FZ2B045BDTBDYHM9JKCZP0