dynamic-tools

dynamic-tools is a skill for Claude Code, Codex from adolfousier/opencrabs. It costs 36 tokens per session (1,298 once invoked), scanned A, original, MIT.

A runtime tool manager that lets you define shell commands or HTTP requests in a tools.toml file and make them callable without restarting the agent.

In plain words
What is it for?
It helps set up temporary or reusable command-line and web-service tools, inspect their status, and reload tool definitions while the agent is running.
Why use it?
It removes the need to rebuild or restart the agent whenever you add, remove, enable, disable, or change a tool.

Skill for Claude CodeCodex

Install

Getting it into your agent

One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.

agentmods
npx agentmods add skills/adolfousier/opencrabs/dynamic-tools
Any agent
npx skills add adolfousier/opencrabs --skill dynamic-tools
Clone the repo
git clone --depth 1 https://github.com/adolfousier/opencrabs

Made for: Claude Code, Codex.

Wrote this? Show the measurements

A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.

agentmods badge for dynamic-tools

README.md
[![agentmods](https://agentmods.dev/badge/skills/adolfousier/opencrabs/dynamic-tools.svg)](https://agentmods.dev/skills/adolfousier/opencrabs/dynamic-tools)
Your own site
<a href="https://agentmods.dev/skills/adolfousier/opencrabs/dynamic-tools"><img src="https://agentmods.dev/badge/skills/adolfousier/opencrabs/dynamic-tools.svg" alt="Measured on agentmods" height="20"></a>
Per session 36 Skills are progressive disclosure: only the name and description are preloaded; the body loads when the skill is used.
When invoked 1,298 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 1 finding. Scan, not verified.
Origin original No closer match found in the catalogue.
Token cost

What it costs to keep this loaded

Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.

ModelPer sessionOnce invoked
Fable 5 $0.00036 $0.01298
Opus 5 $0.00018 $0.00649
Sonnet 5 $0.00007 $0.00260
Haiku 4.5 $0.00004 $0.00130

Measured 3d ago against content hash 0dbd42b1e298, method: parsed. Prices are Anthropic first-party input rates as of 2026-08-30, from the pricing page.

Security

Grade A, and why

dynamic-tools scanned grade A with 1 finding against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 3d ago.

A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.

Makes network callslowCapability

Not a fault in itself. Listed so you know the mod talks to something, and to what.

command = "curl -s -H \"Authorization: Bearer {{api_key}}\" {{endpoint}}"
src/docs/reference/templates/skills/dynamic-tools/SKILL.md · 182 lines

How it starts

The opening of the file, as written. The whole thing — 182 lines — stays where its author put it; the contents beside it link to each section on GitHub.

Dynamic Tools Reference

Runtime tool creation — define tools in ~/.opencrabs/tools.toml and they become callable immediately without restart or rebuild.

tool_manage Meta-Tool

Action Required What
list Show all dynamic tools with enabled/disabled status
add name, description, executor, method/command Create new tool (persists to tools.toml)
remove name Delete a tool
enable / disable name Toggle without removing
reload Hot-reload from tools.toml

Executor Types

Two executor types, set via the executor field:

Executor Field
executor = "shell" command — shell command string
executor = "http" method, url — HTTP method and endpoint

Parameter Handling

Every tool parameter defined in [[tools.params]] becomes available in two ways:

  1. $OPENCRABS_PARAMS — Environment variable pointing to a temporary JSON file containing all params with their current values. The file is created before the command runs and cleaned up after. Use with --params-file flags or read directly inside scripts:

    command = "/usr/local/bin/mycli send --params-file \"$OPENCRABS_PARAMS\""
    

    Inside a shell script, read the file directly:

    #!/bin/sh
    # $OPENCRABS_PARAMS points to a JSON file with all tool params
    action=$(jq -r '.action // "default"' "$OPENCRABS_PARAMS")
    payload=$(jq -r '.payload // empty' "$OPENCRABS_PARAMS")
    exec mycli "$action" --data "$payload"
    
  2. {{param_name}} — Inline template substitution. Replaced with the string value of the parameter:

    command = "curl -s -H \"Authorization: Bearer {{api_key}}\" {{endpoint}}"
    

Conditional Sections

Wrap template content with {{#param_name}}...{{/param_name}} to include only when the parameter is non-null and non-empty:

command = """curl -s {{#query}}-G --data-urlencode "q={{query}}"{{/query}} {{url}}"""

Read the full file on GitHub · 182 lines

Changes

What this file has done since we first saw it

Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.

  1. 3d ago First seen · 182 lines · 36 tokens per session scan A 0dbd42b1e298

Subscribe to this mod's changes

dynamic-tools is a skill published in the GitHub repository adolfousier/opencrabs (916 stars, last pushed 4d ago), licensed MIT. It adds 36 tokens to every session and 1,298 once invoked, about $0.0002 per session on Opus 5. A static security scan graded it A with 1 finding (makes network calls). No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.

Related

Other skills, from other repositories

compare-harnesses

Diff two scaffolded harnesses (ADR-031). Reports manifest meta drift + host list + per-file fingerprint changes (added/removed/changed). Exits 0 IDENTICAL, 1 DRIFT, 2 missing manifest. Use --bundle for the ADR-031 schema-1 JSON envelope.

ruvnet/metaharness · 66 tokens

create-harness

Scaffold your own focused AI agent harness — pick host (Claude Code, Codex, pi.dev, Hermes), template, agents, skills, and ship a npm-publishable harness with its own npx CLI. Use when a user asks to "create my own agent harness", "scaffold a harness", "make a custom Claude Code plugin like ruflo", or "build a…

ruvnet/metaharness · 89 tokens

diag-harness

Kernel-version skew check (ADR-027). Reports manifest surface + manifest kernel + installed kernel + verdict (match/patch-diff/minor-diff/major-diff). Exits 1 on minor/major skew with a copy-pasteable npm install @metaharness/[email protected] next step. Exits 2 if no .harness/manifest.json at path.

ruvnet/metaharness · 85 tokens

example-harness

Scaffold a ready-made AI agent harness in one command from the 19 published @metaharness/ example packages — 9 host integrations (Claude Code, Codex, Hermes, pi.dev, OpenClaw, RVM, Copilot, OpenCode, GitHub Actions) + 10 vertical pods (devops, research, trading, support, legal, coding, education, sales, gaming…

ruvnet/metaharness · 90 tokens

oia-manifest

Emit .harness/oia-manifest.json declaring layer alignment with the OIA v0.1 9-layer reference architecture. Self-describes the harness's MCP wiring, witness signing, audit log, identity posture (always 'none' at v0.1). --check verifies an existing manifest, --dry-run prints without writing, --json emits to stdout.

ruvnet/metaharness · 79 tokens

repo-genome

7-section readiness scorecard for a LOCAL repo. Reports repo type + agent topology + MCP risk + test confidence + release readiness + recommended harness plan + scorecard. Exit 0 ready, 1 needs-work, 2 blocked. --json for the 6-field scorecard, --bundle for the ADR-031 schema-1 envelope.

ruvnet/metaharness · 73 tokens