Tools & discovery
Toolkits, tools, and the search → schema → execute loop.
Stacklink exposes hundreds of provider operations without flooding your model's context. The trick is discovery: the agent searches for what it needs, loads signed exact contracts, then executes.
Toolkits and tools
A toolkit is a provider (Zoho Books, Razorpay, Gmail, …). A tool is one model-callable operation inside it. Every tool carries metadata the agent and the platform rely on:
| Field | Meaning |
|---|---|
key | Stable identifier, e.g. zoho_books.invoices.create_invoice. |
capability | Logical grouping, e.g. invoices.write. |
mutationLevel | none (read), write, or destructive. |
inputSchema / outputSchema | JSON Schema the model fills and receives. |
searchDescriptor | Intent, tags, and examples that power semantic search. |
The discovery loop
Search by intent
STACKLINK_SEARCH_TOOLS accepts up to four atomic task queries. Each query returns at most six
compact candidates, and the whole response contains at most twelve unique tools.
Load signed exact contracts
STACKLINK_GET_TOOL_CONTRACTS accepts up to six signed contractRef values returned by search.
The reference is bound to the session, tool key, and contract version.
Execute
STACKLINK_EXECUTE_TOOLS runs one or more selected contracts in parallel or sequentially with
bounded concurrency. An arbitrary toolKey is rejected.
const search = await session.call('STACKLINK_SEARCH_TOOLS', {
queries: [{ id: 'refund', task: 'Refund a Razorpay payment', providerKey: 'razorpay' }],
});
const contracts = await session.call('STACKLINK_GET_TOOL_CONTRACTS', {
contractRefs: [search.results[0].tools[0].contractRef],
});
const result = await session.call('STACKLINK_EXECUTE_TOOLS', {
executions: [{ contractRef: search.results[0].tools[0].contractRef, input: { /* ... */ } }],
});Why not just expose every tool?
Some providers expose 500+ operations (Zoho Books alone has ~574). Mounting them all would blow past context limits and confuse the model. Discovery keeps the active toolset small and relevant, and lets one set of meta-tools serve every provider.
Caching
Tool search, exact contracts, and application catalog pages are cached because they change infrequently. Discovery responses can be bypassed with a cache control flag when you need freshly-reconciled results — for example right after enabling a new provider.
Direct execution
Host applications can browse providers through cursor-paginated APIs, 50 summaries at a time, and can use typed HTTP/SDK execution methods. Browsing responses never become model definitions.
Search and run 400+ tools, free
Every search, schema fetch, and tool run is a standard op — and the free plan includes 20,000 a month, hard-capped.