Skip to main content
Glama

ToolForge MCP

ToolForge MCP is a governed registry of reusable Python tools for AI agents. It lets agents search approved tools by intent, run approved tools with JSON input, register newly generated scripts as drafts, and manage tool lifecycle through approval, updates, deprecation, and rollback.

The MVP is MCP-only. It runs over stdio by default and does not include a web UI or HTTP server.

Features

  • Register Python scripts as draft reusable tools

  • Approve reviewed tool versions for execution

  • Search approved tools by semantic-style intent with keyword/tag fallback

  • Run approved tools through a subprocess JSON contract

  • Log every run to SQLite

  • Seed safe default tools on first startup

  • Update, deprecate, and rollback tool versions

Related MCP server: Tool Box MCP Server

Runtime Paths

By default, ToolForge stores metadata and runtime tool files locally:

data/toolforge.db
tools/

Override these paths with:

export TOOLFORGE_DB_PATH=/path/to/toolforge.db
export TOOLFORGE_TOOLS_DIR=/path/to/tools
export TOOLFORGE_WORK_DIR=/path/to/work

MCP Server

Run the server with:

uv run toolforge-mcp

or:

python3 server.py

Connect MCP Clients

ToolForge MCP is a local stdio MCP server. The MCP client starts the process, then discovers the server instructions and available tools at connection time.

Use absolute paths in client configuration so the server can start from any working directory. Replace /absolute/path/to/toolforge-mcp with your local checkout path.

Install runtime dependencies before connecting a client:

cd /absolute/path/to/toolforge-mcp
uv sync --extra dev

The --extra dev option installs test dependencies and optional libraries used by the default seed tools, such as PDF and image helpers. Local semantic embeddings are optional because they pull a larger ML dependency stack. To enable them, run:

uv sync --extra dev --extra semantic

If you do not use uv, create a Python environment and install the package dependencies from pyproject.toml.

Codex

Codex reads MCP servers from ~/.codex/config.toml, or from a project-scoped .codex/config.toml in trusted projects. The Codex CLI and IDE extension share this configuration.

CLI setup:

codex mcp add toolforge --env TOOLFORGE_DB_PATH=/absolute/path/to/toolforge-mcp/data/toolforge.db --env TOOLFORGE_TOOLS_DIR=/absolute/path/to/toolforge-mcp/tools --env TOOLFORGE_WORK_DIR=/absolute/path/to/toolforge-mcp/work -- uv --directory /absolute/path/to/toolforge-mcp run toolforge-mcp

Equivalent ~/.codex/config.toml entry:

[mcp_servers.toolforge]
command = "uv"
args = ["--directory", "/absolute/path/to/toolforge-mcp", "run", "toolforge-mcp"]
startup_timeout_sec = 20
tool_timeout_sec = 120

[mcp_servers.toolforge.env]
TOOLFORGE_DB_PATH = "/absolute/path/to/toolforge-mcp/data/toolforge.db"
TOOLFORGE_TOOLS_DIR = "/absolute/path/to/toolforge-mcp/tools"
TOOLFORGE_WORK_DIR = "/absolute/path/to/toolforge-mcp/work"

In the Codex TUI, run /mcp to confirm that toolforge is connected.

Claude Code

Claude Code can add local stdio MCP servers with claude mcp add. The -- separator is important: everything after it is the command used to start the MCP server.

CLI setup:

claude mcp add \
  --env TOOLFORGE_DB_PATH=/absolute/path/to/toolforge-mcp/data/toolforge.db \
  --env TOOLFORGE_TOOLS_DIR=/absolute/path/to/toolforge-mcp/tools \
  --env TOOLFORGE_WORK_DIR=/absolute/path/to/toolforge-mcp/work \
  --transport stdio \
  toolforge \
  -- uv --directory /absolute/path/to/toolforge-mcp run toolforge-mcp

Project-scoped .mcp.json example:

{
  "mcpServers": {
    "toolforge": {
      "command": "uv",
      "args": ["--directory", "/absolute/path/to/toolforge-mcp", "run", "toolforge-mcp"],
      "env": {
        "TOOLFORGE_DB_PATH": "/absolute/path/to/toolforge-mcp/data/toolforge.db",
        "TOOLFORGE_TOOLS_DIR": "/absolute/path/to/toolforge-mcp/tools",
        "TOOLFORGE_WORK_DIR": "/absolute/path/to/toolforge-mcp/work"
      },
      "timeout": 120000
    }
  }
}

