Skip to content
Scalekit Docs

Tool calling

List raw tool schemas for custom adapters

scalekit.tools returns raw tool schemas for custom agent adapters.

Use this when you need tool definitions for frameworks or your own executor. For connect + execute, use Connected accounts. These methods raise on 4xx/5xx. See Error handling.

Pick a list method:

  • list_tools — workspace catalog
  • list_scoped_tools — tools already bound to one identifier (the list you pass to an LLM)

list_available_tools is not in the Python SDK. Use GET /api/v1/tools/available or the Node listAvailableTools method.

classToolsClient
#asynctools.list_tools

Lists the workspace catalog. Use this when you need every tool in the environment, not tools bound to one user.

paramfilterFilter

Filter by provider, identifier, or tool name

parampage_sizeint

Maximum tools per page.

parampage_tokenstr

Opaque cursor from a previous list response

returnsListToolsResponse

List tools.

from scalekit.v1.tools.tools_pb2 import Filter
response = scalekit_client.tools.list_tools(
filter=Filter(query="send message"),
page_size=50,
)
classToolsClient
#asynctools.list_scoped_tools

Lists tools already bound to one identifier. Use this when you need the list a user is authorized to call.

paramidentifierstr

User connected account identifier Required.

paramfilterScopedToolFilter

Optional. Filter by providers, tool names, or connection names. connection_names is the Connection name from the dashboard, not a provider slug.

parampage_sizeint

Maximum tools per page.

parampage_tokenstr

Opaque cursor from a previous list response

returnsListScopedToolsResponse

List scoped tools.

from scalekit.v1.tools.tools_pb2 import ScopedToolFilter
response = scalekit_client.tools.list_scoped_tools(
"user@example.com",
filter=ScopedToolFilter(
connection_names=["github-connect"],
),
page_size=50,
)
classToolsClient
#asynctools.execute_tool

Low-level tool execution.

paramtool_namestr

Registered tool name to execute Required.

paramidentifierstr

End-user identifier.

paramparamsdict

Tool arguments matching the tool input schema

paramconnected_account_idstr

Connected account ID (ca_…) when you already know it

returnsExecuteToolResponse

ExecuteToolResponse.

# Low-level ToolsClient (tool_name, identifier, params)
response = scalekit_client.tools.execute_tool(
tool_name="gmail_fetch_mails",
identifier="user@example.com",
params={"query": "is:unread", "max_results": 5},
)

Note: Need a tool Scalekit doesn’t provide? See Build custom tools to proxy any provider API through a connected account.