The Tool Registry System is the centralized catalog of 200+ built-in tool definitions (powering 1000+ executable functions) that AI agents and workflow blocks invoke. Each tool represents a specific operation—such as sending a Slack message, querying a database, or searching the web—provided by external service integrations.
The registry defines the Tool Schemas, parameter visibility (User vs. LLM), and execution logic. It serves as the bridge between the high-level Natural Language instructions from an LLM and the low-level API calls executed by the system.
Key Technical Concepts:
apps/sim/tools/registry.ts file importing all available tools apps/sim/tools/registry.ts1-255The Tool Registry sits between the Block Registry (which organizes the UI components) and the Tool Executor (which handles the actual network requests).
Sources: apps/sim/tools/registry.ts1-255 apps/sim/tools/index.ts37-138 apps/sim/blocks/registry.ts1-130 apps/sim/blocks/blocks/agent.ts2
Every tool in the registry implements the ToolConfig interface. This configuration dictates how the tool appears to an LLM and how the request is structured.
A tool definition typically includes:
id, name, description, and version.The system uses visibility flags to control the "Surface Area" of a tool:
user-or-llm: Visible in the Block UI for manual entry AND shared with the LLM for autonomous tool calling apps/sim/tools/utils.ts155-183user-only: Visible only in the UI (e.g., configuration settings like timeout) apps/sim/tools/utils.ts155-183llm-only: Hidden from the UI, populated only by the AI (e.g., complex internal flags) apps/sim/tools/utils.ts155-183hidden: Not visible to either; used for internal state or default overrides apps/sim/tools/utils.ts155-183Example: HTTP Request Tool Schema
| Parameter | Type | Visibility | Purpose |
|---|---|---|---|
url | string | user-or-llm | The target endpoint |
method | string | user-or-llm | GET, POST, etc. |
timeout | number | user-only | Execution limit (User-defined) |
retries | number | hidden | Internal retry count |
Sources: apps/sim/tools/utils.ts155-183 apps/sim/tools/types.ts24-28
The registry contains over 200 service-specific modules. These are imported into the main registry to be used by the AgentBlock and individual integration blocks.
| Category | Service Modules | Example Tools |
|---|---|---|
| CRM | apollo, hubspot, salesforce | apolloPeopleSearchTool, hubspotUpdateContactTool |
| DevOps | github, gitlab, cloudflare | githubCreatePRTool, cloudflarePurgeCacheTool |
| Communication | slack, discord, gmail | slackPostMessageTool, gmailSendTool |
| Data/Search | airtable, algolia, google_search | airtableListRecordsTool, algoliaSearchTool |
| AI/ML | browser_use, apify, arxiv | browserUseRunTaskTool, apifyRunActorSyncTool |
Sources: apps/sim/tools/registry.ts1-255 apps/docs/content/docs/en/tools/meta.json1-181 apps/sim/blocks/registry.ts1-130
The system includes utilities to manage tool versions and resolve IDs during workflow execution.
Tools often have multiple versions (e.g., notion_search vs notion_search_v2). The registry uses getLatestVersionTools to ensure that when a user adds a tool, they default to the most recent implementation.
Sources: apps/sim/tools/utils.ts17-71 apps/sim/tools/registry.ts1-255
Before execution, the system merges parameters from three sources:
ToolConfig.params.The function validateRequiredParametersAfterMerge performs a final check to ensure all required parameters marked as user-or-llm are present apps/sim/tools/utils.ts33-34
Sources: apps/sim/tools/utils.ts155-183 apps/sim/tools/index.ts33-34
For tools that support "Bring Your Own Key" (BYOK) or Sim Studio's hosted keys, the registry interacts with a key injection system in apps/sim/tools/index.ts.
getBYOKKey is called to see if the workspace has provided its own credential apps/sim/tools/index.ts67-79acquireKey from getHostedKeyRateLimiter() selects a managed key in a round-robin fashion apps/sim/tools/index.ts81-95hostedKeyRateLimited telemetry event and initiates exponential backoff via executeWithRetry apps/sim/tools/index.ts171-205Sources: apps/sim/tools/index.ts49-137 apps/sim/tools/index.ts171-205 apps/sim/lib/api-key/byok.ts2
To maintain a consistent look across the 200+ tools, the system uses an auto-generated icon mapping.
apps/sim/components/icons.tsx contains SVG definitions for every service (e.g., AirtableIcon, SlackIcon) apps/sim/components/icons.tsx1-127apps/docs/components/ui/icon-mapping.ts maps tool IDs (e.g., airtable) to their respective React components apps/docs/components/ui/icon-mapping.ts184-310OAuthRequiredModal uses OAUTH_PROVIDERS to display the correct branding and requested scopes to the user apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/panel/components/editor/components/sub-block/components/credential-selector/components/oauth-required-modal.tsx:48-62.Sources: apps/sim/components/icons.tsx1-127 apps/docs/components/ui/icon-mapping.ts184-310 apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/panel/components/editor/components/sub-block/components/credential-selector/components/oauth-required-modal.tsx:48-62, apps/sim/lib/oauth/oauth.ts57-210
Refresh this wiki