Inside Claude Code, use /mcp to inspect server status. Project-scoped MCP servers may require workspace trust approval before they become active.

Cursor

Cursor reads MCP servers from JSON configuration. Use a project-scoped .cursor/mcp.json when ToolForge should be available only for this repository, or a user-level MCP configuration when you want it available across projects.

Project-scoped .cursor/mcp.json example:

{
  "mcpServers": {
    "toolforge": {
      "command": "uv",
      "args": ["--directory", "/absolute/path/to/toolforge-mcp", "run", "toolforge-mcp"],
      "env": {
        "TOOLFORGE_DB_PATH": "/absolute/path/to/toolforge-mcp/data/toolforge.db",
        "TOOLFORGE_TOOLS_DIR": "/absolute/path/to/toolforge-mcp/tools",
        "TOOLFORGE_WORK_DIR": "/absolute/path/to/toolforge-mcp/work"
      }
    }
  }
}

After editing Cursor MCP settings, reload Cursor or restart the agent session, then confirm that the ToolForge tools appear in Cursor's MCP/tools panel.

Without uv

If uv is not available, install the project into a virtual environment and use that environment's Python directly:

cd /absolute/path/to/toolforge-mcp
python3 -m venv .venv
. .venv/bin/activate
python3 -m pip install -e ".[dev]"
# Optional semantic embeddings:
# python3 -m pip install -e ".[dev,semantic]"

Then replace the MCP command with:

{
  "command": "/absolute/path/to/toolforge-mcp/.venv/bin/python",
  "args": ["/absolute/path/to/toolforge-mcp/server.py"]
}

Agent Governance Pack

ToolForge includes copy-ready governance examples for teams that want Codex, Claude Code, and Cursor to consistently reuse MCP tools instead of creating throwaway scripts.

See governance/ for:

  • Codex AGENTS.md guidance and config.toml MCP example

  • Claude Code CLAUDE.md guidance and .mcp.json example

  • Cursor .mdc rule and .cursor/mcp.json example

The shared policy is:

  1. Search ToolForge before creating utility scripts.

  2. Run an approved tool when one exists.

  3. Register newly generated reusable utility scripts as draft tools.

  4. Approve tools only after human or authorized workflow review.

Setup Script

Use the setup script to install project-scoped governance and MCP config for Codex, Claude Code, and Cursor. Running the script without arguments prints help and does not write files:

python3 scripts/setup_agent_governance.py

Pass explicit options to install governance/config files:

python3 scripts/setup_agent_governance.py \
  --agents all \
  --target-project /path/to/your/project \
  --toolforge-dir /absolute/path/to/toolforge-mcp

Preview changes without writing files:

python3 scripts/setup_agent_governance.py --agents all --target-project /path/to/your/project --dry-run

Configure one agent at a time:

python3 scripts/setup_agent_governance.py --agents codex --target-project /path/to/your/project
python3 scripts/setup_agent_governance.py --agents claude --target-project /path/to/your/project
python3 scripts/setup_agent_governance.py --agents cursor --target-project /path/to/your/project

The script updates managed ToolForge sections idempotently and preserves other MCP servers in JSON config files.

Stored Tool Contract

Stored scripts must:

  • read one JSON object from stdin

  • write one JSON object to stdout

  • exit nonzero on failure

Default Seed Tools

On first startup, ToolForge seeds these approved tools:

  • validate_json_schema

  • clean_csv_file

  • generate_markdown_report

  • resize_image

  • extract_text_from_pdf

The seed operation is idempotent and recorded in SQLite.

License

Apache License 2.0

Available Tools

9 tools
approve_toolB

Approve a reviewed draft or tested tool version so it becomes available for search and execution. Use this only after a human or authorized approval workflow has confirmed the tool is safe and useful.

