@tpmjs/registry-execute
Execute a tool from the TPMJS registry by toolId. Use registrySearchTool first to find toolIds.
Test @tpmjs/registry-execute (registryExecuteTool) with AI-powered execution
0/2000 characters
Install this tool and use it with the AI SDK
npm install @tpmjs/registry-executepnpm add @tpmjs/registry-executeyarn add @tpmjs/registry-executebun add @tpmjs/registry-executedeno add npm:@tpmjs/registry-executeimport { registryExecuteTool } from '@tpmjs/registry-execute';import { generateText } from 'ai';
import { openai } from '@ai-sdk/openai';
import { registryExecuteTool } from '@tpmjs/registry-execute';
const result = await generateText({
model: openai('gpt-4o'),
tools: { registryExecuteTool },
prompt: 'Your prompt here...',
});
console.log(result.text);How AI agents can use this tool
Use after finding a tool with registrySearchTool. Execute the tool by its toolId with the required parameters.
(params: Record<string, unknown>, toolId: string, env?: Record<string, unknown>) => Promise<unknown>Available configuration options
toolIdstringTool identifier from registrySearchTool (format: 'package::name')
paramsobjectParameters to pass to the tool
envobjectEnvironment variables (API keys) if required by the tool
Schema extracted: 3/1/2026, 4:25:31 AM
Execute tools from the TPMJS registry in any AI SDK agent. Tools run in a secure sandbox - no local installation required.
npm install @tpmjs/registry-execute # or pnpm add @tpmjs/registry-execute
import { streamText } from 'ai'; import { anthropic } from '@ai-sdk/anthropic'; import { registrySearchTool } from '@tpmjs/registry-search'; import { registryExecuteTool } from '@tpmjs/registry-execute'; const result = streamText({ model: anthropic('claude-sonnet-4-20250514'), tools: { registrySearch: registrySearchTool, registryExecute: registryExecuteTool, }, system: `You have access to the TPMJS tool registry. Use registrySearch to find tools, then registryExecute to run them.`, prompt: 'Search for web scraping tools and scrape https://example.com', }); // The agent can now: // 1. Search for tools: registrySearch({ query: "web scraping" }) // 2. Execute found tools: registryExecute({ toolId: "@firecrawl/ai-sdk::scrapeTool", params: { url: "..." } })
Execute a tool from the TPMJS registry by its toolId.
| Name | Type | Required | Description |
|---|---|---|---|
toolId | string | Yes | Tool identifier (format: package::name) |
params | object | Yes | Parameters to pass to the tool |
env | object | No | Environment variables (API keys) if required |
// Execute a web search tool const result = await registryExecuteTool.execute({ toolId: '@exalabs/ai-sdk::webSearch', params: { query: 'latest AI news' }, env: { EXA_API_KEY: 'your-api-key' }, }); // Result: // { // toolId: '@exalabs/ai-sdk::webSearch', // executionTimeMs: 1234, // output: { results: [...] } // }
{ "toolId": "@exalabs/ai-sdk::webSearch", "executionTimeMs": 1234, "output": { ... } }
| Variable | Default | Description |
|---|---|---|
TPMJS_API_URL | https://tpmjs.com | Base URL for the registry API |
TPMJS_EXECUTOR_URL | https://executor.tpmjs.com | URL for the sandbox executor |
To use your own TPMJS registry and executor:
export TPMJS_API_URL=https://registry.mycompany.com export TPMJS_EXECUTOR_URL=https://executor.mycompany.com
Many tools require API keys to function (e.g., web scraping tools need a Firecrawl key, search tools need an Exa key). The recommended approach is to wrap registryExecuteTool with your pre-configured keys.
import { tool } from 'ai'; import { registryExecuteTool } from '@tpmjs/registry-execute'; // Pre-configure your API keys const API_KEYS: Record<string, string> = { FIRECRAWL_API_KEY: process.env.FIRECRAWL_API_KEY!, EXA_API_KEY: process.env.EXA_API_KEY!, }; // Create a wrapped version that auto-injects keys export const registryExecute = tool({ description: registryExecuteTool.description, parameters: registryExecuteTool.parameters, execute: async ({ toolId, params }) => { return registryExecuteTool.execute({ toolId, params, env: API_KEYS }); }, });
Now use the wrapped tool in your agent:
import { streamText } from 'ai'; import { anthropic } from '@ai-sdk/anthropic'; import { registrySearchTool } from '@tpmjs/registry-search'; import { registryExecute } from './tools'; // Your wrapped version const result = streamText({ model: anthropic('claude-sonnet-4-20250514'), tools: { registrySearch: registrySearchTool, registryExecute, // Keys are auto-injected }, system: `You have access to the TPMJS tool registry. Use registrySearch to find tools, then registryExecute to run them.`, prompt: 'Scrape https://example.com and summarize the content', });
Search returns required keys: When you search for a tool, the response includes requiredEnvVars:
{ "toolId": "@firecrawl/ai-sdk::scrapeTool", "requiredEnvVars": ["FIRECRAWL_API_KEY"] }
Your wrapper injects keys: The wrapped tool automatically passes your configured keys to the executor.
Keys are injected into sandbox: The executor injects these as environment variables in the isolated Deno runtime where the tool runs.
Some tools don't require any API keys (like @tpmjs/createblogpost). They work with or without the wrapper.
MIT
Downloads/month
382
GitHub Stars
0
Quality Score