{
  "access": "public",
  "type": "reference",
  "format": "markdown",
  "title": "Toolsmith Tools Reference",
  "chunked": true,
  "url": "https://library.datagrout.ai/toolsmith-tools",
  "summary": "Create, refine, browse, and invoke reusable saved skills.",
  "content_markdown": "# Toolsmith Tools\n\nCreate, refine, browse, and invoke reusable saved skills.\n\nToolsmith is the capability-building surface of DataGrout. Use it when you want to turn a goal into a reusable skill, revise an existing skill, inspect what is already available, or execute a saved skill directly with fresh input data.\n\n---\n\n## `toolsmith.forge@1`\n\nCreate a new capability from a natural-language goal.\n\nDepending on the goal, Forge can produce a reusable direct-query skill, a workflow-oriented skill, or a transformation-oriented skill. The result can be saved for later use or returned for immediate execution.\n\n### Parameters\n\n| Parameter | Type | Required | Description |\n|-----------|------|----------|-------------|\n| `goal` | string | yes | What you want the saved skill to do |\n| `integration` | string | no | Preferred integration or system to target |\n| `entity` | string | no | Helpful domain hint such as `Lead`, `Invoice`, or `Customer` |\n| `save_as_skill` | boolean | no | Persist the result as a saved skill |\n| `skill_name` | string | no | Name to use if saving |\n| `skill_visibility` | string | no | Visibility level for the saved skill |\n\n### Example\n\n```json\n{\n  \"name\": \"data-grout@1/toolsmith.forge@1\",\n  \"arguments\": {\n    \"goal\": \"find leads created this week with email and company\",\n    \"integration\": \"salesforce\",\n    \"entity\": \"Lead\",\n    \"save_as_skill\": true,\n    \"skill_name\": \"Recent Leads\"\n  }\n}\n```\n\n### Typical response fields\n\n- `skill_id` when the result is saved\n- `tool` and `args` when the result is immediately callable\n- `integration` when the skill is tied to a specific source\n- `ctc_id` when a certified saved skill is minted\n\n### Cost\n\n5 base credits plus LLM usage. Saving a certified skill may add certificate-related cost.\n\n---\n\n## `toolsmith.temper@1`\n\nRefine or fork an existing skill.\n\nTemper is the update path for reuse. Use it to narrow a filter, add a field, adjust output shape, or create a derivative of an existing saved skill.\n\n### Parameters\n\n| Parameter | Type | Required | Description |\n|-----------|------|----------|-------------|\n| `goal` | string | yes | What should change |\n| `skill_id` | string | conditional | Saved skill to refine |\n| `tool_name` | string | conditional | Existing callable tool to refine |\n| `mode` | string | no | `update`, `fork`, or automatic selection |\n| `save_as_skill` | boolean | no | Persist the result |\n| `skill_name` | string | no | Name for the updated or forked skill |\n\n### Example\n\n```json\n{\n  \"name\": \"data-grout@1/toolsmith.temper@1\",\n  \"arguments\": {\n    \"skill_id\": \"skill_abc123\",\n    \"goal\": \"also filter by west region\",\n    \"mode\": \"fork\",\n    \"save_as_skill\": true,\n    \"skill_name\": \"West Region Leads\"\n  }\n}\n```\n\n### Notes\n\n- Owners can update in place when appropriate.\n- Forking creates a new reusable skill.\n- Toolsmith keeps reuse boundaries intact so protected skills can be refined without exposing private implementation detail.\n\n### Cost\n\n3 or 5 base credits depending on the refinement path, plus LLM usage.\n\n---\n\n## `toolsmith.catalog@1`\n\nBrowse saved skills and get execution hints.\n\nCatalog is the discovery surface for saved capabilities. It returns public annotations, ownership hints, and a ready-to-use `call_via_perform` payload for execution through `discovery.perform`.\n\n### Parameters\n\n| Parameter | Type | Required | Description |\n|-----------|------|----------|-------------|\n| `filter` | string | no | Search by name or description |\n| `integration` | string | no | Filter by integration |\n| `source_type` | string | no | Filter by origin such as `forge`, `temper`, or `manual` |\n| `include_public` | boolean | no | Include public skills outside your own |\n| `limit` | integer | no | Max results |\n\n### Example\n\n```json\n{\n  \"name\": \"data-grout@1/toolsmith.catalog@1\",\n  \"arguments\": {\n    \"filter\": \"leads\",\n    \"limit\": 5\n  }\n}\n```\n\n### Cost\n\nZero credits.\n\n---\n\n## `toolsmith.invoke@1`\n\nExecute a saved catalog skill directly by `skill_id`.\n\nUse this when you already know which saved skill you want and simply need to run it against fresh inputs. `toolsmith.run` remains an alias for compatibility.\n\n### Parameters\n\n| Parameter | Type | Required | Description |\n|-----------|------|----------|-------------|\n| `skill_id` | string | yes | Saved skill identifier returned by Toolsmith |\n| `inputs` | object | no | Input payload for the saved skill |\n| `args` | object | no | Alias for `inputs` |\n\n### Example\n\n```json\n{\n  \"name\": \"data-grout@1/toolsmith.invoke@1\",\n  \"arguments\": {\n    \"skill_id\": \"skill_abc123\",\n    \"inputs\": {\n      \"lead_status\": \"Open - Not Contacted\"\n    }\n  }\n}\n```\n\n### Cost\n\nStandard tool-call cost. Any additional credits depend on what the saved skill actually does.\n\n---\n\n## Calling Saved Skills\n\nYou have two supported execution paths:\n\n1. Use `toolsmith.invoke` with `skill_id` and `inputs`.\n2. Use `discovery.perform` with `skill_id` and `inputs`.\n\nExample via `discovery.perform`:\n\n```json\n{\n  \"name\": \"data-grout@1/discovery.perform@1\",\n  \"arguments\": {\n    \"skill_id\": \"skill_abc123\",\n    \"inputs\": {\n      \"lead_status\": \"Open - Not Contacted\"\n    }\n  }\n}\n```\n\n---\n\n## When To Use Toolsmith\n\n| Scenario | Tool |\n|----------|------|\n| Create a reusable capability from a goal | `toolsmith.forge` |\n| Refine an existing skill | `toolsmith.temper` |\n| Browse what saved skills already exist | `toolsmith.catalog` |\n| Run a saved skill directly against fresh data | `toolsmith.invoke` |\n"
}