ParametersJSON Schema
NameRequiredDescriptionDefault
notesNo
tool_idYes
versionYes
approved_byYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description alone must disclose behavioral traits. It mentions that the tool makes a version available for search and execution, but does not elaborate on side effects, authorization requirements, reversibility, or any impact on existing versions. This is insufficient for safe usage.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description consists of two concise, front-loaded sentences that convey the core purpose and usage guidance without any fluff or redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool has 4 parameters with 0% schema coverage, no annotations, and an output schema that is not mentioned. The description only covers the high-level action but fails to explain parameters, expected return value, or any pitfalls, leaving the agent ill-equipped to invoke the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, meaning the input schema has no descriptions for parameters. The description adds no explanation for any of the 4 parameters (tool_id, version, approved_by, notes), leaving their semantics entirely to the schema definition. This is a critical gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's action: 'Approve a reviewed draft or tested tool version so it becomes available for search and execution.' It uses a specific verb (approve) and a concrete resource (tool version), and it's distinct from sibling tools like deprecate_tool or register_tool.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly says 'Use this only after a human or authorized approval workflow has confirmed the tool is safe and useful,' providing clear context for when to use the tool. However, it does not mention when not to use it or suggest alternative tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

deprecate_toolA

Mark a ToolForge tool as deprecated so it remains visible for history and audit purposes but is no longer recommended or used by default. Use this when a tool is obsolete, replaced, unsafe for normal use, or no longer preferred.

ParametersJSON Schema
NameRequiredDescriptionDefault
reasonYes
tool_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden. It explains that the tool 'remains visible for history and audit purposes but is no longer recommended or used by default,' but does not mention reversibility, permission requirements, or side effects.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, no wasted words. First sentence defines purpose and consequence; second sentence lists use cases. Information is front-loaded and every part adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's relative simplicity (2 required params, no enums, no nested objects) and presence of an output schema, the description is fairly complete. It covers purpose, usage scenarios, and behavioral impact. Could add minor details on error conditions or reversal.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must add meaning for the two required parameters. It implicitly refers to 'tool_id' and 'reason' in context, but does not clarify expected values, formats, or constraints for 'reason', nor specify if 'tool_id' is an identifier from another tool.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Mark a ToolForge tool as deprecated') and the resource ('ToolForge tool'), with specific verbs and scope. It distinguishes from sibling tools like 'register_tool' or 'update_tool' by focusing on deprecation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly lists conditions for use: 'when a tool is obsolete, replaced, unsafe for normal use, or no longer preferred.' However, it does not explicitly state when not to use it or suggest alternatives, which would strengthen guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_toolA

Get detailed metadata for a ToolForge tool, including description, tags, lifecycle status, versions, active approved version, checksum, approval state, and usage history. Use this before running, approving, updating, deprecating, or explaining a tool.

ParametersJSON Schema
NameRequiredDescriptionDefault
tool_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description carries full burden. It accurately describes the tool as read-only (get metadata) but does not explicitly state it has no side effects or require authentication. Behavior is implied but not fully disclosed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences with no wasted words. The purpose is front-loaded, and usage context is provided in the second sentence. Ideal structure for quick parsing.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Output schema exists, so return value details are not required. The description covers what metadata is included. However, the parameter is not described, which is a minor gap given only one parameter exists.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%. The description does not explain the tool_id parameter beyond its name. It lists return fields but fails to clarify the parameter's format or constraints, leaving the agent without necessary guidance.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it retrieves detailed metadata for a specific ToolForge tool, listing specific fields (description, tags, lifecycle status, etc.). It distinguishes from siblings like list_tools which likely only list overviews.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly states 'Use this before running, approving, updating, deprecating, or explaining a tool,' providing clear when-to-use context and differentiating from alternative actions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_toolsA

List ToolForge tools with optional filters such as status, tag, language, or name. Use this to browse the registry, inspect available capabilities, or find tools before choosing one to view, approve, update, or run.

ParametersJSON Schema
NameRequiredDescriptionDefault
tagNo
nameNo
statusNo
languageNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description must disclose behavior. States it lists with filters but omits pagination, auth, or read-only nature. Minimal but non-misleading for a browse tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, no redundancy. Front-loaded with action and key information. Every word serves a purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given existence of output schema, return value explanation is unneeded. Covers main purpose and usage context. Filters are listed but lack specifics. Differentiates from search_tools well.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so description must add value. Mentions parameter names (status, tag, language, name) but no details on valid values or format. Adds basic mapping but lacks depth.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states it lists tools with optional filters. Verb 'List' is specific to browsing. Distinguishes from siblings like approve_tool, run_tool by focusing on discovery before actions.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly tells when to use: to browse registry, inspect capabilities, or find tools before viewing/approving/updating/running. Implicitly excludes these sibling tools for their specific actions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

