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.
npx agentmods add skills/adolfousier/opencrabs/dynamic-toolsnpx skills add adolfousier/opencrabs --skill dynamic-toolsgit clone --depth 1 https://github.com/adolfousier/opencrabsWrote 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.
[](https://agentmods.dev/skills/adolfousier/opencrabs/dynamic-tools)<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>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.
| Model | Per session | Once 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 |
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}}" 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:
-
$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-fileflags 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" -
{{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}}"""
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.
- 3d ago First seen · 182 lines · 36 tokens per session scan A 0dbd42b1e298
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.
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.
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…
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.
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…
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.
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.