(build {:keys [mcp skills skill-defs skill-provider builtins tools agents
disable-tools wait-for]
:as opts})Build a toolkit from every configured source.
opts:
:mcp — an mcp.json string or map (SPEC §2/§0.3)
:skills — a skills root, a seq of roots, or a seq of skill defs (§3)
:skill-defs — skills supplied as DATA, bypassing the filesystem (§3 S1)
:skill-provider — a 0-arg fn producing skill defs, resolved here (§3 S1)
:skills-filter — name->bool allowlist over the skill catalog (§3 S2)
:skill-sample-limit — 0 ⇒ default 10 · n>0 ⇒ cap · -1 ⇒ no <skill_files> (§3 S5)
:disable-skills — names to drop from the catalog; sugar over the filter
:builtins — the §0.11 toggle: false | {:disabled ..} | {:enabled ..} | {:tools {..}}
:agents — remote A2A agents; each advertised skill becomes a tool (§7A)
:tools — extra Tools of your own (native, http, a2a, anything)
:disable-tools — final exposed names to drop, across EVERY source (§4A)
:wait-for — the ONE §10 host resolver. Passed to the MCP source so a
connected server may elicit input mid-tools/call; absent
⇒ the elicitation capability is not advertised at all.
Returns a toolkit plus what it took to get there: {:tools .. :sources .. :skills .. :statuses .. :errors .. :connections .. :wait-for ..}
Every source is ISOLATED (§0.3): a source that fails contributes an error and a status, never an exception. A toolkit with one dead MCP server is still a working toolkit — that is the whole point of the status map.
Build a toolkit from every configured source.
opts:
:mcp — an mcp.json string or map (SPEC §2/§0.3)
:skills — a skills root, a seq of roots, or a seq of skill defs (§3)
:skill-defs — skills supplied as DATA, bypassing the filesystem (§3 S1)
:skill-provider — a 0-arg fn producing skill defs, resolved here (§3 S1)
:skills-filter — name->bool allowlist over the skill catalog (§3 S2)
:skill-sample-limit — 0 ⇒ default 10 · n>0 ⇒ cap · -1 ⇒ no <skill_files> (§3 S5)
:disable-skills — names to drop from the catalog; sugar over the filter
:builtins — the §0.11 toggle: false | {:disabled ..} | {:enabled ..} | {:tools {..}}
:agents — remote A2A agents; each advertised skill becomes a tool (§7A)
:tools — extra Tools of your own (native, http, a2a, anything)
:disable-tools — final exposed names to drop, across EVERY source (§4A)
:wait-for — the ONE §10 host resolver. Passed to the MCP source so a
connected server may elicit input mid-`tools/call`; absent
⇒ the `elicitation` capability is not advertised at all.
Returns a toolkit plus what it took to get there:
{:tools .. :sources .. :skills .. :statuses .. :errors .. :connections .. :wait-for ..}
Every source is ISOLATED (§0.3): a source that fails contributes an error and
a status, never an exception. A toolkit with one dead MCP server is still a
working toolkit — that is the whole point of the status map.(execute tk name args)(execute tk name args ctx)Run a tool by name. A throw becomes an error ToolResult (§0.8).
Run a tool by name. A throw becomes an error ToolResult (§0.8).
(shutdown! tk)Disconnect every MCP connection a toolkit opened. Idempotent.
Disconnect every MCP connection a toolkit opened. Idempotent.
(skills-prompt tk)SPEC §3/§0.6 — the skills preamble for the system prompt.
SPEC §3/§0.6 — the skills preamble for the system prompt.
cljdoc builds & hosts documentation for Clojure/Script libraries
| Ctrl+k | Jump to recent docs |
| ← | Move to previous article |
| → | Move to next article |
| Ctrl+/ | Jump to the search field |