register_toolB

Register a new reusable Python script as a draft ToolForge tool. Use this when an agent or user has created a useful script that should be saved for review, approval, versioning, and future reuse.

ParametersJSON Schema
NameRequiredDescriptionDefault
codeYes
nameYes
tagsYes
versionNo1.0.0
languageYes
descriptionYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full responsibility for behavioral disclosure. It mentions 'draft' and the tool lifecycle but does not detail what happens upon registration (e.g., immediate visibility, approval required, side effects). It also lacks information on authorization needs or error conditions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise with two sentences. The first sentence states the primary purpose, and the second provides usage context. It is front-loaded and efficient, though it could be slightly more compact by removing redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity of 6 parameters (5 required), no annotations, and the existence of an output schema (not explained), the description is incomplete. It does not explain what 'draft' entails, the expected return value, or potential errors. Critical usage context is missing for an agent to use this tool correctly without additional knowledge.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It implicitly lists parameters (name, description, language, code, tags, version) but does not explain their meaning, format, or constraints. There is a contradiction: the description says 'Python script' but the schema allows any language via a string parameter. This lack of detail and the inconsistency reduce clarity.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action 'register' and the resource 'a new reusable Python script as a draft ToolForge tool'. It distinguishes from sibling tools (e.g., create vs. update/deprecate) by specifying 'new' and 'draft', and outlines the lifecycle purposes (review, approval, versioning, future reuse).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly says when to use: when an agent or user has created a useful script that should be saved for review, approval, etc. It implies this is for new scripts, but does not explicitly exclude updating existing tools or mention alternatives like update_tool. Still, it provides clear context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

rollback_toolA

Restore an earlier approved version of a ToolForge tool as the active version. Use this when a newer approved version is broken, unsafe, or less reliable than a previous approved version.

ParametersJSON Schema
NameRequiredDescriptionDefault
tool_idYes
target_versionYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must carry the behavioral burden. It indicates a write operation (changing active version) but does not disclose side effects, reversibility, permission requirements, or what happens to the current version. This leaves significant gaps.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, no superfluous words. The first sentence states the action, the second gives usage context. Efficient and well-structured.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's moderate complexity (2 required params, no enums) and presence of an output schema, the description covers the core purpose and usage but fails to document parameters and behavioral details. It is minimally complete but has clear gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 0% coverage meaning no parameter descriptions exist. The description does not explain what tool_id or target_version represent, nor the expected format for target_version. This forces the agent to assume or guess.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'restore' and the resource 'an earlier approved version of a ToolForge tool as the active version'. It distinguishes this tool from siblings like approve_tool and deprecate_tool by specifying it deals with version rollback.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit scenarios for use: when a newer approved version is broken, unsafe, or less reliable. It does not explicitly state when not to use or mention alternatives, but the guidance is clear and actionable.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

run_toolA

Execute an approved ToolForge tool with JSON input and return JSON output. Use this when the correct approved tool has been selected and the task should be performed through a governed, logged execution.

ParametersJSON Schema
NameRequiredDescriptionDefault
tool_idYes
input_jsonYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, but description mentions 'governed, logged execution' and 'return JSON output', which adds behavioral context. However, does not detail side effects, error handling, or authentication needs.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences, front-loaded with the action, no wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Has output schema so return values are covered, but description lacks prerequisites (e.g., tool must be approved) and does not clarify that input_json must match the tool's expected format. Could be more complete for a complex execution tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, and the description provides no details about the parameters (tool_id and input_json). It only mentions 'JSON input' without explaining what the input should contain.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it executes an approved ToolForge tool, distinguishing it from siblings like register_tool, approve_tool, and list_tools. The verb 'Execute' and resource 'approved ToolForge tool' are specific.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly says 'Use this when the correct approved tool has been selected and the task should be performed through a governed, logged execution.', providing clear context for when to use it and contrasting with other tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_toolsA

