← WebMCP Directory

Tool tree

gogomj5010.github.io

Developer ToolsTools verified
Website
A website hands an AI agent a fixed set of buttons. Toolsmith lets the agent build one that is missing — and lets you decide whether it keeps it.
Explore capabilities
    read_workbenchAnswer

    Inspect the data currently loaded in the Toolsmith workbench: its column names, row count, and a few sample rows. Call this FIRST, before forging a tool, so the code you write matches the real column names.

    View tool JSON
    {
      "name": "read_workbench",
      "kind": "answer",
      "impl": "imperative",
      "description": "Inspect the data currently loaded in the Toolsmith workbench: its column names, row count, and a few sample rows. Call this FIRST, before forging a tool, so the code you write matches the real column names.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "sample_rows": {
            "type": "integer",
            "description": "How many sample rows to return (default 3, max 20)."
          }
        }
      },
      "page": "/toolsmith/"
    }
    forge_toolAction

    Create a BRAND NEW WebMCP tool on this page and expose it to yourself. Use this whenever you need a capability this page does not already have — do not apologise for a missing tool, forge it. The `code` you pass is the BODY of a JavaScript function with the signature (input, data, helpers) and it must RETURN a JSON-serialisable value. • input — the arguments the caller passes, matching input_schema • data — the workbench rows, as an array of plain objects (call read_workbench first) • helpers — { today(), parseDate(v), daysUntil(v), num(v), sum(arr), groupBy(rows,key), sortBy(rows,key,dir) } The code runs in a locked-down Web Worker: there is NO network, NO DOM, NO storage, and a 3 second limit. Write pure computation only. Unless the human has switched on auto-approve, the forged tool starts in a PENDING state: a person reads your code and clicks Approve before it is registered. Tell the user to look at the Forge panel.

    View tool JSON
    {
      "name": "forge_tool",
      "kind": "act",
      "impl": "imperative",
      "description": "Create a BRAND NEW WebMCP tool on this page and expose it to yourself. Use this whenever you need a capability this page does not already have — do not apologise for a missing tool, forge it.\nThe `code` you pass is the BODY of a JavaScript function with the signature (input, data, helpers) and it must RETURN a JSON-serialisable value.\n  • input   — the arguments the caller passes, matching input_schema\n  • data    — the workbench rows, as an array of plain objects (call read_workbench first)\n  • helpers — { today(), parseDate(v), daysUntil(v), num(v), sum(arr), groupBy(rows,key), sortBy(rows,key,dir) }\nThe code runs in a locked-down Web Worker: there is NO network, NO DOM, NO storage, and a 3 second limit. Write pure computation only.\nUnless the human has switched on auto-approve, the forged tool starts in a PENDING state: a person reads your code and clicks Approve before it is registered. Tell the user to look at the Forge panel.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "Tool name: letters, digits, underscore or dash, 1-64 chars."
          },
          "description": {
            "type": "string",
            "description": "What the tool does and when to call it, written for another agent to read."
          },
          "input_schema": {
            "type": "string",
            "description": "A JSON Schema object for the arguments, given as a JSON string. Use {\"type\":\"object\",\"properties\":{}} if it takes none."
          },
          "code": {
            "type": "string",
            "description": "The JavaScript function body. Must return a value."
          }
        },
        "required": [
          "name",
          "description",
          "code"
        ]
      },
      "page": "/toolsmith/"
    }
    list_forged_toolsAnswer

    List every tool forged on this page, with its current status (pending, live, retired) and how many times it has been called. Use it to check whether a tool you forged has been approved yet.

    View tool JSON
    {
      "name": "list_forged_tools",
      "kind": "answer",
      "impl": "imperative",
      "description": "List every tool forged on this page, with its current status (pending, live, retired) and how many times it has been called. Use it to check whether a tool you forged has been approved yet.",
      "inputSchema": {
        "type": "object",
        "properties": {}
      },
      "page": "/toolsmith/"
    }
    revise_toolAction

    Replace the code and/or schema of a tool that was already forged. A live tool is unregistered and returns to PENDING so a human re-approves the new version — the same review gate as forging. Use this when a tool you wrote threw an error or returned the wrong shape.

    View tool JSON
    {
      "name": "revise_tool",
      "kind": "act",
      "impl": "imperative",
      "description": "Replace the code and/or schema of a tool that was already forged. A live tool is unregistered and returns to PENDING so a human re-approves the new version — the same review gate as forging. Use this when a tool you wrote threw an error or returned the wrong shape.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "code": {
            "type": "string",
            "description": "New function body. Omit to keep the current one."
          },
          "input_schema": {
            "type": "string",
            "description": "New JSON Schema as a JSON string. Omit to keep the current one."
          },
          "description": {
            "type": "string"
          }
        },
        "required": [
          "name"
        ]
      },
      "page": "/toolsmith/"
    }
    retire_toolAction

    Permanently unregister a forged tool. Toolsmith aborts the AbortSignal the tool was registered with, so it disappears from document.modelContext immediately and can no longer be called by anyone.

    View tool JSON
    {
      "name": "retire_tool",
      "kind": "act",
      "impl": "imperative",
      "description": "Permanently unregister a forged tool. Toolsmith aborts the AbortSignal the tool was registered with, so it disappears from document.modelContext immediately and can no longer be called by anyone.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          }
        },
        "required": [
          "name"
        ]
      },
      "page": "/toolsmith/"
    }