Build and run grounded business agents over MCP: agents, knowledge bases, skills, Storylines.
Déduit des transports déclarés par cette annonce (streamable-http). Un client absent de cette liste n’est pas écarté pour autant — c’est simplement quelque chose que Forge ne peut pas confirmer.
La vérification confirme l’identité de l’éditeur (la propriété du dépôt), pas la sûreté du code. L’analyse de sécurité couvre les CVE connues et les scripts d’installation suspects.
Lu depuis un véritable échange MCP initialize → tools/list contre l’endpoint déclaré. Aucun outil n’a été invoqué — tools/list est l’appel d’introspection en lecture seule que le protocole prévoit pour cela. Cela reflète ce que le serveur annonçait à cet instant ; un endpoint hébergé n’est figé sur aucune version et peut changer sans préavis.
https://api.agent4.io/v1/mcp50 outils · 448 mslist_agentsList all agents in this tenant (name + published state).List all agents in this tenant (name + published state).
Aucun schéma d’entrée n’a été publié pour cet outil.
get_agentGet one agent's full configuration (soul/task/tools/skills/knowledge_bases/model/params).Get one agent's full configuration (soul/task/tools/skills/knowledge_bases/model/params).
| Paramètre | Type | Description |
|---|---|---|
| name* | string | — |
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**, no need to l…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 (check list_tools first; the system tools time/geo/weather **and `compute_chart`** are **auto-enabled by default**, no need to l…
y in the material,
so the model never does the arithmetic. Pass `as…| Paramètre | Type | Description |
|---|---|---|
| name* | string | — |
| soul | string | — |
| task | string | — |
| tools | — | — |
| skills | — | — |
| knowledge_bases | — | — |
| model | — | — |
| published | boolean | — |
| alias | string | — |
| ask_forms | boolean | — |
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 `add_tools` / `re…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=[...]` are **full-list replacement** — items you didn't read first get pushed out. To "add one / remove one", use `add_tools` / `re…
| Paramètre | Type | Description |
|---|---|---|
| name* | string | — |
| soul | — | — |
| task | — | — |
| tools | — | — |
| add_tools | — | — |
| remove_tools | — | — |
| skills | — | — |
| add_skills | — | — |
| remove_skills | — | — |
| knowledge_bases | — | — |
| add_knowledge_bases | — | — |
| remove_knowledge_bases | — | — |
| model | — | — |
| published | — | — |
| greeting | — | — |
| auto_greeting | — | — |
| ask_forms | — | — |
| auto_suggest | — | — |
| suggest_prompt | — | — |
| reasoning | — | — |
| grounding_required | — | — |
list_toolsList tool names assignable to agents, with their descriptions (incl. the tenant's connected MCP tools).List tool names assignable to agents, with their descriptions (incl. the tenant's connected MCP tools).
Aucun schéma d’entrée n’a été publié pour cet outil.
list_mcp_serversList the MCP servers connected in this tenant's tool library (read-only; secret fields omitted).List the MCP servers connected in this tenant's tool library (read-only; secret fields omitted).
Aucun schéma d’entrée n’a été publié pour cet outil.
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
(`{public_base}/s/<toke…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 to talk to the agent you must create a share. The response carries a directly openable chat link (`{public_base}/s/<toke…
| Paramètre | Type | Description |
|---|---|---|
| agent_name* | string | — |
| label | string | — |
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).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 humans (see create_share).
| Paramètre | Type | Description |
|---|---|---|
| agent_name* | string | — |
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 delete the old…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 page, and the browser tab's title. **Renaming a share is this call**; you never need to create a replacement and delete the old…
| Paramètre | Type | Description |
|---|---|---|
| agent_name* | string | — |
| token* | string | — |
| label | — | — |
| theme_color | — | — |
| highlight_color | — | — |
| logo_url | — | — |
| input_mode | — | — |
| launcher | — | — |
| theme | — | — |
| custom_css | — | — |
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 configure (required).…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's entry page, so each agent is its own app). - `agent`: the agent name whose install branding to configure (required).…
| Paramètre | Type | Description |
|---|---|---|
| agent* | string | — |
| icon_source_url | string | — |
| install_prompt | string | — |
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**: add a CNAME at…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 client's domain, and the TLS certificate is issued automatically. **Have the client configure DNS first**: add a CNAME at…
| Paramètre | Type | Description |
|---|---|---|
| domain* | string | — |
| agent_alias | — | — |
list_skillsList this tenant's skills.List this tenant's skills.
Aucun schéma d’entrée n’a été publié pour cet outil.
get_skillGet one skill's full content (including the complete instructions text).Get one skill's full content (including the complete instructions text).
| Paramètre | Type | Description |
|---|---|---|
| name* | string | — |
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 **mandatory** ("user…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 paradigm (important): instructions are visible only AFTER the model calls load_skill — if calling some tool is **mandatory** ("user…
"when to use" (goes into the system prompt, keep it short);
instruct…| Paramètre | Type | Description |
|---|---|---|
| name* | string | — |
| description | string | — |
| instructions | string | — |
| tools | — | — |
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 automatically at chat t…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/remove one use `add_tools`/`remove_tools` (incremental, idempotent). Tools bound to a skill take effect automatically at chat t…
| Paramètre | Type | Description |
|---|---|---|
| name* | string | — |
| description | — | — |
| instructions | — | — |
| tools | — | — |
| add_tools | — | — |
| remove_tools | — | — |
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 model routing, cap…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 messages N times against the **production** system-prompt assembly, tool schemas and this tenant's actual model routing, cap…
| Paramètre | Type | Description |
|---|---|---|
| agent* | string | — |
| messages* | array | — |
| expect_tool | — | — |
| samples | integer | — |
| loaded | boolean | — |
| skill | — | — |
list_knowledge_basesList this tenant's knowledge bases (with doc/chunk counts and relevance cutoff).List this tenant's knowledge bases (with doc/chunk counts and relevance cutoff).
Aucun schéma d’entrée n’a été publié pour cet outil.
get_knowledge_baseGet one knowledge base's configuration (including the full instructions text shown to the model).Get one knowledge base's configuration (including the full instructions text shown to the model).
| Paramètre | Type | Description |
|---|---|---|
| name* | string | — |
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 should not, or miss…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 decides which ones this question needs; a base whose description is vague or blank gets searched when it should not, or miss…
| Paramètre | Type | Description |
|---|---|---|
| name* | string | — |
| instructions | string | — |
| description | string | — |
| max_distance | — | — |
| top_k | — | — |
update_knowledge_baseUpdate part of a knowledge base — fields you don't pass stay as they are (server-side PATCH merge).Update part of a knowledge base — fields you don't pass stay as they are (server-side PATCH merge).
| Paramètre | Type | Description |
|---|---|---|
| name* | string | — |
| instructions | — | — |
| description | — | — |
| max_distance | — | — |
| top_k | — | — |
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 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`.
| Paramètre | Type | Description |
|---|---|---|
| kb_name* | string | — |
| title* | string | — |
| content* | string | — |
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 `/knowledge-ba…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 the content yourself and call `add_knowledge_text`; for binaries (pdf/docx), upload via the console, or curl `/knowledge-ba…
| Paramètre | Type | Description |
|---|---|---|
| kb_name* | string | — |
| path* | string | — |
| title | — | — |
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 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 chunking: an empty result means this question will be judged "not covered" and the agent will answer "not in the knowledge base".
| Paramètre | Type | Description |
|---|---|---|
| kb_name* | string | — |
| query* | string | — |
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", "how many
per cate…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, filter numerically or aggregate**, so "how many documents", "which ones are between 1000 and 2000 words", "how many per cate…
er has to quote something the model must not invent:
- `identity…| Paramètre | Type | Description |
|---|---|---|
| name* | string | — |
| roles | — | — |
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` 0,
493 with `w…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 surfaced three data problems nobody knew about: 1,058 documents with `page_count` 0, 505 with `reading_level` 0, 493 with `w…
| Paramètre | Type | Description |
|---|---|---|
| name* | string | — |
patch_knowledge_indexprivilégié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 by illustrator", "drop the cover link". The model may only emit add/modify/remove/refused
— it cannot rewrite the table, so…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 by illustrator", "drop the cover link". The model may only emit add/modify/remove/refused — it cannot rewrite the table, so…
| Paramètre | Type | Description |
|---|---|---|
| name* | string | — |
| request* | string | — |
| apply | boolean | — |
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_instructions
— determine…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 | storyline_ai_trigger | storyline_ai_criteria | skill_description | skill_instructions | kb_description | kb_instructions — determine…
text to work better as an AI system prompt; returns the improved text.
…| Paramètre | Type | Description |
|---|---|---|
| field* | string | — |
| current | string | — |
| hint | string | — |
| context | — | — |
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 fold them into…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 empty text has nothing to diagnose). Typical flow: diagnose_prompt first, pick the suggestions you want, then fold them into…
| Paramètre | Type | Description |
|---|---|---|
| field* | string | — |
| current* | string | — |
| context | — | — |
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 away.
messages…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 **business-domain gate** — a vague task lets out-of-domain requests through, a narrow one turns real customers away. messages…
| Paramètre | Type | Description |
|---|---|---|
| agent* | string | — |
| messages* | array | — |
| samples | integer | — |
| expect | — | — |
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 {plan, backend,…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 before trusting the feature in production, or to see how the agent's `task` constrains the steps. Returns {plan, backend,…
| Paramètre | Type | Description |
|---|---|---|
| agent* | string | — |
| goal* | string | — |
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.Usage 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.
| Paramètre | Type | Description |
|---|---|---|
| group | string | — |
tenant_infoThis tenant's basic info and quota (plus custom-domain binding status, if any).This tenant's basic info and quota (plus custom-domain binding status, if any).
Aucun schéma d’entrée n’a été publié pour cet outil.
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"|"ops"), url and a…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 term means, or how to build something on the platform. Returns top passages with title, layer ("concept"|"ops"), url and a…
| Paramètre | Type | Description |
|---|---|---|
| query* | string | — |
| k | integer | — |
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` (click through…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 / oauth:* / proxy), email (if any), space/session/document counts, last-24h token usage, and a `console_url` (click through…
| Paramètre | Type | Description |
|---|---|---|
| q | string | — |
| sort | string | — |
| limit | integer | — |
| cursor | string | — |
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.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 detail page.
| Paramètre | Type | Description |
|---|---|---|
| uid* | string | — |
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-opened** (no…List 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-opened** (no…
| Paramètre | Type | Description |
|---|---|---|
| uid* | string | — |
| limit | integer | — |
| cursor | string | — |
list_page_contextsList all page playbooks of this tenant (with match rules, greeting mode, position).List all page playbooks of this tenant (with match rules, greeting mode, position).
Aucun schéma d’entrée n’a été publié pour cet outil.
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, which also ranks hi…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, what they usually worry about"; do NOT write facts like prices or quotas (those belong in a knowledge base, which also ranks hi…
| Paramètre | Type | Description |
|---|---|---|
| key* | string | — |
| label | string | — |
| context | string | — |
| url_pattern | — | — |
| greeting | — | — |
| questions | — | — |
| greeting_mode | string | — |
| position | integer | — |
| is_default | boolean | — |
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 default
playbo…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" (one `*` short, one path level too many) — and in production the only symptom is visitors silently getting the default playbo…
| Paramètre | Type | Description |
|---|---|---|
| url | string | — |
| key | string | — |
page_context_statsOpen counts and suggested-question click counts per playbook — find copy nobody clicks.Open counts and suggested-question click counts per playbook — find copy nobody clicks.
Aucun schéma d’entrée n’a été publié pour cet outil.
list_storylinesList this tenant's storylines (optionally filtered by agent). Includes state, version, default flag.List this tenant's storylines (optionally filtered by agent). Includes state, version, default flag.
| Paramètre | Type | Description |
|---|---|---|
| agent | — | — |
get_storylineGet one storyline's full definition (whole graph + profile_schema + top-level fields).Get one storyline's full definition (whole graph + profile_schema + top-level fields).
| Paramètre | Type | Description |
|---|---|---|
| storyline_id* | string | — |
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
untaken branche…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" (default, no UI), "named" (a banner with the storyline name only), "trail" (banner + read-only view where untaken branche…
| Paramètre | Type | Description |
|---|---|---|
| agent_name* | string | — |
| key* | string | — |
| name | string | — |
| description | string | — |
| graph | — | — |
| profile_schema | — | — |
| is_default | boolean | — |
| user_visibility | string | — |
| on_complete | string | — |
| next_storyline_id | — | — |
| allow_agent_enroll | boolean | — |
| enroll_trigger | string | — |
| concurrency | string | — |
| learner_visibility | — | — |
| entry | string | — |
| display_name | string | — |
| allow_exit | boolean | — |
| show_profile | boolean | — |
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 affect only **fu…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 the person (shared across sessions); "session" = progress belongs to the case (one run per session). Changes affect only **fu…
| Paramètre | Type | Description |
|---|---|---|
| storyline_id* | string | — |
| agent_name* | string | — |
| key* | string | — |
| name | — | — |
| description | — | — |
| graph | — | — |
| profile_schema | — | — |
| is_default | — | — |
| user_visibility | — | — |
| learner_visibility | — | — |
| entry | — | — |
| display_name | — | — |
| allow_exit | — | — |
| show_profile | — | — |
| on_complete | — | — |
| expected_version | — | — |
| next_storyline_id | — | — |
| allow_agent_enroll | — | — |
| enroll_trigger | — | — |
| concurrency | — | — |
validate_storylineValidate the storyline graph (entry / dead ends / unreachable / dangling / cross-line targets
/ rule dimensions). Returns {ok, errors}. Must pass before publishing.Validate the storyline graph (entry / dead ends / unreachable / dangling / cross-line targets / rule dimensions). Returns {ok, errors}. Must pass before publishing.
| Paramètre | Type | Description |
|---|---|---|
| storyline_id* | string | — |
publish_storylinePublish a storyline: validates first (blocking errors → 422), then freezes an immutable
version and marks it published.Publish a storyline: validates first (blocking errors → 422), then freezes an immutable version and marks it published.
| Paramètre | Type | Description |
|---|---|---|
| storyline_id* | string | — |
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).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).
| Paramètre | Type | Description |
|---|---|---|
| storyline_id* | string | — |
clone_storylineClone a storyline into a new draft (new key, unpublished, doesn't claim default, no chain
pointer) for tweaking.Clone a storyline into a new draft (new key, unpublished, doesn't claim default, no chain pointer) for tweaking.
| Paramètre | Type | Description |
|---|---|---|
| storyline_id* | string | — |
export_storylineExport a portable storyline JSON (schema_version + definition; no tenant/version/id) for
backup, migration or re-import.Export a portable storyline JSON (schema_version + definition; no tenant/version/id) for backup, migration or re-import.
| Paramètre | Type | Description |
|---|---|---|
| storyline_id* | string | — |
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 the system supp…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 export_storyline (schema_version + graph + profile_schema + top-level fields). Version-aware: payloads newer than the system supp…
| Paramètre | Type | Description |
|---|---|---|
| payload* | object | — |
| override_agent_name | — | — |
50 outils sur 50 ont publié une description.
Les noms et descriptions d’outils sont écrits par l’éditeur et affichés tels quels, comme du texte inerte. Ce sont les chaînes qu’un client MCP transmet à un modèle, alors Forge y recherche des motifs d’injection de prompt — tout constat apparaît avec l’analyse de sécurité ci-dessus. « Privilégié » est une correspondance de mot-clé sur le nom de l’outil, pas un audit de ce qu’il fait : un nom anodin peut tout de même tout faire.
Build and run grounded business agents over MCP: agents, knowledge bases, skills, Storylines.
+ 10 de plus observés sur cette entrée.
Les noms cliquables ouvrent l’index Forge de toutes les entrées observées exposant cet outil. Parcourir tous les outils indexés.
Cette entrée ne publie aucun paquet npm : Forge n'a donc pas d'arbre de dépendances pour elle. C'est une lacune de couverture — pas une affirmation qu'elle n'a aucune dépendance.