Search approved reusable ToolForge tools by intent, task description, name, tags, or capability. Uses semantic search with keyword and tag fallback. Use this before generating new code when an existing approved tool may already solve the task.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
queryYes
include_deprecatedNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden for behavioral disclosure. It mentions using 'semantic search with keyword and tag fallback,' giving insight into how the search works. However, it does not disclose potential limitations, authentication requirements, or whether the search is readonly. For a search tool, this is adequate but not rich.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, no fluff. Every word adds value. The structure is front-loaded with the purpose, followed by how it works and when to use it. Efficient and clear.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given that there is an output schema (not shown but indicated), the description need not explain return values. The tool has 3 parameters with only 1 required, and the description covers usage context and search method. It is complete enough for an agent to decide when to invoke it, though the missing parameter descriptions slightly lower completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% (no parameter descriptions in the schema). The description explains that the query parameter can be used to search by 'intent, task description, name, tags, or capability,' but does not mention the 'limit' or 'include_deprecated' parameters. Since the schema provides no descriptions, the description should cover all parameters, but it only partially addresses one.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: searching for approved reusable ToolForge tools by multiple criteria (intent, task description, name, tags, or capability). It uses specific verbs ('Search') and a clear resource ('approved reusable ToolForge tools'), distinguishing it from siblings like 'list_tools' (likely just listing) and 'get_tool' (retrieving a specific tool).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit guidance: 'Use this before generating new code when an existing approved tool may already solve the task.' This tells the agent when to use the tool (before new code generation). However, it does not explicitly mention when not to use it or provide direct alternatives, though the context from sibling tools implies alternatives exist for different needs.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_toolA

Create a new draft version of an existing ToolForge tool with updated code and a changelog. Use this when a tool needs a bug fix, improvement, new behavior, or compatibility update without replacing the current approved version immediately.

ParametersJSON Schema
NameRequiredDescriptionDefault
tool_idYes
versionYes
new_codeYes
changelogYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description bears full burden. It discloses that the operation creates a draft and does not replace the current approved version immediately, indicating a non-destructive mutation. However, it does not clarify whether previous drafts are overwritten, permission requirements, or rate limits.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences long, front-loaded with the primary action, and every word adds value. No redundant or extraneous information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given moderate complexity, 0% schema coverage, and no annotations, the description provides the core purpose and usage scenarios but lacks parameter details and deeper behavioral context (e.g., effect on existing drafts). The presence of an output schema partially compensates for return value clarity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so description must explain parameters. It only mentions 'updated code' and 'changelog', covering new_code and changelog implicitly. The required parameters tool_id and version are not described at all, leaving the agent to infer from context (tool_id likely identifies the tool, version likely a version string).

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description explicitly states 'Create a new draft version of an existing ToolForge tool with updated code and a changelog', which clearly identifies the verb (create), resource (draft version), and specific actions (updated code, changelog). It distinguishes from siblings like approve_tool and register_tool by emphasizing 'draft' and 'without replacing the current approved version'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit scenarios: 'when a tool needs a bug fix, improvement, new behavior, or compatibility update'. It also implies exclusivity by stating 'without replacing the current approved version immediately', but does not explicitly list when not to use or name alternative tools like rollback_tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 9 tool updatesv0.1.0
    • First observedapprove_tool
    • First observeddeprecate_tool
    • First observedget_tool
    • First observedlist_tools
    • First observedregister_tool
    • First observedrollback_tool
    • First observedrun_tool
    • First observedsearch_tools
    • First observedupdate_tool

TDQS

A3.9/5.0
Disambiguation5/5

Each tool has a clear, distinct purpose covering the full tool lifecycle: registering, viewing, listing, searching, running, approving, deprecating, updating, and rolling back. No two tools have overlapping responsibilities.

Naming Consistency4/5

All tools follow a verb_noun pattern (e.g., approve_tool, get_tool), though there is a minor inconsistency between singular 'tool' and plural 'tools' in names like list_tools and search_tools vs others.

Tool Count5/5

9 tools is well-scoped for a tool registry server, covering all necessary operations without unnecessary bloat. Each tool serves a distinct and necessary function.

Completeness4/5

The tool surface covers the core lifecycle: registration, update, approval, execution, deprecation, and rollback. Minor gaps exist, such as the absence of a reject or unapprove operation, but overall it is fairly complete.

Maintenance

ActivitySlowing
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/ThisIsCKM-org/toolforge-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server