Overview

Discovery modes

Mode tools/list advertises Best for
lazy toolport_status, toolport_search_tools, toolport_call_tool, toolport_fetch_result Capable models; constant context regardless of server count
grouped The 4 meta-tools plus one help_<server> per server Weaker or local models (e.g. a 7B)
full toolport_status, toolport_fetch_result and the scoped catalog (server__tool) Debugging, or small setups where full schemas are affordable

Lazy#

The model searches with toolport_search_tools, then calls with toolport_call_tool. Context stays the same size no matter how many servers you connect.

Grouped#

Instead of inventing a search query, the model picks a server by name. help_stripe with the query refund returns stripe__create_refund, ready to call with toolport_call_tool.

Context cost is roughly 4 plus the number of servers, so grouped fits a handful of tool-heavy servers, like Stripe's 587 tools behind one help_stripe. It is not worth it for many tiny servers.

Grouped mode adds no new execution surface. Every call still goes through toolport_call_tool, with the same approval, destructive-call gate, scope checks and result shaping as lazy and full.

Full#

Every tool in scope is exposed directly. Useful for clients that already have native tool search, such as Claude Code and Codex.

Semantic search (optional)#

Lazy search ranks tools lexically by default. To blend in embeddings for paraphrased queries, point it at any /v1/embeddings endpoint (LM Studio, Ollama or a cloud provider):

TOOLPORT_SEMANTIC=on
TOOLPORT_EMBED_ENDPOINT=<your-endpoint>/v1/embeddings
TOOLPORT_EMBED_MODEL=<model>

TOOLPORT_EMBED_KEY and TOOLPORT_EMBED_BLEND are optional.

Code mode#

Code mode (toolport_run_script) is on by default; a Settings kill switch turns it off, and TOOLPORT_CODE_MODE=1 force-enables it. Each in-script tool call still respects profile scope and human approval. Scripts get a 60-second wall-clock budget, at most four run at once, and each worker has a 512 MiB allocation budget.

Code mode is not a security boundary. Rely on profile scope and approvals, not on the script sandbox.

Updated

Was this page helpful?