Skip to main content
Glama

</> Delimit

The merge gate for AI-written code, with signed, replayable attestation.

Wrap any AI coding assistant (Claude Code, Codex, Cursor, Gemini CLI) with a governance chain that runs your gates, records what changed, and signs a replayable receipt for every merge.

npm Tests GitHub Action License: MIT Glama

$ delimit wrap -- claude "fix the flaky test in tests/api.spec.ts"

✓ repo_diagnose
✓ security_audit       0 critical · 0 secrets
✓ test_smoke           165/165
✓ changed_files        1
✓ attestation signed   att_a05050eb8e13277e
                       delimit.attestation.v1 · HMAC-SHA256
                       replay → https://delimit.ai/att/att_a05050eb8e13277e

Every wrapped run emits a delimit.attestation.v1 bundle: repo head before/after, changed files, gate results, HMAC-SHA256 signature, and a replay URL. Advisory by default; flip to enforcing when you're ready.


See it in action

Worked example, real OSS repo, every claim verifiable:

For the schema and signing methodology behind every report, see delimit.ai/methodology/mcp-attestation.


Related MCP server: EX MCP Server

Think and Build

Beyond the merge gate, Delimit orchestrates multi-model deliberation and autonomous builds. delimit think dispatches a strategic question to Claude, Codex, Gemini, and Grok; delimit build activates a background daemon that executes ledger tasks through the gate chain. delimit vault manages local secrets (AES-256).

Works across any configuration, from a single model on a budget to a full panel.


Try it in 2 minutes

npx delimit-cli doctor            # 14 prescriptive checks — tells you exactly what to fix
npx delimit-cli status            # Visual dashboard of your entire governance setup
npx delimit-cli simulate          # Dry-run: see what would be blocked before you commit
npx delimit-cli scan              # Instant health grade for your API spec
npx delimit-cli try owner/repo    # Try governance on any GitHub repo

No API keys. No account. No config files.

Pick your first win

Protect my API — catch breaking changes before merge:

npx delimit-cli try
# Creates a sample API, introduces breaking changes, shows what gets blocked.
# Saves a governance report to delimit-report.md

Watch for drift — detect spec changes without review:

npx delimit-cli init        # Sets up governance + drift baseline
# Weekly drift checks run automatically via GitHub Action

Run PR copilot — governance gates on every pull request:

# .github/workflows/api-governance.yml
- uses: delimit-ai/delimit-action@v1
  with:
    spec: api/openapi.yaml
# Posts gate status, violations, and remediation in PR comments

What's New in v4.3

Gate every AI-assisted invocation. Ship the receipts.

  • delimit wrap — pipe claude -p, cursor, aider, codex, or any AI-assisted CLI through a signed governance gate. Snapshots the git diff before/after, runs lint + tests, HMAC-signs an att_* attestation, emits a public replay URL. Advisory by default; --enforce blocks CI on policy violations; --max-time <s> is a kill switch that tags the attestation as a liability_incident and prints a cross-model handoff command.

  • delimit trust-page — renders a directory of attestations into a static HTML trust page + JSON Feed 1.1 feed. Single file, no framework, offline-renderable. Deploy anywhere.

  • delimit ai-sbom — aggregates attestations into a CycloneDX 1.6 bill-of-materials with AI-specific fields (detected models per vendor, tool-call surface, policy gate counts). Pipe straight into procurement.

  • Cross-model by constructionwrap is agnostic to the producer. Same attestation schema whether the pipe upstream is Claude Code, Cursor, Aider, Codex, or Gemini CLI. Switch producers without losing the audit chain.

# Gate any AI-assisted CLI
delimit wrap -- claude -p "add tests for payments"
#   → att_7d556843c84fb881 signed, replay: https://delimit.ai/att/att_7d556843c84fb881

# Kill switch + handoff after 60s wall-clock
delimit wrap --max-time 60 -- cursor edit "refactor auth middleware"
#   → if killed: kind=liability_incident
#   → suggested: delimit wrap -- claude -p "refactor auth middleware"

# Render accumulated attestations as a public trust page
delimit trust-page -o ./trust
#   → ./trust/index.html (+ feed.json)

# Build a CycloneDX-AI bill of materials
delimit ai-sbom -o ./ai-sbom.json
#   → components: 4 models detected, 187 gates run

What's New in v4.20

The highest state of AI governance.

  • delimit doctor -- 14 prescriptive diagnostics. Every failure prints the exact command to fix it. --ci for pipelines, --fix for auto-repair.

  • delimit simulate -- policy dry-run. See what would be blocked before you commit. The terraform plan for API governance.

  • delimit status -- visual terminal dashboard. Policy, specs, hooks, CI, MCP, models, memory, ledger, evidence, git branch. --watch for live refresh.

  • delimit report -- governance report. --since 7d --format md|html|json. Audit-friendly output for PRs and compliance.

  • Memory hardening -- SHA-256 integrity hash + source model tag on every remember. Cross-model trust, verified on every recall.

  • Tag-based publishing -- automated gateway sync, no more version drift between source and npm bundle.

Multi-Model Deliberation

Run your question through 4 AI models simultaneously. They debate each other until unanimous agreement.

delimit deliberate "Should we build rate limiting in-house or use a managed service?"
  Round 1 (independent):
    Claude:  Build in-house. Redis sliding window is 50 lines.
    Gemini:  Build. You already have Redis.
    Codex:   Agree — but add circuit breaker for Redis failures.
    Grok:    Build. Managed service costs $200/mo for 50 lines of code.

  Round 2 (deliberation):
    All models: AGREE

  UNANIMOUS CONSENSUS (2 rounds, confidence 94/100)
  Build rate limiting in-house with Redis + circuit breaker.

3 free deliberations, then BYOK for unlimited. Works with Grok, Gemini, Claude, GPT-4o.

v4.1

  • TUI -- terminal-native Ventures panel, real delimit think and delimit build commands

  • Security hardening -- notify.py stubbed in npm, axios pinned against supply chain attacks

  • Free tier restructure -- deliberations use Gemini Flash + GPT-4o-mini (cost: <$20/mo)

  • Zero-config onboarding -- auto-detect framework, scan, and first evidence in one command

  • Auto-approve tools -- delimit setup configures permissions for Claude Code, Codex, and Gemini CLI

v4.0

  • Toolcard Delta Cache -- SHA256 schema hashing, delta-only transmission, saves tokens

  • Session Phoenix -- cross-model session resurrection with soul capture

  • Handoff Receipts -- structured acknowledgment protocol between agents

  • Cross-Model Audit -- 3 lenses (security, correctness, governance) with deterministic synthesis

  • 4-model deliberation -- Claude + Grok + Gemini + Codex debate until consensus

  • Universal Swarm Triggers -- "Think and Build", "Keep building", "Ask Delimit"

  • Full governance toolkit -- lint, diff, policy, evidence, drift, attestation, and swarm orchestration exposed as MCP tools and CLI subcommands


GitHub Action

Zero-config -- auto-detects your OpenAPI spec:

- uses: delimit-ai/delimit-action@v1

Or with full configuration:

name: API Contract Check
on: pull_request

jobs:
  delimit:
    runs-on: ubuntu-latest
    permissions:
      pull-requests: write
    steps:
      - uses: actions/checkout@v4
        with:
          fetch-depth: 0
      - uses: delimit-ai/delimit-action@v1
        with:
          spec: api/openapi.yaml

That's it. Delimit auto-fetches the base branch spec, diffs it, and posts a PR comment with breaking changes, semver classification, migration guides, and governance gate results.

View on GitHub Marketplace | See a live demo (23 breaking changes)

Example PR comment

Breaking Changes Detected

Change

Path

Severity

endpoint_removed

DELETE /pets/{petId}

error

type_changed

/pets:GET:200[].id (string -> integer)

warning

enum_value_removed

/pets:GET:200[].status

warning

Semver: MAJOR (1.0.0 -> 2.0.0)

Migration Guide: 3 steps to update your integration

Governance Gates

Gate

Status

Chain

API Lint

Pass/Fail

lint -> semver -> gov_evaluate

Policy Compliance

Pass/Fail

policy -> evidence_collect

Security Audit

Pass

security_audit -> evidence_collect

Deploy Readiness

Ready/Blocked

deploy_plan -> security_audit


CLI commands

npx delimit-cli scan                             # Instant spec health grade + recommendations
npx delimit-cli pr owner/repo#123                # Review any GitHub PR for breaking changes
npx delimit-cli quickstart                       # Clone demo project + guided walkthrough
npx delimit-cli try                              # Zero-risk demo — saves governance report
npx delimit-cli demo                             # Self-contained governance demo
npx delimit-cli init                             # Guided wizard with compliance templates
npx delimit-cli init --preset strict             # Initialize with strict policy
npx delimit-cli setup                            # Install into all AI assistants
npx delimit-cli setup --dry-run                  # Preview changes first
npx delimit-cli lint api/openapi.yaml            # Check for breaking changes
npx delimit-cli diff old.yaml new.yaml           # Compare two specs
npx delimit-cli explain old.yaml new.yaml        # Generate migration guide
npx delimit-cli check                            # Pre-commit governance check
npx delimit-cli check --staged --fix             # Check staged files + show guidance
npx delimit-cli hooks install                    # Install git pre-commit hook
npx delimit-cli hooks install --pre-push         # Also add pre-push hook
npx delimit-cli ci                               # Generate GitHub Action workflow
npx delimit-cli ci --strict --dry-run            # Preview strict workflow
npx delimit-cli remember "Redis uses JWT 15min"   # Save a persistent memory
npx delimit-cli recall redis                     # Search memories
npx delimit-cli recall                           # Show recent memories
npx delimit-cli recall --tag deploy --all        # Filter by tag, show all
npx delimit-cli recall --export                  # Export as markdown
npx delimit-cli forget abc123                    # Delete a memory by ID
npx delimit-cli models                            # Configure deliberation API keys (BYOK wizard)
npx delimit-cli models --status                   # Show current model config
npx delimit-cli status                           # Compact dashboard of your Delimit setup
npx delimit-cli doctor                           # Check setup health
npx delimit-cli uninstall --dry-run              # Preview removal
npx delimit-cli wrap -- claude -p "..."          # Gate any AI-assisted CLI + signed attestation (v4.3)
npx delimit-cli wrap --max-time 60 -- codex "..."# With kill switch + handoff on timeout
npx delimit-cli trust-page -o ./trust            # Render attestations into a static trust page
npx delimit-cli ai-sbom -o ./ai-sbom.json        # Build a CycloneDX-AI bill of materials

What the MCP toolkit adds

When installed into your AI coding assistant, Delimit provides tools across two tiers:

Free (no account needed)

  • API governance -- lint, diff, policy enforcement, semver classification

  • Persistent ledger -- track tasks across sessions, shared between all AI assistants

  • Zero-spec extraction -- generate OpenAPI specs from FastAPI, Express, or NestJS source

  • Project scan -- auto-detect specs, frameworks, security issues, and tests

  • Quickstart -- guided first-run that proves value in 60 seconds

Pro

  • Multi-model deliberation -- AI models debate until they agree (free: Gemini Flash + GPT-4o-mini; BYOK: any models)

  • Security audit -- dependency scanning, secret detection, SAST analysis

  • Test verification -- confirms tests ran, measures coverage, generates new tests

  • Memory & vault -- persistent context and encrypted secrets across sessions

  • Evidence collection -- governance audit trail for compliance

  • Deploy pipeline -- governed build, publish, and rollback

  • OS layer -- agent identity, execution plans, approval gates


What It Detects

27 change types (17 breaking, 10 non-breaking) -- deterministic rules, not AI inference. Same input always produces the same result.

Breaking Changes

#

Change Type

Example

1

endpoint_removed

DELETE /users/{id} removed entirely

2

method_removed

PATCH /orders no longer exists

3

required_param_added

New required header on GET /items

4

param_removed

sort query parameter removed

5

response_removed

200 OK response dropped

6

required_field_added

Request body now requires tenant_id

7

field_removed

email dropped from response object

8

type_changed

id went from string to integer

9

format_changed

date-time changed to date

10

enum_value_removed

status: "pending" no longer valid

11

param_type_changed

Query param limit changed from integer to string

12

param_required_changed

filter param became required

13

response_type_changed

Response data changed from array to object

14

security_removed

OAuth2 security scheme removed

15

security_scope_removed

write:pets scope removed from OAuth2

16

max_length_decreased

name maxLength reduced from 255 to 100

17

min_length_increased

code minLength increased from 1 to 5

Non-Breaking Changes

#

Change Type

Example

18

endpoint_added

New POST /webhooks endpoint

19

method_added

PATCH /users/{id} method added

20

optional_param_added

Optional format query param added

21

response_added

201 Created response added

22

optional_field_added

Optional nickname field added to response

23

enum_value_added

status: "archived" value added

24

description_changed

Updated description for /health endpoint

25

security_added

API key security scheme added

26

deprecated_added

GET /v1/users marked as deprecated

27

default_changed

Default value for page_size changed from 10 to 20


Policy presets

npx delimit-cli init --preset strict    # All violations are errors
npx delimit-cli init --preset default   # Balanced (default)
npx delimit-cli init --preset relaxed   # All violations are warnings

Or write custom rules in .delimit/policies.yml:

rules:
  - id: freeze_v1
    name: Freeze V1 API
    change_types: [endpoint_removed, method_removed, field_removed]
    severity: error
    action: forbid
    conditions:
      path_pattern: "^/v1/.*"
    message: "V1 API is frozen. Changes must be made in V2."

Supported formats

  • OpenAPI 3.0 and 3.1

  • Swagger 2.0

  • YAML and JSON


FAQ

How does this compare to Obsidian Mind?

Obsidian Mind is a great Obsidian vault template for Claude Code users who want persistent memory via markdown files. Delimit takes a different approach: it's an MCP server that works across Claude Code, Codex, Gemini CLI, and Cursor. Your memory, ledger, and governance travel with you when you switch models. Delimit also adds API governance (27-type breaking change detection), CI gates, git hooks, and policy enforcement that Obsidian Mind doesn't cover. Use Obsidian Mind if you're all-in on Claude + Obsidian. Use Delimit if you switch between models or need governance.

Does this work without Claude Code?

Yes. Delimit works with Claude Code, Codex (OpenAI), Gemini CLI (Google), and Cursor. The remember/recall commands work standalone with zero config. The MCP server integrates with any client that supports the Model Context Protocol.

Is this free?

The free tier includes API governance, persistent memory, zero-spec extraction, project scanning, and 3 multi-model deliberations. Pro ($10/mo) adds unlimited deliberation, security audit, test verification, deploy pipeline, and agent orchestration. Premium ($50-100/mo) adds priority support and team features. Enterprise is custom: see delimit.ai/pricing.


Telemetry & cloud sync

Short version: none by default. Nothing leaves your machine unless you explicitly configure it.

What's always local (source of truth):

  • ~/.delimit/events/events-YYYY-MM-DD.jsonl — per-tool-call events (tool name, timestamp, status, model id, session id, trace id). No source code, no prompts, no responses.

  • ~/.delimit/ledger/ — your ledger items, work orders, deliberation transcripts.

  • ~/.delimit/attestations/delimit wrap output bundles.

What's OPT-IN (requires you to provide your own Supabase project credentials):

  • gateway/ai/supabase_sync.py mirrors the local event + ledger + work-order + deliberation rows into a Supabase project you own so you can view them in app.delimit.ai. It only activates if you set SUPABASE_URL + SUPABASE_SERVICE_ROLE_KEY environment variables OR provide ~/.delimit/secrets/supabase.json with those credentials. No URL or key is hardcoded in the published package (verify with grep -r aqbdqxnhzqzswdxifksc $(npm root -g)/delimit-cli/ — zero hits).

  • Data scope when enabled: metadata only (tool names, timestamps, IDs, statuses, venture tags). Never source code, prompts, or model responses.

Kill switch: Set DELIMIT_DISABLE_CLOUD_SYNC=1 in your environment to force all sync operations to no-op even if credentials are present. Local files continue to work normally.

# Disable cloud sync for a single invocation
DELIMIT_DISABLE_CLOUD_SYNC=1 delimit lint api/openapi.yaml

# Disable for the shell session
export DELIMIT_DISABLE_CLOUD_SYNC=1

Webhook notifications: gateway/ai/notify.py emits governance events to a webhook endpoint only if you configure DELIMIT_WEBHOOK_URL explicitly. Unset by default.

If you spot another code path that could phone home without disclosure, file an issue. This section is maintained as ship-truth, not aspirational.


MIT License

Available Tools

210 tools
delimit_activateDelimit ActivateA

Activate Delimit and run a readiness checklist.

When to use: as the post-install confirmation that everything is wired up — license, MCP, governance, tests, permissions, premium. When NOT to use: for diagnostic-style debugging of an already activated install (use delimit_diagnose) or first-run discovery (delimit_quickstart).

Sibling contrast: delimit_diagnose investigates issues; delimit_quickstart is the 60-second guided first run; this is the activation + readiness checklist.

Side effects: applies the license key when provided; auto-configures AI-assistant permissions when auto_permissions=True (writes .claude/settings.json). Skipped checks (premium on free tier, no test framework) do not count against the score.

ParametersJSON Schema
NameRequiredDescriptionDefault
license_keyNoOptional license key (e.g. DELIMIT-XXXX-XXXX-XXXX). Empty = free-tier readiness only.
project_pathNoProject directory to check. Default "." (cwd)..
auto_permissionsNoAuto-configure AI assistant permissions (default True).

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.9/5.0
Behavior5/5

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

The description goes well beyond the annotations (readOnlyHint=false, destructiveHint=false) by disclosing concrete side effects: it applies the license key when provided, and when auto_permissions=True it writes .claude/settings.json. It also explains scoring semantics — skipped checks (premium on free tier, no test framework) don't count against the score — which is critical behavioral context an agent could not infer from the schema or annotations. This file-write disclosure is especially valuable since destructiveHint=false might otherwise imply no state changes.

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 compact and superbly organized with labeled sections: core purpose first, then When to use, When NOT to use, Sibling contrast, and Side effects. Every sentence earns its place — there is no filler, and the labeled structure makes it trivially scannable for an agent. The length is justified by the tool's complexity (side effects, multiple checks, sibling ambiguity).

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

Completeness5/5

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

This is a mutation tool with real side effects and scoring behavior, and the description covers every angle an agent needs: purpose, usage conditions, exclusions, sibling differentiation, side effects, parameter effects, and handling of edge cases (skipped checks). The output schema exists, so return values need no explanation. Nothing material is missing for correct selection and invocation.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3 — the schema already documents all three parameters with types, defaults, and individual descriptions. The tool description adds genuine semantic value beyond the schema by explaining the behavioral effect of key parameters: license_key 'applies the license key when provided' and auto_permissions triggers the .claude/settings.json write. This links parameters to consequences rather than just formats, earning a 4.

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 first sentence states a specific verb and resource with a concrete outcome: 'Activate Delimit and run a readiness checklist.' The scope is further pinned down by naming the exact areas checked (license, MCP, governance, tests, permissions, premium), which distinguishes it from the vast sibling list. The explicit sibling contrast against delimit_diagnose and delimit_quickstart makes the tool's identity unmistakable.

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?

The description has an explicit 'When to use' section (post-install confirmation that everything is wired up) and a 'When NOT to use' section that names the correct alternatives: delimit_diagnose for diagnostic debugging and delimit_quickstart for first-run discovery. This is the clearest possible routing guidance — an agent knows exactly when to pick this tool and when to pick a sibling.

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

delimit_agent_checkDelimit Agent CheckA

Check if a model is allowed to perform an action under agent policy.

When to use: as a per-action gate before executing sensitive operations from a non-orchestrator model — verify it has the required permission. When NOT to use: to set / inspect policies overall (use delimit_agent_policy) or for runtime governance evaluation (delimit_gov_evaluate).

Sibling contrast: delimit_agent_policy manages the policy; delimit_gov_evaluate is the runtime governance gate; this is a per-action permission check.

Side effects: read-only on the policy store. Calls ai.agent_policy.check_agent_permission.

ParametersJSON Schema
NameRequiredDescriptionDefault
modelYesAI model name — "claude", "codex", "gemini", "cursor". Required.
actionYesAction to check (e.g. "ledger_write", "deploy"). Required.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior4/5

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

The description discloses side-effect scope ('read-only on the policy store') and names the underlying API call (ai.agent_policy.check_agent_permission), adding value beyond the annotations. Annotations set readOnlyHint=false, but the description clarifies that the policy store itself is not mutated; it could still have other side effects, which is a minor ambiguity.

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?

Well-structured with front-loaded purpose, explicit usage sections, sibling contrast, and side effects. Every sentence earns its place, and the description is concise without sacrificing necessary guidance.

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

Completeness5/5

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

Covers purpose, when to use, when not to use, sibling differentiation, side effects, and the underlying call. With full parameter schema coverage and an output schema present, an agent has essentially everything needed to invoke this tool correctly.

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 description coverage is 100%, with model and action already clearly described in the input schema. The description reinforces the permission-check context but does not add new parameter-level semantics, so the baseline of 3 is appropriate.

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?

States a specific verb and resource: 'Check if a model is allowed to perform an action under agent policy.' The sibling contrast explicitly distinguishes this from delimit_agent_policy and delimit_gov_evaluate, so an agent can identify the tool's unique role.

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?

Provides explicit 'When to use' and 'When NOT to use' guidance, naming the exact alternatives (delimit_agent_policy and delimit_gov_evaluate). This fully routes an agent to the appropriate tool with no inference required.

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

delimit_agent_completeDelimit Agent CompleteA

Close a dispatched agent task by recording the outcome.

When to use: at the end of an engineering subagent's work, to record the result summary and the files touched on the dispatch record. This is the closing step of the dispatch lifecycle (delimit_agent_dispatch -> [subagent runs] -> this). Without calling this, the task remains "dispatched" in the ledger and dashboards will count it as in-flight. When NOT to use: to hand off ownership to a different model (use delimit_agent_handoff), to dispatch a fresh task (delimit_agent_dispatch), or to read task status without closing (delimit_agent_status). Also: do not call repeatedly on the same task_id — the backend treats a second complete as an error.

Sibling contrast: delimit_agent_handoff transfers active ownership to another model (task stays open); this closes ownership entirely. delimit_agent_status is the read-only sibling.

Side effects: writes a completion record via ai.agent_dispatch.complete_task — the task's status flips from "dispatched" to "completed", result and files_changed are persisted, and an audit log entry is appended. files_changed is coerced from a comma string to a list. No license gate on this lifecycle surface. No notification — pair with delimit_notify if the operator needs to be told.

ParametersJSON Schema
NameRequiredDescriptionDefault
resultNoSummary of what was done.
task_idYesTask id from delimit_agent_dispatch. Required.
files_changedNoComma-separated paths of modified files.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.9/5.0
Behavior5/5

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

Goes well beyond the annotations by disclosing the full side-effect profile: writes a completion record, flips task status from 'dispatched' to 'completed', persists result and files_changed, appends an audit log entry, coerces files_changed from a comma string to a list, and confirms no license gate or notification. This level of behavioral disclosure is exemplary.

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 structured into clear labeled sections: purpose, when to use, when not to use, sibling contrast, and side effects. Every sentence carries actionable information with no filler, and the core purpose is front-loaded before the details.

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

Completeness5/5

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

The description fully covers the tool's place in the dispatch lifecycle, its mutation semantics, its exclusions, and its behavioral caveats. Even with an output schema present, nothing needed for correct invocation is missing.

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

Parameters4/5

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

The schema already covers all three parameters (100% coverage), so the baseline is 3. The description adds useful extra semantics by explaining that task_id originates from delimit_agent_dispatch and that files_changed is coerced from a comma string to a list, which the schema does not state.

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 opens with a specific verb and resource: 'Close a dispatched agent task by recording the outcome.' It clearly distinguishes itself from the sibling tools by explicitly contrasting with delimit_agent_dispatch, delimit_agent_handoff, and delimit_agent_status.

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?

Provides an explicit 'When to use' section with a concrete lifecycle position, and a 'When NOT to use' section naming the exact alternative tools. It also warns against repeated calls on the same task_id, which is exactly the kind of disambiguation an agent needs.

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

delimit_agent_dashboardDelimit Agent DashboardA
Read-onlyIdempotent

View the multi-agent orchestration dashboard.

When to use: as a one-shot read of all agent activity grouped by assignee/status — useful for orchestrator status reporting. When NOT to use: for a single task's status (use delimit_agent_status) or to dispatch new work (delimit_agent_dispatch).

Sibling contrast: delimit_agent_status returns raw records; this returns an aggregated dashboard view.

Side effects: read-only. Calls ai.agent_dispatch.get_agent_dashboard.

Args: None.

Returns: Dict with grouped tasks, handoff history, linked ledger items, recent audit trail, next_steps.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.7/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, so the safety profile is covered. The description adds useful behavioral context by stating 'Side effects: read-only', naming the underlying call (ai.agent_dispatch.get_agent_dashboard), and clarifying the aggregated nature of the view. This goes beyond the annotations without contradicting them.

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 well-structured with clear labeled sections: when to use, when not to use, sibling contrast, side effects, args, and returns. It is compact, front-loaded with the core purpose, and every sentence adds value without unnecessary filler.

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

Completeness5/5

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

For a zero-parameter, read-only dashboard tool with an output schema, the description is complete: it explains the purpose, usage boundaries, sibling differences, side effects, underlying function, and a summary of the return value. Nothing needed to correctly select and invoke this tool is missing.

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

Parameters4/5

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

The tool has zero parameters, so the baseline is 4. The description explicitly states 'Args: None', which removes any ambiguity for the agent even though the schema already shows an empty object. There is no parameter semantics to add beyond this.

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 states a specific verb and resource ('View the multi-agent orchestration dashboard') and explicitly distinguishes this tool from siblings: it returns an aggregated dashboard view while delimit_agent_status returns raw records. This makes the tool's purpose unambiguous even among a large sibling list.

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?

The description gives explicit when-to-use guidance ('one-shot read of all agent activity grouped by assignee/status') and when-not-to-use guidance with named alternatives (delimit_agent_status for single task status, delimit_agent_dispatch for dispatching work). This fully routes an agent to the correct tool.

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

delimit_agent_dispatchDelimit Agent DispatchA

Record an engineering-task dispatch with full audit trail.

When to use: as the PLANNING + AUDIT surface when the orchestrator decides to delegate parallelizable engineering work to a subagent. Per the operating model (2026-05-01 revision), actual execution is performed by the Agent tool with subagent_type=engineering; this tool records the intent, assignee, constraints, and eventual outcome so the dispatch is replayable from the ledger. When NOT to use: as an autonomous queue processor expecting auto-execution — this records dispatch but does NOT run the work. Real autonomous queue execution is deferred to a future capability (LED-193 daemon) with strict sandboxing + founder- approval semantics. Also do not use for conversational tasks, sub-5-minute work, or work where no function exists yet.

Sibling contrast: delimit_agent_status reads dispatched task state; delimit_agent_handoff transfers a recorded task to a different model; delimit_agent_complete closes the task with results. Compared to delimit_ledger_add, this is the engineering- work surface with assignee, tools_needed, and constraints schema; ledger items are free-form.

Side effects: writes a new task record to disk via ai.agent_dispatch.dispatch_task (a JSON record in the agent tasks file plus an audit log entry). String list inputs (tools_needed, constraints) are coerced from comma strings to lists. NO subagent is spawned by this call — the caller is responsible for invoking the Agent tool separately. This lifecycle surface is not license-gated in the current build.

ParametersJSON Schema
NameRequiredDescriptionDefault
titleYesShort task title. Required.
contextNoBackground info to seed the executor.
assigneeNoTarget model — "claude", "codex", "gemini", or "any". Default "any".any
priorityNoOne of "P0" (immediate), "P1" (default), "P2".P1
constraintsNoComma-separated constraints (e.g. "no force push").
descriptionNoLonger task description.
tools_neededNoComma-separated MCP tools the work will need.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.9/5.0
Behavior5/5

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

The description thoroughly discloses side effects: it writes a JSON record to disk, adds an audit log entry, coerces comma-separated strings to lists, and does NOT spawn a subagent. It even states that the caller is responsible for invoking the Agent tool separately and notes that this surface is not license-gated. The write behavior is consistent with readOnlyHint=false and destructiveHint=false, so there is no contradiction.

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 long, but every section earns its place: purpose, usage boundaries, sibling differentiation, and side effects are all critical for a tool that could easily be mistaken for an execution tool. Key information is front-loaded with clear headings and the most important caveat ('records dispatch but does NOT run the work') appears early.

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

Completeness5/5

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

For a tool with 7 parameters, false read-only/destructive hints, and an important non-execution caveat, the description is complete. It covers the dispatch lifecycle, side effects, sibling alternatives, coercion behavior, and what the caller must do next. An output schema exists, so return-value documentation is not required.

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

Parameters4/5

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

The schema already has 100% description coverage for all 7 parameters, so the baseline is 3. The tool description adds meaningful semantic value by explaining that tools_needed and constraints are coerced from comma strings to lists, and by framing the parameter set as the engineering-work surface with assignee, tools_needed, and constraints. This goes slightly beyond the schema descriptions.

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 opens with a concrete verb and resource: 'Record an engineering-task dispatch with full audit trail.' It explicitly distinguishes the tool from actual execution by stating it records intent rather than running the work, and it names sibling tools it is not (status, handoff, complete). An agent can immediately understand what this tool does and how it differs from nearby tools.

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?

The description provides dedicated 'When to use' and 'When NOT to use' sections with specific conditions: use as the planning/audit surface when delegating parallelizable engineering work, and avoid for auto-execution, conversational tasks, sub-5-minute work, or missing functions. It also names alternative tools explicitly (delimit_agent_status, delimit_agent_handoff, delimit_agent_complete), leaving no ambiguity about selection.

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

delimit_agent_handoffDelimit Agent HandoffA

Hand off an agent task to a different AI model.

When to use: when an executor is blocked or when cross-model review is required and the next model needs the task's context. When NOT to use: to close out the task (delimit_agent_complete) or create a new one (delimit_agent_dispatch).

Sibling contrast: delimit_agent_complete ends the task; this transfers it to another model.

Side effects: writes a handoff record via ai.agent_dispatch.handoff_task; updates assignee on the task.

ParametersJSON Schema
NameRequiredDescriptionDefault
contextNoNotes for the next model.
task_idYesExisting task id from delimit_agent_dispatch. Required.
to_modelYesTarget model — "claude", "codex", "gemini", etc. Required.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.7/5.0
Behavior5/5

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

Beyond the annotations (readOnlyHint=false, destructiveHint=false), the description discloses concrete side effects: writes a handoff record via ai.agent_dispatch.handoff_task and updates the assignee on the task. This tells the agent exactly what state changes will occur and confirms the operation is a non-destructive but persistent mutation.

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 compact and well-structured, with short labeled sections for usage, exclusions, sibling contrast, and side effects. Every sentence carries distinct information, and the essential purpose is front-loaded in the first line.

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

Completeness5/5

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

For a three-parameter tool with a full input schema, annotations, and an output schema, this description covers when, when-not, how it differs from siblings, and its side effects. Nothing an agent needs to decide whether to call it is missing.

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 description coverage is 100%, so the schema already documents all three parameters clearly. The description adds no new parameter-level details, but it reinforces the context by explaining the handoff scenario and the role of the next model. Baseline 3 is appropriate given the full schema coverage.

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 opening sentence uses a specific verb and resource: 'Hand off an agent task to a different AI model.' It also names the exact sibling it is not (delimit_agent_complete) and clarifies that this transfers, rather than ends, the task. An agent can immediately distinguish it from close-out and dispatch tools without opening schemas.

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?

The description explicitly states both when to use ('when an executor is blocked or when cross-model review is required') and when NOT to use ('to close out the task... or create a new one'), naming the alternative tools. This gives an agent clear, decision-ready routing guidance with no inference required.

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

_delimit_agent_implDelimit Agent ImplA

Manage the agent-task lifecycle — dispatches to one of four actions.

When to use: as the single MCP-registered agent surface (delimit_agent) when the caller wants to pick the lifecycle action by name in one call rather than choosing a specific delimit_agent_* alias. The lifecycle is dispatch (record intent) -> status (read) -> handoff (transfer to another model) -> complete (close). When NOT to use: from internal code paths — prefer the specific alias (delimit_agent_dispatch, delimit_agent_status, delimit_agent_complete, delimit_agent_handoff) so the action's docstring and arg schema show up at the right call site. Do NOT use action="dispatch" expecting a subagent to run — it RECORDS the dispatch, it does not execute it (see Side effects). The related delimit_agent_link / _policy / _check / _dashboard tools share the prefix but are SEPARATE tools, not actions here — passing their names as action= returns an "Unknown action" error.

Sibling contrast: delimit_agent_dispatch / _status / _complete / _handoff are thin aliases that call straight into this implementation with a fixed action; they exist so each action's docstring lives at the right name. This is the dispatch core for those four. Versus delimit_ledger_add: the ledger holds free-form work items; this surface carries engineering-dispatch schema (assignee, tools_needed, constraints) and a per-task audit trail.

Side effects: action="status" is READ-ONLY (loads the task store, no writes). action="dispatch" / "complete" / "handoff" WRITE to the agent task store and append to its audit log. CRITICAL: action="dispatch" records intent only — it persists a task plus a formatted agent_prompt and does NOT spawn or run a subagent. Per the operating model, actual execution is the caller's responsibility via the Agent tool (subagent_type=engineering); this is the planning + audit surface. Dispatch additionally enforces deterministic guards before writing: a kill switch (refuses if ~/.delimit/pause_dispatch exists), a dead- letter circuit breaker (auto-pauses once too many tasks remain un-acknowledged), a ghost-title reject, and a shipped-LED anti- duplicate gate (refuses + auto-closes a task whose LED is already merged to main). assignee="any" is resolved to a concrete model via the task-type router. Every return is wrapped via _with_next_steps. Errors are deterministic ({"error": ...}): an unknown action short- circuits before any backend call.

ParametersJSON Schema
NameRequiredDescriptionDefault
titleNoTask title (action="dispatch" only). Required — the backend rejects empty titles.
actionNoWhich lifecycle operation to perform. One of "dispatch", "status", "complete", "handoff". Default "status". Any other value returns a deterministic {"error": "Unknown action ..."}.status
resultNoSummary of what was done (action="complete" only).
contextNoBackground to seed the executor (action="dispatch") OR notes for the next model (action="handoff"). Unused by status/complete.
task_idNoTask id, e.g. "AGT-A1B2C3D4". Used by status, complete, handoff. Optional for status (empty lists all active tasks); required and validated for complete/handoff.
assigneeNoTarget model "claude"/"codex"/"gemini"/"any" (action="dispatch" only). Default "any", resolved to a concrete model by the router. Invalid values are rejected.any
priorityNo"P0"/"P1"/"P2" (action="dispatch" only). Default "P1"; invalid values are rejected.P1
to_modelNoTarget model for the transfer (action="handoff" only). Required; validated against the allowed models.
constraintsNoComma-separated constraints, e.g. "no force push" (action="dispatch" only). Coerced to a list.
descriptionNoLonger task description (action="dispatch" only).
tools_neededNoComma-separated MCP tools the work will need (action="dispatch" only). Coerced to a list.
files_changedNoComma-separated modified file paths (action="complete" only). Coerced to a list.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.6/5.0
Behavior5/5

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

Beyond the minimal readOnlyHint/destructiveHint annotations, the description discloses exactly which actions read vs write, that dispatch only records intent and never runs a subagent, the deterministic guards (kill switch, circuit breaker, ghost-title reject, anti-duplicate), and the consistent error shape. This fully covers the behavioral profile an agent needs.

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 long, but it is organized into clear sections and front-loaded with the most important usage facts. It loses a point for a couple of deliberate redundancies, such as the repeated warning that dispatch records rather than executes, but overall the density is justified by the tool's four-action complexity.

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

Completeness5/5

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

For a multi-action dispatcher with a large sibling family and 12 parameters, the description covers when to use it, what each action does, side effects, guards, errors, and relationship to aliases and adjacent tools. An output schema exists, so return-value detail is not the description's burden.

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 description coverage is 100%, so the input schema already documents each parameter's action-specific meaning and defaults. The description adds context around dispatch's effect (persisting agent_prompt) but does not materially add parameter-level detail beyond the schema, so the high-coverage baseline of 3 is appropriate.

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 opens with a specific verb and resource ('Manage the agent-task lifecycle') and immediately names the four actions: dispatch, status, handoff, complete. It also distinguishes the tool from the delimit_agent_* aliases and from delimit_ledger_add, so an agent can tell exactly what this surface is for.

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?

Explicit 'When to use' and 'When NOT to use' sections tell the agent to select this combined surface for name-based action selection and to prefer the specific delimit_agent_* aliases from internal code paths. It even warns against expecting dispatch to execute a subagent and names the separate prefix-sharing tools that are not actions.

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

delimit_agent_policyDelimit Agent PolicyA

Set or view per-model governance permissions.

When to use: to inspect or modify the access policy that gates each AI model's operations on the ledger, memory, evidence, deploy, and secrets. When NOT to use: for runtime governance evaluation (use delimit_gov_evaluate) or session policy (delimit_project_config).

Sibling contrast: delimit_gov_evaluate evaluates one action; this configures the per-model policy that those evaluations use.

Side effects: providing any of ledger/memory/deploy/evidence/ secrets/custom_constraints writes via ai.agent_policy.set_agent_policy. Empty/no-changes is read-only.

Access levels for ledger/memory/evidence: "read-only", "read-write", "none". Boolean flags for deploy/secrets: "true" or "false".

ParametersJSON Schema
NameRequiredDescriptionDefault
modelNoAI model name — "claude", "codex", "gemini", "cursor". Empty = list all.
deployNoAllow deploys ("true"/"false").
ledgerNoLedger access level.
memoryNoMemory access level.
secretsNoAllow secret access ("true"/"false").
evidenceNoEvidence access level.
custom_constraintsNoComma-separated constraints, e.g. "no-deploy,no-publish".

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.9/5.0
Behavior5/5

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

Discloses the conditional write side effect: providing any of ledger/memory/deploy/evidence/secrets/custom_constraints writes via ai.agent_policy.set_agent_policy, while empty/no-changes is read-only. This goes well beyond the readOnlyHint: false annotation and gives the agent a precise mental model of when state changes occur.

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?

Organized with labeled sections for purpose, usage, side effects, and value formats. Every sentence contributes meaningful selection or invocation guidance, and the most decision-relevant content is front-loaded.

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

Completeness5/5

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

The description covers purpose, alternatives, side effects, allowed values, and write-versus-read behavior. With an output schema present, no return-format detail is needed; the description fully equips an agent to select and invoke the tool correctly.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3, but the description adds real value by enumerating allowed access levels ('read-only', 'read-write', 'none') and boolean flags for deploy/secrets. It also provides a concrete custom_constraints example, compensating for the absence of enums in the schema.

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?

Opens with a clear verb-resource statement: 'Set or view per-model governance permissions.' It then names the exact resources governed (ledger, memory, evidence, deploy, secrets) and contrasts itself with delimit_gov_evaluate, so an agent can distinguish it without opening the schema.

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?

Provides explicit 'When to use' and 'When NOT to use' guidance, naming delimit_gov_evaluate for runtime evaluation and delimit_project_config for session policy. The sibling contrast further clarifies that this tool configures the policy those evaluations consume.

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

delimit_agent_statusDelimit Agent StatusA
Read-onlyIdempotent

Check status of dispatched agent tasks.

When to use: to monitor open/closed agent tasks, either a single task_id or all tasks when task_id is empty. When NOT to use: to dispatch a new task (delimit_agent_dispatch) or to mark one done (delimit_agent_complete).

Sibling contrast: delimit_agent_dashboard surfaces an aggregate view; this returns raw status records.

Side effects: read-only. Calls ai.agent_dispatch.get_agent_status.

ParametersJSON Schema
NameRequiredDescriptionDefault
task_idNoSpecific task id (e.g. "AGT-A1B2C3D4") or empty to list all.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, and the description consistently reinforces 'read-only' while adding context beyond annotations: it discloses the underlying backend call (ai.agent_dispatch.get_agent_status), states it returns raw status records rather than aggregates, and clarifies open/closed task semantics. No contradiction with annotations.

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?

Every line earns its place: purpose sentence, when-to-use, when-not-to-use, sibling contrast, and side effects are cleanly separated into labeled sections. The most decision-relevant information (purpose) is front-loaded, and the structure makes the guidance scannable for an agent.

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

Completeness5/5

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

For a tool with one optional parameter, a present output schema, and safety annotations, the description covers everything needed for correct selection and invocation: purpose, scoping behavior, exclusions, sibling differentiation, and side effects. Nothing material is missing.

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 100%, so the schema already documents task_id with an example and the 'empty to list all' behavior. The description restates this same information ('either a single task_id or all tasks when task_id is empty') without adding new parameter-level meaning. Baseline 3 is appropriate since the schema carries the semantic load.

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?

Opens with a specific verb+resource statement ('Check status of dispatched agent tasks') that immediately conveys the operation. It also distinguishes itself from siblings by naming delimit_agent_dashboard as the aggregate-view alternative and clarifying this tool returns raw status records, so an agent can disambiguate without inspecting other tools.

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?

Provides explicit 'When to use' and 'When NOT to use' sections that name exact alternatives (delimit_agent_dispatch, delimit_agent_complete) and the precise condition for choosing each. The sibling contrast with delimit_agent_dashboard further sharpens the decision boundary. Nothing is left to inference.

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

delimit_auditDelimit AuditA

Cross-model code audit — 3 models, 3 lenses, synthesized (Pro).

When to use: for high-confidence review of a code change, where agreement across models is the signal and disagreements surface tradeoffs. When NOT to use: for raw multi-model debate (use delimit_deliberate) or single-model review (delimit_review).

Sibling contrast: delimit_review is single-prompt multi-model; delimit_deliberate is full debate; this is structured cross-lens audit (security / correctness / governance).

Side effects: gated by require_premium. Calls models via ai.cross_model_audit.audit. No ledger write — caller decides what to do with findings.

ParametersJSON Schema
NameRequiredDescriptionDefault
lensesNoComma-separated lenses — "security", "correctness", "governance". Empty = all three.
targetNoFile path, git diff output, or code snippet to audit. Required.
target_typeNo"file" (default — reads file), "diff" (git diff text), or "snippet" (inline code).file

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.7/5.0
Behavior5/5

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

The description discloses side effects beyond annotations: it is gated by require_premium, calls models via ai.cross_model_audit.audit, and performs no ledger write. This gives the agent important context about cost, availability, and persistence behavior that the annotations do not convey.

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 well-structured with clear headings and front-loaded purpose. Every sentence adds value—usage context, sibling contrast, or side effects—without unnecessary fluff.

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

Completeness5/5

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

The definition is complete for selecting and invoking the tool correctly: purpose, routing, side effects, and sibling relationships are all covered. An output schema exists, so the lack of return-value detail in the description is acceptable.

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?

Parameter schema coverage is 100%, so the schema already documents all parameters with defaults and allowed values. The description reinforces the lenses but adds no substantially new parameter semantics beyond what the schema provides.

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 performs a cross-model code audit across three lenses with synthesized output. It explicitly distinguishes itself from sibling tools delimit_review and delimit_deliberate, making selection unambiguous.

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?

The description gives explicit when-to-use and when-NOT-to-use guidance, naming the exact alternatives (delimit_deliberate, delimit_review). The sibling contrast further clarifies how this tool differs from those alternatives.

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

delimit_build_loopDelimit Build LoopA

Execute one iteration of a governed continuous loop (LED-239).

When to use: to advance the autonomous build / social / deploy loop one step, either interactively or from a daemon. When NOT to use: for status only (use delimit_loop_status) or to configure (delimit_loop_config).

Sibling contrast: delimit_loop_status reads; delimit_loop_config sets policy; this drives one iteration.

Side effects: depends on loop_type. cycle/build dispatches swarm work; social drafts replies; deploy runs gates and publishes. All loops write to the loop_engine's session record.

Loop types:

  • cycle (recommended): unified think -> build -> deploy in one call.

  • build: picks feat/fix/task items from ledger, dispatches via swarm.

  • social (think): scans Reddit/X/HN, drafts replies.

  • deploy: runs deploy gates, publishes, verifies.

ParametersJSON Schema
NameRequiredDescriptionDefault
actionNo"init" to start a session, "run" (default) to execute one iteration.run
loop_typeNo"cycle", "build" (default), "social", or "deploy".build
cycle_modeNoFor loop_type="cycle" — "sense" (think+strategy), "execute" (build+deploy), or "full" (all). Default "full".full
session_idNoOptional session id to continue.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.7/5.0
Behavior5/5

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

Annotations only indicate readOnlyHint=false and destructiveHint=false. The description goes well beyond this by detailing side effects per loop_type: 'cycle/build dispatches swarm work; social drafts replies; deploy runs gates and publishes.' It also discloses that 'All loops write to the loop_engine's session record.' No contradiction with annotations exists.

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 well-structured with clear labeled sections: primary statement, when to use, when not to use, sibling contrast, side effects, and loop types. Every section earns its place and the critical scoping information is front-loaded. The ticket reference 'LED-239' is minor noise but does not undermine clarity.

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

Completeness5/5

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

For a complex loop-driving tool with an output schema, the description is highly complete: it explains the loop variants, side effects, exclusions, and alternative tools. The agent has enough context to invoke it correctly without needing additional inference.

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 description coverage is 100%, so the schema already documents all four parameters. The description adds behavioral context for loop_type values (cycle/build/social/deploy) but does not meaningfully expand on action or cycle_mode beyond what the schema provides. This is adequate but not exceptional.

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 opens with a specific verb and resource: 'Execute one iteration of a governed continuous loop.' It also explicitly contrasts itself with sibling tools, stating 'delimit_loop_status reads; delimit_loop_config sets policy; this drives one iteration.' This makes the tool's unique role unmistakable.

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?

The description provides an explicit 'When to use' section and an explicit 'When NOT to use' section, naming the exact alternative tools (delimit_loop_status, delimit_loop_config) for those cases. This gives an agent clear branching guidance.

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

delimit_build_loop_daemonDelimit Build Loop DaemonA

Background auto-pull daemon for governed build/social/deploy loops (Pro).

When to use: to spawn a long-running daemon that ticks the governed loop every N seconds — the orchestrating Claude session tails ~/.delimit/logs/loop_daemon_.jsonl for triage. When NOT to use: for one-shot iteration (use delimit_build_loop) or to read loop metrics (delimit_loop_status).

Sibling contrast: delimit_build_loop is one iteration; this is the long-running daemon.

Side effects: action="start" spawns a daemon thread that calls run_governed_iteration / run_social_iteration on a cadence. action="stop" halts. Each tick logs returned task_id to a JSONL. Respects delimit_loop_config safeguards (cost_cap, error_threshold, max_iterations, status=paused/stopped) via loop_status before each tick. Gated by require_premium.

ParametersJSON Schema
NameRequiredDescriptionDefault
actionNo"start", "stop", or "status" (default).status
loop_typeNo"build" (default), "social", or "deploy". Used on start.build
session_idNoSession to run. Required for all actions.
interval_secondsNoTick interval. Default 900 (15 min). Used on start.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.6/5.0
Behavior5/5

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

Even though annotations only say readOnly=false/destructive=false, the description discloses significant side effects: start spawns a daemon thread, stop halts, each tick writes task_id to JSONL, and safeguards are consulted before each tick. It also mentions the log path for triage. This is exactly the behavioral context annotations don't convey.

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?

Structured into headers, front-loaded with the core statement, and every section contributes either selection rules or behavioral cautions. Minor redundancy between 'When NOT to use' and 'Sibling contrast' does not hurt readability.

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

Completeness5/5

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

Given that an output schema exists and the annotations are minimal, the description supplies selection rules, side effects, logging behavior, safeguards, and premium gating. Nothing critical for invoking the tool correctly seems missing.

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 100%, so the baseline applies. The description mostly reiterates which params are used on start and does not substantially extend the schema's per-parameter descriptions; it provides action-level side effects more than new parameter semantics.

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 lead sentence names the resource ('daemon') and function ('background auto-pull,' 'ticks governed loop'), and the sibling contrast explicitly separates it from delimit_build_loop and delimit_loop_status. An agent can tell what it does without inspecting the schema.

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?

Includes an explicit 'When to use' block, a 'When NOT to use' block with named alternatives (delimit_build_loop for one-shot iteration, delimit_loop_status for metrics), and a sibling-contrast line. Also notes premium gating, which is a real selection constraint.

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

delimit_changelogDelimit ChangelogA

Generate a changelog from git + ledger (git mode) or spec diff (spec mode).

When to use: as part of the deploy gate chain to produce a release note, or to prepend a CHANGELOG.md entry for a tagged release. When NOT to use: for ad-hoc human prose explanation of a spec change (use delimit_explain) or release planning (delimit_release_plan).

Sibling contrast: delimit_explain renders human prose for one diff; delimit_release_plan plans services and versions; this generates a formal changelog entry.

Two modes:

  1. Git mode (pass repo_path): reads git log since last tag, categorizes commits (feat/fix/refactor/docs/test/ci), pulls completed ledger items, formats as Markdown. Works for ANY repo.

  2. Spec mode (pass old_spec + new_spec): compares two OpenAPI specs and produces an API changelog.

Side effects: read-only on git/spec inputs. Writes to output_file when provided. If output_file is "CHANGELOG.md", PREPENDS the entry rather than overwriting — preserving prior history.

ParametersJSON Schema
NameRequiredDescriptionDefault
formatNo"markdown" (default), "json", "keepachangelog", "github-release".markdown
versionNoVersion label (e.g. "4.1.0").
new_specNoNew OpenAPI spec path (spec mode).
old_specNoOld OpenAPI spec path (spec mode).
repo_pathNoRepo path (git mode).
since_tagNoGit tag to diff from. Empty = auto-detect latest tag.
output_fileNoWrite the rendered changelog here. If "CHANGELOG.md", prepends the entry.
include_ledgerNoInclude completed ledger items (git mode). Default True.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.9/5.0
Behavior5/5

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

The description goes beyond the annotations by detailing side effects: read-only on git/spec inputs, writes only when output_file is provided, and prepends rather than overwrites CHANGELOG.md, preserving history. This is consistent with readOnlyHint=false and destructiveHint=false and gives practical safety-relevant behavioral context.

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 well organized with labeled sections, bullets, and a front-loaded summary. Every section earns its place, and the side-effects paragraph is a valuable safety emphasis rather than filler.

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

Completeness5/5

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

Given the tool's complexity (two modes, 8 optional parameters, output behavior), the description is complete enough: it covers when to use it, when not to, what each mode does, and side effects. The schema already documents all parameters and an output schema exists, so no critical return-value or parameter detail is missing.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3, and the description adds meaningful conceptual structure by mapping repo_path to git mode and old_spec + new_spec to spec mode. It also clarifies what git mode does (reads git log, categorizes commits, pulls completed ledger items) and that spec mode produces an API changelog, which helps an agent select the right parameter group.

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 opens with a specific verb and resource: 'Generate a changelog from git + ledger (git mode) or spec diff (spec mode).' It also names the two sibling tools it is not (delimit_explain, delimit_release_plan), making the tool's unique output unmistakable.

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?

The description has explicit 'When to use' and 'When NOT to use' sections, naming exact alternatives and the conditions that route to them. The sibling contrast reinforces these decision boundaries, so an agent knows precisely when to select this tool over delimit_explain or delimit_release_plan.

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

delimit_collision_checkDelimit Collision CheckA
Read-onlyIdempotent

Detect / prevent multi-model file edit collisions (LED-129).

When to use: in cross-model workflows — claim a file before editing, release after committing — to prevent simultaneous conflicting edits between Claude / Codex / Gemini. When NOT to use: for single-model sessions or general filesystem locking outside the multi-model swarm.

Sibling contrast: delimit_swarm tracks ventures and personas; this tracks per-file edit ownership.

Side effects: action="claim" / "release" mutate the lock state. action="check" is read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
modelNoAI model name — "claude", "codex", "gemini".
actionNo"check" (default), "claim", or "release".check
task_idNoOptional task id for tracking.
file_pathNoFile to claim/release (required for claim/release).

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior1/5

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

The description itself clearly discloses that action='claim'/'release' mutate lock state and action='check' is read-only. However, the annotations declare readOnlyHint=true and idempotentHint=true for the whole tool, directly contradicting the mutating actions. Per the rubric, this contradiction forces a score of 1.

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 well-structured with scannable labeled sections: purpose, when to use, when not to use, sibling contrast, and side effects. Every sentence carries distinct information, and there is no filler.

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?

The description is largely complete for a 4-parameter tool: it covers use cases, exclusions, sibling differentiation, side effects, and action-specific parameter requirements, and an output schema exists. The only deduction is due to the contradictory annotations, which force an agent to reconcile conflicting signals about whether the tool is read-only.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3. The description adds valuable operational meaning beyond the schema: claim before editing, release after committing, and file_path being required for claim/release. It also clarifies which actions are read-only versus mutating, helping the agent choose valid parameter combinations.

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 states a specific verb-resource pair: 'Detect / prevent multi-model file edit collisions' and explains it tracks per-file edit ownership. It also contrasts with delimit_swarm, so an agent can distinguish it from siblings without opening schemas.

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?

The description explicitly provides 'When to use' and 'When NOT to use' guidance, naming the exact cross-model workflow and rejecting single-model or general filesystem locking. It also gives a sibling contrast, making the selection criteria unambiguous.

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

delimit_config_exportDelimit Config ExportA

Export the current governance config as a shareable JSON bundle.

When to use: to package a project's delimit.yml + GitHub Action workflow into a portable JSON config for sharing or import. When NOT to use: to read live policy (use delimit_gov_policy) or initialize a new project (delimit_init).

Sibling contrast: delimit_config_import is the round-trip counterpart; this exports.

Side effects: read-only on the project. Sanitizes project_path via _sanitize_path. Returns the bundle in the response — no file write.

ParametersJSON Schema
NameRequiredDescriptionDefault
project_pathNoPath to project root. Default "." (cwd)..

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior1/5

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

The description states 'Side effects: read-only on the project' and 'no file write,' but the annotations declare readOnlyHint=false. These directly contradict each other: one says the operation is read-only, the other says it is not. Per the rubric, this contradiction forces a score of 1.

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 well-structured with short labeled sections: purpose, when to use, when not to use, sibling contrast, and side effects. Every sentence earns its place, and the most important information is front-loaded.

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?

For a simple one-optional-parameter tool with an output schema, the description covers purpose, exclusions, alternatives, side effects, and response behavior. It is nearly complete, but the direct contradiction between the stated read-only behavior and readOnlyHint=false prevents full marks.

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

Parameters4/5

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

Schema description coverage is 100%, so the baseline is 3. The description adds meaningful parameter-related context by stating that project_path is sanitized via _sanitize_path, which is not present in the input schema. This exceeds the baseline.

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 opens with a specific verb and resource: 'Export the current governance config as a shareable JSON bundle.' It clearly identifies the output format and distinguishes this tool from its round-trip counterpart, delimit_config_import, making sibling differentiation immediate and clear.

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?

The description explicitly states when to use the tool ('to package a project's delimit.yml + GitHub Action workflow'), when NOT to use it, and names the alternatives (delimit_gov_policy and delimit_init). This is ideal routing guidance for an agent.

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

delimit_config_importDelimit Config ImportA

Import a governance config from a JSON bundle into a project.

When to use: to apply a previously-exported config bundle from another project — the round-trip counterpart to delimit_config_export. When NOT to use: to initialize a fresh project (use delimit_init) or load an existing config (delimit_project_config action="load").

Sibling contrast: delimit_config_export produces; this consumes.

Side effects: writes the policy file under project_path. With write_workflow=True, also writes the GitHub Action workflow file if present in the bundle. Sanitizes project_path via _sanitize_path.

ParametersJSON Schema
NameRequiredDescriptionDefault
config_jsonYesThe JSON config bundle string (from delimit_config_export). Required.
project_pathNoTarget project root. Default "." (cwd)..
write_workflowNoAlso write the GitHub Action workflow if present. Default False.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.9/5.0
Behavior5/5

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

Beyond the annotations (readOnlyHint=false, destructiveHint=false), the description discloses concrete side effects: writes the policy file under project_path, conditionally writes a GitHub Action workflow when write_workflow=True, and sanitizes project_path via _sanitize_path. This is exactly the behavioral context an agent needs for a mutation 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?

The description is front-loaded with the core purpose, then organized into clearly labeled sections (When to use, When NOT to use, Sibling contrast, Side effects). Every sentence earns its place—no filler or repetition of schema content.

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

Completeness5/5

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

For a 3-parameter mutation tool with a full output schema and annotations, the description covers purpose, usage boundaries, side effects, and path sanitization. There are no gaps an agent would need to resolve before invoking the tool correctly.

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

Parameters4/5

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

Schema description coverage is 100%, so the baseline is 3. The description adds value by explaining behavioral consequences of write_workflow=True (writes workflow file if present in bundle) and clarifying that config_json is the output of a prior export from another project. These enrich parameter meaning beyond the schema, though the schema already does most of the work.

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 opening sentence states a specific verb (import), resource (governance config from a JSON bundle), and destination (into a project). The sibling contrast 'delimit_config_export produces; this consumes' further differentiates it from its closest counterpart, so an agent can distinguish it without inspecting schemas.

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?

The description explicitly states when to use (apply a previously-exported bundle, round-trip counterpart to delimit_config_export) and when NOT to use (initialize a fresh project via delimit_init, or load existing config via delimit_project_config action="load"). Alternatives are named with conditions, leaving nothing to inference.

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

delimit_content_publishDelimit Content PublishA

Manually trigger a content publish (tweet, YouTube video, or report) (Pro).

When to use: to fire off the next queued tweet or video on demand, or to STAGE distribution of the next mature report across owned broadcast surfaces (README / GitHub Release note / minimal X mirror). When NOT to use: to inspect the queue (use delimit_content_schedule) or modify it (delimit_content_queue).

Sibling contrast: delimit_content_schedule reads; delimit_content_queue mutates queue; this performs a single publish step.

Side effects: for tweet, posts the next queued tweet; for youtube, generates and uploads. For "report" (LED-3729) it is COMPOSE + STAGE ONLY — it writes composed distribution artifacts to a local staging queue and posts NOTHING to X and creates NO live GitHub Release.

ParametersJSON Schema
NameRequiredDescriptionDefault
content_typeNo"tweet" (default) to post next queued tweet, "youtube" to generate + upload the next video, or "report" to STAGE (compose, not post) distribution for the next report.tweet

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.9/5.0
Behavior5/5

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

The description clearly discloses side effects for each content type, including the non-obvious report behavior: COMPOSE + STAGE ONLY, posts nothing to X, and creates no live GitHub Release. This goes far beyond the minimal readOnlyHint/destructiveHint annotations and prevents the agent from assuming all three types actually publish externally.

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?

Structured with clear labeled sections (When to use, When NOT to use, Sibling contrast, Side effects), each sentence adds information. The core action is stated upfront, and the detail is proportionate to the tool's branching behavior.

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

Completeness5/5

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

For a tool with three content types that behave very differently, the description covers when, when not, sibling alternatives, side effects, and the critical report staging caveat. An agent has enough context to invoke it correctly and interpret the outcome.

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

Parameters4/5

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

The input schema already fully documents the single content_type parameter at 100% coverage, so the baseline is 3. The description adds value by mapping each allowed value to its concrete behavior (post, generate+upload, or stage-only), which is meaningful beyond the schema text.

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 uses a specific verb ('trigger', 'publish') and names the exact resources: tweet, YouTube video, or report. It also distinguishes itself from the sibling tools delimit_content_schedule and delimit_content_queue by stating this performs a single publish step.

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?

Explicit 'When to use' and 'When NOT to use' sections name the exact conditions and the alternative tools to use instead. The sibling contrast further clarifies the division of labor: schedule reads, queue mutates, this publishes.

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

delimit_content_queueDelimit Content QueueA

Manage the tweet, video, and report content queues.

When to use: to view, seed, or add to the autonomous content queues that delimit_content_publish drains, or to STAGE a report for distribution (LED-3729). When NOT to use: to publish (use delimit_content_publish) or read upcoming schedule (delimit_content_schedule).

Sibling contrast: delimit_content_publish drains; delimit_content_schedule reads; this mutates the queue.

Side effects: action="seed" populates queue with defaults; action="add" appends tweet items; action="add_report" composes and STAGES report-distribution artifacts (README block / Release note / minimal X mirror) — compose-only, posts NOTHING. action="status" is read-only and now also reports the staged reports-distribution queue.

ParametersJSON Schema
NameRequiredDescriptionDefault
itemsNoFor "add" — newline-separated tweet texts. For "add_report" — one or more report slugs (newline- or comma-separated).
actionNo"status" (default), "seed", "add", or "add_report".status

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.8/5.0
Behavior5/5

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

Even though annotations already mark readOnlyHint=false and destructiveHint=false, the description goes further by detailing per-action side effects: seed populates defaults, add appends, add_report stages without posting, and status is read-only. This is exactly the behavioral nuance an agent needs.

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 longer than average but well-organized with labeled sections and front-loaded scope. Each section earns its place given the multi-action, side-effect-bearing nature of the tool, though a couple of phrases could be tightened.

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

Completeness5/5

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

For a tool with two optional parameters and no required ones, the description is complete: it covers purpose, action semantics, side effects, sibling routing, and read-only behavior. An output schema exists, so the lack of return-value detail in the description is not a gap.

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

Parameters4/5

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

Input schema covers both parameters 100%, so the bar is baseline 3. The description adds meaning by attaching behavioral outcomes to each action value ('seed' populates defaults, 'add' appends tweet items, 'add_report' composes/stages) and clarifies that status is read-only, enriching the bare action enum.

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 opens with a specific verb and resource ('Manage the tweet, video, and report content queues') and then enumerates exactly what actions are possible. It explicitly contrasts with delimit_content_publish and delimit_content_schedule, making the tool's distinct role unambiguous.

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?

Provides a dedicated 'When to use' section, a 'When NOT to use' section naming the correct alternatives, and a direct sibling contrast. An agent can confidently decide between this tool, publish, and schedule without inferring from context.

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

delimit_content_scheduleDelimit Content ScheduleA

View the upcoming content schedule (queued + pending + recent).

When to use: to inspect what's queued (tweets, videos) and what has shipped recently before adding more or triggering a publish. When NOT to use: to actually publish (use delimit_content_publish) or to manage the content queue (delimit_content_queue).

Sibling contrast: delimit_content_queue mutates queue state; this reads the resulting schedule.

Side effects: read-only. Calls ai.content_engine.get_content_schedule.

Args: None.

Returns: Dict with queued tweets, pending videos, recent activity, the staged reports-distribution queue (LED-3729), and next_steps.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.1/5.0
Behavior1/5

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

The description states 'Side effects: read-only' and names the underlying call, which would otherwise be strong transparency. However, the annotations declare readOnlyHint: false, directly contradicting the 'read-only' claim. Per the contradiction rule, this dimension must score 1.

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 structured with clear labeled sections, and every section serves a purpose: purpose, usage boundaries, sibling contrast, side effects, args, and returns. Although longer than a one-liner, none of it is filler and the key scoping information is front-loaded.

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

Completeness5/5

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

Given the tool has zero parameters and an output schema exists, the description still adds a preview of the returned dict and the underlying API. It covers when to use, when not to use, side effects, and invocation shape, so an agent has everything needed to call it correctly — apart from the read-only annotation mismatch already penalized.

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

Parameters4/5

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

The input schema has zero parameters and schema description coverage is 100%, so there is no parameter detail for the description to add. The description explicitly confirms 'Args: None', eliminating any ambiguity about invocation.

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 opens with 'View the upcoming content schedule' — a specific verb and resource — and explicitly scopes it to queued, pending, and recent items. It also differentiates itself from sibling tools by noting that delimit_content_queue mutates queue state while this reads the resulting schedule.

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?

It provides explicit 'When to use' and 'When NOT to use' sections, naming delimit_content_publish and delimit_content_queue as the correct alternatives for publishing and queue management. The sibling contrast reinforces the read-vs-mutate boundary, so an agent is unlikely to select the wrong tool.

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

delimit_context_branchDelimit Context BranchA

Manage mutable working branches of a venture's context (STR-048).

When to use: when exploring an alternative direction for a venture — a "what if we pivoted?" thread — and you want a write-isolated branch of the venture context rather than mutating the main line. Sub-actions: "list" inventories branches, "create" mints a new branch, "merge" folds a branch back into main. When NOT to use: for immutable point-in-time evidence (use delimit_context_snapshot — that creates a frozen capture; this is for mutable working areas), to read context data (use delimit_context_read), or for git branch operations on a code repo (use git directly).

Sibling contrast: delimit_context_snapshot is read-only history capture; this manages active, writeable branches. Compared to git branches, this operates on the venture context filesystem (ai.context_fs), not the code repo.

Side effects: depends on action. "list" is read-only. "create" writes a new branch namespace under the venture in ai.context_fs. "merge" mutates the venture's main namespace with the branch's contents, then closes the branch. None of these touch the code repository or any git state. No license gate, no notification, no ledger write.

ParametersJSON Schema
NameRequiredDescriptionDefault
actionNoBranch sub-action, one of "list", "create", "merge". Default "list".list
ventureYesVenture namespace key. Required.
branch_nameNoBranch name (required for create / merge).

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.8/5.0
Behavior5/5

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

Despite sparse annotations, the description discloses per-action side effects: 'list' is read-only, 'create' writes a new branch namespace, and 'merge' mutates the main namespace and closes the branch. It also explicitly states what the tool does NOT touch: code repository, git state, license gate, notification, or ledger. This goes well beyond the annotation fields and gives the agent a reliable behavioral model.

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 well organized with clear sections and front-loaded purpose. There is minor redundancy between the 'When NOT to use' section and the 'Sibling contrast' section, both covering delimit_context_snapshot, but overall every section earns its place and no filler exists.

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

Completeness5/5

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

Given the tool's multi-action complexity and mutable-vs-immutable semantics, the description is thorough. It covers when to use it, when not to use it, side effects, exclusions, and the filesystem target. The output schema is present, so return-value detail is not required here.

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

Parameters4/5

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

The input schema already documents all three parameters at 100% coverage, so the baseline is 3. The description adds useful semantic context by explaining what each action means ('list' inventories branches, 'create' mints a new branch, 'merge' folds a branch back into main), which enriches the action parameter meaning beyond the schema alone.

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 states a specific verb and resource: 'Manage mutable working branches of a venture's context.' It immediately distinguishes itself from related tools like delimit_context_snapshot and delimit_context_read, and from git branch operations. An agent can clearly identify what this tool does and what it does not do.

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?

The description gives an explicit 'When to use' section with a concrete scenario ('what if we pivoted?'), a 'When NOT to use' section naming alternative tools, and a sibling contrast section. This is exemplary routing guidance that leaves little to inference.

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

_delimit_context_implDelimit Context ImplA
DestructiveIdempotent

Unified context-filesystem entry point — dispatches to one of six actions.

Manages a venture-scoped, versioned context filesystem under ~/.delimit/context// so plans, decisions, and artifacts survive across sessions and across models. This is the cross-model- continuity store: write once, read from any later session or any other assistant.

When to use: as the single MCP-registered context surface (delimit_context) when the caller wants to pick the action by name in one call rather than choosing a specific delimit_context_* alias. When NOT to use: from internal code paths — prefer the specific alias (delimit_context_read, delimit_context_write, delimit_context_snapshot, etc.) so each action's docstring, args, and side-effect notes show up at the right call site. For ephemeral, conversation-scoped memory use delimit_memory_store / delimit_memory_search instead — those are NOT venture-namespaced or versioned.

Sibling contrast: each delimit_context_ wrapper below is a thin alias over this implementation; they exist so the action's docstring lives at the right name. This is the dispatch core. The context FS is venture-scoped and versioned (snapshot/branch); delimit_memory_* is conversation-scoped and unversioned. Snapshot vs branch: snapshot is an immutable point-in-time copy (history/ rollback), branch is a mutable write-isolated fork that can be merged back into main. Neither touches git or any code repository.

Side effects: all six actions are free-tier (no require_premium gate in this dispatcher). Each routes to a distinct context-FS backend function and is wrapped via _with_next_steps for orchestrator hints. Per action:

  • "list" — read-only enumeration of /artifacts/*. Returns [] (no error) if the venture or artifacts dir does not exist.

  • "read" — read-only load of one artifact. Returns {"error": ...} if the named artifact is absent.

  • "init" — WRITES. Creates the venture directory, the memory/plans/artifacts/snapshots/branches subdirs, and manifest.json if absent. Idempotent.

  • "write" — WRITES/overwrites /artifacts/.json and bumps the manifest version counter. Overwrites silently if the artifact name already exists.

  • "snapshot" — WRITES. Copies the venture's artifacts/ and memory/ into a timestamped (optionally labeled) snapshot dir plus a snapshot manifest. Does NOT bump the version counter.

  • "branch" — depends on branch_action. "list" is read-only. "create" WRITES a new branch fork (copy of artifacts/ + memory/) and errors if the branch already exists. "merge" MUTATES the venture's main artifacts/ and memory/ with the branch's files, then DELETES the branch dir and bumps the version counter; errors if the branch is not found. Errors are deterministic ({"error": "..."}): an unknown top-level action, an unknown branch_action, or a missing branch_name on create/merge all short-circuit before the backend call.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoArtifact name, used as the <name>.json file key. Required for action="read" and action="write". Ignored by other actions.
labelNoOptional human-readable snapshot label, appended to the timestamp in the snapshot dir name. Used only when action="snapshot".
actionNoWhich context operation to perform. One of "init", "read", "write", "list", "snapshot", "branch". Default "list". Other values return a deterministic error.list
contentNoArtifact text body. Used only when action="write".
ventureNoVenture/project namespace key — selects the ~/.delimit/context/<venture>/ tree. Used by every action. Default "default".default
branch_nameNoBranch name. Required when action="branch" with branch_action="create" or "merge"; ignored for "list".
artifact_typeNoType hint stored on the artifact — "text", "json", "code", or "plan". Used only when action="write". Default "text". Affects the stored type hint, not the storage format.text
branch_actionNoBranch sub-action — "list", "create", or "merge". Used only when action="branch". Default "list".list

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.1/5.0
Behavior1/5

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

The description itself is highly transparent, enumerating per-action side effects, deterministic errors, and which actions write vs read. However, it directly contradicts the idempotentHint:true annotation: write bumps a version counter, snapshot creates new timestamped directories, branch create errors when the branch already exists, and branch merge deletes the branch after mutating it. These are not idempotent behaviors.

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 long but justifiably so: 8 parameters and 6 distinct actions require this level of detail. It is organized into scannable sections, front-loaded with the core purpose, and every sentence contributes operational knowledge rather than padding.

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

Completeness5/5

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

Given the complexity of a six-action dispatcher with mixed read/write/destructive behavior, the description is essentially complete: it covers storage namespace, cross-session persistence, per-action side effects, error format, and exclusions. An output schema exists to carry exact return shapes, so no critical gap remains for correct invocation.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3. The description adds meaningful action-conditioned semantics: name is required only for read/write, label only for snapshot, content and artifact_type only for write, branch_name required for branch create/merge, and invalid action or branch_action values short-circuit before the backend call. This is selection guidance beyond the schema text.

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 opening sentence states a precise verb and resource: 'Unified context-filesystem entry point — dispatches to one of six actions.' It immediately describes the venture-scoped, versioned storage at ~/.delimit/context/<venture>/ and distinguishes itself from the delimit_context_* aliases and delimit_memory_* tools, so an agent knows exactly what this tool is and is not.

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?

The description has explicit 'When to use' and 'When NOT to use' sections that name concrete alternatives: the specific delimit_context_<action> aliases, delimit_memory_store, and delimit_memory_search. It also explains the snapshot vs branch distinction and notes that this tool never touches git or a code repository.

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

delimit_context_initDelimit Context InitA
Idempotent

Initialize a context filesystem namespace for a venture (STR-048).

When to use: once per venture, the first time you want to persist cross-session/cross-model context (plans, decisions, code snippets). When NOT to use: for single-session memory (use delimit_memory_store) or to read existing artifacts (use delimit_context_read).

Sibling contrast: delimit_memory_* is conversation-scoped; the context FS is venture-scoped and versioned (snapshot/branch).

Side effects: creates the venture directory and metadata files via ai.context_fs.init_context. Idempotent — safe to call repeatedly.

ParametersJSON Schema
NameRequiredDescriptionDefault
ventureNoVenture/project namespace key. Default "default".default

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare idempotentHint=true, destructiveHint=false, and readOnlyHint=false, so the description does not need to re-cover those. It adds useful context beyond annotations by specifying side effects: creates the venture directory and metadata files via ai.context_fs.init_context, and explicitly states it is safe to call repeatedly. This is meaningful additional behavioral disclosure.

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 compact, organized with clear headings, and front-loads the core purpose before usage guidance and side effects. Every sentence contributes useful information, with no filler or repetition of schema details.

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

Completeness5/5

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

For a tool with one optional parameter, existing output schema, and annotations covering idempotency and non-destructiveness, the description is complete. It explains when to use it, when not to use it, the side effects, the versioning model, and the fact that it is safe to rerun. Nothing needed for correct invocation is missing.

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?

The input schema covers 100% of the single parameter with a default value and its own description ('Venture/project namespace key'). The tool description reinforces the venture context but does not add new semantic detail beyond the schema. Baseline 3 is appropriate because the schema already carries the full parameter documentation burden.

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 states a specific action: 'Initialize a context filesystem namespace for a venture,' which clearly identifies the verb, resource, and scope. It also distinguishes this tool from delimit_memory_* and delimit_context_read, so an agent can tell it apart from siblings without additional investigation.

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?

Usage guidance is explicit: 'once per venture, the first time you want to persist cross-session/cross-model context.' It also gives clear when-not-to-use conditions with named alternatives (delimit_memory_store for single-session memory, delimit_context_read for reading artifacts), plus a sibling contrast explaining the venture-scoped and versioned nature.

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

delimit_context_listDelimit Context ListA
Read-onlyIdempotent

List all artifacts in a venture's context filesystem (STR-048).

When to use: to inventory what artifacts have been written for a venture before reading or branching. When NOT to use: to read an artifact's content (use delimit_context_read) or to scan memories (delimit_memory_recent).

Sibling contrast: delimit_context_read returns one artifact's content; this returns metadata for all of them.

Side effects: read-only. Calls ai.context_fs to enumerate artifacts.

ParametersJSON Schema
NameRequiredDescriptionDefault
ventureYesVenture namespace key. Required.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false. The description adds value by explicitly stating 'Side effects: read-only' and revealing the internal call to ai.context_fs. This gives the agent behavioral context beyond the structured annotations without contradicting them.

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 well-structured with clear labeled sections: purpose, when to use, when not to use, sibling contrast, and side effects. Every sentence earns its place and the information is front-loaded with the core purpose.

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

Completeness5/5

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

For a single-parameter, read-only listing tool with full schema coverage and an output schema present, the description covers purpose, usage boundaries, sibling distinction, and side effects. Nothing essential for an agent to call it correctly is missing.

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 description coverage is 100%, with the single 'venture' parameter documented as 'Venture namespace key. Required.' The description reinforces that the venture is the scope of the listing but does not add substantial new meaning beyond the schema. Baseline 3 is appropriate.

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 states a specific verb and resource: 'List all artifacts in a venture's context filesystem.' It clearly distinguishes itself from the sibling by noting it returns metadata for all artifacts rather than a single artifact's content. An agent can immediately understand what the tool does and how it differs from related context tools.

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?

The description provides explicit 'When to use' and 'When NOT to use' guidance, naming specific alternatives: delimit_context_read for artifact content and delimit_memory_recent for memory scans. It also includes a sibling contrast that reinforces the correct selection decision.

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

delimit_context_readDelimit Context ReadA
Read-onlyIdempotent

Read an artifact from a venture's context filesystem (STR-048).

When to use: to fetch a specific previously-written artifact by name within a venture namespace. When NOT to use: for venture-wide listing (use delimit_context_list) or memory search (delimit_memory_search).

Sibling contrast: delimit_context_list returns names only; this returns a single artifact's content.

Side effects: read-only. Calls ai.context_fs to load the artifact.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesArtifact name. Required.
ventureYesVenture namespace key. Required.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, so the safety profile is covered. The description adds 'Side effects: read-only' and 'Calls ai.context_fs,' but the read-only statement duplicates the annotation and the implementation detail adds limited behavioral context beyond what is already structured.

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 well-organized with clear sections for usage, exclusions, sibling contrast, and side effects. It is mostly efficient, though the 'STR-048' reference and the redundant read-only statement add minor noise.

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

Completeness5/5

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

For a simple read operation with only two fully documented parameters, an output schema, and annotations covering side-effect safety, the description covers purpose, usage boundaries, sibling contrast, and behavior. Nothing important is missing for an agent to select and invoke the tool correctly.

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 description coverage is 100% and both parameters are documented in the schema with 'Artifact name. Required.' and 'Venture namespace key. Required.' The description's mention of 'by name within a venture namespace' reinforces the schema but does not add significant meaning beyond it, so the baseline of 3 is appropriate.

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 opens with a specific verb and resource: 'Read an artifact from a venture's context filesystem.' It clearly distinguishes this tool from delimit_context_list by noting that list returns names only while this returns a single artifact's content, so an agent can differentiate it from close siblings.

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?

The description explicitly provides 'When to use' and 'When NOT to use' guidance, naming delimit_context_list and delimit_memory_search as alternatives. This gives an agent clear routing logic without requiring it to infer intent from tool names.

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

delimit_context_snapshotDelimit Context SnapshotA

Capture a point-in-time snapshot of a venture's context (STR-048).

When to use: before a risky model handoff, doctrine edit, or refactor — so you can roll back the context if it goes sideways. When NOT to use: for individual artifact persistence (use delimit_context_write) or one-time conversation memory (delimit_memory_store).

Sibling contrast: delimit_context_branch creates a divergent line of work; this captures the current state as an immutable point.

Side effects: writes a snapshot record under the venture namespace via ai.context_fs.

ParametersJSON Schema
NameRequiredDescriptionDefault
labelNoOptional human-readable label for the snapshot.
ventureYesVenture namespace key. Required.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior4/5

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

Annotations only declare readOnlyHint=false and destructiveHint=false. The description adds meaningful behavioral context by disclosing that the tool 'writes a snapshot record under the venture namespace via ai.context_fs' and that the snapshot is 'immutable.' This goes beyond the structured annotations without contradicting them.

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 well-structured with clear labeled sections: when to use, when not to use, sibling contrast, and side effects. Every section adds distinct value and the opening line is front-loaded with the core purpose. No wasted words.

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

Completeness5/5

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

The description covers purpose, usage context, exclusions, alternatives, side effects, and storage behavior. An output schema is present, so return-value documentation is not needed. For a tool with this complexity, the description is complete and actionable.

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 description coverage is 100%, so the schema already documents both parameters adequately. The description does not add parameter-specific details beyond schema, but given full coverage, no extra compensation is needed. This meets the baseline for schema-heavy parameter documentation.

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 opens with a specific verb-resource pair: 'Capture a point-in-time snapshot of a venture's context.' It also differentiates itself from sibling tools by explicitly contrasting with delimit_context_branch, which creates a divergent line of work. This makes the tool's purpose immediately clear and distinguishable.

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?

The description gives explicit 'When to use' guidance (before a risky model handoff, doctrine edit, or refactor) and explicit 'When NOT to use' guidance with named alternatives (delimit_context_write, delimit_memory_store). It also adds a sibling contrast with delimit_context_branch. This is exemplary routing information.

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

delimit_context_writeDelimit Context WriteA

Write an artifact to a venture's context filesystem (STR-048).

When to use: to persist a plan, decision record, or code artifact that other models or future sessions will need. When NOT to use: for ephemeral conversation context (use delimit_memory_store) or to snapshot all artifacts at once (use delimit_context_snapshot).

Sibling contrast: delimit_context_read fetches one artifact; delimit_context_list inventories the venture; this writes one.

Side effects: writes the artifact under the venture namespace via ai.context_fs (file creation under ~/.delimit/context//).

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesArtifact name (used as the file key). Required.
contentYesArtifact text. Required.
ventureYesVenture namespace key. Required.
artifact_typeNoType hint, one of "text", "json", "code", "plan". Default "text". Affects render hints, not storage format.text

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior4/5

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

The annotations already indicate readOnlyHint=false and destructiveHint=false, and the description adds meaningful behavioral context by disclosing the side effect: the artifact is written under the venture namespace via ai.context_fs, with file creation under ~/.delimit/context/<venture>/. It does not address overwrite behavior on an existing artifact name, but it provides solid transparency beyond the annotations.

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 well-structured with clear sections: primary purpose, when to use, when not to use, sibling contrast, and side effects. It is front-loaded and every sentence earns its place without redundancy.

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

Completeness5/5

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

For a tool with 4 well-documented parameters and an output schema, the description covers selection criteria, exclusions, sibling differentiation, and side effects. Nothing essential is missing for an agent to decide when to invoke it and what to expect.

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 description coverage is 100%, so the schema already documents all four parameters. The description adds usage context like persisting plans, decision records, or code artifacts, but it does not add significant parameter-level meaning beyond the schema. Baseline 3 is appropriate.

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 opens with a specific verb and resource: 'Write an artifact to a venture's context filesystem (STR-048).' It distinguishes itself from the closest siblings by stating that delimit_context_read fetches one artifact, delimit_context_list inventories the venture, and this one writes one. The scope and intent are unmistakable.

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?

The description provides explicit 'When to use' and 'When NOT to use' guidance, naming delimit_memory_store for ephemeral context and delimit_context_snapshot for snapshotting all artifacts. It also adds a sibling contrast for read and list, making the selection criteria clear.

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

delimit_controlDelimit ControlA
Idempotent

Aggregate all governance lanes into one queue; approve/reject approvals (LED-1709).

When to use: as the shared queue the CLI and web dashboard both render — attestations, approvals, sensing (STR-), ops (LED-) — and to approve/reject founder-approval items from that same surface. When NOT to use: to act on attestation/sensing/ops items; approve/reject are approval-class only in Phase 1 (mutate those via their owning tool).

Sibling contrast: delimit_agent_dashboard is dispatch-only, delimit_ledger_context is one-venture-only, delimit_notify_inbox is inbox-only; this unifies all four into one lane-aware view.

Side effects: list/get are READ-ONLY. approve/reject append the same founder_directive_completed ack the email "ship it" loop writes to the EXISTING store (~/.delimit/inbox_routing.jsonl); reject stamps disposition="rejected". No new store; idempotent re-approve no-ops.

ParametersJSON Schema
NameRequiredDescriptionDefault
noteNoOptional note recorded as the ack result for action="approve"/"reject".
limitNoMax items for action="list" (default 100).
actionNo"list" (default), "get", "approve", or "reject". list/get are read-only; approve/reject act ONLY on approval-class items and mirror the email "ship it" ack loop.list
item_idNoRequired for "get", "approve", "reject": the normalized item id (e.g. "att_…", "STR-437", "LED-1709", "WO-…", "DIR-…").
class_filterNoLane filter: "" (all), "attestation", "approval", "sensing", or "ops".
state_filterNoState filter, e.g. "open", "pending", "awaiting_approval", "done". "" = all.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.9/5.0
Behavior5/5

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

Beyond annotations, the description clearly discloses that list/get are READ-ONLY, approve/reject append to the existing ~/.delimit/inbox_routing.jsonl store, reject stamps disposition="rejected", no new store is created, and idempotent re-approve no-ops. This aligns with and enriches the idempotentHint and destructiveHint annotations.

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 structured into clear labelled sections: purpose, when to use, when not to use, sibling contrast, and side effects. Every sentence adds information, and the core purpose is front-loaded in the first sentence.

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

Completeness5/5

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

For a multi-action tool with mixed read/write behavior, the description covers the shared-queue scope, action restrictions, side effects, sibling differentiation, and idempotency. An output schema exists, so return-value documentation is already handled; nothing essential is missing for an agent to invoke this tool correctly.

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

Parameters4/5

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

Schema coverage is 100%, so the schema already documents all six parameters. The description adds operational meaning by clarifying which actions apply to which item classes, listing example item id forms (att_…, STR-437, LED-1709, WO-…, DIR-…), and reinforcing that approve/reject only act on approval-class items.

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 opens with a specific verb-resource pair: 'Aggregate all governance lanes into one queue' and 'approve/reject approvals (LED-1709).' It also names the exact item classes (attestations, approvals, sensing STR-*, ops LED-*) and contrasts against four sibling tools, so an agent can distinguish it without ambiguity.

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?

The description provides explicit 'When to use' and 'When NOT to use' guidance, including the Phase 1 restriction that approve/reject are approval-class only. It also gives sibling contrast naming delimit_agent_dashboard, delimit_ledger_context, and delimit_notify_inbox, telling the agent exactly when this tool is the right choice versus alternatives.

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

delimit_corp_dashboardDelimit Corp DashboardA
Read-onlyIdempotent

One-call corp status — replaces the 6-call session-start ritual (LED-189).

When to use: at session start as the unified status snapshot — daemons, self-repair, social/inbox activity, ledger pending, agent queue, latest session, plus a synthesized one-line summary. When NOT to use: for a single subsystem's status (use delimit_daemon_status, delimit_obs_status, etc.) — those are finer-grained.

Sibling contrast: delimit_obs_status is system health; delimit_gov_health is governance engine; this is the corp-wide rollup that composes all of them.

Side effects: read-only across all subsystems. Each sub-section is failure-isolated — a partial failure returns {"error": "..."} for that key only and never crashes the whole call. Gateway-only — not shipped in the npm bundle.

Args: None.

Returns: Dict with daemon status, self_repair status, social/inbox activity, ledger_pending, agent_queue, latest_session, plus a synthesized one-line summary and next_steps. On npm-bundle installs returns {"status": "not_available", "error": ..., "hint": ...} instead.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.9/5.0
Behavior5/5

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

Annotations already mark it read-only and idempotent, and the description reinforces this with 'read-only across all subsystems.' It adds valuable behavior beyond annotations: failure isolation per sub-section, gateway-only availability, and the npm-bundle fallback response shape. This is exactly the kind of contextual behavior an agent 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?

The description is organized into clear labeled sections with no wasted sentences. Each section adds value: use cases, alternatives, side effects, return behavior, and deployment constraints. It is longer than average, but every sentence earns its place.

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

Completeness5/5

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

Covers the complete decision surface: what the tool returns, when to use it, when not to use it, how it behaves on partial failure, where it is available, and what happens on unsupported installs. An agent has everything needed to correctly select and invoke this tool.

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

Parameters4/5

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

The tool has zero parameters, the schema already reflects that, and the description explicitly states 'Args: None.' There is no parameter semantic burden to carry, so a baseline of 4 is appropriate.

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 opens with a clear, specific purpose: 'One-call corp status' and a full list of included subsystems. It explicitly differentiates itself from finer-grained single-subsystem tools and names sibling rollups, so an agent can immediately tell what this tool is and is not.

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?

Contains explicit 'When to use' and 'When NOT to use' sections, including named alternatives such as delimit_daemon_status and delimit_obs_status. This gives an agent direct, actionable routing guidance with no ambiguity.

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

delimit_cost_alertDelimit Cost AlertA
Destructive

Manage cost alert rules (CRUD on spending thresholds) (Pro).

When to use: to configure ongoing spend thresholds and notifications that fire when costs exceed a configured ceiling. When NOT to use: for one-shot cost analysis (use delimit_cost_analyze) or finding optimisations (delimit_cost_optimize).

Sibling contrast: delimit_cost_analyze finds drivers; delimit_cost_optimize finds reductions; this manages the alerting layer.

Side effects: action="create"/"delete"/"toggle" write to the file-based alert store. action="list" is read-only.

Prerequisite: requires Delimit Pro. An unlicensed call returns {"error": ..., "upgrade": "https://delimit.ai/pricing"} without running.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoAlert name. Required for create.
actionNoOne of "list" (default), "create", "delete", "toggle".list
alert_idNoExisting alert id. Required for delete/toggle.
thresholdNoCost threshold in USD. Required for create.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.7/5.0
Behavior5/5

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

The description clearly discloses that create/delete/toggle actions write to a file-based alert store while list is read-only, which adds meaningful behavioral detail beyond the write/destructive annotations. It also states the Pro license prerequisite and the unlicensed error response, giving the agent an accurate expectation of side effects and failures.

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 well-structured with clear headings, front-loaded purpose, and no filler. Each section earns its place: usage guidance, sibling contrast, side effects, and prerequisite are all present without unnecessary elaboration.

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

Completeness5/5

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

The description covers the key contextual aspects: what the tool does, when to use it, how it differs from siblings, side effects, and licensing requirements. An output schema exists, so the description does not need to explain return values, and nothing essential is missing for an agent to invoke it correctly.

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?

The input schema already provides 100% description coverage for all four parameters, including which are required for which action, so the description does not need to repeat those details. The description adds useful action-level context (list/create/delete/toggle and their side effects) but no deeper per-parameter semantics beyond the schema.

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 states a specific verb ('Manage') and a precise resource ('cost alert rules'), explicitly covering CRUD on spending thresholds. It distinguishes itself from the sibling tools delimit_cost_analyze and delimit_cost_optimize by defining what it does versus what they do.

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?

The description gives explicit 'When to use' and 'When NOT to use' guidance, naming the correct alternatives for one-shot cost analysis and optimization. The sibling contrast section further clarifies the decision boundary, leaving no ambiguity about when this tool is the right choice.

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

delimit_cost_analyzeDelimit Cost AnalyzeA
Read-onlyIdempotent

Analyze a project for cost drivers (Dockerfile, deps, cloud) (Pro).

When to use: when investigating spend on a project — scans Dockerfile, dependency manifests, and cloud configs for cost signals. When NOT to use: to enact cost reductions (use delimit_cost_optimize) or to manage alert rules (delimit_cost_alert).

Sibling contrast: delimit_cost_optimize finds reduction opportunities; this surfaces drivers (where the cost is).

Side effects: read-only on the target. Gated by require_premium. Calls backends.tools_data.cost_analyze.

Prerequisite: requires Delimit Pro. An unlicensed call returns {"error": ..., "upgrade": "https://delimit.ai/pricing"} without running.

ParametersJSON Schema
NameRequiredDescriptionDefault
targetNoProject or infrastructure path to analyze. Default "." (cwd)..

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.6/5.0
Behavior5/5

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

Beyond the readOnly/idempotent/destructive annotations, the description states the target is scanned read-only, that the tool is gated by require_premium, that it calls a specific backend function, and that an unlicensed call returns an upgrade payload without executing. This gives the agent a clear model of side effects and failure behavior.

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 more verbose than minimal but remains well structured with labeled sections and a front-loaded summary. There is minor redundancy between 'Gated by require_premium' and the later 'Prerequisite' sentence, so it is not perfectly concise.

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

Completeness5/5

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

For a simple one-parameter, read-only analysis tool with an output schema, the description covers purpose, usage boundaries, prerequisites, side effects, and unlicensed behavior. Nothing essential for calling it correctly is missing.

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?

With 100% schema description coverage, the schema already documents target and its default. The description adds some context about what the scan looks for (Dockerfile, dependency manifests, cloud configs), but it does not introduce substantial new parameter semantics beyond the schema.

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 opens with a specific verb and resource: 'Analyze a project for cost drivers (Dockerfile, deps, cloud)'. It later contrasts with delimit_cost_optimize and delimit_cost_alert, making it easy to distinguish this tool from the most relevant siblings.

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?

The 'When to use' section gives a concrete investigation scenario, and 'When NOT to use' explicitly routes to delimit_cost_optimize and delimit_cost_alert. This is unambiguous selection guidance.

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

delimit_cost_controlsDelimit Cost ControlsA
Read-onlyIdempotent

Manage MCP rate limits and session cost controls.

When to use: to inspect or adjust per-tool hourly rate limits and the session cost cap that throttle Delimit's call surface. When NOT to use: for project-cost analysis (use delimit_cost_analyze) or alert configuration (delimit_cost_alert).

Sibling contrast: delimit_cost_analyze inspects spend in your project; this manages our own per-session call quotas.

Side effects: action="set" / "reset" mutate the rate-limiter state. action="status" / "quota" are read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoNew hourly call limit (used with action="set").
actionNoOne of "status" (default), "quota", "set", "reset".status
cost_capNoNew session cost cap in USD (used with action="set").
tool_nameNoTool name. Required for "quota" and "set" with limit.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior1/5

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

The description clearly discloses side effects ('action="set" / "reset" mutate the rate-limiter state'), which is excellent transparency in isolation. However, this directly contradicts the annotation readOnlyHint=true, which claims the tool makes no modifications. This is the same pattern as the create_record calibration example: a description claiming write operations while annotations declare read-only. The conflicting signals leave the agent unsure whether invoking this tool is safe.

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?

Well-structured with labeled sections (When to use, When NOT to use, Sibling contrast, Side effects) that make it easily scannable. Every sentence earns its place, and the most decision-relevant information is front-loaded. The format is exemplary for an agent-facing definition.

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?

The description covers purpose, usage boundaries, sibling differentiation, and per-action side effects. An output schema exists, so return values don't need describing. Minor gaps: it doesn't distinguish what 'status' vs 'quota' actions each return, and the annotation contradiction undermines the otherwise complete safety picture. Still, nearly everything needed to call it correctly is present.

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 description coverage is 100%, so the baseline is 3. The description's phrases ('per-tool hourly rate limits', 'session cost cap') reinforce the mapping to limit/cost_cap, and the side-effects section adds action-level semantics (which actions mutate vs read). But this largely restates what the schema already documents rather than adding meaningful new parameter meaning.

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 opening line 'Manage MCP rate limits and session cost controls' uses a specific verb and resource, and the scope is unmistakable. It also distinguishes itself from siblings by explaining that delimit_cost_analyze inspects project spend while this manages per-session call quotas. An agent can clearly tell what this tool is for.

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?

The description explicitly states 'When to use', 'When NOT to use', and names the alternative tools (delimit_cost_analyze for project-cost analysis, delimit_cost_alert for alert configuration). The sibling contrast section further reinforces the decision boundary. No inference is required to choose correctly between this and related tools.

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

delimit_cost_optimizeDelimit Cost OptimizeA
Read-onlyIdempotent

Find cost optimization opportunities in a project (Pro).

When to use: after delimit_cost_analyze surfaces drivers, to get concrete suggestions: unused deps, oversized images, uncompressed assets. When NOT to use: to inventory current spend (delimit_cost_analyze) or manage threshold alerts (delimit_cost_alert).

Sibling contrast: delimit_cost_analyze identifies sources of cost; this proposes reductions.

Side effects: read-only on the target. Gated by require_premium. Calls backends.tools_data.cost_optimize.

Prerequisite: requires Delimit Pro. An unlicensed call returns {"error": ..., "upgrade": "https://delimit.ai/pricing"} without running.

ParametersJSON Schema
NameRequiredDescriptionDefault
targetNoProject or infrastructure path to analyze. Default "." (cwd)..

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.7/5.0
Behavior5/5

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

Annotations already declare readOnlyHint/idempotentHint/destructiveHint, and the description reinforces this in operational terms ('Side effects: read-only on the target'). It adds genuinely new behavioral context beyond annotations: the premium gating ('Gated by require_premium'), the exact unlicensed failure mode with the upgrade URL, that the call fails without running, and the internal backend routing ('Calls backends.tools_data.cost_optimize').

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?

Organized into labeled, scannable sections (When to use / When NOT to use / Sibling contrast / Side effects / Prerequisite) with the core purpose front-loaded. Every line carries distinct information; there is no filler or restatement of the title.

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

Completeness5/5

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

Complete for a single-optional-parameter tool: purpose, use cases, exclusions, sibling differentiation, safety profile, licensing prerequisite, failure behavior, and backend identity are all covered. Return values are handled by the output schema, so no gap remains for an agent to invoke this correctly.

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 description coverage is 100%, so the schema fully documents the single 'target' parameter (path, default '.'). The description adds no parameter-level detail beyond the schema's own description, so the baseline 3 applies.

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?

Opens with a specific verb+resource: 'Find cost optimization opportunities in a project (Pro).' The sibling contrast line ('delimit_cost_analyze identifies sources of cost; this proposes reductions') explicitly differentiates it from the nearest sibling, so an agent can distinguish it without opening schemas.

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?

Provides explicit when-to-use ('after delimit_cost_analyze surfaces drivers, to get concrete suggestions'), when-NOT-to-use ('to inventory current spend... or manage threshold alerts'), and names the alternatives (delimit_cost_analyze, delimit_cost_alert). The sequencing guidance ('after... surfaces drivers') is especially actionable.

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

delimit_daemon_classifyDelimit Daemon ClassifyA
Read-onlyIdempotent

Classify a ledger item's risk tier and suggested automation tool.

When to use: to preview what the autonomous daemon would do with a given ledger item (or the next automatable one). When NOT to use: to actually run an iteration (use delimit_daemon_run) or check daemon health (delimit_daemon_status).

Sibling contrast: delimit_daemon_status reads health; delimit_daemon_run executes; this previews the classification.

Side effects: read-only. Calls ai.daemon.classify_item / get_next_automatable_item / get_open_ledger_items.

ParametersJSON Schema
NameRequiredDescriptionDefault
item_idNoSpecific ledger item id to classify. Empty = pick the next automatable item from the open ledger.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.7/5.0
Behavior5/5

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

Annotations already mark the tool read-only, idempotent, and non-destructive. The description adds further context by explicitly stating 'Side effects: read-only' and naming the internal functions it calls (ai.daemon.classify_item / get_next_automatable_item / get_open_ledger_items), which is valuable beyond the annotations.

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 tightly structured with clear sections: purpose, when to use, when not to use, sibling contrast, and side effects. Every sentence earns its place and key classification behavior is front-loaded.

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

Completeness5/5

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

With annotations covering safety, an output schema present, and a single fully-documented parameter, the description covers all essential guidance. The agent has enough information to select, invoke, and interpret this tool correctly.

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 description coverage is 100%, and the schema fully documents item_id including the empty-string behavior. The description reinforces this by mentioning 'next automatable one' but does not add meaning beyond what the schema already provides. Baseline 3 is appropriate.

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 opens with a specific action and resource: 'Classify a ledger item's risk tier and suggested automation tool.' It also distinguishes itself from daemon_run and daemon_status, so an agent can tell exactly what this tool does relative to its closest siblings.

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?

The description provides explicit when-to-use and when-not-to-use guidance, naming delimit_daemon_run for executing and delimit_daemon_status for health checks. Sibling contrast is also stated clearly, leaving no ambiguity about selection.

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

delimit_daemon_runDelimit Daemon RunA

Advance the autonomous daemon by N iterations (Pro).

When to use: to manually advance the daemon loop one or more iterations, e.g. for testing or scheduled cron-style execution. When NOT to use: for inspection only (use delimit_daemon_status) or to classify an item (delimit_daemon_classify).

Sibling contrast: delimit_daemon_status reads; delimit_daemon_classify decides; this drives the loop.

Side effects: in dry_run mode, logs actions without executing them. In live mode, executes the daemon's automatable actions. Calls ai.daemon.run_loop with a 5-second interval between iterations.

ParametersJSON Schema
NameRequiredDescriptionDefault
dry_runNoIf True (default), log actions but do not execute.
iterationsNoNumber of iterations. 0 = infinite. Default 1.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.7/5.0
Behavior5/5

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

Beyond the annotations, the description discloses the dry_run vs live mode side effects, that it calls ai.daemon.run_loop, and the 5-second interval between iterations. This gives the agent a clear picture of what executing the tool actually does.

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 well-structured with labeled sections, front-loads the core behavior, and avoids filler. Every sentence contributes either usage guidance, sibling differentiation, or behavioral transparency.

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

Completeness5/5

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

The tool carries a safety-relevant readOnlyHint=false and destructiveHint=false, and the description explains the side-effectful behavior in both modes. An output schema exists so return-value documentation is not required here. The description is sufficient for correct selection and invocation.

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 description coverage is 100%, so both parameters are already fully documented in the schema. The description adds narrative context around dry_run and iterations but does not meaningfully extend the parameter semantics beyond what the schema provides; baseline 3 applies.

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 opens with a specific verb and resource: 'Advance the autonomous daemon by N iterations.' It also explicitly contrasts itself with delimit_daemon_status and delimit_daemon_classify, so an agent can distinguish it from closely related siblings.

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?

It has a dedicated 'When to use' section with concrete examples like testing and cron-style execution, plus a 'When NOT to use' section naming delimit_daemon_status and delimit_daemon_classify as alternatives. The sibling contrast further clarifies the decision boundary.

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

delimit_daemon_statusDelimit Daemon StatusA
Read-onlyIdempotent

Report the autonomous daemon's status (loops, items, actions).

When to use: to inspect what the autonomous daemon has been doing recently and whether it's healthy. When NOT to use: to start a run (use delimit_daemon_run) or classify a pending item (delimit_daemon_classify).

Sibling contrast: delimit_daemon_run advances iterations; this reads runtime state.

Side effects: read-only. Calls ai.daemon.get_daemon_status.

Args: None.

Returns: Dict with loop counts, items processed, recent actions, next_steps.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.9/5.0
Behavior5/5

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

Even though annotations already declare readOnlyHint and idempotentHint, the description adds meaningful behavioral detail: it states 'Side effects: read-only', explicitly reveals the underlying backend call ai.daemon.get_daemon_status, and clarifies that it reads runtime state. These details go beyond what annotations alone provide and leave no hidden 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?

The description is tightly structured with clear, scannable sections: purpose, when to use, when not to use, sibling contrast, side effects, args, and returns. Every sentence adds information, and the most critical usage guidance is front-loaded.

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

Completeness5/5

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

For a zero-parameter, read-only status tool with annotations covering safety and an output schema available, the description is fully adequate. It even enumerates the returned fields (loop counts, items processed, recent actions, next_steps), giving the agent a complete mental model with no missing context.

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

Parameters4/5

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

The tool takes zero parameters and the input schema confirms this, so there is no parameter semantics burden. The description additionally states 'Args: None', removing any ambiguity for the agent.

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 begins with a specific verb and resource: 'Report the autonomous daemon's status', and lists the exact observed dimensions (loops, items, actions). It also explicitly differentiates itself from siblings like delimit_daemon_run, which advances iterations, making the tool's purpose unmistakable.

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?

The description provides a dedicated 'When to use' section, a 'When NOT to use' section with named alternative tools, and a sibling contrast note. This is exemplary routing guidance: an agent knows exactly when to call this tool and when to call delimit_daemon_run or delimit_daemon_classify instead.

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

delimit_data_backupDelimit Data BackupA

Back up SQLite and JSON data files to ~/.delimit/backups/.

When to use: before a risky migration or refactor that touches SQLite or JSON data, to capture a timestamped restore point. When NOT to use: to validate data integrity (use delimit_data_validate) or apply migrations (delimit_data_migrate).

Sibling contrast: delimit_data_validate inspects integrity; delimit_data_migrate runs migrations; this captures a backup.

Side effects: writes timestamped copies of SQLite + JSON files under ~/.delimit/backups/ via backends.tools_data.data_backup.

ParametersJSON Schema
NameRequiredDescriptionDefault
targetNoDirectory or file to back up. Default "." (cwd)..

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.7/5.0
Behavior5/5

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

Discloses side effects beyond the annotations: writes timestamped copies to a specific location, captures a restore point, and does not claim to modify original files. The annotations destructiveHint=false and readOnlyHint=false are consistent with this behavior; no contradiction.

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 well-structured and front-loaded: purpose, when to use, when not to use, sibling contrast, and side effects are each given their own concise labeled section. Every sentence carries useful routing or safety information with no filler.

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

Completeness5/5

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

For a simple one-parameter tool with an output schema and safety annotations, the description covers purpose, trigger conditions, exclusions, alternatives, side effects, and destination. Nothing an agent needs to decide whether to call it or to call it safely is missing.

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 description coverage is 100% and the schema already documents target as the directory or file to back up and the default '.'. The description adds domain context about backing up SQLite and JSON data, but it does not materially expand parameter-level semantics beyond the schema.

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?

Opens with a specific verb and resource: 'Back up SQLite and JSON data files to ~/.delimit/backups/.' It also explicitly contrasts itself with delimit_data_validate and delimit_data_migrate, so an agent can distinguish it from the most similar siblings.

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?

Provides explicit when-to-use guidance ('before a risky migration or refactor'), when-not-to-use guidance ('to validate data integrity... apply migrations'), and names the exact alternatives. This leaves no ambiguity about tool selection.

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

delimit_data_migrateDelimit Data MigrateA
Read-onlyIdempotent

Inspect migration files (alembic / Django / Prisma / Knex) for status.

When to use: to audit pending and applied migrations before a deploy, or as a CI gate. When NOT to use: to actually apply migrations (this tool only inspects status) or back up data first (delimit_data_backup).

Sibling contrast: delimit_data_validate exercises data files; delimit_data_backup captures restore points; this reads migration status only.

Side effects: read-only inspection. Calls backends.tools_data.data_migrate.

ParametersJSON Schema
NameRequiredDescriptionDefault
targetNoProject path to scan for migration files. Default "." (cwd)..

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already mark this as read-only and non-destructive, and the description reinforces this with 'read-only inspection' and 'this tool only inspects status.' It adds useful behavioral context that the tool does not apply migrations and names the backend call, going slightly beyond the annotations.

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 organized into clear, front-loaded sections: purpose, when to use, when not to use, sibling contrast, and side effects. Every sentence earns its place; the backend call detail is minor but does not bloat the description.

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

Completeness5/5

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

For a simple read-only tool with one optional parameter, an output schema, and strong annotations, the description is complete. It covers use cases, exclusions, safety profile, and scope without needing to explain return values since an output schema exists.

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 100%, so the single optional 'target' parameter is fully documented in the input schema. The description adds no additional parameter-level detail, but none is needed given the schema already explains the default and purpose.

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 opens with a specific verb and resource: 'Inspect migration files (alembic / Django / Prisma / Knex) for status.' It clearly distinguishes itself from siblings by naming delimit_data_validate and delimit_data_backup and stating what this tool does not do.

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?

The description explicitly states when to use the tool ('to audit pending and applied migrations before a deploy, or as a CI gate') and when not to use it ('to actually apply migrations... or back up data first'). It also provides sibling contrast, leaving no ambiguity about which tool to select.

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

delimit_data_validateDelimit Data ValidateA
Read-onlyIdempotent

Validate data files: JSON parse, CSV shape, SQLite integrity.

When to use: as a smoke check before relying on data files (CI pipelines, before migrations) to catch corruption early. When NOT to use: for migration status (use delimit_data_migrate) or backups (delimit_data_backup).

Sibling contrast: delimit_data_migrate inspects migration files; this exercises the data files themselves.

Side effects: read-only on the target. Calls backends.tools_data.data_validate.

ParametersJSON Schema
NameRequiredDescriptionDefault
targetNoDirectory or file path with data files. Default "." (cwd)..

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, so the safety profile is covered. The description adds useful behavioral context by specifying the validation dimensions (JSON parse, CSV shape, SQLite integrity), stating the side effect is read-only, and noting it calls backends.tools_data.data_validate. It does not detail failure handling or output behavior, but output schema and annotations reduce that burden.

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 compact, well-organized, and front-loaded with the primary purpose. Every section earns its place: what it validates, when to use it, when not to use it, sibling contrast, and side effects. No filler or redundant elaboration.

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

Completeness5/5

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

For a simple read-only validation tool with one optional parameter, an output schema, and full annotation coverage, the description is complete. It gives the agent sufficient context to decide when to call it, what it checks, and which siblings to use instead.

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 description coverage is 100% and the only parameter, target, is already documented as a directory or file path with data files and a default of '.'. The description does not add significant new meaning beyond the schema, so the baseline of 3 is appropriate.

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 opens with a specific verb and resource: 'Validate data files: JSON parse, CSV shape, SQLite integrity.' It clearly states what the tool operates on and what checks it performs, and it distinguishes itself from sibling delimit_data_migrate by noting that this tool exercises the data files themselves rather than migration files.

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?

The description explicitly provides 'When to use' (smoke checks before relying on data files, CI pipelines, before migrations), 'When NOT to use' (migration status, backups), and names the alternative tools delimit_data_migrate and delimit_data_backup. It also adds a sibling contrast sentence, so an agent knows exactly when this tool is appropriate versus its siblings.

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

delimit_deliberateDelimit DeliberateA

Run multi-model consensus via AI-to-AI deliberation (Pro).

When to use: for foundational decisions (pricing, naming, public-facing copy framing, doctrine edits), external PR diffs, or any decision where cross-model contradiction-detection adds value. When NOT to use: for routine implementation choices (orchestrate in-thread or via subagent dispatch) — deliberation is for cross-checked confabulation, not capability.

Sibling contrast: delimit_models manages which providers can be called; this runs the actual panel. delimit_security_deliberate is the security-class variant.

Side effects: writes transcripts under save_path when provided. Models are called via configured providers; Free tier uses 3 builtin slots, Pro/Premium uses BYOK from ~/.delimit/models.json. Strategic / social scopes enforce a 3-model minimum and may invoke Grok as a tiebreaker.

ParametersJSON Schema
NameRequiredDescriptionDefault
modeNo"dialogue" (short turns) or "debate" (long essays). Default "dialogue".dialogue
scopeNoOptional scope override — "strategic", "social", or "operational". Empty = engine classifies from keywords.
contextNoBackground context shared to all models.
questionYesThe question to reach consensus on. Required.
save_pathNoOptional file path to save the full transcript.
max_roundsNoMax rounds. Default 3 for debate, 6 for dialogue.
context_filesNoOptional list of file paths whose contents are read server-side, redacted (secrets/PII), size-capped, and injected as a "Referenced Files" block so the panel can reason over real source (panelists have no filesystem access). Fails closed per file.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.7/5.0
Behavior5/5

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

Annotations only provide readOnlyHint=false and destructiveHint=false, so the description carries most of the behavioral burden. It discloses side effects (transcript writes under save_path), external model calls through configured providers, tier-dependent model availability, and special constraints for strategic/social scopes including a 3-model minimum and possible Grok tiebreaker. This goes well beyond the bare annotations.

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 well-structured with clear headers for use cases, exclusions, sibling contrast, and side effects. It front-loads the core purpose and every sentence contributes distinct decision-relevant information, making the length justified rather than padded.

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

Completeness5/5

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

Given the tool's complexity, the description plus full input schema and output schema provide everything an agent needs: required parameter, supported modes, scope behavior, provider configuration, side effects, and when to avoid this tool. No critical information is missing.

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 description coverage is 100%, so the schema already documents all 7 parameters. The description adds no new parameter-level syntax or format details beyond what the schema provides, and therefore remains at the baseline 3 rather than needing to compensate.

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 opens with a specific verb phrase, 'Run multi-model consensus via AI-to-AI deliberation,' and names the exact resource. It explicitly differentiates from delimit_models and delimit_security_deliberate, so an agent can distinguish this tool from its siblings without opening their schemas.

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?

The description provides an explicit 'When to use' list with concrete decision types such as pricing, naming, copy framing, doctrine edits, and external PR diffs. It also gives a clear 'When NOT to use' exclusion for routine implementation choices and names alternatives like in-thread orchestration or subagent dispatch.

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

delimit_deliberation_statusDelimit Deliberation StatusA
Read-onlyIdempotent

Check deliberation usage and mode (hosted free tier vs BYOK).

When to use: before invoking delimit_deliberate, to confirm whether you are still inside the hosted free-tier quota or running BYOK (bring-your-own-keys), and to read the signed-in OAuth state. When NOT to use: to run an actual panel (use delimit_deliberate) or to manage provider keys (delimit_models).

Sibling contrast: delimit_deliberate runs the panel; delimit_models manages provider keys; this is the lightweight pre-flight status check.

Side effects: read-only. Calls ai.deliberation.get_deliberation_status which reads ~/.delimit state.

LED-2092: hosted access now requires a delimit.ai account.

Args: None.

Returns: Dict with: oauth_required, oauth_signed_in, lifetime_used, lifetime_remaining, daily_cap_remaining, signin_url, plus the legacy hosted_used / hosted_remaining / hosted_limit fields retained for backward compatibility with scripted callers.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.9/5.0
Behavior5/5

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

Annotations already declare readOnly, idempotent, and non-destructive; the description adds that it reads ~/.delimit state, exposes OAuth signed-in status, retains legacy fields, and notes the LED-2092 account requirement. No contradiction with annotations.

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?

Purpose is front-loaded in the first sentence, with clearly labeled When/When-not/Sibling contrast/Side effects/Returns sections. Although detailed, every section adds actionable context rather than filler.

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

Completeness5/5

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

For a zero-parameter, read-only status check with an output schema, the description covers invocation timing, return fields, legacy compatibility, and backend state. Nothing an agent needs to select and call it correctly is missing.

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

Parameters4/5

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

There are zero parameters, so there is little to explain; the description explicitly states 'Args: None' and the schema confirms empty properties. This is the appropriate baseline for a no-parameter 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?

Opens with 'Check deliberation usage and mode', a specific verb plus resource, and explicitly contrasts itself with delimit_deliberate and delimit_models. An agent can distinguish this from all siblings without inspecting schemas.

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?

Provides explicit 'When to use' guidance (before delimit_deliberate to confirm quota/BYOK/OAuth state) and 'When NOT to use' with named alternatives. This is strong routing guidance that leaves no ambiguity about invocation context.

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

delimit_deploy_buildDelimit Deploy BuildA

Build container images for an app at a specific git ref (Pro).

When to use: as the second step of the deploy chain after delimit_deploy_plan has succeeded and you need SHA-tagged container images locally before delimit_deploy_publish pushes them to the registry. The full chain is plan -> build -> publish -> verify -> (rollback on failure). When NOT to use: to push existing images to a registry (use delimit_deploy_publish), to deploy a site (delimit_deploy_site), to publish an npm package (delimit_deploy_npm), or to start the full chain (delimit_deploy_plan).

Sibling contrast: deploy_plan plans, this builds local images, deploy_publish pushes to the registry, deploy_verify checks rollout health, deploy_rollback reverts. Compared to delimit_deploy_site (static-site deploy) and delimit_deploy_npm (npm publish), this is the container path.

Side effects: gated by require_premium — unlicensed callers receive a license payload and no build runs. On a licensed call, invokes backends.deploy_bridge.build which shells out to the local container builder (e.g. docker buildx) — this consumes local disk for image layers and CPU for the build. No network push at this step (that is delivery_publish). The response is routed through _with_next_steps.

ParametersJSON Schema
NameRequiredDescriptionDefault
appNoApplication name (project key in the deploy backend).
git_refNoGit ref (branch/tag/SHA). Default None = backend HEAD.
repo_pathNoExplicit Git worktree root.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.6/5.0
Behavior5/5

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

The description goes well beyond the annotations. It discloses the premium gating behavior ('require_premium — unlicensed callers receive a license payload and no build runs'), the internal backend invocation, the local resource consumption (disk and CPU), that no network push happens at this step, and that the response is routed through _with_next_steps. This is rich behavioral context that annotations do not provide.

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 detailed but relevant, with clear section headers and front-loaded purpose. The 'Sibling contrast' section is somewhat redundant with the 'When NOT to use' section, repeating similar routing guidance. Still, it earns a 4 because every section serves a clear decision-making purpose and the organization is effective.

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

Completeness5/5

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

Given the tool has an output schema, a complete set of 3 parameters, and rich context about the deploy chain, prerequisites, side effects, and alternatives, nothing critical is missing. The description covers licensing gate, resource impact, chain position, and routing behavior. An agent has enough to decide when and how to invoke it correctly.

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 description coverage is 100%, so each parameter (app, git_ref, repo_path) is already documented in the schema. The description adds context around the git_ref default ('Default None = backend HEAD') but mostly relies on the schema. A baseline of 3 is appropriate since the schema covers parameter meaning adequately.

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 states a specific verb+resource ('Build container images for an app at a specific git ref') and distinguishes itself from siblings by naming the deploy chain step. It clearly identifies this as the build step producing local SHA-tagged images, not the plan or publish step.

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?

Provides explicit 'When to use', 'When NOT to use', and a full chain (plan -> build -> publish -> verify -> rollback). It names the alternative tools (delimit_deploy_publish, delimit_deploy_site, delimit_deploy_npm) and explains when they are appropriate instead. The sibling contrast section reinforces the routing decision clearly.

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

_delimit_deploy_implDelimit Deploy ImplA
Destructive

Unified deployment entry point — dispatches to one of eight actions (Pro).

When to use: as the single MCP-registered deploy surface (delimit_deploy) when the caller wants to pick the deploy operation by name in one call rather than choosing a specific delimit_deploy_* alias. Covers the full container chain (plan -> build -> publish -> verify -> rollback), the deploy-state read (status), and the two non-container ship paths (site / npm). When NOT to use: from internal code paths or when you want the operation's behavior and gate to surface at the right name — prefer the specific alias (delimit_deploy_plan, delimit_deploy_build, delimit_deploy_publish, delimit_deploy_verify, delimit_deploy_rollback, delimit_deploy_status, delimit_deploy_site, delimit_deploy_npm). For a pure runtime health check use delimit_obs_status; for a pre-deploy smoke test use delimit_test_smoke; for release-tracking metadata use delimit_release_status.

Sibling contrast: each delimit_deploy_ wrapper is a thin alias over this implementation (they exist so the action's docstring lives at the right name). This is the dispatch core. The "plan" action additionally shares logic with delimit_deploy_plan via the internal _deploy_plan_chain helper.

Side effects: ALL actions are gated by require_premium — unlicensed callers receive a license payload and no backend call is made. Errors are deterministic: an unrecognized action returns {"error": "Unknown action ''. Valid: ..."} before any gate or backend call. Per action:

  • "plan": delegates to _deploy_plan_chain (gate key "deploy_plan"). Read-mostly but ORCHESTRATES a chain: a worktree-sanity precheck, then delimit_security_audit (FAIL-CLOSED — halts with status="blocked" on audit error or any critical finding without producing a plan), then the deploy-bridge plan, then a best-effort delimit_gov_evaluate. Produces no deploy artifact itself.

  • "build": gate "deploy_build". WRITES locally — shells out to the container builder (consumes local disk/CPU for image layers). No network push at this step.

  • "publish": gate "deploy_publish". NETWORK WRITE — pushes previously built images to the configured container registry.

  • "verify": gate "deploy_verify". Read-only network PROBES (HTTP health checks, container/dependency inspection) of a deployed revision. May return partial results on backends without health endpoints.

  • "rollback": gate "deploy_rollback". MUTATES the running environment to point at to_sha (reversal-only).

  • "status": gate "deploy_status". READ-ONLY query of the deploy state store. No write, no probe.

  • "site": repo_path is required and project_path resolves inside it. gate "deploy_site". LOCAL scoped git ops + a NETWORK Vercel build. The default uses only pre-staged changes; explicit paths are the only way the tool stages files. A post-push Vercel timeout returns pending with continuation identifiers instead of closing the transport.

  • "npm": gate "deploy_npm". A PRODUCTION DEPLOY — bumps package.json (LOCAL write), runs prepublishOnly, npm pack, then npm publish (a publicly-visible NETWORK write, effectively not undoable). dry_run=True suppresses only the final publish; the bump and pack still run. Every result is wrapped via _with_next_steps for orchestrator hints.

ParametersJSON Schema
NameRequiredDescriptionDefault
appNoApplication name / project key in the deploy backend. Used by "plan", "build", "publish", "verify", "rollback", "status". Required for a real container operation. (Ignored by "site" and "npm".)
envNoTarget environment, typically "staging" or "production". Used by "plan", "verify", "rollback", "status".
tagNonpm dist-tag. Used by "npm" only. Default "latest"; use "next" or a custom tag to avoid auto-installing the new version for existing users.latest
bumpNoSemver bump "patch" (default) / "minor" / "major". Used by "npm" only.patch
pathsNo
actionNoWhich deploy operation to perform. One of "plan", "build", "npm", "publish", "site", "status", "verify", "rollback". Default "status". Case/space-insensitive (lowered + stripped). Other values return a deterministic {"error": ...}.status
to_shaNoSHA to roll back to. Used by "rollback" only. None lets the backend select the previous deployed SHA.
dry_runNoIf True, run the npm chain without the final publish. Used by "npm" only. Default False.
git_refNoGit ref (branch/tag/SHA). Used by "plan", "build", "publish", "verify". Default None = backend HEAD; drives the image tag for "build".
messageNoGit commit message. Used by "site" only.
ventureNo
repo_pathNoRequired Git worktree root for every deploy action.
staged_onlyNo
target_urlsNo
project_pathNoRepository-relative site/package directory. It must remain inside repo_path..
vercel_timeoutNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.9/5.0
Behavior5/5

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

The description richly discloses behavior far beyond the readOnlyHint=false/destructiveHint=true annotations: all actions are gated by require_premium, unrecognized actions return a deterministic error before any gate/backend call, plan is fail-closed, build writes locally, publish is a network write, rollback mutates the environment, status is read-only, and npm includes a non-undoable public publish. This is exemplary behavioral disclosure.

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 long but every section earns its place: when to use, when not to use, sibling contrast, side effects, and per-action breakdown. It is front-loaded with the core purpose and uses structured bullets for the eight actions, making a complex dispatch surface navigable rather than bloated.

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

Completeness5/5

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

Given the tool's high complexity (16 params, 8 actions, multiple side-effect profiles), the description is complete: it covers action selection, per-action gates, side effects, error behavior, parameter relevance, and even continuation behavior on Vercel timeout. The output schema is present, so return-value details do not need to be re-explained.

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

Parameters4/5

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

Schema coverage is 69%, so the description carries meaningful weight. It adds semantics beyond the schema: dry_run suppresses only the final publish while bump and pack still run, repo_path is required for every deploy action, site defaults to pre-staged changes with explicit paths as the only staging mechanism, and Vercel timeout yields pending continuation identifiers. A few parameters (venture, target_urls) get no extra explanation, but the schema covers the main ones.

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 opens with a specific verb and resource: 'Unified deployment entry point — dispatches to one of eight actions (Pro).' It clearly names the exact operations covered and explicitly contrasts itself with the thin aliases delimit_deploy_plan/build/publish/etc., making the dispatch-core role unambiguous.

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?

The description has explicit 'When to use' and 'When NOT to use' sections. It names the preferred aliases for action-specific behavior, and routes health checks to delimit_obs_status, smoke tests to delimit_test_smoke, and release metadata to delimit_release_status. No inference is needed.

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

delimit_deploy_npmDelimit Deploy NpmA

Publish an npm package: version bump, pack, and push to registry (Pro).

When to use: to ship a new version of an npm-published package (delimit-cli, a venture SDK, etc.). This is a PRODUCTION DEPLOY — every successful publish reaches real users, so it must be preceded by the deploy gate chain (delimit_security_audit -> delimit_test_smoke -> delimit_changelog -> delimit_deploy_plan) and explicit founder approval per the customer-protection rule. When NOT to use: to deploy a site (use delimit_deploy_site), to push container images (delimit_deploy_publish), to dry-run locally (npm pack --dry-run is faster), or to test the chain without publishing — for that, pass dry_run=True here.

Sibling contrast: delimit_deploy_site ships UI / static; this ships npm tarballs to the registry. Compared to running npm publish by hand, this wraps the chain with a bump, governance gate, and is the auditable surface that other tools can chain against.

Side effects: gated by require_premium — unlicensed callers receive a license payload and no publish runs. On a licensed call, invokes backends.tools_infra.deploy_npm which runs the npm publish chain: (1) bumps the version in package.json (LOCAL write to the source tree), (2) runs the project's prepublishOnly hook if present (which may build or sync artifacts — note the 2026-05-08 v4.5.12 prepublish regression), (3) runs npm pack and (4) npm publish to the configured registry — a NETWORK write that is publicly visible and NOT undoable except by an unpublish (heavily restricted by npm). dry_run=True suppresses step (4) only — the version bump and pack still happen so the chain can be exercised.

Prerequisite: requires Delimit Pro. An unlicensed call returns {"error": ..., "upgrade": "https://delimit.ai/pricing"} without running.

ParametersJSON Schema
NameRequiredDescriptionDefault
tagNonpm dist-tag for the publish. Default "latest".latest
bumpNoSemver bump — "patch" (default), "minor", or "major".patch
dry_runNoIf True, run the chain without publishing. Default False.
repo_pathNoRequired explicit Git worktree/package root; never derived from cwd.
project_pathNoDeprecated compatibility field; repo_path is authoritative..

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.9/5.0
Behavior5/5

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

Beyond readOnlyHint=false, the description discloses step-by-step side effects: local package.json bump, prepublishOnly hook execution (including a known regression), npm pack, and npm publish as a publicly visible network write that is not undoable. It also covers dry_run's exact scope (suppresses step 4 only) and the unlicensed-caller behavior, giving the agent a precise model of consequences. This does not contradict destructiveHint=false because publishing is not deleting data, but it correctly labels the side effect as irreversible.

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 long but every paragraph earns its place: purpose, routing guidance, sibling contrast, side effects, and prerequisites are each one dense block with no filler. It front-loads the core action and immediately follows with deployment-safety context.

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

Completeness5/5

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

For a production deploy tool, the description fully covers what will happen, what won't happen in dry run, what must precede it, who can call it, and which sibling tools handle other cases. The output schema exists, so return-value documentation is not the description's job; nothing needed for correct invocation is missing.

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

Parameters4/5

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

Input schema already covers all five parameters (100%), so baseline is 3; the description earns extra by adding one important behavioral nuance: dry_run=True still performs the version bump and pack, not just a no-op, so the chain can be exercised. It also clarifies that this is a Pro-gated operation, which indirectly prepares the agent for a license-related response. No per-parameter details beyond what the schema already provides are added, so 4 rather than 5.

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 opens with a precise action and resource: 'Publish an npm package: version bump, pack, and push to registry (Pro).' It distinguishes itself from delimit_deploy_site and delimit_deploy_publish by naming exactly what it ships (npm tarballs) versus sites or container images, so an agent can disambiguate immediately.

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?

The 'When to use' and 'When NOT to use' sections are explicit, naming the correct alternative for each excluded case (delimit_deploy_site, delimit_deploy_publish, local npm pack --dry-run) and even pointing to dry_run=True for testing the chain without publishing. It also states the required preceding chain and founder approval, leaving no ambiguity about when invoking it is appropriate.

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

delimit_deploy_planDelimit Deploy PlanA

Generate a deploy plan with security preflight (Pro).

When to use: as the first step in the deploy chain. The plan enumerates build steps and bakes in a security audit + governance evaluation before any artifact is produced. When NOT to use: to actually build images (use delimit_deploy_build) or to ship code (use delimit_deploy_publish).

Sibling contrast: this is the planning gate; delimit_deploy_build and delimit_deploy_publish are the execution steps that follow.

Side effects: auto-chains delimit_security_audit (fail-closed on critical findings), then delimit_gov_evaluate, then the underlying deploy_plan handler. Halts and returns status="blocked" on any critical security finding without producing a plan.

ParametersJSON Schema
NameRequiredDescriptionDefault
appNoApplication identity (not a filesystem path). Required.
envNoTarget environment, typically "staging" or "production".
git_refNoGit ref (branch/tag/SHA). Optional; defaults to HEAD.
ventureNoOptional ledger venture identity; repository context remains authoritative.
repo_pathNoExplicit Git worktree root used for health, security, governance, evidence, and attribution.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.6/5.0
Behavior5/5

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

Beyond the annotations (readOnlyHint=false, destructiveHint=false), the description discloses side effects in detail: it auto-chains delimit_security_audit and delimit_gov_evaluate before the underlying deploy_plan handler, halts on critical findings, and returns status="blocked" without producing a plan. This is substantial behavioral context that the annotations do not provide.

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 organized into clear labeled sections: purpose, when to use, when not to use, sibling contrast, and side effects. Every section adds distinct value, and the key purpose is front-loaded before any secondary details.

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?

The description covers the tool's role in the deploy chain, exclusions, side effects, and failure behavior. An output schema exists, so return-value documentation is not required here. The only minor gap is that it doesn't explain what happens if the tool is invoked without Pro access or how auth is handled, but this is not essential for correct invocation.

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 description coverage is 100%, so the schema already documents all five parameters. The description does not add parameter-level meaning, but it doesn't need to because the schema handles it. This matches the baseline for high schema coverage.

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 opens with a specific verb and resource: 'Generate a deploy plan with security preflight.' It clearly distinguishes itself from delimit_deploy_build and delimit_deploy_publish by framing itself as the planning gate, so an agent can immediately tell what this tool does relative to its siblings.

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?

The description gives explicit 'When to use' and 'When NOT to use' guidance, names the exact alternative tools, and explains the positioning in the deploy chain. This removes ambiguity about when the agent should select this tool versus the build or publish steps.

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

delimit_deploy_publishDelimit Deploy PublishA

Publish previously built images to the registry (Pro).

When to use: after delimit_deploy_build has produced images locally. When NOT to use: to build images (delimit_deploy_build) or to start the deploy chain (delimit_deploy_plan).

Sibling contrast: deploy_build produces local images; this pushes them to the registry; deploy_verify confirms rollout health.

Side effects: gated by require_premium. Calls backends.deploy_bridge.publish, which performs network writes to the configured container registry.

Prerequisite: requires Delimit Pro. An unlicensed call returns {"error": ..., "upgrade": "https://delimit.ai/pricing"} without running.

ParametersJSON Schema
NameRequiredDescriptionDefault
appNoApplication name (project key in the deploy backend).
git_refNoGit ref the images were built at. Default None.
repo_pathNoExplicit Git worktree root.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.7/5.0
Behavior5/5

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

The annotations only set readOnlyHint=false and destructiveHint=false, so the description carries the transparency burden. It discloses that publish is gated by require_premium, calls backends.deploy_bridge.publish, performs network writes to the registry, and returns a specific unlicensed response without running. This is valuable behavioral context an agent cannot infer from annotations alone.

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 organized into labeled, scannable sections and front-loads the core action before caveats. Every section serves a purpose: what it does, when to use it, when not to, side effects, and prerequisite. Minor redundancy around the Pro requirement is acceptable and does not reduce clarity.

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

Completeness5/5

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

For a mutating publish operation with an output schema, the description covers the essential context: position in the deploy flow, side effects, licensing failure mode, and sibling roles. Parameters are fully covered by the input schema and return values by the output schema. No material gap remains for correct invocation.

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?

Input schema coverage is 100%, with descriptive comments for app, git_ref, and repo_path. The description does not add parameter-specific detail beyond what the schema already provides. A baseline of 3 is appropriate when the schema fully documents the parameters.

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 opening sentence uses a specific action and resource: 'Publish previously built images to the registry (Pro)'. It distinguishes this tool from siblings by naming delimit_deploy_build as the local-image producer and delimit_deploy_verify as the rollout-health checker. This goes well beyond restating the title.

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?

The description has explicit 'When to use' and 'When NOT to use' guidance, directing the agent to use this after delimit_deploy_build has produced local images. It names the alternatives for building and starting the deploy chain, and contrasts with delimit_deploy_verify. Tool selection is unambiguous.

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

delimit_deploy_rollbackDelimit Deploy RollbackA
Destructive

Roll back an environment to a previous SHA (Pro).

When to use: when delimit_deploy_verify shows a regression and you need to revert the running deployment to a known-good revision. When NOT to use: to deploy a new version forward (delimit_deploy_plan -> _build -> _publish) — rollback is reversal-only.

Sibling contrast: delimit_deploy_publish moves an env forward; this moves it back to a prior to_sha.

Side effects: gated by require_premium. Calls backends.deploy_bridge.rollback which mutates the running environment to point at to_sha.

Prerequisite: requires Delimit Pro. An unlicensed call returns {"error": ..., "upgrade": "https://delimit.ai/pricing"} without running.

ParametersJSON Schema
NameRequiredDescriptionDefault
appNoApplication name.
envNoTarget environment.
to_shaNoTarget SHA to roll back to. If None, the backend selects the previous deployed SHA.
repo_pathNoExplicit Git worktree root.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.7/5.0
Behavior5/5

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

Annotations already flag destructiveHint=true, but the description adds substantial behavioral detail: the call is gated by require_premium, invokes backends.deploy_bridge.rollback, mutates the running environment, and returns a specific error payload with an upgrade URL when unlicensed. This goes well beyond the annotation hints and clearly sets expectations for side effects and failure behavior.

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 well structured with clear labeled sections: purpose, when to use, when not to use, sibling contrast, side effects, and prerequisite. Every sentence adds necessary information, and the most important scoping details are front-loaded.

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

Completeness5/5

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

Given the tool's complexity and the presence of both input and output schemas, the description covers all essential operational guidance: trigger condition, exclusion criteria, reversal-only behavior, side effects, licensing prerequisite, and failure mode. No critical information needed to invoke it correctly is missing.

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 description coverage is 100%, and each parameter already has its own description. The tool description adds only minimal extra insight by referencing 'prior to_sha,' while the schema already explains that null selects the previous deployed SHA. The schema carries the semantic weight, so baseline 3 is appropriate.

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 opens with a clear verb and resource: 'Roll back an environment to a previous SHA.' It also distinguishes the tool from delimit_deploy_publish by stating that publish moves forward while this moves backward, so an agent can identify the correct tool without ambiguity.

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?

Explicit 'When to use' and 'When NOT to use' sections define the exact scenario (delimit_deploy_verify shows a regression) and explicitly rule out forward deploys. It also names the sibling tool and the condition that selects it, leaving no inference required.

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

delimit_deploy_siteDelimit Deploy SiteA
Destructive

Ship a static / Next.js site via git push to the Vercel pipeline (Pro).

When to use: to deploy UI / site changes (typically delimit-ui or a venture marketing site) — this performs the commit, push, and triggers the Vercel build that produces the production deployment. Pair with delimit_deploy_verify on the resulting deploy URL to confirm rollout health. When NOT to use: to publish an npm package (use delimit_deploy_npm), to push container images (delimit_deploy_publish / delimit_deploy_build), or to roll back (delimit_deploy_rollback).

Sibling contrast: delimit_deploy_publish ships container images; delimit_deploy_npm publishes packages; this is the static-site / Vercel flavour. Compared to running git push by hand, this wraps the push with sanitisation, governance hooks, and (for delimit-ui) automatic ChatOps env-var injection from CHATOPS_AUTH_TOKEN.

Side effects: requires repo_path and is gated by require_premium. project_path must remain inside repo_path. The safe default commits only the existing index; staged_only=false requires explicit repo-relative paths and never uses git add -A. Vercel binding is pulled/validated before Git mutation. A timeout after push returns status=pending, commit SHA, and a delimit_deploy_verify continuation rather than raising. On success this performs LOCAL git operations and triggers a NETWORK deploy (Vercel build webhook). For the delimit-ui project, automatically injects ChatOps env vars from the CHATOPS_AUTH_TOKEN environment variable into the build context. No rollback — use delimit_deploy_rollback if the deploy regresses.

ParametersJSON Schema
NameRequiredDescriptionDefault
appNoDeployment application identity, separate from filesystem context.
pathsNoExplicit repo-relative paths to stage; set staged_only=false when used.
messageNoGit commit message for the deploy commit.
repo_pathNoRequired explicit Git worktree root; never derived from MCP server cwd.
staged_onlyNoDeploy only the existing index. Safe default: true.
project_pathNoSite directory inside repo_path, or an absolute path inside it..
vercel_timeoutNoSeconds to wait for Vercel after push before returning pending (10-600).

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.8/5.0
Behavior5/5

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

The description goes well beyond the annotations by disclosing local git mutation plus a network Vercel deploy, pre-validation of the Vercel binding, timeout behavior returning status=pending with an SHA, the absence of rollback, and the staged_only safety semantics. It also correctly aligns with destructiveHint=true and readOnlyHint=false, so there is no contradiction.

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 well-organized with clear sections and front-loaded purpose, but it repeats the ChatOps env-var injection detail in two separate paragraphs and is somewhat longer than necessary. Minor trimming would make it more concise while preserving all the valuable context.

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

Completeness5/5

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

For a destructive, network-triggering 7-parameter tool, the description covers prerequisites, when-not-to-use, side effects, timeout fallback behavior, and the rollback alternative. Since an output schema exists, the return-value details do not need to be restated here, making this description complete for safe and correct invocation.

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

Parameters4/5

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

Schema coverage is already 100%, so the baseline is 3, but the description adds meaningful constraints: repo_path must be an explicit worktree root, project_path must remain inside repo_path, and staged_only=false requires explicit paths and never uses git add -A. This adds value beyond the schema, though some parameter-specific details are still left to the schema.

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 first sentence names a concrete action ('Ship a static / Next.js site via git push to the Vercel pipeline') and the sibling contrast explicitly distinguishes it from delimit_deploy_publish and delimit_deploy_npm. This gives the agent an unambiguous model of what the tool does and how it differs from nearby deploy tools.

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?

The description contains explicit 'When to use' and 'When NOT to use' sections, names the correct siblings for npm, container, and rollback flows, and tells the agent to pair with delimit_deploy_verify on the resulting URL. This leaves no ambiguity about when this tool is the right choice.

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

delimit_deploy_statusDelimit Deploy StatusA

Read the current rollout metadata for an app/env (Pro).

When to use: to inspect the currently deployed SHA, rollout state, and any in-progress deploy without actually probing the running app. Useful for "what is live right now?" questions and for the deploy dashboard. When NOT to use: for active runtime health probes (use delimit_deploy_verify), for steady-state observability metrics (delimit_obs_metrics / delimit_obs_status), or to deploy a change (delimit_deploy_plan / delimit_deploy_build).

Sibling contrast: delimit_deploy_verify exercises the running app via probes; this reads deploy-system metadata only. delimit_release_status is the sibling on the release-tracking side (versions, history). Compared to a registry inspection, this reports rollout state, not just image presence.

Side effects: read-only against the deploy backend and gated by require_premium — unlicensed callers receive a license payload and no query runs. On a licensed call, invokes backends.deploy_bridge.status which queries the deploy state store. No write, no probe, no notification. Response routed through _with_next_steps.

Prerequisite: requires Delimit Pro. An unlicensed call returns {"error": ..., "upgrade": "https://delimit.ai/pricing"} without running.

ParametersJSON Schema
NameRequiredDescriptionDefault
appNoApplication name.
envNoTarget environment.
repo_pathNoExplicit Git worktree root.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.7/5.0
Behavior1/5

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

The description is behaviorally rich, stating read-only behavior, no write/probe/notification, Pro licensing gating, and the internal backend call. However, the annotations declare readOnlyHint=false, which directly contradicts the description's explicit read-only claim. Per the rubric, a description that contradicts annotations receives a score of 1, and this is an annotation contradiction.

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 well-structured and front-loaded, with clear sections for purpose, usage, non-usage, sibling contrast, side effects, and prerequisites. It is longer than minimal, but most content earns its place. Minor redundancy exists: Pro licensing is mentioned both as a gating side effect and as a prerequisite, and the registry-inspection contrast is somewhat peripheral.

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?

The description covers use cases, exclusions, licensing prerequisites, side effects, internal behavior, and response routing, while the output schema accounts for return values. It is nearly complete, but the conflicting readOnlyHint annotation leaves the safety profile unreliable, and the optional parameter behavior (especially repo_path) is not elaborated beyond the schema.

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 description coverage is 100%, so the input schema already documents all three parameters. The tool description does not add parameter-level detail beyond the schema, but it does not need to compensate for a coverage gap. Baseline 3 is appropriate.

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 opens with a specific verb and resource: 'Read the current rollout metadata for an app/env.' It then concretely lists what is inspected (deployed SHA, rollout state, in-progress deploy) and contrasts with delimit_deploy_verify and delimit_release_status, making sibling differentiation explicit.

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?

The description provides an explicit 'When to use' section and an equally explicit 'When NOT to use' section, naming exact sibling alternatives such as delimit_deploy_verify, delimit_obs_metrics, delimit_obs_status, delimit_deploy_plan, and delimit_release_status. An agent can determine routing without inference.

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

delimit_deploy_verifyDelimit Deploy VerifyA

Probe a freshly-deployed revision's health — experimental (Pro).

When to use: immediately after delimit_deploy_publish has rolled out a new revision, to confirm the new SHA is actually healthy before declaring the deploy done and closing out the chain (delimit_deploy_verify -> delimit_evidence_collect -> delimit_ledger_done -> delimit_notify). If this returns unhealthy, the next step is delimit_deploy_rollback. When NOT to use: for steady-state runtime health checks (use delimit_obs_status / delimit_obs_metrics), to read deploy-system metadata only (delimit_deploy_status), or for a smoke test before deploy (delimit_test_smoke).

Sibling contrast: delimit_deploy_status reads deploy-system metadata only; this actively probes the running deployment. delimit_obs_status is the steady-state observability surface; this is post-deploy-only.

Side effects: gated by require_premium — unlicensed callers receive a license payload and no probe runs. On a licensed call, invokes backends.deploy_bridge.verify which performs network health checks against the deployed app (HTTP probes, container inspection, dependency reachability). No write. Marked EXPERIMENTAL — health logic may return partial results on backends without health endpoints; do not treat as authoritative for runtime SLOs.

ParametersJSON Schema
NameRequiredDescriptionDefault
appNoApplication identity; selects only this app's targets.
envNoTarget environment ("staging" or "production").
git_refNoOptional git ref the deploy targets.
repo_pathNoExplicit Git worktree root containing deploy target configuration.
target_urlsNoOptional app-specific HTTPS targets; never expands to the global fleet.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.6/5.0
Behavior5/5

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

The description goes well beyond the annotations by disclosing license gating via require_premium, the backend invocation, the network checks performed, the absence of writes, and the experimental nature with possible partial results. The readOnlyHint=false is consistent with the side-effecting license gating and backend probe, while 'No write' adds useful precision about state mutation.

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 longer than average but well-organized with labeled sections and a front-loaded purpose. Some redundancy exists—'experimental' appears twice and the sibling contrast partially repeats the when-not guidance—but the structure makes it easy for an agent to extract the relevant decision information quickly.

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

Completeness5/5

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

Given the output schema exists and input parameters are fully covered by the schema, the description supplies the missing operational context: workflow position, rollback path, license gating, backend behavior, and experimental caveats. Nothing an agent needs to decide when and how to invoke this tool is absent.

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 100%, so the schema already documents all five parameters. The description adds no parameter-specific meaning beyond naming the verification context, and does not clarify which optional parameters are typically expected for a verification call. Baseline 3 is appropriate because the schema carries the parameter burden.

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 opens with a specific verb and resource: 'Probe a freshly-deployed revision's health.' It clearly distinguishes this tool from delimit_deploy_status, delimit_obs_status, and delimit_test_smoke, and places it within the deploy workflow. An agent can immediately understand what this tool does and how it differs from close siblings.

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?

The description gives explicit when-to-use guidance ('immediately after delimit_deploy_publish'), names the downstream chain, and specifies the rollback path if health is unhealthy. It also provides a dedicated 'When NOT to use' section with concrete alternatives for steady-state checks, metadata reads, and pre-deploy smoke tests.

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

delimit_design_component_libraryDelimit Design Component LibraryA

Scan a project for React/Vue/Svelte components and emit a catalog.

When to use: to inventory a project's UI components for review, docs, or design-system curation. When NOT to use: to generate a single component (delimit_design_generate_component) or stories (delimit_story_generate).

Sibling contrast: delimit_design_generate_component creates one; this lists what already exists.

Side effects: read-only scan via backends.ui_bridge.design_component_library. Writes nothing.

ParametersJSON Schema
NameRequiredDescriptionDefault
project_pathYesProject path to scan. Required.
output_formatNoOne of "json" (default) or "markdown".json

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.7/5.0
Behavior5/5

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

Description explicitly discloses side effects: 'read-only scan' and 'Writes nothing.' Since readOnlyHint is false, this goes beyond the annotations and gives the agent concrete safety information that the structured metadata does not provide.

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?

Every section earns its place: purpose, when to use, when not to use, sibling contrast, and side effects. The structure is scannable and free of filler.

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

Completeness5/5

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

Given only two simple parameters, a present output schema, and clear side-effect disclosure, the description is fully complete for an agent to select and invoke the tool correctly. No critical context is missing.

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 description coverage is 100%, so the schema fully documents project_path and output_format. The description adds no parameter-level detail, but none is needed; baseline 3 is appropriate.

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 opens with a specific verb and resource: 'Scan a project for React/Vue/Svelte components and emit a catalog.' It clearly differentiates from sibling tools by stating it lists existing components rather than generating new ones.

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?

Explicit 'When to use' and 'When NOT to use' sections name the alternative tools delimit_design_generate_component and delimit_story_generate. The sibling contrast sentence reinforces the selection boundary, leaving no ambiguity.

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

delimit_design_extract_tokensDelimit Design Extract TokensA

Extract design tokens from a project's CSS/SCSS/Tailwind config.

When to use: to inventory or generate design tokens before creating a Tailwind config or component scaffold. When NOT to use: to scaffold a component (use delimit_design_generate_component) or generate tailwind config (delimit_design_generate_tailwind).

Sibling contrast: delimit_design_generate_tailwind builds a config from these tokens; this extracts them.

Side effects: read-only scan of local CSS/Tailwind. Figma API integration auto-activates when a Figma token is found in FIGMA_TOKEN env var, ~/.delimit/secrets/figma.json, or via delimit_secret_store. Calls backends.ui_bridge.design_extract_tokens. Coerces token_types via _coerce_list_arg.

ParametersJSON Schema
NameRequiredDescriptionDefault
token_typesNoToken types — "colors", "typography", "spacing", "breakpoints". Comma string or list. None = all.
project_pathNoProject directory to scan. Default = cwd.
figma_file_keyNoOptional Figma file key (uses Figma API if a token is available).

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.7/5.0
Behavior1/5

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

The description discloses useful behavior such as Figma API auto-activation, secret lookup paths, backend calls, and token_types coercion. However, it states the operation is a 'read-only scan,' while the annotation readOnlyHint is false. Because readOnlyHint=false signals that the tool may modify state, this is an annotation contradiction, so the score is 1 per the rubric.

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 well organized: purpose, usage guidance, sibling contrast, then side effects. Some internal identifiers like backends.ui_bridge.design_extract_tokens add noise, but the structure is clear and front-loaded.

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?

The description covers what the tool does, when to use it, when not to, sibling contrast, side effects, and Figma credential discovery. With an output schema present, return values need no explanation; the only completeness concern is the safety contradiction noted above.

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?

Input schema coverage is 100% and each parameter already has a description, default, and token_types values. The description's mention of _coerce_list_arg adds a minor implementation detail but does not materially improve parameter understanding beyond the schema.

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 opens with a specific verb and resource: 'Extract design tokens from a project's CSS/SCSS/Tailwind config.' It also names sibling tools it is not, so an agent can distinguish it from delimit_design_generate_tailwind and delimit_design_generate_component.

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?

It explicitly provides 'When to use,' 'When NOT to use,' and names the alternative tools for the excluded cases. This is exactly the routing guidance an agent needs and leaves no ambiguity about when to select this tool.

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

delimit_design_generate_componentDelimit Design Generate ComponentA

Generate a React/Next.js component skeleton with Tailwind support.

When to use: to scaffold a new component (.tsx) with props interface and Tailwind class structure. When NOT to use: to generate stories for an existing component (use delimit_story_generate) or extract design tokens (delimit_design_extract_tokens).

Sibling contrast: delimit_story_generate adds stories to a component; this creates the component itself.

Side effects: writes a new component file (.tsx) under output_path or components//.tsx via backends.ui_bridge.design_generate_component. Detects Tailwind config inside project_path.

ParametersJSON Schema
NameRequiredDescriptionDefault
output_pathNoOutput file path. Default = components/<Name>/<Name>.tsx.
project_pathNoProject root for Tailwind detection.
figma_node_idNoOptional Figma node ID (reserved for future use).
component_nameYesComponent name (PascalCase). Required.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already flag readOnlyHint=false and destructiveHint=false; the description adds meaningful side-effect detail by stating it writes a new .tsx file to a specific location via a named backend and detects Tailwind config. This clarifies the mutation behavior beyond what the annotations alone convey.

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 well-structured with labeled sections, front-loads the core purpose, and every sentence serves a distinct function: purpose, usage, exclusions, sibling contrast, and side effects. There is no filler or redundant elaboration.

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

Completeness5/5

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

The tool has an output schema, full parameter coverage, annotations, and a description that covers purpose, usage boundaries, alternatives, and side effects. Nothing essential for correct invocation is missing.

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 description coverage is 100%, so the schema already documents all four parameters. The description mostly restates output_path and project_path behavior already present in the schema, adding little new parameter-level meaning beyond the implementation detail of the backend call.

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 opens with a specific verb and resource: 'Generate a React/Next.js component skeleton with Tailwind support.' It also differentiates from siblings by explicitly naming delimit_story_generate and delimit_design_extract_tokens, so an agent can disambiguate without inspecting other schemas.

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?

The 'When to use' and 'When NOT to use' sections are explicit and actionable, naming the exact alternative tools for the excluded cases. The sibling contrast reinforces the routing decision, so no inference is required.

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

delimit_design_generate_tailwindDelimit Design Generate TailwindA

Read an existing tailwind.config or generate one from detected CSS tokens.

When to use: to bootstrap a Tailwind config from existing CSS tokens, or to inspect an existing config in a project. When NOT to use: to extract general design tokens (use delimit_design_extract_tokens) or generate a component (delimit_design_generate_component).

Sibling contrast: delimit_design_extract_tokens scans CSS; this writes a tailwind config from those tokens.

Side effects: writes tailwind.config.js if missing, otherwise reads the existing one. Calls backends.ui_bridge.design_generate_tailwind.

ParametersJSON Schema
NameRequiredDescriptionDefault
output_pathNoOutput file path for generated config.
project_pathNoProject root to scan for existing config or CSS tokens.
figma_file_keyNoOptional Figma file key (reserved for future use).

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior5/5

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

Annotations only say readOnlyHint=false and destructiveHint=false. The description goes further by disclosing the precise side effect: 'writes tailwind.config.js if missing, otherwise reads the existing one.' It also mentions the backend call, giving the agent a concrete model of what happens when invoked.

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 well-organized with labeled sections and front-loads the core purpose. Minor redundancy exists between the opening sentence, 'When to use', and 'Sibling contrast', and the backend call line is implementation detail, but overall every meaningful behavioral fact is included without excessive prose.

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 complete parameter schema, output schema, and annotations, the description covers the essential behavior: when to use, when not to use, and side effects. It could have added error cases or behavior when no CSS tokens are detected, but for this tool's complexity the current description is largely sufficient.

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 description coverage is 100%, so the baseline is 3. The description does not add parameter-level detail beyond the schema, but the schema already documents output_path, project_path, and figma_file_key, including the note that figma_file_key is reserved for future use. There is no gap requiring description compensation.

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 opens with a specific action: 'Read an existing tailwind.config or generate one from detected CSS tokens.' It names the resource and the two behavioral paths, and the 'Sibling contrast' line explicitly distinguishes it from delimit_design_extract_tokens, saying 'this writes a tailwind config from those tokens.' This fully separates it from related tools.

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?

The description provides explicit 'When to use' and 'When NOT to use' sections, naming the exact alternative tools: delimit_design_extract_tokens for general token extraction and delimit_design_generate_component for component generation. This gives an agent clear routing guidance with no ambiguity.

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

delimit_design_validate_responsiveDelimit Design Validate ResponsiveA
Read-onlyIdempotent

Validate responsive design patterns via static CSS analysis and optional dynamic Playwright testing.

When to use: as a CI check after editing UI/CSS, to flag missing media queries, fixed widths, or non-mobile-first patterns. When NOT to use: for accessibility audits (use delimit_story_accessibility) or component scaffolding (delimit_design_generate_component).

Sibling contrast: delimit_story_accessibility checks WCAG; this checks responsive patterns.

Side effects: read-only static analysis of CSS files and dynamic browser check if URL is provided. Calls backends.ui_bridge.design_validate_responsive. Coerces check_types from comma string to list via _coerce_list_arg.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlNoOptional URL or HTML file path for dynamic Playwright testing.
check_typesNoSpecific checks ("breakpoints", "containers", "fluid-type", etc.) as comma string or list. None = all.
project_pathYesProject path to validate. Required.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.9/5.0
Behavior5/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint. The description adds meaningful behavioral context beyond those: it performs read-only static CSS analysis, may run a dynamic browser check if URL is provided, calls a backend bridge, and coerces check_types. No contradiction with annotations.

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 well-structured with clear sections: purpose, when to use, when not to use, sibling contrast, and side effects. Every sentence contributes useful guidance, and the core purpose is front-loaded.

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

Completeness5/5

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

For a 3-parameter tool with a full output schema and read-only annotations, the description covers the use case, exclusions, side effects, and a parameter conversion nuance. Nothing critical is missing for an agent to decide whether and how to invoke the tool.

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

Parameters4/5

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

Schema description coverage is 100%, so the baseline is 3. The description adds value by disclosing that check_types is coerced from a comma string to a list via _coerce_list_arg, which affects how the agent can pass parameters. It reinforces the url-based dynamic testing behavior but does not enumerate all valid check_type values.

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 opens with a specific verb and resource: 'Validate responsive design patterns via static CSS analysis and optional dynamic Playwright testing.' The sibling contrast explicitly distinguishes it from delimit_story_accessibility, so an agent can tell what this tool does without opening schemas.

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?

The description states exactly when to use it ('as a CI check after editing UI/CSS'), when NOT to use it ('for accessibility audits' or 'component scaffolding'), and names the alternative tools. This is explicit routing guidance with no ambiguity.

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

delimit_diagnoseDelimit DiagnoseA

Comprehensive health check of the Delimit installation (delimit doctor).

When to use: as the universal first-step diagnostic when something isn't working — covers MCP connectivity, deps, governance state, AI assistants, permissions, API keys, network, version, daemons, disk. When NOT to use: for repo-level health (use delimit_repo_diagnose) or first-run discovery (delimit_quickstart).

Sibling contrast: delimit_repo_diagnose checks one repo; this checks the Delimit installation as a whole.

Side effects: in normal mode, fixes some configuration drift (writes a doctor-manifest.json so later --undo can revert). dry_run=True is read-only and previews changes. undo=True reverts changes from the last doctor run using the saved manifest.

ParametersJSON Schema
NameRequiredDescriptionDefault
undoNoIf True, revert changes from the last run.
dry_runNoIf True, preview changes without executing.
project_pathNoProject to diagnose. Default "." (cwd)..

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.9/5.0
Behavior5/5

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

The description goes well beyond the annotations by disclosing side effects: normal mode can fix configuration drift, writes a doctor-manifest.json for reversibility, dry_run=True is read-only, and undo=True reverts the last run. This is exactly the behavioral context an agent needs for a mutating diagnostic 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?

The description is well-structured with clear labeled sections: purpose, when to use, when not to use, sibling contrast, and side effects. Every sentence carries information, and the most important purpose statement is front-loaded.

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

Completeness5/5

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

For a tool with multiple modes and side effects, the description covers scope, alternatives, behavior, reversibility, and read-only mode. An output schema exists, so return-value documentation is not the description's responsibility. Nothing critical is missing for correct invocation.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3. The description adds useful meaning by explaining that dry_run is read-only and previews changes, and that undo uses the saved manifest to revert. It does not add detail about project_path beyond the schema, but the schema already documents it clearly.

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 opens with a specific verb-resource pair: 'Comprehensive health check of the Delimit installation (delimit doctor).' It also explicitly distinguishes itself from delimit_repo_diagnose, which checks one repo, so an agent can tell them apart immediately.

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?

It provides an explicit 'When to use' section naming the universal first-step diagnostic context, plus a 'When NOT to use' section naming two alternatives (delimit_repo_diagnose and delimit_quickstart). This gives clear decision rules with no ambiguity.

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

delimit_diffDelimit DiffA
Read-onlyIdempotent

Diff two OpenAPI specs and list all changes (pure diff, no policy).

When to use: when you only need the structural change set (added / removed / modified endpoints, schemas, parameters) without any policy verdict. When NOT to use: as a CI gate — for pass/fail use delimit_lint, for a shareable HTML report use delimit_diff_report.

Sibling contrast: delimit_lint adds policy + governance; this is the underlying change list. delimit_diff_report wraps both in a presentable report.

Side effects: read-only. Calls backends.gateway_core.run_diff.

ParametersJSON Schema
NameRequiredDescriptionDefault
new_specYesPath to the proposed OpenAPI spec file. Required.
old_specYesPath to the baseline OpenAPI spec file. Required.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false. The description adds value beyond those by stating the operation is read-only, is a pure structural diff without policy, and specifically calls backends.gateway_core.run_diff. No contradiction with annotations.

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 front-loaded with the core purpose and organized into brief, scannable guidance sections. Every sentence contributes either to selecting the tool or understanding its behavior; there is no filler.

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

Completeness5/5

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

Given the read-only annotations, an output schema, 100% parameter documentation, and clear routing to neighboring tools, nothing essential is missing. An agent can correctly decide when to call it and what inputs to provide.

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?

Input schema covers 100% of parameters with descriptions for old_spec and new_spec, so the baseline is 3. The description adds general context about the change set but does not need to repeat the parameter-level details the schema already provides.

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 first sentence names the exact action ('Diff two OpenAPI specs'), the resource ('OpenAPI specs'), and the output ('list all changes'), and immediately distinguishes it as 'pure diff, no policy.' It also contrasts with delimit_lint and delimit_diff_report, so an agent can tell it apart from its closest siblings.

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?

Provides an explicit 'When to use' section, a 'When NOT to use' section that names the CI alternative (delimit_lint) and reporting alternative (delimit_diff_report), plus a sibling contrast. This is unambiguous decision guidance, not merely implied.

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

delimit_diff_reportDelimit Diff ReportA

Generate a shareable API diff report with full analysis.

When to use: when a team needs a shareable artifact (API review, PR comment, compliance record) — runs diff + policy + semver + spec health + migration guide. When NOT to use: for a CI gate verdict (use delimit_lint) or raw diff data (delimit_diff).

Sibling contrast: delimit_lint enforces; delimit_diff is raw; this is the presentable composite report.

Side effects: read-only on inputs. When output_file is provided, writes the rendered HTML/JSON to disk. The HTML has inline CSS — no external dependencies, opens in any browser.

ParametersJSON Schema
NameRequiredDescriptionDefault
new_specYesProposed OpenAPI spec path.
old_specYesBaseline OpenAPI spec path.
output_fileNoOptional path to write the report to disk.
policy_fileNoOptional .delimit/policies.yml path.
output_formatNo"html" (default) or "json".html

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.7/5.0
Behavior5/5

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

Beyond the minimal annotations, it discloses that the tool is read-only on inputs but writes a rendered HTML/JSON file when output_file is provided, plus a useful detail about inline CSS/no external dependencies. This is meaningful behavioral context that the annotations do not provide.

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 well structured with labelled sections, front-loaded purpose, and every sentence adds value. The when-to-use, contrast, and side-effect notes are compact and easy to scan.

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

Completeness5/5

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

Given the output schema exists and the annotations mark safety, the description covers the remaining operational context: use cases, alternatives, side effects, and output characteristics. Nothing needed for correct selection or invocation is missing.

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 description coverage is 100%, so the schema already documents all five parameters. The description adds report-composition context (diff, policy, semver, spec health, migration guide) but does not materially enrich parameter-level semantics beyond that baseline.

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 starts with a specific verb and resource: 'Generate a shareable API diff report with full analysis.' It then distinguishes this tool from delimit_lint and delimit_diff, so an agent can select it correctly.

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?

Gives explicit when-to-use scenarios (API review, PR comment, compliance record), a clear when-not-to-use section with named alternatives, and a sibling contrast line. An agent knows exactly when to choose this tool instead of delimit_lint or delimit_diff.

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

delimit_digestDelimit DigestA

Generate a structured daily digest of loop activity (LED-966).

When to use: for the founder daily summary — signals, deliberations, ledger movement, swarm dispatch, health. When NOT to use: for raw notifications (use delimit_notify) or inbox routing (delimit_notify_inbox).

Sibling contrast: delimit_notify is per-event; this is a windowed rollup digest.

Side effects: action="run" always writes markdown + json to ~/.delimit/digest/ (the founder can read directly, no email dependency). When send_email=True, emails via the notify pipeline, BUT delivery requires DELIMIT_DIGEST_EMAIL=true in the env (pipeline gate). action="latest" is read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
toNoEmail recipient. Empty = DELIMIT_SMTP_TO.
actionNo"run" (default) or "latest".run
send_emailNoIf True, attempt to email the digest. Requires DELIMIT_DIGEST_EMAIL=true env to actually send.
window_hoursNoLookback window. Default 24.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.9/5.0
Behavior5/5

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

Beyond the annotations, the description discloses concrete side effects: action='run' writes markdown and JSON to ~/.delimit/digest/, email requires DELIMIT_DIGEST_EMAIL=true as a pipeline gate, and action='latest' is read-only. This is exactly the behavioral context an agent 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?

The description is organized with clear sections: purpose, when to use, when not to use, sibling contrast, and side effects. Every sentence carries useful information, and the most important purpose is front-loaded.

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

Completeness5/5

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

For a tool with four optional parameters, a full input schema, an output schema, and rich annotations, the description covers all non-obvious runtime behavior: file writes, email gating, read-only actions, and route selection against sibling tools. Nothing essential is missing.

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

Parameters4/5

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

The input schema already covers all four parameters at 100%, so the baseline is 3. The description adds meaningful semantics by explaining the action='run' vs 'latest' behavior, the email env gate, and the windowed-rollup nature that relates to window_hours. This pushes it above baseline.

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 states a specific verb and resource ('Generate a structured daily digest of loop activity') and explicitly contrasts it with delimit_notify and delimit_notify_inbox. This makes the tool's identity unmistakable even among a very large sibling set.

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?

Includes explicit 'When to use' and 'When NOT to use' guidance, names the exact alternative tools, and adds a sibling contrast sentence. An agent can reliably select this tool versus delimit_notify without further inference.

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

delimit_docs_generateDelimit Docs GenerateA

Generate a markdown API reference from source docstrings/JSDoc.

When to use: to produce a starter API reference doc from existing in-source documentation, organized per source file. When NOT to use: for doc-quality validation (use delimit_docs_validate) — generation does not validate.

Sibling contrast: delimit_docs_validate inspects existing docs; this writes a fresh API reference.

Side effects: writes a markdown reference file via backends.ui_bridge.docs_generate.

ParametersJSON Schema
NameRequiredDescriptionDefault
targetNoProject path. Default "." (cwd)..

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.6/5.0
Behavior5/5

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

The description discloses the side effect of writing a markdown reference file via backends.ui_bridge.docs_generate, beyond the annotations. It also clarifies a behavioral limitation: generation does not validate docs. This goes well beyond the structured annotation fields.

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 well-structured with labeled sections and front-loaded purpose. There is slight redundancy between the 'When NOT to use' and 'Sibling contrast' sections, both covering the validation distinction, but overall it is compact and scannable.

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

Completeness5/5

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

For a tool with one optional parameter, an output schema, and clear annotations, the description covers purpose, usage, alternative, and side effects. Nothing essential is missing for an agent to select and invoke this tool correctly.

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 description coverage is 100%, with the single 'target' parameter fully documented in the schema including its default '.'. The description adds project-level context but does not need to compensate for schema gaps. Baseline 3 is appropriate.

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 states a specific action ('Generate a markdown API reference') and resource ('from source docstrings/JSDoc'), and clearly distinguishes itself from delimit_docs_validate, which inspects existing docs. An agent immediately knows what this tool produces and how it differs from its sibling.

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?

The description provides explicit 'When to use' and 'When NOT to use' guidance, names the alternative tool delimit_docs_validate, and explains the key distinction: generation does not validate. This leaves no ambiguity about when to choose this tool.

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

delimit_docs_validateDelimit Docs ValidateA
Read-onlyIdempotent

Validate documentation quality and completeness.

When to use: as a CI gate to surface missing READMEs, undocumented public functions, and broken internal markdown links. When NOT to use: to generate fresh API reference (use delimit_docs_generate).

Sibling contrast: delimit_docs_generate writes; this validates existing docs.

Side effects: read-only inspection. Calls backends.ui_bridge.docs_validate.

ParametersJSON Schema
NameRequiredDescriptionDefault
targetNoProject path. Default "." (cwd)..

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, so the bar for additional disclosure is lower. The description adds useful context by stating 'Side effects: read-only inspection' and naming the underlying backend call, which goes beyond the structured metadata.

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 short, front-loaded with the core purpose, and organized by use case, exclusions, sibling contrast, and side effects. Every section serves a clear decision-making purpose for an agent.

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

Completeness5/5

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

For a simple one-optional-parameter validation tool with an output schema and strong annotations, the description covers why, when, when not, and what side effects to expect. Nothing essential is missing.

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 description coverage is 100%, so the single optional 'target' parameter is fully documented in the schema. The description does not add parameter-level detail, but the baseline of 3 is appropriate since the schema already carries the semantic load.

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 opens with a specific verb and resource: 'Validate documentation quality and completeness.' It explicitly contrasts with delimit_docs_generate, making the tool's purpose unambiguous and distinguished from its sibling.

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?

Provides explicit when-to-use guidance ('as a CI gate to surface missing READMEs, undocumented public functions, and broken internal markdown links') and when-not-to-use guidance with a named alternative. The sibling contrast further clarifies the division of labor.

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

delimit_drift_checkDelimit Drift CheckA
Read-onlyIdempotent

Check for API spec drift since last governance review.

When to use: as a scheduled (cron) compliance monitor — detects spec changes without lint, stale baseline, or missing policy. When NOT to use: for one-shot lint (use delimit_lint) or to read historical drift (delimit_drift_history).

Sibling contrast: delimit_lint is enforcement; delimit_drift_history reads past drift records; this is the periodic monitor.

Side effects: read-only on spec + governance state. Calls ai.drift_monitor.check_drift.

ParametersJSON Schema
NameRequiredDescriptionDefault
spec_pathNoOpenAPI spec path. Empty = auto-detect.
project_pathNoProject root. Default "." (cwd)..
staleness_daysNoAlert if baseline older than this. Default 7.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, and the description reinforces this with 'Side effects: read-only on spec + governance state.' It also adds transparency about the underlying call to ai.drift_monitor.check_drift, which is useful behavioral context beyond the annotations.

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 well-structured with clear sections: primary purpose, when to use, when not to use, sibling contrast, and side effects. Every section adds distinct value, and the core statement is front-loaded.

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

Completeness5/5

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

For a tool with optional parameters, full schema coverage, an output schema, and read-only annotations, the description provides all necessary operational context: trigger context, exclusions, sibling relationships, and side effects. Nothing critical is missing for an agent to invoke it correctly.

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?

Input schema has 100% description coverage for all three parameters, so the description is not required to repeat parameter meanings. It adds some contextual value by mentioning 'stale baseline,' which relates to staleness_days, but does not meaningfully expand on the schema's parameter documentation.

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: 'Check for API spec drift since last governance review.' It identifies the specific resource (API spec drift) and distinguishes itself from siblings delimit_lint and delimit_drift_history, making selection unambiguous.

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?

Provides explicit when-to-use guidance ('scheduled (cron) compliance monitor') and when-not-to-use guidance ('one-shot lint' and 'historical drift'), naming the exact alternative tools. This fully orients an agent for correct tool selection.

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

delimit_drift_historyDelimit Drift HistoryA
Read-onlyIdempotent

List recent drift-check results from the drift monitor.

When to use: to investigate when API spec drift was last detected and what changed. When NOT to use: to perform a fresh drift check (use delimit_drift_check).

Sibling contrast: delimit_drift_check runs a check; this reads historical results.

Side effects: read-only. Calls ai.drift_monitor.get_drift_history.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax entries to return. Default 20.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, so the safety profile is covered. The description adds useful behavioral context by stating "Side effects: read-only" and revealing the underlying call ai.drift_monitor.get_drift_history, which goes beyond the structured data.

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 well-structured and front-loaded with the core purpose. There is mild redundancy between the "When NOT to use" section and the "Sibling contrast" section, both making the same delimit_drift_check comparison, but overall the content is tightly written and scannable.

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

Completeness5/5

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

For a read-only list operation with one optional parameter and an output schema available, the description is complete: it explains the purpose, the use case, the alternative, and the underlying side-effect behavior. Nothing essential for correctly selecting or invoking the tool is missing.

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?

The only parameter, limit, is fully documented in the input schema with default and meaning, so the description does not need to carry that burden. However, the description itself adds no extra semantic detail about the limit parameter beyond what the schema already states, making the baseline 3 appropriate.

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 opens with a specific verb and resource: "List recent drift-check results from the drift monitor." It also explicitly contrasts itself with delimit_drift_check, making the tool's role unmistakable.

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?

The description gives clear when-to-use context (investigate when API spec drift was last detected) and an explicit when-not-to-use instruction with the named alternative delimit_drift_check. The sibling contrast reinforces the decision with no ambiguity.

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

delimit_evidence_collectDelimit Evidence CollectA

Collect evidence artifacts for governance (Pro).

When to use: after a deploy, security audit, test run, or other gate event — to capture an evidence bundle that delimit_evidence_verify can later attest. When NOT to use: to verify an existing bundle (use delimit_evidence_verify) or query the contract ledger (delimit_ledger).

Sibling contrast: delimit_evidence_verify verifies; delimit_ledger queries the chain; this collects new evidence.

Side effects: gated by require_premium. Writes a new evidence bundle via backends.repo_bridge.evidence_collect.

Prerequisite: requires Delimit Pro. An unlicensed call returns {"error": ..., "upgrade": "https://delimit.ai/pricing"} without running.

ParametersJSON Schema
NameRequiredDescriptionDefault
targetNoRepository or task path. Default "." (cwd)..
asset_metaNoOptional JSON string with asset provenance metadata (for evidence_type='asset').
evidence_typeNoType of evidence — e.g. "deploy", "security", "test", "audit". Stored in bundle metadata. Empty = generic.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.6/5.0
Behavior5/5

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

Annotations only carry readOnlyHint=false and destructiveHint=false, so the description carries the behavioral burden and meets it: it discloses the write side effect ('Writes a new evidence bundle via backends.repo_bridge.evidence_collect'), the licensing gate (require_premium / Delimit Pro), and the unlicensed failure mode (returns an error with an upgrade URL without running). No annotation contradiction — readOnlyHint=false is consistent with the write behavior.

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?

Well-structured with labeled sections (When to use, When NOT to use, Sibling contrast, Side effects, Prerequisite) and a front-loaded purpose. Slightly repetitive — the sibling contrast largely restates the when-NOT-to-use section — but every section still earns its place given the licensing and side-effect nuances.

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

Completeness5/5

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

For a tool with an existing output schema and 100% schema parameter coverage, this description is complete: it covers trigger conditions, exclusions, named alternatives, side effects, prerequisite licensing, and the exact unlicensed failure behavior. There are no meaningful gaps for an agent deciding whether and how to call it.

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 description coverage is 100%, so the baseline is 3 and the schema already documents all three parameters. The description adds indirect contextual value by linking gate events (deploy, security audit, test run) to the evidence_type examples, but it does not materially explain parameter semantics beyond what the schema provides.

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?

Opens with a specific verb+resource: 'Collect evidence artifacts for governance (Pro).' The sibling contrast section explicitly differentiates it from delimit_evidence_verify (verifies) and delimit_ledger (queries the chain), so an agent can distinguish it from nearby tools without opening schemas.

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?

Provides explicit when-to-use conditions ('after a deploy, security audit, test run, or other gate event'), an explicit when-NOT-to-use with named alternatives (delimit_evidence_verify, delimit_ledger), and a sibling contrast. Nothing is left to inference.

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

delimit_evidence_verifyDelimit Evidence VerifyA

Verify the integrity of an evidence bundle (Pro).

When to use: to attest that a previously-collected evidence bundle has not been tampered with — typical use is during replay or audit. When NOT to use: to capture new evidence (use delimit_evidence_collect) or to query the contract ledger (delimit_ledger).

Sibling contrast: delimit_evidence_collect captures; this verifies a captured bundle's hash chain integrity.

Side effects: read-only on the evidence store; gated by require_premium. Calls backends.repo_bridge.evidence_verify.

Prerequisite: requires Delimit Pro. An unlicensed call returns {"error": ..., "upgrade": "https://delimit.ai/pricing"} without running.

ParametersJSON Schema
NameRequiredDescriptionDefault
bundle_idNoEvidence bundle id. Either this or bundle_path must be provided.
bundle_pathNoPath to a bundle file on disk. Either this or bundle_id must be provided.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.9/5.0
Behavior1/5

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

The description provides unusually rich behavioral detail: read-only side effects, gating by require_premium, the backend call target, and the unlicensed error payload. However, it directly contradicts the annotations, which set readOnlyHint to false while the description claims the tool is read-only; per rubric this is a contradiction, so score 1.

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 compact yet sectioned: purpose, when/when-not, sibling contrast, side effects, and prerequisite. The implementation detail about backends.repo_bridge.evidence_verify is slightly superfluous but does not hurt. Front-loading is excellent.

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

Completeness5/5

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

Given the output schema exists and the input schema covers both parameters, the description supplies all selection and invocation context: use case, exclusions, preconditions, side effects, and failure mode. An agent can correctly decide when to call and what to expect from an unlicensed call.

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?

Both parameters are fully described in the schema (100% coverage), so the description does not need to add much. It adds the context that the bundle was previously collected, but the schema already covers the mutual exclusivity of bundle_id and bundle_path. Baseline 3 is appropriate.

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 opens with a specific verb and resource: 'Verify the integrity of an evidence bundle (Pro).' It explains what verification means (attesting the bundle has not been tampered with) and distinguishes itself from delimit_evidence_collect in the sibling contrast. This is a clear, unambiguous purpose.

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?

It explicitly states when to use (replay or audit) and when NOT to use, naming both delimit_evidence_collect and delimit_ledger as alternatives. The sibling contrast reinforces the boundary, leaving no ambiguity about tool selection.

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

delimit_executorDelimit ExecutorA

Run approved work orders from the dashboard inbox (Pro) (Worker Pool v2).

When to use: as the autonomous executor for human-approved work orders, or to inspect/pause the executor. When NOT to use: to dispatch new agent work (use delimit_agent_dispatch) or close out a work order (delimit_work_orders complete).

Sibling contrast: delimit_work_orders reads/closes the work order artifact; this is the run surface that turns approved orders into real GitHub side effects.

Side effects: action="run" / "poll" with live=True fire whitelisted state-changing actions: gh_issue_create, gh_pr_comment, gh_issue_comment. Every invocation is logged to ~/.delimit/workers/audit/executor.jsonl. Touch ~/.delimit/pause_executor to halt the autonomous path at the next tick.

Prerequisite: requires Delimit Pro. An unlicensed call returns {"error": ..., "upgrade": "https://delimit.ai/pricing"} without running.

ParametersJSON Schema
NameRequiredDescriptionDefault
liveNoWhen False (default), dry-run — describe what would happen without firing.
wo_idNoWork order id. Required for action="run".
actionNo"run" (one), "poll" (scan + run all approved), "status" (default), "pause", "resume".status
executed_byNoIdentifier for the audit log (e.g. "dashboard", "cron").

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.9/5.0
Behavior5/5

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

Despite readOnlyHint=false and destructiveHint=false, the description adds substantial behavioral context: it reveals that live run/poll actions fire whitelisted GitHub side effects, that every invocation is logged, that touching a pause file halts execution, and that unlicensed calls return an error without running. This goes well beyond the annotations.

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 densely organized with labeled sections, front-loads the core purpose, and every sentence adds operational value. It is longer than average, but the length is justified by the critical side-effect, logging, pause, and licensing details.

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

Completeness5/5

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

For a tool with 4 parameters and no required fields, the description covers invocation conditions, exclusions, side effects, audit trail, pause mechanism, and licensing prerequisite. The presence of an output schema means return values need no further explanation, so nothing essential is missing.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3. The description adds value by clarifying the live/action interaction ('run'/'poll' with live=True fire side effects) and noting that wo_id is required for action='run', which enriches the otherwise already-documented parameter meanings.

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 opens with a specific verb+resource: 'Run approved work orders from the dashboard inbox.' It also differentiates from sibling tools by naming delimit_agent_dispatch and delimit_work_orders, making the executor's role unmistakable.

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?

Explicit 'When to use' and 'When NOT to use' sections define the invocation context and point to the correct alternatives. The sibling contrast further clarifies the boundary between reading/closing work orders and executing them.

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

delimit_explainDelimit ExplainA
Read-onlyIdempotent

Render a human-readable explanation of API changes (7 templates).

When to use: to produce migration notes, PR comments, changelog entries, or Slack-friendly summaries from a spec diff. When NOT to use: for raw change data (use delimit_diff) or a shareable HTML report (delimit_diff_report).

Sibling contrast: delimit_diff returns structured change data; delimit_diff_report renders an HTML report; this renders a template-driven text explanation.

Side effects: read-only. Calls backends.gateway_core.run_explain.

ParametersJSON Schema
NameRequiredDescriptionDefault
api_nameNoAPI/service name for context.
new_specYesPath to the proposed OpenAPI spec file. Required.
old_specYesPath to the baseline OpenAPI spec file. Required.
templateNoOne of "developer" (default), "team_lead", "product", "migration", "changelog", "pr_comment", "slack".developer
new_versionNoNew version string for context.
old_versionNoPrevious version string for context.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.7/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, so the safety profile is well covered. The description adds 'Side effects: read-only' and the internal backend call 'backends.gateway_core.run_explain', which provides useful implementation transparency consistent with the annotations.

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 compact and well-structured, front-loading purpose before usage guidance and side effects. Every section earns its place, and the sibling contrast avoids redundant repetition while adding clarity.

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

Completeness5/5

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

The tool has an output schema, so return-value explanation is unnecessary. The description covers purpose, use cases, exclusions, sibling alternatives, side effects, and an internal call reference, leaving no meaningful gaps for an agent to select and invoke it correctly.

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

Parameters4/5

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

Schema description coverage is 100%, so the baseline is 3. The description adds value by mapping template-oriented outputs to use cases like migration notes, PR comments, changelog entries, and Slack summaries, enriching the meaning of the template parameter beyond the schema's enum-like list.

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 opens with a specific verb and object: 'Render a human-readable explanation of API changes (7 templates).' It clearly identifies the tool's deliverable and explicitly contrasts it with delimit_diff and delimit_diff_report, making it easy to distinguish from the closest siblings.

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?

The description provides an explicit 'When to use' section listing concrete use cases, a 'When NOT to use' section naming sibling alternatives, and a 'Sibling contrast' section. This gives an agent complete routing guidance for when to select this tool over alternatives.

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

delimit_external_pr_checkDelimit External Pr CheckA
Read-onlyIdempotent

Pre-PR duplicate guard for external repos — call BEFORE drafting.

When to use: as the first step before drafting any PR against a repo you don't own. Fail-closed by design. When NOT to use: for internal repos or to evaluate a non-PR action (use delimit_gov_evaluate).

Sibling contrast: delimit_gov_evaluate(action="external_pr") wraps this with policy evaluation; this is the underlying duplicate check.

Side effects: read-only network call. Calls backends.governance_bridge.external_pr_check which shells out to gh CLI. Any open PR or PR merged in the last 30 days yields verdict="duplicate" — caller stops drafting.

ParametersJSON Schema
NameRequiredDescriptionDefault
repoYesExternal GitHub repo, e.g. "goharbor/harbor". Required.
stateNo"open", "closed", "merged", or "all" (default).all
authorNoGitHub username to filter by (recommended). Empty = all.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.7/5.0
Behavior5/5

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

Annotations already declare read-only, idempotent, non-destructive. The description adds valuable behavioral context beyond that: it is fail-closed, makes a network call, shells out to gh CLI via a named backend, and defines the exact duplicate condition (open PR or PR merged in last 30 days). This is far richer than the annotations alone.

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 well-structured with clear labels, front-loaded with the key instruction, and every sentence earns its place. It is detailed but not bloated, and the sibling contrast is tight.

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

Completeness5/5

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

Given the annotations and output schema, the description covers the trigger conditions, exclusions, side effects, backend implementation, fail-closed behavior, and the verdict threshold. An agent has enough context to decide to call this tool and to interpret its outcome correctly.

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 description coverage is 100%, so the schema already documents all three parameters with defaults and examples. The description does not add much parameter-specific meaning, though it gives useful context about repo ownership and the duplicate verdict condition.

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 states a specific verb and resource: a pre-PR duplicate guard for external repos. It also explicitly distinguishes itself from delimit_gov_evaluate, so an agent can tell them apart without inspecting schemas.

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?

The description gives explicit when-to-use guidance ('as the first step before drafting any PR against a repo you don't own'), explicit when-not-to-use guidance (internal repos or non-PR actions), and names the alternative tool to use instead (delimit_gov_evaluate).

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

delimit_generate_scaffoldDelimit Generate ScaffoldA

Lay out a fresh project tree with framework-conformant skeleton.

When to use: at project zero, when starting a new Next.js app, API service, or library and you want the standard directory tree, package.json/pyproject.toml, lint config, and entry-point files all written in one call. Typical follow-up is delimit_init to set up governance scaffolding in the new project root. When NOT to use: to add files to an existing project (use delimit_generate_template for single-file scaffolds), to duplicate an existing project (use the shell), or to add a package to an existing project (use the project's own package manager directly).

Sibling contrast: delimit_generate_template writes a single file into an existing project; this writes a NEW project tree. Compared to create-next-app / cookiecutter, this routes the scaffold through the Delimit bridge so the resulting project can later be wired into delimit_init governance with no manual cleanup.

Side effects: writes MANY new files and directories under a new name/ root via backends.generate_bridge.scaffold. packages is coerced from a comma string to a list via _coerce_list_arg (malformed values short-circuit). No license gate. No ledger write, no notification. The backend determines collision behaviour if name/ already exists — call against a fresh target.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesProject name (becomes the root directory). Required.
packagesNoPackages to include — either a comma string or list.
project_typeYesProject flavour, e.g. "nextjs", "api", "library". Required.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.9/5.0
Behavior5/5

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

Annotations only say readOnlyHint=false and destructiveHint=false, so the description carries the burden of explaining mutation behavior. It does this thoroughly: writes MANY files, uses backends.generate_bridge.scaffold, coerces packages via _coerce_list_arg with short-circuit on malformed values, has no license gate, no ledger write, no notification, and leaves collision behavior to the backend. This is exactly the operational context an agent needs beyond the annotations.

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 long but every section earns its place: purpose, when to use, when not to use, sibling contrast, and side effects. The labeled sections make it easy to scan, and the critical caveat about collision behavior is placed at the end as a warning. No filler or repetition of schema fields.

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

Completeness5/5

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

For a tool that writes many files and has minimal annotations, the description is fully complete: it specifies target state, exact non-uses, sibling alternative, side effects, follow-up step, and collision caveat. Since an output schema is present, the lack of return-value documentation is acceptable. The agent can safely decide whether and how to invoke this tool.

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

Parameters4/5

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

The schema already provides 100% parameter descriptions, so the baseline is 3. The description adds genuine extra meaning: packages is coerced from a comma string into a list and malformed values short-circuit, which is not stated in the schema. It also reinforces that name becomes the root directory and gives concrete example values for project_type.

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 opens with a specific verb and resource: 'Lay out a fresh project tree with framework-conformant skeleton.' It clearly distinguishes this tool from its closest sibling, delimit_generate_template, by contrasting 'writes a NEW project tree' with 'writes a single file into an existing project.' The intended project types (Next.js app, API service, library) are named explicitly.

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?

The description has explicit 'When to use' and 'When NOT to use' sections. It names alternative tools and strategies: delimit_generate_template for single-file scaffolds, the shell for duplicating projects, and the project's own package manager for adding packages. It also identifies the typical follow-up tool, delimit_init, so an agent knows the surrounding workflow.

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

delimit_generate_templateDelimit Generate TemplateA
Destructive

Write a single file from a code template into an existing project.

When to use: when an existing project needs one more piece — a component, a page, an API handler — and you want the framework-conformant skeleton (imports, exports, default structure) rather than hand-writing the boilerplate. Pair with delimit_test_generate to scaffold the matching test file. When NOT to use: to lay out a fresh project (use delimit_generate_scaffold), to design a UI component with tokens (delimit_design_generate_component), or to bulk-generate many files (call this once per file, or write a custom script).

Sibling contrast: delimit_generate_scaffold lays out a complete project tree; this writes a single file. Compared to delimit_design_generate_component, this is framework-only and does not consume design tokens. Compared to delimit_test_generate, this writes source, not tests.

Side effects: writes ONE file to disk under target/ via backends.generate_bridge.template. target is sanitised via _sanitize_path — paths escaping the workspace short-circuit with an error. features is coerced from a comma string to a list via _coerce_list_arg. No license gate, no ledger write, no notification. If a file with the same name already exists, the backend determines overwrite vs. error — call with care on populated directories.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesName for the generated code (file stem). Required.
targetNoOutput directory. Default "." (cwd). Sanitized to remain inside the workspace..
featuresNoOptional feature flags as a comma string or list.
frameworkNoTarget framework key, e.g. "react", "nextjs", "fastapi".nextjs
template_typeYesTemplate flavour, e.g. "component", "page", "api". Required.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.8/5.0
Behavior5/5

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

The description goes well beyond the destructiveHint annotation by disclosing precise side effects: writes exactly ONE file under target/, path sanitization that short-circuits on escape, feature-string coercion, absence of license/ledger/notification side effects, and the critical overwrite-or-error ambiguity on existing files. For a destructive tool, this is exactly the behavioral disclosure an agent needs before calling.

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 well-structured with labeled sections (When to use, When NOT to use, Sibling contrast, Side effects) and front-loads the core purpose. It is verbose, and the sibling contrast section partially restates the when-not-to-use routing, but for a destructive multi-parameter tool the density of information justifies the length.

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

Completeness5/5

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

Everything an agent needs before invoking a 5-parameter file-writing tool is present: purpose, routing conditions, side effects, overwrite risk, internal behavior details, and what it does NOT do. The output schema covers return values, so no description burden there. The only conceivable addition would be an example, which is not required for correctness.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3 with the schema doing the heavy lifting. The description adds genuine value by revealing two parameters' runtime behavior: target undergoes _sanitize_path with workspace-escape errors, and features is coerced from comma string to list. This is non-obvious information an agent couldn't infer from the schema alone.

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 opening line states a specific verb-resource pair ('Write a single file from a code template into an existing project') that immediately distinguishes it from bulk-generation or design-token tools. The sibling contrast confirms the exact boundaries: scaffold writes a full tree, design consumes tokens, test writes tests — leaving no ambiguity about what this tool is for.

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?

Explicit 'When to use' and 'When NOT to use' sections name the exact alternatives (delimit_generate_scaffold, delimit_design_generate_component, delimit_test_generate) and the conditions that select them. It even handles the bulk-generation edge case by instructing one call per file. Nothing is left to inference.

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

delimit_github_scanDelimit Github ScanA

Scan GitHub for adoption leads, competitive intel, repo health (Pro).

When to use: at the configured cadence — pulse (own repo health), hunter (engagement signals, hourly), deep (full ecosystem, daily). When NOT to use: to monitor one issue (use delimit_sensor_github_issue) or pull issues (delimit_tracker_sync).

Sibling contrast: delimit_sensor_github_issue is single-issue; delimit_tracker_sync ingests issues to ledger; this is the broad GitHub corpus scanner.

Side effects: read-only network. With chain rule below, the orchestrator should call delimit_ledger_add for high-score findings and delimit_notify for pain threads.

IMPORTANT -- TOOL CHAINING RULE: After scanning, the AI MUST process high-score findings:

  1. Auto-ledger high-score findings via delimit_ledger_add

  2. Pain threads with existing_feature relevance via delimit_notify Never just return findings and stop. Always chain to the next action.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax results per search query. Default 20. Max 30.
cadenceNo"pulse" (default), "hunter", or "deep".pulse

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.8/5.0
Behavior5/5

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

The description discloses side effects ('read-only network') and, importantly, the mandatory chaining behavior: high-score findings must be auto-ledgered via delimit_ledger_add and pain threads notified via delimit_notify. It even warns 'Never just return findings and stop.' This goes well beyond the sparse annotations and gives the agent critical operational context. While readOnlyHint is false in annotations, the description's 'read-only network' refers to network side effects, and the chain rule clarifies downstream mutations happen via separate tools, so there is no direct contradiction.

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 longer than average but well-structured with clear headers and front-loaded purpose. Every section earns its place: cadence usage, sibling contrast, side effects, and chaining rule. Minor redundancy exists in the chain rule section ('Never just return findings and stop' restates the earlier rule), but overall it remains efficient and scannable.

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

Completeness5/5

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

Given only 2 parameters with 100% schema coverage, an existing output schema, and a detailed description covering cadences, sibling distinctions, side effects, and mandatory downstream actions, nothing essential is missing. An agent has enough information to select, invoke, and follow up on this tool correctly.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3. The description adds real semantic value beyond the schema by explaining each cadence option: 'pulse (own repo health), hunter (engagement signals, hourly), deep (full ecosystem, daily).' It does not restate limit, but the schema already documents the default and max, so the description does not need to.

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 starts with a specific verb and resource: 'Scan GitHub for adoption leads, competitive intel, repo health (Pro).' It clearly states what the tool does and distinguishes itself from siblings: 'delimit_sensor_github_issue is single-issue; delimit_tracker_sync ingests issues to ledger; this is the broad GitHub corpus scanner.' An agent can immediately tell this apart from nearby tools.

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?

The description gives explicit when-to-use guidance by cadence: 'pulse (own repo health), hunter (engagement signals, hourly), deep (full ecosystem, daily).' It also provides a direct when-NOT-to-use section with named alternatives: 'use delimit_sensor_github_issue or delimit_tracker_sync.' This leaves no ambiguity about tool selection.

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

delimit_gov_evaluateDelimit Gov EvaluateA

Evaluate whether a proposed action triggers governance gating (Pro).

When to use: BEFORE performing any action whose policy class is uncertain — deploy, external PR submission, schema change, npm publish, force-push, force-update of a floating tag, account switch, ruleset edit. This is the canonical pre-action check the orchestrator and CI hooks call; the response is the gate verdict. When NOT to use: to read the policy rules themselves (use delimit_gov_policy), to materialize a tracked task from a "gating required" verdict (delimit_gov_new_task), or to check engine health (delimit_gov_health). Also: do not call after starting the action — the verdict is decision-time and a retroactive call has no gating effect.

Sibling contrast: delimit_gov_policy returns the rules; this evaluates a candidate action against them. delimit_external_pr_check handles the specialised external-PR duplicate path; this is the general action evaluator. delimit_gov_new_task is what you call AFTER this returns "gating required" to mint a tracked task.

Side effects: read-only on policy storage and gated by require_premium — unlicensed callers receive a license payload and no evaluation runs. On a licensed call, invokes backends.governance_bridge.evaluate_trigger which loads the active policy and returns a verdict; no task is created, no ledger write, no evidence file. Inputs are coerced before the backend call: a string context is wrapped as {"text": ...} via _coerce_dict_arg; a malformed context short-circuits with an error response.

ParametersJSON Schema
NameRequiredDescriptionDefault
repoNoFilesystem path to the repository. Default "." (cwd)..
actionNoProposed action name to evaluate (e.g. "external_pr", "deploy"). Empty string returns an error.
contextNoOptional dict with action-specific context (e.g. target repo, author). Strings are auto-coerced to {"text": ...} via _coerce_dict_arg.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior1/5

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

Annotation Contradiction: the description claims 'read-only on policy storage' and says no task, ledger write, or evidence file is created, while the annotations set readOnlyHint to false. This directly conflicts with the structured read-only signal and makes the safety profile ambiguous despite otherwise rich behavioral disclosure.

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 long but tightly organized with clear sections: purpose, when to use, when not to use, sibling contrast, and side effects. Every sentence carries routing or behavioral information, and the core purpose is front-loaded before the alternatives.

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?

The description covers timing, alternatives, licensing, side effects, and input coercion, and an output schema exists so return-value documentation is not required. However, the readOnlyHint false contradiction leaves unresolved ambiguity about whether the tool mutates state, preventing a perfect completeness score.

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

Parameters4/5

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

Schema description coverage is 100%, so the baseline is 3. The description adds useful behavior beyond the schema by specifying that a string context is coerced to {'text': ...} via _coerce_dict_arg and that a malformed context short-circuits with an error response.

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 opening sentence states the exact verb and resource: 'Evaluate whether a proposed action triggers governance gating.' The sibling-contrast section explicitly distinguishes it from delimit_gov_policy, delimit_external_pr_check, and delimit_gov_new_task, so an agent can reliably tell this tool apart from its closest alternatives.

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?

Provides an explicit 'When to use' list with concrete scenarios, a 'When NOT to use' list naming the correct alternatives, and a critical timing constraint: the verdict is decision-time and a retroactive call has no gating effect. This is unambiguous routing guidance.

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

delimit_gov_healthDelimit Gov HealthA

Report whether the governance kernel and policy are reachable.

When to use: at session start as part of the standard orchestrator ritual (delimit_revive + delimit_ledger_context + this + inbox daemon), or as a CI smoke check before a gated deploy. Confirms the governance backend is reachable and the policy kernel is loaded so downstream gates will fail-closed correctly rather than silently no-op. When NOT to use: to evaluate whether a specific candidate action requires gating (use delimit_gov_evaluate), to read the rules themselves (delimit_gov_policy), or to check per-repo task state (delimit_gov_status).

Sibling contrast: delimit_gov_status reports per-repo workload (open tasks, recent decisions); this reports the engine layer itself (kernel boot status, policy load, backend integration). If a deploy gate is failing, run this first to rule out "engine down" before debugging policy logic.

Side effects: read-only and not license-gated. Invokes backends.governance_bridge.health and wraps the response through _with_next_steps. No ledger write, no notification, no evidence file. Safe to call on every session start without rate concern.

ParametersJSON Schema
NameRequiredDescriptionDefault
repoNoFilesystem path to the repository. Default "." (cwd)..

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.9/5.0
Behavior1/5

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

The description claims 'read-only' and 'No ledger write, no notification, no evidence file,' but the annotation readOnlyHint is false. This is a direct annotation contradiction, which per the rubric forces a score of 1 regardless of the otherwise rich behavioral disclosure.

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 long but tightly organized with labeled sections: purpose, when to use, when not to use, sibling contrast, and side effects. Each section adds distinct value, and the core purpose is front-loaded in the first sentence.

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

Completeness5/5

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

The description covers the session-start and CI use cases, fail-closed behavior, explicit sibling distinctions, implementation details, and side-effect profile. The output schema exists, so the description does not need to document return values, and nothing necessary for correct invocation is missing.

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 description coverage is 100%: the only parameter, repo, is fully documented in the input schema with a type, default, and description. The tool description adds no parameter-specific detail, but with full schema coverage it does not need to, so baseline 3 is appropriate.

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 first sentence states a specific verb and resource: 'Report whether the governance kernel and policy are reachable.' The sibling contrast explicitly distinguishes this from delimit_gov_status, which reports per-repo workload, so an agent can tell it apart from similar tools.

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?

The description gives explicit when-to-use context: session start orchestrator ritual and CI smoke check before a gated deploy. It also provides a when-NOT-to-use list with named alternatives (delimit_gov_evaluate, delimit_gov_policy, delimit_gov_status), which is exemplary routing guidance.

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

_delimit_gov_implDelimit Gov ImplA
Read-onlyIdempotent

Unified governance entry point — dispatches to one of seven actions.

When to use: as the single MCP-registered governance surface (delimit_gov) when the caller wants to pick the action by name in one call rather than choosing a specific delimit_gov_* alias. When NOT to use: from internal code paths — prefer the specific alias (delimit_gov_health, delimit_gov_evaluate, etc.) for clarity and so docstrings and license gates show up at the right call site.

Sibling contrast: each delimit_gov_ wrapper above is a thin alias over this implementation; they exist so the action's docstring lives at the right name. This is the dispatch core.

Side effects: action="health" / "status" are read-only and not gated. action="policy" / "evaluate" / "new_task" / "run" / "verify" are gated by require_premium — unlicensed callers receive a license payload and no backend call is made. Each gated action routes to a distinct backends.governance_bridge function (health, status, policy, evaluate_trigger, new_task, run_task, verify) and the result is wrapped via _with_next_steps for orchestrator hints. Errors are deterministic ({"error": ...}); inputs that cannot be coerced (e.g. malformed context for evaluate) short-circuit before the backend call.

ParametersJSON Schema
NameRequiredDescriptionDefault
repoNoRepository path. Default "." (cwd)..
scopeNoTask scope (used only when action="new_task"). Required for new_task.
titleNoTask title (used only when action="new_task"). Required for new_task.
actionNoWhich governance operation to perform. One of "health", "status", "policy", "evaluate", "new_task", "run", "verify". Default "health". Other values return a deterministic error.health
contextNoAdditional context (used only when action="evaluate"). Strings are auto-coerced to {"text": ...} via _coerce_dict_arg; dicts are passed through. None is allowed.
task_idNoTask ID (used only when action="run" or action="verify"). Required for those actions.
risk_levelNoRisk level low/medium/high/critical (used only when action="new_task"). Default "medium".medium
eval_actionNoThe proposed action name to evaluate (used only when action="evaluate"). Empty string is rejected by the backend.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.7/5.0
Behavior1/5

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

The prose is rich, disclosing gating, per-action backend routing, deterministic errors, and _with_next_steps wrapping. However, it directly contradicts the readOnlyHint:true annotation by explicitly stating that only action='health' and action='status' are read-only, implying the other actions are not. Per the rubric, a description that contradicts annotations must receive a score of 1 and be flagged as an annotation contradiction.

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 long but well-structured with clear headings for usage, non-usage, sibling contrast, and side effects. It is front-loaded with the core purpose and each section carries meaningful information for a seven-action dispatcher. Minor redundancy exists between the sibling contrast section and the when-to-use/when-not-to-use paragraphs, preventing a perfect score.

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?

For a tool with seven actions, eight parameters, and nontrivial routing, the description covers selection criteria, exclusions, per-action side effects, license gating, error behavior, and coercion short-circuiting. An output schema exists, so return-value detail is not required. The only completeness gap is the incoherence introduced by the readOnlyHint annotation contradicting the description's explicit read-only scoping.

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 description coverage is 100%, with every parameter already documented for requiredness, defaults, and action-specific usage. The description adds general action dispatch and gating behavior, but those are behavioral, not parameter-semantic, details. Coercion of context and rejection of empty eval_action are already present in the schema descriptions, so the description adds little beyond the baseline for fully covered schemas.

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 is a unified governance entry point that dispatches to one of seven actions by name. It explicitly contrasts with the delimit_gov_* alias siblings, explaining that this is the implementation core while the aliases are thin wrappers. The verb and resource are specific, and the purpose is not a tautology.

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?

The description contains an explicit 'When to use' and 'When NOT to use' section. It names the exact condition for selecting this tool (picking action by name in one call) and directs internal code paths to prefer specific aliases like delimit_gov_health or delimit_gov_evaluate. Sibling contrast is also provided, making routing unambiguous.

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

delimit_gov_new_taskDelimit Gov New TaskA

Create a governance-classed task with risk tier and scope (Pro).

When to use: immediately after delimit_gov_evaluate returns a "gating required" verdict and you need a tracked, audit-bearing record before performing the gated work. The three-step pipeline is delimit_gov_new_task -> delimit_gov_run -> delimit_gov_verify; this is step one. When NOT to use: for free-form work tracking (use delimit_ledger_add), to perform the work itself (delimit_gov_run), or to verify a completed task (delimit_gov_verify).

Sibling contrast: delimit_ledger_add tracks general work items with no policy gating; this creates a governance-classed task with a risk tier and scope record that the run/verify steps operate on. delimit_gov_evaluate returns a verdict only; this materializes that verdict into a tracked task.

Side effects: gated by require_premium — unlicensed callers receive a license payload, no task created. On a licensed call, invokes backends.governance_bridge.new_task which writes a new task record keyed by a generated task_id into the governance task store; the record carries title, scope, risk_level, repo path, and creation timestamp. The response is routed through _with_next_steps so the returned dict carries orchestrator hints.

ParametersJSON Schema
NameRequiredDescriptionDefault
repoNoFilesystem path to the repository. Default "." (cwd)..
scopeNoDescription of what the task covers. Required.
titleNoShort task title. Required (empty string is rejected).
risk_levelNoOne of "low", "medium", "high", "critical". Default "medium". Drives later approval requirements.medium

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.9/5.0
Behavior5/5

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

Annotations are minimal (not read-only, not destructive), so the description carries the burden and delivers richly: licensing gating with unlicensed callers receiving a license payload and no task creation, backend write to backends.governance_bridge.new_task, persisted fields, and routing through _with_next_steps. This goes well beyond what annotations provide and does not contradict them.

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 organized into clear labeled sections: purpose, when to use, when not to use, sibling contrast, and side effects. It is longer than average but every section adds decision-relevant information, and the core purpose is front-loaded.

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

Completeness5/5

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

For a governance task-creation tool with an output schema present, the description covers the trigger condition, pipeline position, license gating, persistence side effects, and response routing. Nothing an agent needs to decide whether and how to invoke this tool correctly is missing.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3. The description adds meaningful context beyond the schema: risk_level drives approval requirements, and title/scope are semantically required despite empty defaults being rejected. This extra behavioral meaning justifies above baseline.

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 states a specific verb and resource: 'Create a governance-classed task with risk tier and scope'. It distinguishes itself from delimit_ledger_add, delimit_gov_evaluate, delimit_gov_run, and delimit_gov_verify, so an agent can immediately tell what this tool does relative to siblings.

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 when to use ('immediately after delimit_gov_evaluate returns a gating required verdict'), when NOT to use, and names the alternative tools for each excluded case. It also places the tool as step one of a three-step pipeline, leaving no ambiguity about placement.

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

delimit_gov_policyDelimit Gov PolicyA
Read-onlyIdempotent

Read the active governance policy for a repository (Pro).

When to use: when an agent or operator needs to inspect the live policy rules being enforced for a repo (risk thresholds, gates). When NOT to use: to mutate policy — this tool is read-only.

Sibling contrast: delimit_gov_evaluate runs an action against the policy; this returns the policy itself.

Side effects: read-only on policy storage; gated by require_premium (returns a license payload if the caller is unlicensed).

Prerequisite: requires Delimit Pro. An unlicensed call returns {"error": ..., "upgrade": "https://delimit.ai/pricing"} without running.

ParametersJSON Schema
NameRequiredDescriptionDefault
repoNoFilesystem path to the repository. Default "." (cwd)..

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.6/5.0
Behavior5/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false. The description adds valuable behavior beyond those: read-only side effects on policy storage, license gating via require_premium, and the exact unlicensed-call response shape including an upgrade link. This is the kind of contextual behavior an agent needs to predict outcomes.

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 front-loaded with the core purpose and uses structured labeled sections for when-to-use, when-not-to-use, side effects, and prerequisites, making it highly scannable. There is minor redundancy between the side-effects note about an unlicensed license payload and the prerequisite section repeating the unlicensed-call behavior, but overall the content is tight and purposeful.

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

Completeness5/5

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

For a simple read-only tool with one optional parameter and an output schema, the description covers everything needed: purpose, selection criteria, sibling differentiation, side effects, and licensing behavior. The presence of an output schema means return-value details need not be repeated in the description, so nothing essential is missing.

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 description coverage is 100% and the single parameter repo is clearly documented with a default value and description. The tool description does not add parameter-specific meaning beyond the schema, so the baseline of 3 applies. No additional semantic detail is required, but none is provided either.

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 opens with a clear, specific statement: 'Read the active governance policy for a repository (Pro).' It names the exact resource (governance policy) and the verb (read), and immediately distinguishes itself from delimit_gov_evaluate, which runs an action against the policy rather than returning the policy itself.

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?

Explicit 'When to use' and 'When NOT to use' sections tell the agent exactly when to invoke this tool and when to avoid it. The sibling contrast with delimit_gov_evaluate provides a concrete alternative and differentiates the two tools, so an agent can select the correct one without guesswork.

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

delimit_gov_runDelimit Gov RunA

Execute a previously created governance task under policy (Pro).

When to use: as step two of the three-step governance pipeline, after delimit_gov_new_task has minted a task_id and before delimit_gov_verify closes it out. Call when you are ready to perform the gated work and want the policy engine to record the execution. When NOT to use: to evaluate a candidate action (use delimit_gov_evaluate), to mint a task (delimit_gov_new_task), or to attest a completed task (delimit_gov_verify).

Sibling contrast: delimit_gov_new_task creates the task record but does no work; this records the execution against an existing task_id; delimit_gov_verify attests the run output afterwards. The full pipeline is new_task -> run -> verify.

Side effects: gated by require_premium — unlicensed callers receive a license payload, no execution recorded. On a licensed call, invokes backends.governance_bridge.run_task which appends a run record to the task identified by task_id (status transition, timestamp, repo). The response is routed through _with_next_steps so the returned dict carries orchestrator hints. Note this tool records the run event; it does NOT itself perform the underlying work — the caller is expected to do that.

ParametersJSON Schema
NameRequiredDescriptionDefault
repoNoFilesystem path to the repository. Default "." (cwd)..
task_idNoIdentifier returned by delimit_gov_new_task. Required.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.7/5.0
Behavior5/5

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

Beyond the annotations, it discloses require_premium gating with unlicensed behavior, the backend invocation, the run record side effect, routing through _with_next_steps, and explicitly notes the tool records execution rather than performing work. This is substantial behavioral context that annotations do not provide.

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 longer than average but highly structured with labeled sections: when to use, when NOT to use, sibling contrast, and side effects. Every section adds decision-relevant information with minimal redundancy. The key purpose is front-loaded in the first sentence.

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

Completeness5/5

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

Given an output schema exists, the description does not need to explain return values, yet it still mentions the orchestrator hints in the response. It covers licensing, side effects, pipeline ordering, and the limitation that no underlying work is performed. Nothing essential is missing for correct invocation.

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 description coverage is 100%, so the schema already documents both repo and task_id. The narrative adds useful context such as task_id being required despite not being marked required in the schema, but it does not add much meaning beyond what the schema descriptions already convey. Baseline 3 is appropriate.

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 first sentence states a specific verb and resource: 'Execute a previously created governance task under policy (Pro).' It clearly differentiates from siblings by naming the pipeline step and contrasts with delimit_gov_evaluate, new_task, and verify. The purpose is unambiguous even without opening the schema.

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?

The description explicitly says when to use it (step two, after new_task, before verify), when NOT to use it (evaluate, new_task, verify), and provides a sibling contrast plus the full pipeline: new_task -> run -> verify. This gives the agent complete routing guidance.

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

delimit_gov_statusDelimit Gov StatusA
Read-onlyIdempotent

Report governance state (open tasks, decisions) for a repo.

When to use: when you need a snapshot of governance activity for a given repo — what tasks are open, what was recently decided. When NOT to use: for engine-level health (use delimit_gov_health) or to evaluate a new action (use delimit_gov_evaluate).

Sibling contrast: delimit_gov_health reports the engine; this reports the workload (per-repo task and decision state).

Side effects: read-only. Calls backends.governance_bridge.status.

ParametersJSON Schema
NameRequiredDescriptionDefault
repoNoFilesystem path to the repository. Default "." (cwd)..

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false. The description adds value by explicitly stating 'Side effects: read-only' and naming the underlying backend call 'backends.governance_bridge.status', giving the agent extra implementation context beyond the annotations.

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 tightly structured: purpose first, then usage guidance, sibling contrast, and side effects. Every section earns its place with no filler or redundancy.

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

Completeness5/5

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

With one simple parameter, an output schema present, rich safety annotations, and explicit usage/contrast guidance, the description fully equips an agent to select and invoke the tool correctly.

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 description coverage is 100%, so the schema already documents the repo parameter fully. The description reinforces the per-repo scope but adds no material parameter semantics beyond the schema; baseline 3 is appropriate.

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 states a specific verb and resource: 'Report governance state (open tasks, decisions) for a repo.' It clearly distinguishes itself from delimit_gov_health and delimit_gov_evaluate via the sibling contrast, so an agent can tell them apart without inspecting schemas.

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?

Includes explicit 'When to use' and 'When NOT to use' sections, naming the exact alternative tools and the conditions that route to them. This leaves no ambiguity about selection.

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

delimit_gov_verifyDelimit Gov VerifyA

Attest that a governance task completed under policy (Pro).

When to use: as step three (closing step) of the governance pipeline, immediately after delimit_gov_run has recorded the execution. This is the call that flips a task from "ran" to "verified" and produces the attestation entry used by downstream audit consumers. When NOT to use: to mint a task (delimit_gov_new_task) or to record the execution itself (delimit_gov_run). Verify is closing only — it does not run work and does not create tasks.

Sibling contrast: delimit_gov_new_task creates; delimit_gov_run records execution; this attests the outputs satisfy policy. Compared to delimit_evidence_verify (which checks an evidence file), this attests against the policy engine, not a static file.

Side effects: gated by require_premium — unlicensed callers receive a license payload, no verification recorded. On a licensed call, invokes backends.governance_bridge.verify which writes a verification record against the task_id (verdict, timestamp, repo, policy snapshot). The response is routed through _with_next_steps. Does not perform additional work — only validates and records the verdict.

Prerequisite: requires Delimit Pro. An unlicensed call returns {"error": ..., "upgrade": "https://delimit.ai/pricing"} without running.

ParametersJSON Schema
NameRequiredDescriptionDefault
repoNoFilesystem path to the repository. Default "." (cwd)..
task_idNoIdentifier from delimit_gov_new_task / delimit_gov_run. Required.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.9/5.0
Behavior5/5

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

The description goes well beyond the sparse annotations by disclosing side effects: it writes a verification record, is gated by require_premium, behaves differently for unlicensed callers, invokes a specific backend method, and does not perform additional work. It also explains the unlicensed response shape and prerequisite, giving full transparency about what happens when the tool is called.

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 long but well-structured with clear sections for when to use, when not to use, sibling contrast, side effects, and prerequisites. Every section provides actionable information, and the most important usage guidance is front-loaded.

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

Completeness5/5

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

The description covers the tool's role in the pipeline, prerequisites, licensing behavior, side effects, backend invocation, and relationship to sibling tools. With an output schema already present, the description does not need to explain return values, and nothing essential is missing for an agent to invoke this tool correctly.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3, but the description adds meaningful context by clarifying that task_id is required despite having a default empty string, and that it comes from delimit_gov_new_task / delimit_gov_run. This resolves a potential ambiguity in the input schema where no parameters are marked required.

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 opens with a specific verb and resource: 'Attest that a governance task completed under policy.' It clearly defines the tool's role as the closing verification step in the governance pipeline and distinguishes it from related siblings by explaining that it flips a task from 'ran' to 'verified' and produces an attestation entry.

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?

The description explicitly states when to use the tool ('step three, immediately after delimit_gov_run'), when NOT to use it (for minting tasks or recording execution), and names the exact alternatives (delimit_gov_new_task, delimit_gov_run, delimit_evidence_verify). This gives an agent clear routing guidance with no inference required.

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

delimit_handoff_acknowledgeDelimit Handoff AcknowledgeA

Acknowledge a pending handoff receipt before starting work.

When to use: at session start when delimit_handoff_list shows a pending receipt — the receiving agent must acknowledge before starting work. When NOT to use: to create a handoff (use delimit_handoff_create) or list receipts (delimit_handoff_list).

Sibling contrast: delimit_handoff_create writes; delimit_handoff_list reads; this closes the loop on a specific receipt.

Side effects: writes an acknowledgement record via ai.handoff_receipts.acknowledge_receipt; flips the receipt status from pending to acknowledged.

ParametersJSON Schema
NameRequiredDescriptionDefault
notesNoOptional notes from the receiving agent.
receipt_idNoReceipt id to acknowledge. Required (empty string returns an error payload).
project_pathNoOptional exact project namespace. Blank searches all namespaces; an explicit path never writes outside that namespace.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.7/5.0
Behavior5/5

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

Discloses concrete side effects beyond the annotations: writes an acknowledgement record via ai.handoff_receipts.acknowledge_receipt and flips receipt status from pending to acknowledged. This adds meaningful behavioral context and does not contradict readOnlyHint=false or destructiveHint=false.

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 well-structured with purpose, usage, sibling contrast, and side effects. Every section earns its place, and the key operational guidance is front-loaded before the longer side-effect detail.

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

Completeness5/5

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

Complete for a handoff-acknowledgement tool: it explains when to use it, when not to, how it differs from siblings, and what state changes it causes. Since an output schema exists, the description does not need to explain return values.

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 description coverage is 100%, so the baseline is 3; the schema already documents notes, receipt_id, and project_path. The description reinforces that a specific receipt is targeted but does not add new parameter-level meaning beyond what is already in the schema.

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?

States a specific verb and resource: 'Acknowledge a pending handoff receipt before starting work.' It also distinguishes itself from sibling tools by noting delimit_handoff_create writes, delimit_handoff_list reads, and this tool 'closes the loop on a specific receipt.'

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 provides a when-to-use condition ('at session start when delimit_handoff_list shows a pending receipt') and a when-NOT-to-use section that names the alternatives (delimit_handoff_create and delimit_handoff_list). This fully routes an agent to the correct tool.

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

delimit_handoff_createDelimit Handoff CreateA

Create a handoff receipt when transitioning between agents.

When to use: at the end of a session or before passing work to another model — documents what was done, what's pending, and what the next agent should do first. When NOT to use: for general session summary (use delimit_session_handoff) or to acknowledge a receipt (delimit_handoff_acknowledge).

Sibling contrast: delimit_session_handoff is venture-scoped summary; delimit_soul_capture is richer cross-model state; this is the structured per-agent handoff with explicit completed/ not-completed/blockers/scope fields.

Side effects: writes a new handoff receipt via ai.handoff_receipts.create_receipt. The receiving agent should later call delimit_handoff_acknowledge.

ParametersJSON Schema
NameRequiredDescriptionDefault
blockersNoComma-separated blockers encountered.
in_scopeNoComma-separated in-scope items.
priorityNoP0 / P1 (default) / P2.P1
to_modelNoTarget model name or "any" (default).any
completedNoComma-separated completed items.
assumptionsNoComma-separated assumptions made.
next_actionNoFirst thing the receiving agent should do.
out_of_scopeNoComma-separated explicitly excluded items.
not_completedNoComma-separated items not completed (with reasons).
files_modifiedNoJSON list of {path, change_type, summary} dicts, or empty to auto-detect.
task_descriptionNoWhat the task was (one line).

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.7/5.0
Behavior5/5

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

The description goes beyond the annotations by disclosing the concrete side effect: 'writes a new handoff receipt via ai.handoff_receipts.create_receipt.' It also documents the expected lifecycle next step, stating 'The receiving agent should later call delimit_handoff_acknowledge.' This is consistent with readOnlyHint=false and destructiveHint=false.

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 well-structured with labeled sections: purpose, when to use, when not to use, sibling contrast, and side effects. Every sentence earns its place, and the core purpose is front-loaded before the usage guidance.

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

Completeness5/5

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

Given the output schema exists and the description covers purpose, usage boundaries, sibling differentiation, side effects, and follow-up action, nothing essential is missing for an agent to invoke this tool correctly. It is complete for a write-oriented handoff tool with many optional fields.

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?

The schema already provides 100% description coverage for all 11 parameters, so the baseline is 3. The description adds only modest context by noting the 'explicit completed/not-completed/blockers/scope fields,' which is helpful but does not materially deepen parameter understanding beyond the schema.

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 opens with a specific verb-resource pair: 'Create a handoff receipt when transitioning between agents.' It clearly differentiates itself from sibling tools by naming delimit_session_handoff, delimit_soul_capture, and delimit_handoff_acknowledge in the sibling contrast.

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?

It explicitly states when to use ('at the end of a session or before passing work to another model'), when not to use ('for general session summary' or 'to acknowledge a receipt'), and names the exact alternative tools. This leaves no ambiguity for an agent deciding between related handoff tools.

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

delimit_handoff_listDelimit Handoff ListA
Read-onlyIdempotent

List session handoff receipts.

When to use: at session start to see what previous sessions left pending, or to audit acknowledged handoffs. When NOT to use: to create a handoff (use delimit_handoff_create) or acknowledge one (delimit_handoff_acknowledge).

Sibling contrast: delimit_handoff_create writes; delimit_handoff_acknowledge closes; this reads the receipt list.

Side effects: read-only. Calls ai.handoff_receipts.get_receipts.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum receipts to return, 1-200. Default 50.
statusNo"pending" (default), "acknowledged", or "all".pending
project_pathNoOptional exact project namespace. Blank aggregates all namespaces.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, so the safety profile is covered. The description adds a clear 'Side effects: read-only' statement and names the underlying function call, which provides useful implementation context without contradicting the annotations.

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 compact and well-structured, with each section earning its place: purpose, usage, exclusions, sibling contrast, and side effects. Key information is front-loaded and scannable.

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

Completeness5/5

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

For a read-only list tool with full schema coverage, an output schema, and clear sibling differentiation, the description covers when to use, when not to use, alternatives, side effects, and the backing implementation. Nothing material is missing.

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 description coverage is 100%, with each parameter already documented including defaults and allowed values. The description adds no extra parameter-level meaning, but the schema fully carries the burden, so the baseline of 3 is appropriate.

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 opens with a specific verb and resource: 'List session handoff receipts.' It immediately distinguishes itself from sibling write/acknowledge tools, so an agent can tell exactly what this tool does and does not do.

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?

It provides explicit when-to-use scenarios ('at session start...', 'to audit acknowledged handoffs') and explicit when-not-to-use guidance with named alternatives (delimit_handoff_create, delimit_handoff_acknowledge). The sibling contrast makes routing unambiguous.

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

delimit_handoff_preflightDelimit Handoff PreflightA

Validate cross-agent handoff invariants before switching coding agents (LED-1710).

When to use: before a session hands off to a different coding agent (claude -> antigravity -> codex -> gemini) or an Auto-Phoenix revive, to confirm the next agent will NOT inherit corrupted state — a core.bare=true repo, a junk test@*/empty git identity, leaked GIT_* env vars that misdirect git subprocesses, a stale <gitdir>/index.lock, or a missing/stale ~/.delimit/.last_capture stamp (next agent starts blind). When NOT to use: to capture or restore session context (use delimit_soul_capture / delimit_revive — this only INSPECTS), or for general repo health (delimit_repo_diagnose).

Sibling contrast: delimit_revive restores prior context (read+write); delimit_gov_health reports the policy-kernel layer; this is a narrow read-only pre-handoff gate over git + env + capture stamp returning a fail-closed verdict. Phase-1 VALIDATOR only: NOT wired into any live handoff path; auto-remediation is held for a later phase.

Side effects: READ-ONLY — inspects git config + the process env + the .last_capture file via a hermetic git env. NO writes, env mutation, git config changes, network, ledger, or notification; it cannot itself corrupt the state it checks.

Verdict: ok=False if ANY critical check fails (fail-closed). Critical: git_identity, not_bare. Warn: no_git_env_leak, no_stale_index_lock, handoff_freshness. Each check is {name, ok, severity, detail, remediation}.

ParametersJSON Schema
NameRequiredDescriptionDefault
project_pathNoRepository path to inspect. Empty resolves via the gateway resolver, then cwd.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.9/5.0
Behavior1/5

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

The description itself is exemplary — 'READ-ONLY', 'NO writes, env mutation, git config changes, network, ledger, or notification', fail-closed verdict semantics, and an explicit phase-1 not-wired-into-live-path disclosure. However, the annotations declare readOnlyHint=false, which directly contradicts the description's emphatic read-only/no-writes claims; per rubric, a description that contradicts its annotations scores 1. Annotation Contradiction.

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?

Long but front-loaded: the first sentence states the purpose, and each paragraph carries distinct information — when/when-not, sibling contrast, phase limitation, side effects, and verdict semantics. No filler or repetition; the LED-1710 reference is the only minor noise.

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

Completeness5/5

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

For a single-parameter tool that already has an output schema and annotations, the description covers selection (when/not-to-use), invocation safety (read-only, hermetic git env), result interpretation (fail-closed, critical vs warn severities, per-check record shape), and operational limitations (phase-1 validator only). Nothing needed for correct selection or invocation is missing.

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 description coverage is 100% — project_path is fully documented as 'Repository path to inspect. Empty resolves via the gateway resolver, then cwd.' The description adds tool-behavior context (which state is inspected at that path) but no new parameter-level semantics, so the high-coverage baseline of 3 holds.

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?

Opens with a specific verb+resource pair: 'Validate cross-agent handoff invariants before switching coding agents.' It names the exact invariants checked (core.bare=true, git identity, GIT_* env leaks, index.lock, .last_capture) and explicitly differentiates itself from delimit_revive, delimit_soul_capture, delimit_repo_diagnose, and delimit_gov_health, so an agent can select it from ~200 siblings without opening any schema.

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?

Provides explicit when-to-use ('before a session hands off to a different coding agent... or an Auto-Phoenix revive'), when-not-to-use ('to capture or restore session context... or for general repo health'), and names the exact alternatives (delimit_soul_capture, delimit_revive, delimit_repo_diagnose). The sibling contrast adds exclusion criteria by noting delimit_revive is read+write while this is a narrow read-only gate.

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

delimit_heartbeat_checkDelimit Heartbeat CheckA

Walk the heartbeat directory and report which scheduled services are stale (LED-1412).

When to use: as part of the session-start ritual to surface silent daemon staleness before it becomes a customer-visible incident. The 2026-05-15 incident — delimit-reddit-proxy.service inactive for 13 days, all reddit scans 429-failing silently, founder noticing only via "3 day old posts" — is the failure mode this prevents. Each scheduled task writes ~/.delimit/heartbeats/<service>.json after every run; this tool walks the dir and classifies each service. When NOT to use: for one-off liveness checks (just read the file yourself) or for full-host metrics (delimit_obs_status). Phase 2 will add an external deadman ping for full-host outages — heartbeats here are local-only.

Sibling contrast: delimit_obs_status reports composed runtime observability metrics; this reports per-service liveness based on last_run timestamps written by each daemon. delimit_gov_health reports the kernel layer.

Side effects: read-only on the heartbeat directory. No network, no write, no ledger, no notification.

Classification (most-severe-first):

  • parse_error: heartbeat file unreadable

  • failed: status='failed' in the record

  • stale: last_run older than service-specific threshold

  • degraded: status='degraded' in the record

  • never_seen: configured service has no heartbeat file yet

  • unknown_age: heartbeat exists but timestamp won't parse

  • ok: status='ok' AND last_run within threshold

Per-service thresholds default to sensible values (reddit/social-loop 2h, inbox 30min, daily timers 36h). Override via <dir>/_thresholds.json — JSON map of {service_name: seconds}.

ParametersJSON Schema
NameRequiredDescriptionDefault
heartbeat_dirNoOverride the heartbeat directory. Default: $DELIMIT_HEARTBEAT_DIR env var or ~/.delimit/heartbeats/.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior1/5

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

Annotation Contradiction: the description states 'Side effects: read-only on the heartbeat directory. No network, no write, no ledger, no notification,' but the annotations declare readOnlyHint: false. This directly contradicts the structured metadata and creates conflicting signals about whether the tool may mutate state.

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 long but every section earns its place: purpose, usage guidance, sibling contrast, side effects, classification semantics, and thresholds. It is front-loaded with a clear one-sentence summary and uses structured headings for scannability.

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?

An output schema exists, so return values need no prose description. The description covers classifications, thresholds, override mechanism, local-only behavior, and alternatives. It would be fully complete were it not for the readOnlyHint contradiction, which introduces avoidable uncertainty about side effects.

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 description coverage is 100%, so the single optional parameter heartbeat_dir is already well documented with its default and environment variable fallback. The description adds useful context about heartbeat files and thresholds but does not need to compensate for schema gaps, so the baseline 3 applies.

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 first sentence states a specific verb, resource, and outcome: 'Walk the heartbeat directory and report which scheduled services are stale.' The sibling contrast explicitly distinguishes this tool from delimit_obs_status and delimit_gov_health, so an agent can tell them apart.

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?

The description gives explicit 'When to use' and 'When NOT to use' guidance, including concrete alternatives like delimit_obs_status and direct file reads for one-off liveness checks. This leaves no ambiguity about selection.

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

delimit_helpDelimit HelpA
Read-onlyIdempotent

Get help for a Delimit tool — purpose, parameters, examples.

When to use: when an agent or operator needs a quick reminder of a tool's interface, or wants the workflow overview. When NOT to use: for the full version/environment status (use delimit_version) or governance health (delimit_gov_health).

Sibling contrast: delimit_version reports server info; this returns per-tool descriptions from the TOOL_HELP table.

Side effects: read-only. Looks up an in-memory help table.

ParametersJSON Schema
NameRequiredDescriptionDefault
tool_nameNoTool name (e.g. "lint", "gov_health"). Empty returns the workflows overview.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false. The description adds useful context beyond these: it states 'Side effects: read-only' and reveals the implementation detail 'Looks up an in-memory help table.' This gives the agent confidence about safety and internal behavior without contradicting the annotations.

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 tightly structured with clear labeled sections (When to use, When NOT to use, Sibling contrast, Side effects) and no filler. Every sentence contributes either usage guidance or behavioral context, and the most important purpose statement is front-loaded.

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

Completeness5/5

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

For a simple, read-only help tool with one optional parameter and a proper output schema, the description is complete. It covers purpose, usage boundaries, sibling differentiation, side effects, and parameter behavior, so an agent can safely and correctly invoke it without further research.

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 description coverage is 100%: the single optional parameter tool_name is already documented in the schema, including that empty returns the workflows overview. The tool description itself does not add much parameter detail beyond the schema, so the baseline score of 3 is appropriate.

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 opens with a specific verb and resource: 'Get help for a Delimit tool — purpose, parameters, examples.' It also distinguishes itself from siblings by noting it 'returns per-tool descriptions from the TOOL_HELP table,' making its scope clear against the many delimit_* tools.

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?

The description explicitly provides 'When to use' and 'When NOT to use' conditions, and names the alternative tools (delimit_version, delimit_gov_health) for those excluded cases. The sibling contrast line further clarifies the boundary by contrasting the returned content.

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

delimit_impactDelimit ImpactA
Read-onlyIdempotent

Analyze downstream impact of an API change (informational only).

When to use: when assessing blast radius for a planned API change, by inspecting a dependency manifest for callers of the named API. When NOT to use: to make a gate decision (use delimit_lint or delimit_gov_evaluate for pass/fail) — this returns information.

Sibling contrast: delimit_lint returns pass/fail; this returns a blast-radius report.

Side effects: read-only. Calls backends.gateway_core.run_impact.

ParametersJSON Schema
NameRequiredDescriptionDefault
api_nameYesThe API name that changed. Required.
dependency_fileNoOptional path to a dependency manifest file (package.json, requirements.txt, go.mod) to scan for callers. Default None = backend default path.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, so the safety profile is known. The description adds useful context beyond annotations: it is 'informational only', not a gate decision, and it calls backends.gateway_core.run_impact. This gives the agent a clear picture of behavior without being exhaustive.

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 well-structured and front-loaded: purpose first, then usage guidance, then sibling contrast, then side effects. Every sentence serves a distinct purpose and there is no filler.

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

Completeness5/5

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

For a read-only analysis tool with rich annotations, full schema coverage, and an output schema, the description covers purpose, usage, alternatives, exclusions, and side effects. Nothing needed for an agent to select and invoke it correctly is missing.

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 description coverage is 100%, so the schema already documents both api_name and dependency_file. The description reinforces that dependency_file is a manifest path (package.json, requirements.txt, go.mod), but this is also in the schema, so no significant extra meaning is added.

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 states a specific verb and resource: 'Analyze downstream impact of an API change', and clarifies scope via 'blast radius' and 'dependency manifest'. It also distinguishes itself from delimit_lint by noting that this returns a blast-radius report rather than pass/fail.

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?

Provides explicit 'When to use' guidance, explicitly says 'When NOT to use', and names the exact alternatives (delimit_lint, delimit_gov_evaluate). This fully routes the agent to the correct tool.

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

delimit_inbox_daemonDelimit Inbox DaemonA

Control the inbox polling daemon for email governance (Pro).

When to use: at session start (per orchestrator session ritual) to ensure the daemon is up; or to stop/inspect it. When NOT to use: to read inbound items (use delimit_notify_inbox) or send notifications (delimit_notify).

Sibling contrast: delimit_notify_inbox reads; this controls the daemon process that fills the inbox.

Side effects: action="start" / "stop" mutate daemon process state. The daemon polls pro@delimit.ai every 5 minutes, classifies emails, forwards owner-action items, and handles draft approvals via email replies. Auto-posting is disabled — approved drafts are emailed for manual posting. Backing module is gateway-only and surfaces a graceful "not_available" payload when called from the npm bundle.

ParametersJSON Schema
NameRequiredDescriptionDefault
actionNo"start" (begin polling), "stop" (halt polling), "status" (default — show daemon state).status

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.9/5.0
Behavior5/5

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

The description clearly discloses mutation semantics: action 'start'/'stop' mutate daemon process state. It adds rich context beyond annotations by describing polling frequency, classification behavior, draft approval handling, auto-posting being disabled, and the gateway-only 'not_available' payload behavior. This does not contradict the readOnlyHint=false or destructiveHint=false annotations.

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 well-structured with clear sections: what it does, when to use, when not to use, sibling contrast, and side effects. Every section adds distinct value, and the most decision-critical information is front-loaded.

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

Completeness5/5

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

The description fully orients an agent for a one-parameter control tool: session-start ritual usage, daemon behavior, side effects, integration constraints, and graceful degradation in the npm bundle. An output schema exists, so return-value details are not required here.

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

Parameters4/5

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

Schema coverage is 100% and the schema already documents the single 'action' parameter. The description adds operational meaning beyond the schema by specifying that start/stop mutate daemon state and status is the default inspection mode, reinforcing how the parameter values behave.

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 states a specific verb and resource: 'Control the inbox polling daemon for email governance (Pro).' It clearly distinguishes itself from siblings by noting that delimit_notify_inbox reads while this tool controls the daemon process that fills the inbox.

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?

The description gives explicit when-to-use guidance ('at session start... to ensure the daemon is up; or to stop/inspect it') and when-not-to-use guidance with named alternatives ('use delimit_notify_inbox' or 'delimit_notify'). It also provides a sibling contrast, leaving no ambiguity about role boundaries.

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

delimit_initDelimit InitA

Initialize Delimit governance scaffolding for a project.

When to use: once per project, the first time you adopt Delimit — creates .delimit/policies.yml, ledger directory, and (optionally) a project .claude/settings.json with a reasonable allowlist. When NOT to use: to load an existing config (use delimit_project_config action="load") or to discover Delimit's capabilities for a project (delimit_scan).

Sibling contrast: delimit_project_config manages the config after init; delimit_scan inspects what could be governed; this is the one-time initializer.

Side effects: creates .delimit/policies.yml + ledger dir; chmod 755 on .delimit/, chmod 600 on .delimit/secrets/*; writes a project .claude/settings.json with an Edit/Write/Bash allowlist if missing. Pass no_permissions=True to skip the permission step.

ParametersJSON Schema
NameRequiredDescriptionDefault
presetNoPolicy preset — "strict", "default", "relaxed".default
project_pathNoProject root directory. Default "." (cwd)..
no_permissionsNoSkip filesystem permission auto-config (LED-269).

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.8/5.0
Behavior5/5

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

Annotations are minimal, so the description carries the full burden of behavioral disclosure. It clearly lists side effects: creates .delimit/policies.yml, ledger directory, chmod 755/600 changes, and optional .claude/settings.json writes. It also discloses that permission configuration can be skipped with no_permissions=True, giving the agent a complete picture of the tool's footprint.

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 well-organized with clear 'When to use', 'When NOT to use', and 'Side effects' sections, and the most important information is front-loaded. There is minor redundancy: the creation of .delimit/policies.yml and ledger directory appears in both the 'When to use' paragraph and the 'Side effects' section, but this is a small cost for the clarity gained.

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

Completeness5/5

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

For a tool with three optional parameters and meaningful side effects, the description is complete: it names prerequisites, alternatives, exact filesystem effects, permission behavior, and how to opt out of the permission step. Because an output schema exists, no return-value explanation is required.

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

Parameters4/5

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

Schema description coverage is 100%, so the baseline is 3. The description adds useful meaning by tying no_permissions to the permission step and to the optional .claude/settings.json allowlist, which goes slightly beyond the schema's short parameter description. Preset and project_path rely on the schema, which is acceptable given full coverage.

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 opens with a specific verb and resource: 'Initialize Delimit governance scaffolding for a project.' It also contrasts itself with delimit_project_config ('manages the config after init') and delimit_scan ('inspects what could be governed'), making it easy for an agent to distinguish this one-time initializer from nearby siblings.

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?

Usage guidance is explicit: 'When to use: once per project, the first time you adopt Delimit' and 'When NOT to use' names both the alternative tools and the conditions that route to them. This leaves no ambiguity about when the tool is the correct choice.

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

delimit_intel_dataset_freezeDelimit Intel Dataset FreezeA

Freeze a dataset to make it immutable for replay integrity.

When to use: when a dataset is about to be referenced as evidence or signed attestation, and you want to lock its content forever. When NOT to use: to delete a dataset (the registry is append-only) or to inspect what's frozen (use delimit_intel_dataset_list).

Sibling contrast: delimit_intel_dataset_list inventories; delimit_intel_dataset_register writes; this locks against further writes.

Side effects: writes a frozen marker to the registry via backends.tools_data.intel_dataset_freeze. Subsequent writes to this dataset id will be rejected.

ParametersJSON Schema
NameRequiredDescriptionDefault
dataset_idYesDataset identifier from the registry. Required.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.7/5.0
Behavior5/5

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

The description discloses concrete side effects: writing a frozen marker to a specific backend path and causing subsequent writes to the dataset id to be rejected. This adds meaningful behavioral context beyond the annotations, which only indicate readOnlyHint=false and destructiveHint=false.

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 well-structured with a clear lead sentence followed by concise, purposeful sections for usage, non-usage, sibling contrast, and side effects. Every sentence adds relevant information without fluff.

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

Completeness5/5

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

For a simple single-parameter tool with an output schema, annotations, and clear sibling routing, the description is complete. It captures the action, rationale, exclusions, side effects, and consequences for future writes.

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 description coverage is 100%, with dataset_id already documented as the registry identifier and required. The description adds minimal new semantic detail about the parameter itself, so the baseline score of 3 is appropriate.

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 opens with a specific verb and resource: 'Freeze a dataset to make it immutable for replay integrity.' It clearly distinguishes this tool from siblings by contrasting list, register, and freeze behaviors.

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?

The description provides explicit 'When to use' and 'When NOT to use' sections, including a specific alternative for inspection (delimit_intel_dataset_list). It also explains that deletion is inappropriate because the registry is append-only, leaving no ambiguity about selection.

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

delimit_intel_dataset_listDelimit Intel Dataset ListA
Read-onlyIdempotent

List all datasets in the intel registry.

When to use: to inventory datasets currently registered for intel queries. When NOT to use: to register a new dataset (use delimit_intel_dataset_register) or to freeze one (delimit_intel_dataset_freeze).

Sibling contrast: delimit_intel_dataset_register writes; delimit_intel_dataset_freeze locks; this reads metadata.

Side effects: read-only. Calls backends.tools_data.intel_dataset_list.

Args: None.

Returns: Dict with the dataset registry and next_steps.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.7/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, and the description reinforces this with 'Side effects: read-only' and 'this reads metadata.' It also adds a concrete backend call and return shape, giving the agent useful behavioral context beyond the structured annotations.

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 well-structured with labeled sections and front-loads the core purpose. Every section adds useful guidance: usage, exclusions, side effects, args, and returns, without unnecessary fluff.

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

Completeness5/5

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

For a read-only, zero-parameter inventory tool with an output schema present, the description fully covers what the tool does, when to use it, what it returns, and how it differs from siblings. Nothing an agent needs to call it correctly is missing.

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

Parameters4/5

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

The tool has zero parameters and the schema is 100% covered by an empty properties object. The description explicitly states 'Args: None,' which is the appropriate baseline for a no-parameter 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?

Description opens with a specific verb and resource: 'List all datasets in the intel registry.' It also differentiates itself from siblings by contrasting read vs. write vs. lock behavior, so the agent can distinguish it from delimit_intel_dataset_register and delimit_intel_dataset_freeze.

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?

Provides explicit 'When to use' and 'When NOT to use' guidance, including the exact sibling tools to use instead for registration and freezing. The sibling contrast reinforces the decision boundary, leaving no ambiguity about when to invoke this tool.

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

delimit_intel_dataset_registerDelimit Intel Dataset RegisterA

Register a new dataset in the file-based intel registry.

When to use: at the start of an intel collection effort, to declare a named dataset that future ingest calls will write to. When NOT to use: to write data into an existing dataset (use delimit_intel_snapshot_ingest) or to inventory datasets (delimit_intel_dataset_list).

Sibling contrast: delimit_intel_dataset_list inventories; delimit_intel_dataset_freeze locks; this creates.

Side effects: writes a registry entry via backends.tools_data.intel_dataset_register. Coerces schema from a JSON string to a dict via _coerce_dict_arg.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesDataset name (key). Required.
schemaNoOptional JSON schema as dict or JSON string.
descriptionNoHuman-readable description for the registry.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.7/5.0
Behavior4/5

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

Annotations already convey readOnlyHint=false and destructiveHint=false, but the description adds useful behavioral detail: it writes a registry entry through a specific backend path and coerces schema from JSON string to dict. It does not fully describe duplicate-name behavior or error handling, but it goes beyond what annotations alone provide.

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 compact and well-structured with labeled sections for usage, non-usage, sibling contrast, and side effects. Every part adds decision-relevant information, and important content is front-loaded in the opening sentence.

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

Completeness5/5

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

For a registration tool with a small input schema and an output schema, this description is complete enough: it tells the agent when to use it, when not to, how it contrasts with siblings, and what side effects to expect. The presence of an output schema means return-value details are not required in the description.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3, but the description adds meaningful parameter-related context by explicitly noting that the schema argument is coerced from a JSON string to a dict. This helps the agent understand how to supply the schema parameter beyond the schema's own type declaration.

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 opens with the specific action 'Register a new dataset' and names the target resource ('file-based intel registry'). It further distinguishes the tool from siblings by stating 'this creates' relative to inventory and freeze operations, so there is no ambiguity about what the tool does.

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?

The description explicitly provides 'When to use' and 'When NOT to use' guidance, naming the exact alternative tools for writing data (delimit_intel_snapshot_ingest) and inventorying datasets (delimit_intel_dataset_list). This gives an agent clear decision criteria and removes reliance on inference.

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

delimit_intel_queryDelimit Intel QueryA
Read-onlyIdempotent

Search saved intel snapshots by keyword, date, or dataset.

When to use: to surface ingested intel matching a query, optionally scoped to one dataset. When NOT to use: to ingest new data (use delimit_intel_snapshot_ingest) or list datasets (delimit_intel_dataset_list).

Sibling contrast: delimit_intel_snapshot_ingest writes; this reads back filtered snapshots.

Side effects: read-only. Calls backends.tools_data.intel_query. Coerces parameters from JSON string to dict via _coerce_dict_arg.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryNoKeyword search string. Empty = all.
dataset_idNoOptional dataset to scope the query to.
parametersNoOptional dict with date_from, date_to, limit. Accepted as JSON string and coerced.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.7/5.0
Behavior5/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, and the description adds value by stating the backend call target and the parameter coercion behavior. This gives an agent concrete expectations about internal behavior beyond the annotation flags.

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 compact, front-loaded with the core purpose, and uses labeled sections for usage guidance and side effects. Every sentence earns its place with no redundancy or filler.

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

Completeness5/5

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

With a rich output schema, complete parameter schema, clear annotations, and explicit sibling alternatives, nothing critical is missing. The description fully equips an agent to invoke the tool correctly and understand its side effects.

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 100%, so the input schema already fully documents query, dataset_id, and parameters. The description adds a helpful high-level summary of search dimensions ('keyword, date, or dataset') but does not materially go beyond the schema's parameter descriptions.

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 opens with a specific verb and resource: 'Search saved intel snapshots by keyword, date, or dataset.' It clearly differentiates from siblings by naming exactly what this tool is not (ingest, dataset listing) and contrasting it with delimit_intel_snapshot_ingest.

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?

The description gives explicit 'When to use' and 'When NOT to use' guidance, naming the exact alternative tools for ingestion and dataset listing. This leaves no ambiguity about when to select this tool over its siblings.

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

delimit_intel_snapshot_ingestDelimit Intel Snapshot IngestA

Store a research snapshot with provenance in the intel store.

When to use: to ingest research / signal data with provenance (source, author) for later replay or attestation. When NOT to use: to register a dataset (use delimit_intel_dataset_register) or query existing snapshots (delimit_intel_query).

Sibling contrast: delimit_intel_dataset_register declares; delimit_intel_query reads; this writes new snapshots.

Side effects: writes a snapshot record via backends.tools_data.intel_snapshot_ingest. Coerces data and provenance from JSON strings to dicts via _coerce_dict_arg.

ParametersJSON Schema
NameRequiredDescriptionDefault
dataYesSnapshot data (JSON-serializable dict or JSON string). Required.
provenanceNoOptional provenance metadata (source, author, etc.).

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.7/5.0
Behavior4/5

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

The annotations already indicate this is not read-only and not destructive. The description goes beyond that by disclosing the side effect of writing a snapshot record via a specific backend and explaining that data and provenance are coerced from JSON strings to dicts via _coerce_dict_arg. This adds useful behavioral detail, though it does not fully address idempotency or failure semantics.

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 well-structured with clear sections: purpose, when to use, when not to use, sibling contrast, and side effects. Every sentence contributes useful information, and the main purpose is front-loaded.

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

Completeness5/5

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

For a two-parameter tool with full schema descriptions, an output schema, and safety annotations, the description covers purpose, usage boundaries, sibling relationships, side effects, and parameter coercion behavior. An agent has enough information to select and invoke this tool correctly.

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

Parameters4/5

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

Schema coverage is 100%, so the input schema already documents both parameters. The description adds meaningful value by mentioning the JSON-string-to-dict coercion behavior, which is not obvious from the schema alone and directly affects how callers can pass data and provenance.

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 states a specific verb and resource: 'Store a research snapshot with provenance in the intel store.' It further distinguishes itself from the closely related siblings delimit_intel_dataset_register and delimit_intel_query, making the tool's purpose immediately unambiguous.

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?

The description provides explicit 'When to use' and 'When NOT to use' guidance, names the alternative tools to use instead, and includes a sibling contrast ('register declares; query reads; this writes'). An agent can confidently decide whether this tool is the right choice.

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

delimit_ledgerDelimit LedgerA
Read-onlyIdempotent

Query the append-only contract ledger (hash-chained JSONL).

When to use: to read or audit the cryptographically-chained contract ledger that records signed governance events. When NOT to use: for the project work ledger (use delimit_ledger_list / delimit_ledger_query) — the contract ledger is a different, hash-chained store.

Sibling contrast: delimit_ledger_list reads work items; delimit_audit reads audit logs; this reads the hash-chained contract ledger and can verify integrity.

Side effects: read-only. Calls backends.gateway_core.query_ledger.

ParametersJSON Schema
NameRequiredDescriptionDefault
api_nameNoOptional filter by API name.
repositoryNoOptional filter by repository.
ledger_pathYesPath to the ledger JSONL file (e.g. .delimit/ledger/operations.jsonl). Required.
validate_chainNoIf True, verify the hash chain integrity in addition to filtering. Default False.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.6/5.0
Behavior5/5

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

Annotations already carry readOnlyHint, idempotentHint, and destructiveHint, but the description adds substantial behavioral context: the ledger is append-only, hash-chained, stores signed governance events, and can verify integrity. It also discloses that it calls backends.gateway_core.query_ledger, which is useful and consistent with the annotations.

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 well-structured with front-loaded key information and labeled sections. A minor redundancy exists: the hash-chained contract ledger is described more than once, and the 'Side effects: read-only' line partly repeats the annotations, but the overall length is still appropriate and scannable.

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

Completeness5/5

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

Given the output schema exists, the annotations cover safety, and the input schema covers parameters at 100%, the description is complete for selection and invocation. It explains the data store, integrity verification capability, and sibling distinctions without needing to explain return values.

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 description coverage is 100%, so the baseline is 3. The description does not repeat parameter-level details, which is appropriate, but it only lightly contextualizes validate_chain via the 'audit' and 'verify integrity' language. The schema already explains each parameter adequately.

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 opens with a specific verb and resource: 'Query the append-only contract ledger (hash-chained JSONL).' It clearly distinguishes this tool from delimit_ledger_list and delimit_audit by naming what each sibling reads, so an agent can tell them apart without opening schemas.

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?

It provides an explicit 'When to use' section and an explicit 'When NOT to use' section that names the alternatives (delimit_ledger_list / delimit_ledger_query). The sibling contrast further clarifies routing to delimit_audit vs. this tool, leaving little to inference.

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

delimit_ledger_addDelimit Ledger AddA

Add a new item to a project's ledger.

When to use: to capture work that should outlive the current session — tasks, bugs, features, decisions, strategy items. When NOT to use: for governance-classed work (use delimit_gov_new_task) or quick conversation memory (delimit_memory_store).

Sibling contrast: delimit_ledger_update changes; delimit_ledger_done closes; this creates.

Side effects: writes a new ledger entry via ai.ledger_manager.add_item. Coerces tags / acceptance_criteria / tools_needed from comma strings to lists via _coerce_list_arg.

ParametersJSON Schema
NameRequiredDescriptionDefault
tagsNoLabels/tags (e.g. ["deploy-ready", "ship"] or "deploy-ready,ship").
titleYesWhat needs to be done. Required.
ledgerNo"ops" (tasks, bugs, features) or "strategy" (decisions, direction).ops
sourceNoWhere this came from (session, consensus, focus-group, etc).session
contextNoBackground info an AI agent needs to work on this item.
ventureNoProject name or path. Empty = auto-detect from cwd.
priorityNoP0 (urgent), P1 (important), P2 (nice to have).P1
item_typeNotask, fix, feat, strategy, consensus.task
worked_byNoWhich AI model is working on this. Auto-detected if empty.
descriptionNoDetails.
tools_neededNoDelimit tools needed (e.g. "delimit_lint", "delimit_test_coverage").
acceptance_criteriaNoList of testable "done when" conditions (e.g. "tests pass", "coverage > 80%").
estimated_complexityNosmall, medium, or large.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.6/5.0
Behavior4/5

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

Annotations only provide readOnlyHint: false and destructiveHint: false, which are weak generic signals. The description adds meaningful behavioral disclosure: it "writes a new ledger entry via ai.ledger_manager.add_item" and coerces tags/acceptance_criteria/tools_needed from comma strings to lists via _coerce_list_arg. This reveals internal mechanics and transformation behavior an agent needs to predict outcomes. Minor gap: no mention of error behavior or failure modes (e.g., invalid venture auto-detection).

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 tightly organized into labeled sections: purpose, when-to-use, when-not-to-use, sibling contrast, and side effects. Every sentence earns its place, the core purpose is front-loaded, and there is zero filler. The structure makes it scannable for an agent.

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 13 parameters, 100% schema coverage, an output schema, and annotations, the description covers the decision-critical aspects thoroughly: purpose, alternatives, exclusions, side effects, and coercion. What's missing is prerequisite context — e.g., whether the target project/ledger must already exist, or failure behavior when venture auto-detection from cwd fails. These are real edge cases for a write tool but not crippling gaps.

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

Parameters4/5

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

Schema description coverage is 100%, so the baseline is 3 — the schema already documents all 13 parameters. The description adds value beyond the schema by explaining that tags, acceptance_criteria, and tools_needed accept comma-separated strings that get coerced to lists, which clarifies the anyOf string/array types. That lifts it above baseline.

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 opens with a specific verb and resource: "Add a new item to a project's ledger." It then distinguishes itself from siblings explicitly — "delimit_ledger_update changes; delimit_ledger_done closes; this creates" — and from delimit_gov_new_task and delimit_memory_store. An agent can confidently select this tool without inspecting schemas.

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?

The description provides an explicit "When to use" section (work that should outlive the session: tasks, bugs, features, decisions, strategy items) and a "When NOT to use" section naming exact alternatives (delimit_gov_new_task for governance-classed work, delimit_memory_store for quick conversation memory). This is the strongest possible routing guidance.

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

delimit_ledger_auto_cancel_staleDelimit Ledger Auto Cancel StaleA
Destructive

Auto-archive open ledger items dormant past the stale-TTL threshold.

When to use: as nightly automation / scripted cleanup to retire items that have gone quiet past a strict threshold (default 60 days). When NOT to use: to merely surface stale candidates without applying (use delimit_ledger_groom which is propose-only and uses a softer 30-day default), to inspect ledger health (use delimit_ledger_health), or to auto-close items mirrored from external repos (delimit_ledger_auto_close_external).

Sibling contrast: delimit_ledger_groom proposes archives with a softer threshold and never applies; delimit_ledger_auto_close_external targets externally-mirrored items; delimit_ledger_bulk is the underlying bulk-action surface; this composes the stale-detector with bulk_action(archive) on a stricter dormancy threshold.

Side effects: with dry_run=False, archives matching items via bulk_action(archive). Items are never hard-deleted — the JSONL append-only log retains the full record. With dry_run=True (default), returns the plan only.

LED-1145 Phase 2 #4.

ParametersJSON Schema
NameRequiredDescriptionDefault
dry_runNoTrue (default) returns the plan; False applies via bulk_action(archive).
ventureNoProject name or path. Auto-detects if empty.
max_itemsNocap items processed per call. When the candidate list exceeds this, response includes truncated=True so the caller can run again to drain.
threshold_daysNodormancy threshold in days. 0 = read default (60 from STALE_TTL_DEFAULT_DAYS or DELIMIT_STALE_TTL_DAYS env). Pass an int to override.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.6/5.0
Behavior5/5

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

Beyond the destructiveHint annotation, the description discloses the key side effects: with dry_run=False it archives via bulk_action(archive), with dry_run=True it returns only the plan, items are never hard-deleted, and the JSONL append-only log retains full records. It also explains the composition with the stale-detector and bulk_action, which goes well beyond what annotations alone provide.

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 well-organized with clear sections and front-loaded purpose, but it is somewhat long and repeats sibling contrast in both the 'When NOT to use' and 'Sibling contrast' sections. The trailing internal reference 'LED-1145 Phase 2 #4' also adds little value for an agent selecting or invoking the tool.

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

Completeness5/5

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

Given the tool's complexity, destructive nature, and rich sibling set, the description covers selection criteria, invocation semantics, dry-run behavior, persistence guarantees, and composition with bulk actions. An output schema exists, so lack of explicit return-value detail is acceptable; nothing essential for correct use is missing.

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?

The input schema already covers all four parameters with detailed descriptions (100% coverage), so the baseline is 3. The tool description adds general context about the 60-day default and strict threshold, but does not materially extend the schema's parameter-level explanations.

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 states a specific action (auto-archive open ledger items dormant past stale-TTL threshold) with the resource and behavior clearly named. It differentiates itself from siblings like delimit_ledger_groom and delimit_ledger_auto_close_external, so an agent can select it accurately.

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?

The description gives explicit 'When to use' and 'When NOT to use' guidance, naming exact alternatives (delimit_ledger_groom, delimit_ledger_health, delimit_ledger_auto_close_external) and the conditions that route to each. This is ideal for an agent deciding between closely-related ledger tools.

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

delimit_ledger_auto_close_externalDelimit Ledger Auto Close ExternalA

Auto-close ledger items whose linked GitHub issue/PR already resolved.

When to use: as periodic maintenance to keep the ledger in sync with external reality — LEDs whose tracked GitHub issue/PR is closed/merged should not stay open. When NOT to use: to close one item by hand (use delimit_ledger_done) or to read external state (delimit_resource_get).

Sibling contrast: delimit_ledger_done is per-item; this auto-detects across many items.

Side effects: when dry_run=False, marks/archives via delimit_ledger_bulk under the hood. Default dry_run=True returns a plan only. Detection scans description/context/last_note/tags for github links / shorthand / gh: tag form.

Detection scans description / context / last_note / tags for:

Action map (per LED-1146 deliberation):

  • PR with merged=true → mark_done with merge SHA in note

  • issue/PR closed with state_reason="completed" → mark_done with closed_at

  • issue/PR closed with state_reason="not_planned" or no reason → archive

  • state="open" → leave alone

  • gh API error / 404 → leave alone, recorded in errors

Implementation re-uses bulk_action() under the hood; nothing new on the write path. dry_run=True (default) returns a plan; dry_run=False applies.

ParametersJSON Schema
NameRequiredDescriptionDefault
dry_runNoTrue (default) returns a plan without writing.
ventureNoproject name or path. Auto-detects if empty.
max_itemsNohard cap on items processed in one call (default 200). When the candidate set exceeds this, the response is `truncated=True`.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.6/5.0
Behavior5/5

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

The description discloses meaningful behavioral details beyond the annotations: dry_run defaults to true and returns a plan, false applies changes via delimit_ledger_bulk, detection fields and link formats are specified, an action map covers merged/closed/open/error cases, and errors are recorded. This is thorough and does not contradict the readOnlyHint=false/destructiveHint=false annotations.

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 well-structured and front-loaded, with clear sections for purpose, usage, side effects, detection, and action mapping. It loses one point because the detection fields are introduced twice in near-identical wording: once in prose and again in the bulleted list.

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

Completeness5/5

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

For a tool of this complexity, the description is remarkably complete: it covers side effects, dry-run behavior, detection patterns, per-state actions, error/404 handling, implementation reuse, and output truncation. The presence of an output schema means return-value details do not need to be repeated.

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 100%, and the description largely restates what the parameter schemas already say (dry_run plan vs apply, venture auto-detection, max_items cap with truncated=True). It adds no significant parameter-level meaning beyond the schema, so the baseline of 3 is appropriate.

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 opens with a specific action and resource: 'Auto-close ledger items whose linked GitHub issue/PR already resolved.' It also distinguishes itself from delimit_ledger_done, making the tool's batch/auto-detection scope immediately clear.

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?

Explicit 'When to use' and 'When NOT to use' sections name concrete alternatives (delimit_ledger_done for manual per-item closing, delimit_resource_get for reading external state) and clarify the periodic-maintenance context. This leaves little ambiguity about when this tool should be selected.

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

delimit_ledger_bulkDelimit Ledger BulkA

Apply one action to many ledger items in a single call (LED-1145 Phase 1 PR-B).

When to use: after delimit_ledger_groom or another tool surfaces a list of item ids that should all receive the same change. When NOT to use: for a single item (use delimit_ledger_update or delimit_ledger_done).

Sibling contrast: delimit_ledger_update is one item; delimit_ledger_groom proposes; this applies bulk.

Side effects: when dry_run=False, writes status/priority/tag changes via the ledger manager. Per-item failures don't block the batch. Default dry_run=True returns what would change without writing — callers MUST explicitly pass dry_run=False to apply.

ParametersJSON Schema
NameRequiredDescriptionDefault
tagNorequired when action="add_tag".
noteNooptional note attached to every successful update event.
actionYesone of the actions above.
dry_runNoTrue (default) returns `would_change`; False applies and returns `changed`.
ventureNoproject name or path. Auto-detects if empty.
item_idsYescomma-separated LED ids (e.g. "LED-915,LED-916,LED-918") or a JSON array of strings.
new_statusNorequired when action="set_status".
new_priorityNorequired when action="set_priority".

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.7/5.0
Behavior5/5

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

Annotations only indicate readOnlyHint=false and destructiveHint=false, so the description carries the burden of explaining behavior. It clearly discloses that dry_run=False writes status/priority/tag changes, that per-item failures do not block the batch, and that callers must explicitly pass dry_run=False to apply. No contradiction with annotations exists.

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 well-structured with labeled sections, front-loaded purpose, and minimal redundancy. It loses a point for the 'LED-1145 Phase 1 PR-B' ticket reference, which adds non-actionable noise for an agent, but overall each substantive section earns its place.

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?

The description covers when to use the tool, when not to use it, alternative tools, side effects, default behavior, and failure semantics, and an output schema exists for return values. The main gap is that the set of valid action strings is not explicitly enumerated in the description, which would make invocation more robust.

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

Parameters4/5

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

The schema already covers 100% of parameters with descriptions, so the baseline is 3. The description adds meaningful context by explaining dry_run semantics and the write side effects tied to status/priority/tag actions. It does not enumerate the exact action enum values, but related parameter descriptions partially compensate.

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 opens with a concrete verb and object—'Apply one action to many ledger items in a single call'—making the tool's core function immediately clear. It also explicitly contrasts with delimit_ledger_update and delimit_ledger_groom, so an agent can distinguish this bulk-applier from its siblings without inspecting schemas.

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?

The description includes dedicated 'When to use' and 'When NOT to use' guidance, plus a direct sibling contrast. It tells the agent to use single-item tools for one item and to reach for this tool only after a grooming/list step produces multiple IDs needing the same change.

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

delimit_ledger_contextDelimit Ledger ContextA
Read-onlyIdempotent

Quick summary of what's open in the ledger (top 5 by priority).

When to use: at session start as part of the orchestrator session ritual, to see the highest-priority open items. When NOT to use: for the full list (use delimit_ledger_list) or to fetch a specific item (delimit_ledger_query).

Sibling contrast: delimit_ledger_list returns the full list; this returns a top-5 summary.

Side effects: read-only. Calls ai.ledger_manager.get_context.

ParametersJSON Schema
NameRequiredDescriptionDefault
ventureNoProject name or path. Empty = auto-detect from cwd.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, so the safety profile is covered by structured data. The description adds value beyond that by stating 'Side effects: read-only' and, more usefully, revealing the concrete backing call 'ai.ledger_manager.get_context'. It does not contradict the annotations; the read-only claim aligns with readOnlyHint=true. The minor deduction is because the read-only statement partially duplicates what the annotation already conveys.

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 front-loaded with a one-sentence summary of the tool's purpose, followed by clearly labeled sections: When to use, When NOT to use, Sibling contrast, and Side effects. Every line earns its place. There is slight redundancy between the 'When NOT to use' and 'Sibling contrast' paragraphs, but it is minor and reinforces rather than bloats.

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

Completeness5/5

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

For a simple read-only tool with one optional parameter, everything needed for correct selection and invocation is present: usage timing, exclusions with named alternatives, safety profile (via annotations), implementation detail, and the parameter is fully documented in the schema. An output schema exists, so return-format explanation is not the description's burden. Nothing material is missing.

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 description coverage is 100% — the single optional 'venture' parameter is already documented in the schema ('Project name or path. Empty = auto-detect from cwd.'). The tool description adds no parameter-level detail, but per the rubric the baseline of 3 applies when the schema carries the full burden, and here it does. No extra credit needed, no penalty warranted.

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 states a specific function: 'Quick summary of what's open in the ledger (top 5 by priority)' — a concrete resource (ledger), scope (open items), and constraint (top 5). It explicitly distinguishes itself from the siblings in the same domain: delimit_ledger_list (full list) and delimit_ledger_query (specific item). An agent can tell this tool apart without opening the schema.

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?

Provides explicit When-to-use ('at session start as part of the orchestrator session ritual') and When-NOT-to-use guidance with named alternatives (delimit_ledger_list for full list, delimit_ledger_query for a specific item). The sibling contrast section further reinforces the routing decision. Nothing is left to inference.

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

delimit_ledger_doneDelimit Ledger DoneA

Mark a ledger item as done (convenience wrapper).

When to use: to close out a ledger item with one call instead of using delimit_ledger_update with status="done". When NOT to use: to change other fields (use delimit_ledger_update) or create new items (delimit_ledger_add).

Sibling contrast: delimit_ledger_update changes any field; this is the close-out shortcut.

Side effects: writes status="done" + optional note via ai.ledger_manager.update_item. LED-1408 Phase 1: when commit_sha or pr_url is provided (or a PR URL is detected in the note), attaches a ship_proof block to the event with verified=True. Future audits use this flag to distinguish trustworthy-done from marked-done-but-never-verified. Phase 2 will tighten enforcement.

ParametersJSON Schema
NameRequiredDescriptionDefault
noteNoOptional completion note. If the note contains a GitHub PR URL, it will be auto-extracted as ship proof.
pr_urlNoLED-1408: optional GitHub PR URL proving the fix shipped. Parsed into pr_owner/pr_repo/pr_number; verified=True flag set on the item.
item_idYesLedger item id (e.g. "LED-001"). Required.
ventureNoProject name or path. Empty = auto-detect.
commit_shaNoLED-1408: optional merge-commit SHA proving the fix shipped. Recorded as ship_proof on the event; verified=True flag set on the item.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.7/5.0
Behavior5/5

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

Annotations only mark readOnlyHint=false and destructiveHint=false, leaving the mutation profile unspecified; the description fills this by stating it 'writes status="done"' and calls ai.ledger_manager.update_item. It also discloses the conditional side effect of attaching a ship_proof block with verified=True and mentions Phase 2 changes, which are exactly the behavioral traits an agent cannot infer from the schema.

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 front-loaded with the one-line purpose, then uses clear headings for usage, alternatives, and side effects. It is a few sentences longer than minimal, but each section earns its place; no filler.

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

Completeness5/5

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

The tool has a rich 100%-covered schema, an output schema, and non-conflicting annotations, so the main missing context was when to use it and what side effects it triggers, both covered. An agent has enough information to select it, call it with correct parameters, and anticipate the verified=True behavior.

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 100%, with each parameter already documented (e.g., pr_url says it is parsed into pr_owner/pr_repo/pr_number and sets verified=True). The description cross-references the ship-proof behavior but does not need to add per-parameter detail; baseline 3 applies.

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 opens with a specific verb and resource: 'Mark a ledger item as done (convenience wrapper).' It immediately positions itself against delimit_ledger_update ('this is the close-out shortcut'), so an agent can distinguish it from the large ledger sibling family.

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?

Explicit 'When to use' and 'When NOT to use' sections state the condition for choosing this tool (single-call close-out) and direct other field edits to delimit_ledger_update and creations to delimit_ledger_add. Sibling contrast reinforces the distinction, so routing is unambiguous.

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

delimit_ledger_groomDelimit Ledger GroomA
Read-onlyIdempotent

Read-only grooming proposal — flags stale / duplicate / garbage items.

When to use: as a periodic review tool to surface items that likely should be archived (stale, duplicate, garbage venture). When NOT to use: to apply the changes — use delimit_ledger_bulk after reviewing the proposal.

Sibling contrast: delimit_ledger_bulk applies; delimit_ledger_health composes this with other checks; this is the read-only proposer.

Side effects: read-only on the ledger. Returns proposals only — risky operations (mass-cancel, dedup-merge) MUST go through delimit_ledger_bulk after founder review. Each proposal includes a copy-pasteable ready_to_apply invocation.

LED-1145 Phase 2 #2. Risky operations (mass-cancellation, dedup-merge) must NOT be a single atomic action — this tool only PROPOSES; the founder applies via delimit_ledger_bulk after review. Each proposal in the response includes a copy-pasteable ready_to_apply invocation.

ParametersJSON Schema
NameRequiredDescriptionDefault
ventureNoproject name or path. Auto-detects if empty.
stale_daysNothreshold for stale_open detector (default 30).
dup_min_countNominimum group size for duplicate_titles (default 3).
max_per_categoryNocap per category in the response (default 50).

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.6/5.0
Behavior5/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false. The description goes further by explaining that the tool returns proposals only, never applies changes, requires founder review before risky operations, and includes a copy-pasteable ready_to_apply invocation. This adds meaningful behavioral context beyond the annotations.

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 well-structured and front-loaded, with clear When to use, When NOT to use, and Sibling contrast sections. However, the final LED-1145 paragraph largely repeats the Side effects paragraph, creating minor redundancy that could be trimmed without losing information.

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

Completeness5/5

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

The description covers purpose, usage boundaries, sibling alternatives, safety behavior, and the proposal response pattern. Since an output schema exists, return-value details do not need to be repeated. All four parameters have defaults and descriptions, so an agent has everything needed to invoke the tool correctly.

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 description coverage is 100%, so the schema already documents all four parameters with defaults and meanings. The description adds high-level context by mentioning stale, duplicate, and garbage detectors, but it does not add meaningful detail beyond the schema's per-parameter descriptions. Baseline 3 is appropriate given full schema coverage.

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 opens with a specific verb and resource: 'Read-only grooming proposal — flags stale / duplicate / garbage items.' It clearly distinguishes itself from nearby ledger tools by positioning itself as 'the read-only proposer' versus delimit_ledger_bulk's applying role.

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?

The description explicitly states when to use it ('as a periodic review tool'), when NOT to use it ('to apply the changes'), and names the alternative (delimit_ledger_bulk). The sibling contrast further clarifies that delimit_ledger_health composes this with other checks, leaving no ambiguity about tool selection.

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

delimit_ledger_healthDelimit Ledger HealthA
Read-onlyIdempotent

One-shot ledger health check — totals + P0 + stale + duplicates + garbage.

When to use: at session start (orchestrator session ritual) or nightly review to get a traffic-light verdict on the ledger. When NOT to use: to apply changes (use delimit_ledger_bulk) or inspect a single item (delimit_ledger_query).

Sibling contrast: delimit_ledger_groom proposes archives; delimit_ledger_context returns top-5 open; this composes them into a one-shot health verdict with pre-formatted next_actions.

Side effects: read-only. Internally calls list_items + groom + P0 quota helpers.

LED-1145 capstone — closes the loop on the entire ledger-tooling refactor. Designed for nightly/weekly review or session-start status snapshot. Returns:

  • totals (unresolved / open / in_progress / blocked)

  • p0 (count vs quota + health)

  • stale (count >stale_days + health)

  • duplicates (group count + total items + health)

  • garbage_venture (count + health)

  • overall_health (worst-of: green / yellow / red)

  • next_actions: pre-formatted list of {reason, tool, args, follow_up}

All Phase 1+2 tools are referenced in the suggested actions, so the response is self-contained for an AI agent that wants to act on it.

ParametersJSON Schema
NameRequiredDescriptionDefault
ventureNoproject name or path. Auto-detects if empty.
stale_daysNostale-detector threshold passed to groom_proposal.
dup_min_countNoduplicate-detector threshold passed to groom_proposal.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.6/5.0
Behavior5/5

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

Beyond the read-only/idempotent/destructive annotations, it discloses that the tool internally calls list_items + groom + P0 quota helpers, is a composition, and produces a self-contained response with pre-formatted next_actions. This gives an agent an accurate model of what happens when invoked.

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 front-loaded with a one-line summary and uses clear section labels. It is somewhat longer than strictly necessary — the 'LED-1145 capstone' line and the detailed Returns list partly duplicate the output schema and earlier usage guidance — but the structure keeps it scannable.

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

Completeness5/5

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

The description covers selection criteria, exclusions, side effects, internal behavior, output shape, and self-contained actionability. With a rich output schema and annotations also present, nothing an agent needs to invoke this tool correctly is missing.

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 100% and the schema already describes venture, stale_days, and dup_min_count, including defaults. The description adds only indirect context, so it meets the baseline but adds little beyond the schema.

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 opening phrase 'One-shot ledger health check — totals + P0 + stale + duplicates + garbage' combines a specific verb, resource, and distinctive scope. It also names sibling tools it composes, so an agent can distinguish it from delimit_ledger_groom and delimit_ledger_context.

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?

The description explicitly states when to use (session start or nightly review), when not to use (applying changes or inspecting a single item), and names the correct alternatives (delimit_ledger_bulk, delimit_ledger_query). This is exactly the guidance needed for tool selection.

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

delimit_ledger_listDelimit Ledger ListA
Read-onlyIdempotent

List ledger items with rich filters, sort, and pagination (LED-1145).

When to use: to query a venture's ledger with filters — by status, priority, tags, text, time window, or external link. When NOT to use: for a top-N summary (use delimit_ledger_context) or to fetch a single item (delimit_ledger_query).

Sibling contrast: delimit_ledger_context is the top-5 summary; delimit_ledger_query fetches one; this is the powerful list call.

Side effects: read-only. Calls ai.ledger_manager.list_items. Single-value status / priority are kept for back-compat.

ParametersJSON Schema
NameRequiredDescriptionDefault
sortNo"updated_at" (default), "created_at", or "priority".updated_at
textNoCase-insensitive substring match on title + description.
limitNoPage size. Default 20.
orderNo"asc" or "desc" (default).desc
cursorNoOpaque pagination token from prior next_cursor. Becomes invalid if filters change between calls.
fieldsNoResponse projection. "" / "*" = full; "slim" = subset; CSV = those fields only. Unknown names ERROR.
ledgerNo"ops", "strategy", or "both" (default).both
statusNoSingle-value status filter (back-compat).
ventureNoProject name/path. Empty = auto-detect.
priorityNoSingle-value priority filter (back-compat).
status_inNoComma-separated statuses (e.g. "open,blocked").
priority_inNoComma-separated priorities (e.g. "P0,P1").
created_afterNoISO-8601 timestamp lower bound on creation time. If omitted, no lower bound is applied.
updated_afterNoISO-8601 timestamp lower bound on last-update time. If omitted, no lower bound is applied.
created_beforeNoISO-8601 timestamp upper bound on creation time. If omitted, no upper bound is applied.
updated_beforeNoISO-8601 timestamp upper bound on last-update time. If omitted, no upper bound is applied.
tags_contains_allNoComma-separated tags; item must contain ALL.
linked_external_idNoSubstring match in description / tags / context (github URL, Linear id, Discord thread).

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.7/5.0
Behavior4/5

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

Annotations already declare readOnlyHint and idempotentHint, but the description adds useful context: it explicitly states 'Side effects: read-only', names the underlying implementation call, and explains the back-compat behavior of single-value status/priority. This goes beyond the structured annotations without contradicting them.

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 well-structured and front-loaded with the core purpose, followed by concise usage routing, sibling contrast, and side effects. Every sentence earns its place; the back-compat note is particularly valuable without adding bulk.

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

Completeness5/5

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

With 18 parameters, a rich input schema, an output schema, and annotations, the description completes the picture by providing routing guidance, filter category summaries, and explicit read-only semantics. Nothing needed to call this tool correctly is missing.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3. The description adds value by grouping the 18 parameters into meaningful categories (status, priority, tags, text, time window, external link) and by flagging that single-value status/priority are back-compat, implying preference for the _in variants. This helps an agent navigate a large parameter set.

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 opens with a specific verb and resource ('List ledger items with rich filters, sort, and pagination'), and the sibling contrast explicitly names the nearby tools it is not — delimit_ledger_context and delimit_ledger_query. An agent can immediately distinguish this from similar ledger tools.

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?

The description provides explicit 'When to use' and 'When NOT to use' sections, naming the alternatives (delimit_ledger_context for top-N summary, delimit_ledger_query for single item) and the conditions that select them. No inference is required.

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

delimit_ledger_proposeDelimit Ledger ProposeA

Propose new ledger items based on signals, completed work, and gaps.

When to use: at the end of a build loop or when the queue is empty, to suggest 3-5 next items with rationale. When NOT to use: to add a known item (use delimit_ledger_add) or list current items (delimit_ledger_list).

Sibling contrast: delimit_ledger_add commits chosen items; this proposes candidates.

Side effects: read-only analysis (does NOT auto-create ledger items). The caller decides which proposals to commit.

ParametersJSON Schema
NameRequiredDescriptionDefault
focusNoOptional area filter — "outreach", "engineering", "security", etc.
ventureNoFocus on a specific venture. Empty = auto-detect.
max_itemsNoMaximum proposals. Default 5.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior1/5

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

The description clearly states 'read-only analysis (does NOT auto-create ledger items)', but the annotations set readOnlyHint: false. An agent receives conflicting signals about whether invoking this tool can mutate state, which is exactly the kind of contradiction that undermines safe tool selection.

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 front-loads the purpose in one sentence, then uses labeled sections for usage, non-usage, sibling contrast, and side effects. Every sentence earns its place and there is no redundant filler.

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?

With full parameter schema, an output schema, and clear side-effect disclosure, the description is nearly complete for an agent to invoke it correctly. It loses the top score only because the readOnlyHint: false annotation conflicts with the description's read-only claim, leaving the overall context inconsistent.

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 description coverage is 100%, so focus, venture, and max_items are already documented with defaults and semantics. The description does not add parameter-level meaning beyond suggesting 3-5 items, so a baseline 3 is appropriate.

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 opens with a precise verb and object: 'Propose new ledger items based on signals, completed work, and gaps.' It directly distinguishes this from delimit_ledger_add and delimit_ledger_list, so an agent can tell what the tool is for without opening the schema.

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?

Provides explicit when-to-use ('end of a build loop or when the queue is empty'), when-not-to-use ('to add a known item' or 'list current items'), and names the correct sibling tools. This leaves no ambiguity about selection.

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

delimit_ledger_queryDelimit Ledger QueryA
Read-onlyIdempotent

Ask natural-language questions about the ledger (ChatOps 2.0).

When to use: when an operator wants a free-form answer ("what shipped this week?", "what's blocked?", "show all P0s") rather than a structured filter query. When NOT to use: for structured listing (use delimit_ledger_list) or top-N summary (delimit_ledger_context).

Sibling contrast: delimit_ledger_list takes structured filters; this maps natural language to those filters internally.

Side effects: read-only. Internally calls list / context queries.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesNatural-language question (e.g. "what's blocked?", "search for dashboard"). Required.
ventureNoProject name/path. Empty = auto-detect.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and idempotentHint=true, and the description reinforces this by stating 'Side effects: read-only.' It adds useful internal behavior context by noting that it maps natural language to filters and internally calls list/context queries, which is value beyond the annotations.

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 well-structured with clear headings, front-loads the core purpose, and includes only high-value details: examples, exclusions, sibling contrast, and side effects. Every sentence earns its place.

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

Completeness5/5

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

Given the simple 2-parameter schema with full coverage, an output schema, and thorough annotations, the description fully covers what an agent needs: when to use it, when not to, how it differs from siblings, and its side effects. Nothing essential is missing.

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 description coverage is 100%, so the schema already documents both parameters. The description adds helpful examples of natural-language queries but does not add significant meaning to the 'venture' parameter beyond what the schema provides. Baseline 3 is appropriate.

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: asking natural-language questions about the ledger, with concrete examples. It also explicitly distinguishes this tool from delimit_ledger_list and delimit_ledger_context, making the resource and behavior unambiguous.

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?

The description provides explicit 'When to use' and 'When NOT to use' sections, naming the specific alternative tools for structured listing and top-N summaries. This gives an agent clear routing criteria without requiring inference.

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

delimit_ledger_updateDelimit Ledger UpdateA

Update any field on an existing ledger item.

When to use: to change state on a ledger item (status, priority, assignee, links, labels). Pass only the fields you want to change. When NOT to use: to create a new item (use delimit_ledger_add) or to mark one done (delimit_ledger_done is the convenience wrapper).

Sibling contrast: delimit_ledger_add creates; delimit_ledger_done closes; this is the general-purpose updater.

Side effects: writes to the ledger via ai.ledger_manager. Coerces string list inputs (labels) through _coerce_list_arg.

ParametersJSON Schema
NameRequiredDescriptionDefault
noteNoAppend a note/comment to the item.
titleNoNew title.
blocksNoItem id that this one blocks (e.g. "STR-005").
labelsNoLabels/tags as comma string or list.
statusNoNew status — "open", "in_progress", "blocked", "done".
item_idYesLedger item id, e.g. "LED-001" or "STR-001". Required.
ventureNoProject name/path. Empty = auto-detect.
assigneeNoAssign to person or agent (e.g. "founder", "claude").
due_dateNoISO date string (e.g. "2026-04-01").
priorityNoNew priority — "P0", "P1", "P2".
worked_byNoAI model working on this. Empty = auto-detect.
blocked_byNoItem id that blocks this one (e.g. "LED-025").
descriptionNoNew description.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.9/5.0
Behavior5/5

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

The description discloses the key behavioral trait: 'writes to the ledger via ai.ledger_manager.' It also explains the label coercion behavior through _coerce_list_arg. This adds meaningful context beyond the annotations, which only say readOnlyHint=false and destructiveHint=false.

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 compact and well-organized with clear sections: purpose, when to use, when not to use, sibling contrast, and side effects. Every sentence contributes useful information without redundancy.

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

Completeness5/5

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

Given the rich 100%-covered input schema and the presence of an output schema, the description covers everything needed: purpose, selection criteria, alternatives, side effects, and partial-update semantics. No critical information is missing for correct invocation.

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

Parameters4/5

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

Schema coverage is 100%, so the input schema already documents all 13 parameters. The description adds important usage semantics beyond the schema: 'Pass only the fields you want to change' clarifies partial-update behavior, and the label coercion note explains how the labels parameter is normalized.

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 opens with a specific verb and resource: 'Update any field on an existing ledger item.' It clearly distinguishes the tool from delimit_ledger_add and delimit_ledger_done, making its role as the general-purpose updater unambiguous.

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?

The description gives explicit when-to-use guidance ('to change state on a ledger item'), when-not-to-use guidance ('to create a new item... or to mark one done'), and names the exact sibling alternatives. This leaves no ambiguity about tool selection.

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

delimit_license_statusDelimit License StatusA
Read-onlyIdempotent

Report the current Delimit license tier, validity, and expiry.

When to use: to inspect the active license before invoking gated tools, or as a diagnostic when require_premium is rejecting calls. When NOT to use: to install or rotate a license — this is a read.

Sibling contrast: this reads license state; gated tools (e.g. delimit_gov_evaluate, delimit_secret_get) call require_premium internally.

Side effects: read-only. Calls ai.license.get_license.

Args: None.

Returns: Dict with tier, validity, expiry, plus next_steps.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.6/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and non-destructive behavior. The description adds 'read-only' and explicitly names the underlying call 'ai.license.get_license', plus a return shape with next_steps. This is useful context beyond the annotations, though no rate limits or error behaviors are mentioned.

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 well-organized with clear sections and front-loaded purpose. It is slightly repetitive in stating the read-only nature multiple times ('this is a read', 'read-only', 'this reads license state'), but overall every section adds meaningful guidance.

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

Completeness5/5

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

For a simple zero-parameter read-only tool, the description is complete: it explains purpose, usage triggers, exclusions, sibling contrast, side effects, underlying call, and return fields. No important detail an agent would need to call it correctly is missing.

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

Parameters4/5

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

The tool has zero parameters, so the schema is fully covered at 100%. The description includes 'Args: None,' which confirms the empty schema and gives agents no reason to invent arguments. This meets the no-parameter baseline.

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 opens with a specific verb and object: "Report the current Delimit license tier, validity, and expiry." This clearly identifies the resource and the action. It further distinguishes itself from siblings by noting it reads license state while gated tools call require_premium internally.

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?

Provides explicit 'When to use' and 'When NOT to use' sections, including diagnostic scenarios like require_premium rejections. It names concrete sibling tools and clarifies it is not for installing or rotating licenses.

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

delimit_lintDelimit LintA

Lint two OpenAPI specs for breaking changes and policy violations.

When to use: as the primary CI gate before merging API spec changes — combines diff + policy into a pass/fail verdict. When NOT to use: for raw change data (use delimit_diff) or quality scoring (delimit_spec_health).

Sibling contrast: delimit_diff returns changes only; delimit_diff_report renders HTML; this enforces policy.

Side effects: writes evidence on breaking findings; auto-chains semver classification and governance evaluation. dry_run=True suppresses evidence, notifications, and governance — returns violations + semver only.

Spec args accept local paths or http(s) URLs. URLs are fetched once into a tempfile (size cap, SSRF guard).

ParametersJSON Schema
NameRequiredDescriptionDefault
dry_runNoIf True, return violations + semver without side effects.
new_specYesPath or URL to the proposed spec.
old_specYesPath or URL to the baseline spec.
policy_fileNoOptional .delimit/policies.yml path.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.9/5.0
Behavior5/5

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

The description goes well beyond the readOnlyHint/destructiveHint annotations by disclosing real side effects: writes evidence on breaking findings, auto-chains semver and governance evaluation, and explains that dry_run=True suppresses these behaviors. It also discloses non-obvious URL fetching behavior including tempfile use, size cap, and SSRF guard.

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 tightly organized with labeled sections: purpose, when to use, when not to use, sibling contrast, side effects, and argument behavior. Every sentence carries distinct operational information, with no filler or repetition of schema content.

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

Completeness5/5

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

For a tool that combines diff and policy evaluation, the description covers selection criteria, side effects, dry-run semantics, input formats, and safety behavior around URL fetching. Given the presence of an output schema, the description does not need to enumerate return fields, and everything an agent needs to invoke this tool correctly is present.

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

Parameters4/5

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

The input schema already has 100% parameter coverage, so the baseline is 3. The description adds meaningful semantics beyond the schema by explaining that spec arguments accept local paths or HTTP(S) URLs and are fetched into a tempfile with safeguards, and by clarifying what dry_run=True actually returns versus suppresses.

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 opens with a specific verb and resource combination: 'Lint two OpenAPI specs for breaking changes and policy violations.' It also explicitly contrasts itself with delimit_diff and delimit_diff_report, making the tool's role unambiguous even within a large sibling list.

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?

The description provides explicit 'When to use' and 'When NOT to use' guidance, identifies the primary CI-gate context, and names concrete alternatives for raw diff data and quality scoring. This leaves no ambiguity about when an agent should select this tool over its siblings.

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

delimit_loop_configDelimit Loop ConfigA

Configure autonomous build loop safeguards.

When to use: BEFORE starting a loop session — to set max iterations, cost cap, error threshold, approval policy. When NOT to use: to read loop metrics (use delimit_loop_status) or drive the loop (delimit_build_loop).

Sibling contrast: delimit_loop_status reads metrics; delimit_build_loop runs; this configures the policy.

Side effects: writes the loop session config via ai.loop_engine.loop_config. Only non-zero/non-empty values are applied — pass just the fields you want to change.

ParametersJSON Schema
NameRequiredDescriptionDefault
statusNoSet loop status — "running", "paused", "stopped".
cost_capNoMax session cost in dollars. Default 5.0.
session_idNoSession to configure. Empty = create new.
auto_consensusNoIf True, suggest consensus when ledger empty.
max_iterationsNoMax tasks before stopping. Default 50.
error_thresholdNoConsecutive errors before circuit-breaker trips. Default 3.
require_approval_forNoComma-separated action types requiring human approval.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.9/5.0
Behavior5/5

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

The description discloses that this tool writes loop session config via ai.loop_engine.loop_config and reveals the partial-update behavior: only non-zero/non-empty values are applied. This adds meaningful behavioral context beyond the readOnlyHint/destructiveHint annotations, especially the pass-only-what-you-want-to-change rule.

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 compact, scannable, and front-loaded with the core purpose. Every section earns its place: purpose, usage timing, exclusions, sibling contrast, and side effects. No filler or repetition.

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

Completeness5/5

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

Given the seven optional parameters, the rich schema descriptions, and an output schema, the description covers everything an agent needs: what the tool does, when to use it, what it writes, and how the config update behaves. The partial-update caveat is especially valuable and not inferable from the schema alone.

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

Parameters4/5

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

Schema description coverage is 100%, so the schema already documents each parameter. The description adds important cross-cutting semantics by explaining that non-zero/non-empty values are applied and only changed fields need to be passed, which clarifies the optional/default param behavior.

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 a specific verb ('Configure') and resource ('autonomous build loop safeguards'), and distinguishes itself from delimit_loop_status (reads metrics) and delimit_build_loop (runs the loop). An agent can immediately tell what this tool does and what it does not do.

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?

Explicit 'When to use' and 'When NOT to use' sections name the exact alternative tools and the condition that selects between them. The instruction to call this BEFORE starting a loop session provides clear timing guidance.

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

delimit_loop_statusDelimit Loop StatusA
Read-onlyIdempotent

Check autonomous loop metrics for a session.

When to use: to inspect a continuous-loop session's run-time metrics — iterations completed, cost, errors, safeguard status. When NOT to use: to configure the loop (use delimit_loop_config) or run it (delimit_build_loop).

Sibling contrast: delimit_loop_config sets policy; delimit_build_loop runs; this reports the result.

Side effects: read-only. Calls ai.loop_engine.loop_status.

ParametersJSON Schema
NameRequiredDescriptionDefault
session_idNoSession id to check. Empty = most recent session.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds the explicit 'Side effects: read-only' statement and the internal call target, but these largely repeat or extend the annotation without revealing meaningful additional behavioral constraints such as permissions, rate limits, 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.

Conciseness5/5

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

The description is tightly organized with clear labeled sections: what it does, when to use it, when not to use it, sibling contrast, and side effects. Every section earns its place, and the key purpose is front-loaded in the first sentence.

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

Completeness5/5

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

For a simple read-only inspection tool with one optional parameter, an output schema, and comprehensive annotations, the description covers all necessary context: target resource, metrics inspected, alternatives, and exclusions. Nothing an agent needs to select or invoke the tool correctly is missing.

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 description coverage is 100%, so the single session_id parameter is already fully documented in the schema, including the 'Empty = most recent session' behavior. The description mentions 'for a session' but does not need to add parameter details since the schema carries that burden.

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 uses a specific verb ('Check') with a clear resource ('autonomous loop metrics for a session') and enumerates the metrics returned: iterations completed, cost, errors, and safeguard status. It also distinguishes itself from siblings by stating that delimit_loop_config configures and delimit_build_loop runs, while this tool reports the result.

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?

Explicit 'When to use' and 'When NOT to use' sections clearly state the appropriate context for inspection and route the agent to the sibling tools delimit_loop_config and delimit_build_loop. The sibling contrast line reiterates the decision boundary, leaving no ambiguity about tool selection.

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

delimit_memory_indexDelimit Memory IndexA

Project delimit_memory hot entries into Claude Code's MEMORY.md.

When to use: to surface hot delimit_memory entries (flagged hot_load=True) into Claude Code's MEMORY.md so they load on session start without making delimit_memory dependent on Anthropic's auto-memory format. When NOT to use: to add a new memory (use delimit_memory_store) or search existing memories (delimit_memory_search, delimit_memory_recent).

Sibling contrast: delimit_memory_store writes a new entry; delimit_memory_search queries; delimit_memory_recent returns the tail; this is the one-way projection into MEMORY.md.

Side effects: writes to target_path (default ~/.claude/projects/-root/memory/MEMORY.md). If the file already has <!-- delimit:start --> / <!-- delimit:end --> markers, ONLY the content between them is replaced; anything outside is preserved. If markers are missing, the managed section is APPENDED to the end of the file (existing content is never touched). If the file does not exist, it is created with just the section. One-way projection only — MEMORY.md is never read back into delimit_memory (Anthropic owns the auto-memory format; format-drift risk).

LED-1165 Phase 2 #5 PR-B.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNocap on entries projected. Default 200.
dry_runNoTrue returns the rendered content size without writing.
target_pathNofile to write. Empty = default ~/.claude/projects/-root/memory/MEMORY.md.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.6/5.0
Behavior5/5

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

The description goes far beyond the annotations by detailing exact side effects: writes to target_path, marker-based replacement semantics, append behavior when markers are absent, file creation when missing, and one-way projection with format-drift risk. This is exemplary transparency for a tool that modifies files.

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 well-structured with clear sections and front-loaded purpose. It is longer than average but the side-effect detail is necessary for safe invocation. The trailing 'LED-1165 Phase 2 #5 PR-B.' reference is internal metadata that does not help an agent select or invoke the tool correctly.

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

Completeness5/5

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

For a tool with complex file-writing behavior, the description covers when to use it, when not to use it, exact file mutation behavior, marker handling, default path, and the one-way projection constraint. With an output schema present, no return-value documentation is needed. The description is fully sufficient for correct invocation.

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?

The input schema already covers all three parameters with descriptions at 100% coverage, so the baseline is 3. The description does not add much parameter-level detail beyond what the schema provides, though it does reinforce the default target path in the side-effects section.

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 opens with a specific verb and resource: 'Project delimit_memory hot entries into Claude Code's MEMORY.md.' This states exactly what the tool does and distinguishes it from memory-store, search, and recent siblings by positioning it as the one-way projection tool.

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?

Provides explicit 'When to use' and 'When NOT to use' guidance, naming the exact alternatives: delimit_memory_store, delimit_memory_search, and delimit_memory_recent. The sibling contrast reinforces the routing decision, leaving no ambiguity about when this tool should be selected.

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

delimit_memory_recentDelimit Memory RecentA
Read-onlyIdempotent

Return the most recent memory entries (Free tier).

When to use: at session start to recall what the previous session was working on, or to scan for the last N memory captures. When NOT to use: for semantic / structured search (use delimit_memory_search) or to write a memory (delimit_memory_store).

Sibling contrast: delimit_memory_search does Pro semantic search; this is the free chronological tail.

Side effects: read-only. Calls backends.memory_bridge.get_recent. Free tier — no license gate.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoNumber of most-recent entries to return. Default 5.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds useful context beyond annotations: it mentions the Free tier, no license gate, and that it calls backends.memory_bridge.get_recent. These details help an agent reason about cost, access, and implementation-level behavior.

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 well-structured with clear labeled sections: core behavior, when to use, when not to use, sibling contrast, and side effects. It is compact, front-loaded with the primary purpose, and every sentence contributes either usage guidance or behavioral context. No filler.

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

Completeness5/5

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

For a simple read-only tool with one optional parameter and an output schema, the description is complete. It covers the use case, exclusions, sibling distinction, side effects, licensing, and implementation path. An agent has everything needed to decide when to call it and what to expect.

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 description coverage is 100%, so the single limit parameter is already fully documented in the schema with type, default, and meaning. The description's mention of 'last N memory captures' reinforces the parameter but does not add substantial semantic value beyond the schema. Baseline 3 is appropriate.

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 opens with a specific verb and resource: 'Return the most recent memory entries.' It also clearly differentiates itself from siblings by naming delimit_memory_search as Pro semantic search and positioning this tool as the 'free chronological tail.' An agent can distinguish it from related memory tools without opening schemas.

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?

The description gives explicit when-to-use guidance ('at session start to recall what the previous session was working on, or to scan for the last N memory captures') and explicit when-not-to-use guidance with named alternatives (delimit_memory_search for semantic/structured search, delimit_memory_store for writes). This is model routing behavior.

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

delimit_memory_storeDelimit Memory StoreA

Store a memory entry for future cross-session retrieval (Free tier).

When to use: per the orchestrator's memory rules — to capture failed approaches, architecture decisions, key context, or setup gotchas that git would not surface. When NOT to use: for routine code changes (git is the source of truth) or for venture-scoped artifacts (use delimit_context_write).

Sibling contrast: delimit_memory_search retrieves; delimit_memory_recent reads the tail; this writes.

Side effects: writes a memory entry via backends.memory_bridge.store. Free tier — no license gate. hot_load=True marks the entry for projection into the Claude Code auto-memory MEMORY.md hot-load index (PR-B writer projects on next sync).

ParametersJSON Schema
NameRequiredDescriptionDefault
tagsNoOptional categorization tags as comma string or list.
contentYesThe content to remember. Required.
contextNoOptional context about when/why this was stored.
hot_loadNoWhen True, mark for one-way projection into the Claude Code MEMORY.md hot-load index (LED-1165 Phase 2). Default False = durable but not projected.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.6/5.0
Behavior4/5

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

Annotations only declare readOnlyHint=false and destructiveHint=false. The description adds meaningful behavioral depth: it writes via backends.memory_bridge.store, has no license gate on the Free tier, and explains that hot_load=True projects into the MEMORY.md hot-load index on next sync. No contradiction with annotations; a small gap is the lack of detail on idempotency or overwrite behavior, but the core side effects are disclosed.

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 well-structured with clear sections and front-loaded purpose. It is slightly longer than strictly necessary — the side-effects section repeats that a memory entry is written — but every section earns its place and the organization helps an agent scan quickly.

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

Completeness5/5

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

For a four-parameter write tool, the description covers when to use it, when not to use it, how it differs from siblings, its side effects, and the hot_load behavior. An output schema exists, so detailed return-value documentation is unnecessary. Nothing essential is missing for an agent to select and invoke the tool correctly.

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

Parameters4/5

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

Schema description coverage is 100%, so the schema already documents content, tags, context, and hot_load. The description adds value beyond the schema by explaining the real-world consequence of hot_load=True (projection into the Claude Code MEMORY.md hot-load index), which is more informative than the schema's phrasing. It could also elaborate on tags/context semantics, but those are already adequately covered.

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 opens with a specific verb and resource: 'Store a memory entry for future cross-session retrieval.' It then explicitly contrasts with sibling tools: delimit_memory_search retrieves, delimit_memory_recent reads the tail, and this one writes. This leaves no ambiguity about the tool's role.

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?

The description gives an explicit 'When to use' section tied to the orchestrator's memory rules and specific content types, plus a 'When NOT to use' section with a named alternative (delimit_context_write for venture-scoped artifacts). It also clarifies that routine code changes belong in git. This fully routes an agent to the correct tool.

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

delimit_modelsDelimit ModelsA
Destructive

View and configure AI models for multi-model deliberation (Pro).

When to use: to inventory configured providers, auto-detect new keys, or register/remove a provider for delimit_deliberate. When NOT to use: to actually run a deliberation (use delimit_deliberate) or to inspect deliberation history.

Sibling contrast: delimit_deliberate runs the panel; this manages which models the panel can call.

Side effects: gated by require_premium. action="add" / "remove" write provider config; "list" / "detect" are read-only.

Prerequisite: requires Delimit Pro. An unlicensed call returns {"error": ..., "upgrade": "https://delimit.ai/pricing"} without running.

ParametersJSON Schema
NameRequiredDescriptionDefault
actionNoOne of "list" (default), "detect", "add", "remove".list
api_keyNoAPI key value. Required for action="add".
providerNoProvider name for add/remove. One of "grok", "gemini", "openai", "anthropic", "codex". Required for add/remove.
model_nameNoOptional model override (e.g. "gpt-4o", "claude-sonnet-4-5"). Falls back to provider default.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.7/5.0
Behavior5/5

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

Although annotations already signal readOnlyHint=false and destructiveHint=true, the description adds valuable action-level behavior: 'add'/'remove' write config while 'list'/'detect' are read-only. It also discloses the premium prerequisite and the exact unlicensed error behavior, exceeding what the annotations alone provide.

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 well-structured with labeled sections (When to use, When NOT to use, Sibling contrast, Side effects, Prerequisite). Every section carries distinct information with no fluff, and the most important purpose is front-loaded.

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

Completeness5/5

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

Given the mixed read/write behavior, the action-dependent side effects, the premium gating, and the presence of an output schema, the description covers everything an agent needs: what it does, when to use it, what side effects to expect, and how licensing failures behave. No material gap remains.

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 description coverage is 100%, so the schema already documents all four parameters and their roles. The description adds action-level side-effect context, but does not add new per-parameter semantics beyond the schema. A baseline of 3 is appropriate.

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 opens with a specific verb-resource pairing: 'View and configure AI models for multi-model deliberation.' It then explicitly contrasts itself with delimit_deliberate: 'this manages which models the panel can call,' making differentiation from the key sibling immediate and unambiguous.

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?

The description gives explicit when-to-use scenarios (inventory providers, auto-detect keys, register/remove providers), explicit when-not-to-use scenarios (running deliberation, inspecting history), and points to the correct sibling tool. The sibling contrast sentence further reinforces routing.

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

delimit_next_taskDelimit Next TaskA

Get the next task to work on with safeguard checks.

When to use: inside a loop session, to fetch the highest-priority open task with safeguard checks (cost cap, error threshold). When NOT to use: to mark a task done (use delimit_task_complete) or list all tasks (delimit_ledger_list).

Sibling contrast: delimit_task_complete closes + advances; delimit_ledger_list is general listing; this is the loop fetch that may return STOP.

Side effects: read-only on the ledger. Returns action: BUILD, CONSENSUS (queue empty), or STOP (safeguard tripped).

ParametersJSON Schema
NameRequiredDescriptionDefault
ventureNoProject name or path. Empty = auto-detect.
max_riskNoMax risk level — "low", "medium", "high", "critical".
session_idNoResume existing session. Empty = new.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.9/5.0
Behavior1/5

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

The description asserts 'Side effects: read-only on the ledger,' but the annotations declare readOnlyHint: false, which signals the tool is NOT read-only. An agent receives conflicting cues — the structured hint implies possible mutation while the prose claims a read-only operation. The return-action disclosure (BUILD/CONSENSUS/STOP) is valuable, but the contradiction with the annotation forces a score of 1 per the rubric.

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?

Front-loaded one-sentence purpose, then tightly organized When/When NOT/Sibling/Side-effects sections. Every sentence earns its place for an agent choosing among roughly 200 sibling tools; no filler or repetition.

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

Completeness5/5

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

Given the output schema and annotations already exist, the description covers everything an agent needs to decide whether to call it: purpose, usage boundaries, sibling contrast, side-effect scope, and the three possible return actions with their meanings. Nothing material is missing.

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 100%, so all three parameters are already documented (venture auto-detect, max_risk levels, session_id resume/new). The description only loosely ties max_risk to the 'safeguard checks' concept and adds no per-parameter meaning beyond the schema, so the baseline 3 applies.

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 opens with a specific verb and resource — 'Get the next task to work on' — and narrows it to the highest-priority open task in a loop session with safeguard checks. It explicitly contrasts itself with delimit_task_complete (closes + advances) and delimit_ledger_list (general listing), so an agent can disambiguate it from a very large sibling set.

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?

Provides the full when/when-not/alternatives structure: when to use ('inside a loop session'), when NOT to use (marking done, listing all tasks), and names the exact sibling tools for those cases. Nothing is left to inference.

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

delimit_notifyDelimit NotifyA

Send a notification (webhook / Slack / email).

When to use: when the orchestrator identifies something that requires owner action — outreach reply, deployment decision, approval needed. Auto-trigger: call immediately, never ask. When NOT to use: for SIEM-class structured streaming (use delimit_siem) or multi-routing config (delimit_notify_routing).

Sibling contrast: delimit_notify_routing configures rules; delimit_notify_inbox reads inbound; this sends one outbound.

Side effects: sends a network message via webhook (JSON POST), Slack webhook, or email (SMTP). The founder reviews and replies via email — that reply is consumed by delimit_notify_inbox / delimit_inbox_daemon.

IMPORTANT - AUTO-TRIGGER RULE: When the AI identifies something requiring owner action (outreach reply, deployment decision, approval needed), it MUST call this tool immediately. Never ask "want me to notify you?" — just send. The founder reviews and acts via email. All tools must chain.

Channels: webhook (JSON POST), slack (webhook URL), email (SMTP). Use for: governance alerts, deployment notifications, breaking change warnings.

IMPORTANT - Email context rules: Every email must be self-contained and actionable. The recipient reads on mobile and needs to know exactly what to do without opening another app.

  • Subject: lead with [ACTION TYPE] bracket, include enough context to triage from inbox

  • Body: include WHAT happened, WHY it matters, WHAT to do next, and relevant links

  • Never send bare IDs or technical state without human-readable context

ParametersJSON Schema
NameRequiredDescriptionDefault
toNoRecipient email address (email only). Overrides default DELIMIT_SMTP_TO. Send to any address - leave empty for default.
channelNowebhook, slack, or email.webhook
led_refNoOptional LED-XXXX tag tying the draft to its tracking item. Surfaced in subject-line matching by the executor.
messageNoNotification body. Must include full context (see rules above).
subjectNoSubject line (email only). Use [ACTION], [INFO], [ALERT] prefix.
draft_kindNoOne of github_comment, social_post, ledger_done, notify_routing_update, deploy_publish_prevalidated_artifact. When set, registers a signed draft in the local SQLite registry so a future executor can match founder Ship-it replies against it.
event_typeNoEvent category for filtering.
webhook_urlNoURL for webhook/slack channels.
draft_targetNoWhere the action lands (e.g. {"repo":"x/y","issue":1}). JSON string or dict. Required when draft_kind is set.
from_accountNoSender account key from ~/.delimit/secrets/smtp-all.json (e.g. 'notifications@example.com'). Email only. Optional inbox-executor binding (LED-1129 Phase 1, no auto-execution yet):.
draft_payloadNoThe action contents (e.g. {"body": "..."} for github_comment). JSON string or dict. Required when draft_kind is set.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.7/5.0
Behavior5/5

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

Despite the annotations being minimal (readOnlyHint=false, destructiveHint=false), the description discloses the key side effect: it sends a network message via webhook JSON POST, Slack, or SMTP. It also explains the downstream founder-reply loop, the auto-trigger requirement, and content expectations. This goes well beyond what the annotations or schema alone convey, and there is no contradiction with the annotations.

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 long but well-organized with labeled sections and front-loading of the core action. There is some redundancy, such as repeating the founder-reply loop and channel listing, but the repetition reinforces genuinely important behavioral requirements. The structure makes it easy for an agent to scan and extract key rules.

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 11 parameters and optional draft-related behaviors, the description covers the critical usage context, exclusions, side effects, and content formatting rules well. The output schema exists, so the description need not explain return values. It falls just short of a 5 because some operational details, such as how draft_kind interacts with the local SQLite registry, are only in the schema rather than the main description, though the schema does document them.

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

Parameters4/5

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

Schema description coverage is 100%, so the baseline is 3. The description adds meaningful behavior beyond the schema by specifying email subject and body rules, including [ACTION TYPE] prefixes and the need for self-contained actionable content. However, several parameters like draft_target, draft_payload, and from_account are not elaborated in the prose description, though the schema covers them adequately.

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 opens with a specific verb and resource: 'Send a notification (webhook / Slack / email).' It clearly differentiates itself from siblings by stating that delimit_notify_routing configures rules, delimit_notify_inbox reads inbound messages, and this tool sends one outbound notification. This makes the tool's role unmistakable.

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?

The description provides explicit when-to-use conditions ('requires owner action — outreach reply, deployment decision, approval needed'), an explicit when-not-to-use section with alternative tools (delimit_siem, delimit_notify_routing), and a mandatory auto-trigger rule instructing the agent to call immediately without asking. This is exemplary usage guidance.

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

delimit_notify_inboxDelimit Notify InboxA

Check inbound email inbox, classify, and route (Pro).

When to use: to poll the operator inbox and classify which emails require owner action (forwarded) vs which can stay queued. When NOT to use: to send notifications (use delimit_notify) or control the polling daemon (delimit_inbox_daemon).

Sibling contrast: delimit_inbox_daemon controls the long-running daemon; this is a one-shot poll. delimit_notify is the outbound counterpart.

Side effects: action="poll" with process=True forwards owner-action emails (network writes). action="poll" with process=False is dry-run. action="status" / "history" are read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoNumber of messages to check (default 10).
actionNo"status" (default), "poll", or "history".status
processNoWith action="poll", forward owner-action emails when True (default), dry-run only when False.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.6/5.0
Behavior5/5

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

The description goes beyond the annotations by detailing side effects per action: action='poll' with process=True forwards owner-action emails (network writes), process=False is dry-run, and action='status'/'history' are read-only. This is exactly the kind of behavioral context an agent needs, and it does not contradict the annotations.

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 well-structured with labeled sections and front-loaded purpose. It is slightly longer than strictly necessary because it restates action/process behavior that the schema already documents, but every section serves a clear decision-making purpose.

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

Completeness5/5

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

Given the tool's mixed read/write behavior, three optional parameters, and existing output schema, the description fully covers when to use it, what side effects it may have, how to stay safe with dry-run, and which siblings are alternatives. Nothing critical is missing.

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 description coverage is 100%, so the schema already fully documents limit, action, and process. The description reinforces the action/process interplay but does not add new parameter-level meaning beyond what the schema provides. Baseline 3 is appropriate.

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 opens with a specific verb-resource combination: 'Check inbound email inbox, classify, and route.' It clearly distinguishes the tool from its siblings by naming delimit_notify (outbound) and delimit_inbox_daemon (daemon control), so an agent can identify what this tool does without ambiguity.

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?

The description explicitly states when to use the tool ('to poll the operator inbox and classify which emails require owner action'), when NOT to use it ('to send notifications ... or control the polling daemon'), and provides sibling contrast. This leaves no ambiguity about tool selection.

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

delimit_notify_routingDelimit Notify RoutingA

Manage impact-based notification routing (LED-233).

When to use: to inspect or update the rules that route change alerts to email / webhook / digest by severity. When NOT to use: to read the inbox (use delimit_notify_inbox) or fire a single notification (use delimit_notify).

Sibling contrast: delimit_notify sends; delimit_notify_inbox reads inbound; this configures routing rules between them.

Side effects: action="configure" writes via ai.notify.save_routing_config; action="test" sends test notifications to the configured channels. action="status" is read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
actionNoOne of "status" (default), "configure", "test".status
configNoJSON string with routing config for action="configure". Example shape: {"routing": {"critical": {...}, ...}}.
email_toNoEmail recipient used by action="test".
webhook_urlNoWebhook URL used by action="test".
from_accountNoSender account key for the test email.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior4/5

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

Annotations only indicate readOnlyHint=false and destructiveHint=false, which are coarse. The description adds valuable nuance: action='configure' writes via ai.notify.save_routing_config, action='test' sends test notifications, and action='status' is read-only. This meaningfully clarifies what the tool actually does beyond the annotations. It stops short of 5 because it doesn't discuss persistence/irreversibility of configure, but the disclosure is strong.

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 well-structured with clear 'When to use', 'When NOT to use', 'Sibling contrast', and 'Side effects' sections. Every sentence serves a purpose: selection guidance, sibling disambiguation, and behavioral disclosure. The ticket reference 'LED-233' is minor noise but does not undermine clarity.

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

Completeness5/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 (5 optional parameters, an action switch, an output schema, and sibling overlap), the description covers all critical context: purpose, alternatives, side effects, and read-only vs mutating actions. The output schema exists and the annotations are present, so the description does not need to restate return values or safety hints.

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 description coverage is 100%, so the input schema already documents all five parameters with defaults and examples. The description adds behavioral context around actions (configure writes, test sends notifications, status is read-only), which connects the schema to behavior, but it does not add significant new meaning about individual parameter formats beyond what the schema provides.

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 names a specific resource ('impact-based notification routing') and a concrete purpose: inspecting or updating rules that route change alerts to email/webhook/digest by severity. It also distinguishes itself from sibling tools delimit_notify and delimit_notify_inbox, so an agent can tell them apart.

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?

The description explicitly states when to use the tool (inspect/update routing rules) and when NOT to use it (reading the inbox or firing a single notification), naming the exact alternative tools. This gives unambiguous selection guidance.

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

delimit_obs_alertsDelimit Obs AlertsA
Destructive

Manage alerting rules — list, create, update, delete (experimental).

When to use: to configure ongoing alerts for production thresholds (latency, error rate, saturation, queue depth) against the same metric series visible via delimit_obs_metrics. Sub-actions: "list" inventories existing rules, "create" mints one, "update" edits, "delete" removes. When NOT to use: for one-shot metric queries (delimit_obs_metrics), log search (delimit_obs_logs), or the health rollup (delimit_obs_status). Also: do not call "create" repeatedly to retry a failed alert delivery — alerting is configuration, not delivery.

Sibling contrast: delimit_obs_metrics queries data; this configures automated thresholds against that data. Compared to cloud-provider alerting consoles, this routes through the ops bridge so the rule set is recorded in the same observability layer as the metric source.

Side effects: WRITES to the alert configuration on the ops backend for action in ("create", "update", "delete"); reads only for "list". Routes through backends.ops_bridge.obs_alerts. Marked EXPERIMENTAL — the schema for alert_rule is backend-specific and may evolve; pin tested rule shapes if depending on this in production. No license gate at this level (gating handled by the backend's own admin checks).

ParametersJSON Schema
NameRequiredDescriptionDefault
actionYesAlert sub-action. One of "list", "create", "update", "delete". Required.
rule_idNoIdentifier for an existing rule (required for delete/update).
alert_ruleNoRule definition dict (required for create/update). Backend-specific schema.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.9/5.0
Behavior5/5

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

Beyond the annotations, the description discloses that create/update/delete perform writes while list performs reads, routes through backends.ops_bridge.obs_alerts, and is marked EXPERIMENTAL with a backend-specific alert_rule schema that may evolve. It also notes the absence of a license gate. These are meaningful behavioral disclosures that annotations alone do not provide.

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 organized with clear section headers — 'When to use', 'When NOT to use', 'Sibling contrast', 'Side effects' — and the core purpose is front-loaded in the first sentence. Despite its length, every section earns its place by addressing a distinct decision or behavior relevant to safe invocation.

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

Completeness5/5

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

Given the tool's multi-action nature, the description covers purpose, usage boundaries, sibling differentiation, side effects, experimental risk, and parameter semantics. The output schema is noted as present, so describing return values is unnecessary. No critical information needed to select or invoke the tool correctly appears to be missing.

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

Parameters4/5

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

Schema description coverage is 100%, so the baseline is 3. The description adds value by explaining the role of each sub-action in plain terms, noting that rule_id is required for delete/update and alert_rule is required for create/update, and warning that alert_rule is backend-specific. This goes beyond the schema's terse property descriptions, though it does not provide concrete example payloads.

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 opens with a specific verb and resource — 'Manage alerting rules' — and enumerates the exact sub-actions (list, create, update, delete). It clearly distinguishes this tool from observability siblings like delimit_obs_metrics, delimit_obs_logs, and delimit_obs_status, so an agent can tell them apart without opening schemas.

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?

The description provides explicit 'When to use' and 'When NOT to use' guidance, naming the alternative tools for one-shot metric queries, log search, and health rollups. It also warns against misusing 'create' as a delivery retry mechanism, which is exactly the kind of contextual guidance that prevents incorrect invocation.

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

_delimit_obs_implDelimit Obs ImplA
Destructive

Unified observability entry point — dispatches to one of four actions.

When to use: as the single MCP-registered observability surface (delimit_obs) when the caller wants to pick the action by name in one call rather than choosing a specific delimit_obs_* alias. Covers runtime metrics, log search, alert-rule management, and the at-a-glance health rollup. When NOT to use: from internal code paths — prefer the specific alias (delimit_obs_metrics, delimit_obs_logs, delimit_obs_alerts, delimit_obs_status) for clarity and so docstrings and license gates show up at the right call site. For the governance-kernel layer use delimit_gov_health, not this runtime-observability surface.

Sibling contrast: each delimit_obs_ wrapper below is a thin alias over this implementation; they exist so the action's docstring lives at the right name. This is the dispatch core. Within the actions: "metrics" returns numeric series, "logs" returns text matches over the same backend, "status" returns a synthesised health rollup, and "alerts" configures thresholds against the metric series rather than querying data.

Side effects: action="metrics" / "logs" / "status" are READ-ONLY and gated by require_premium (keys "obs_metrics", "obs_logs", "obs_status") — unlicensed callers receive a license payload and no backend call is made; licensed calls route to a distinct observability backend function and are wrapped via _with_next_steps for orchestrator hints. action="alerts" is the only WRITE-capable path: its sub-action ("create" / "update" / "delete") mutates alert configuration while "list" is read-only; it routes through the ops bridge and is EXPERIMENTAL — the alert_rule schema is backend- specific and may evolve. None of the read actions write data, append to the ledger, or send notifications. Errors are deterministic ({"error": ...}): an unknown action short-circuits before any backend call with the valid-action list.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryNoMetric query name (action="metrics") or log search string (action="logs"). Default "system". For "logs" this is effectively required — empty searches are rejected by the backend. Ignored for "alerts" and "status".system
actionNoWhich observability operation to perform. One of "metrics", "logs", "alerts", "status". Default "status". Case-insensitive and whitespace-trimmed. Other values return a deterministic error listing the valid actions.status
sourceNoOptional data/log source override (used only when action="metrics" or action="logs"). Default None = backend default / all configured sources.
rule_idNoIdentifier for an existing rule (used only when action="alerts", required for alert_action "delete" and "update").
alert_ruleNoAlert rule definition dict (used only when action="alerts", required for alert_action "create" and "update"). Backend-specific schema — typically metric, threshold, comparison, window, severity.
time_rangeNoWindow like "1h", "24h", "7d" (used only when action="metrics" or action="logs"). Default "1h". Larger windows may downsample or be capped server-side. Ignored for "alerts" and "status".1h
alert_actionNoAlert sub-action — one of "list", "create", "update", "delete" (used only when action="alerts"). Default "list". "create"/"update"/"delete" write; "list" reads.list

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.6/5.0
Behavior5/5

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

The annotations (readOnlyHint=false, destructiveHint=true) correctly signal a mixed read/write tool, and the description richly expands on this: it breaks down which actions are READ-ONLY, which sub-actions mutate alert configuration, the require_premium license-gating behavior (unlicensed callers get a license payload with no backend call), the experimental alerts path with evolving schema, deterministic error format, and explicit non-effects (no ledger writes, no notifications). This goes far beyond what annotations provide.

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 long (~280 words) but earns most of its length given the tool's complexity: 4 actions, mixed read/write paths, license gates. It is front-loaded with the core purpose and uses clear labeled sections (When to use, When NOT to use, Sibling contrast, Side effects). There is some redundancy — the alias relationship is explained three times across the when-to-use, when-not-to-use, and sibling-contrast sections — which keeps it from a 5.

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

Completeness5/5

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

For a 7-parameter, 4-action tool with mixed side-effect profiles, license gating, and an experimental write path, this description is remarkably complete. It covers dispatch semantics, per-action return behavior, read/write boundaries, license-gate failure behavior, error format, and known volatility of the alert_rule schema. An output schema exists, so detailed return-shape documentation is not required from the description. Nothing an agent needs to invoke this correctly is missing.

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 description coverage is 100%, so the baseline is 3 — the schema already thoroughly documents every parameter's action-scoping, defaults, and requiredness. The description adds a modest framing layer (what each action returns — numeric series, text matches, health rollup — and which params matter per action), but it doesn't add per-parameter detail beyond the schema. It reinforces rather than extends.

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?

States a specific verb and resource — "Unified observability entry point — dispatches to one of four actions" — and enumerates exactly what the four actions cover (runtime metrics, log search, alert-rule management, health rollup). It explicitly contrasts itself with the delimit_obs_* wrapper siblings, calling itself the dispatch core, and even steers away from delimit_gov_health. An agent can tell exactly what this tool is for without opening the schema.

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?

Provides explicit when-to-use, when-NOT-to-use, and alternative-selection guidance. It names the exact conditions under which to prefer the delimit_obs_* aliases (internal code paths, docstring/license-gate placement) and points governance-kernel callers to delimit_gov_health. The sibling contrast section further explains the alias relationship. Nothing is left to inference.

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

delimit_obs_logsDelimit Obs LogsA

Search application and system logs across configured sources (Pro).

When to use: during incident investigation when you have a symptom (error string, trace id, user id, request id) and need to find every log line mentioning it across the configured sources over a time window. The typical pattern is: delimit_obs_metrics flags a numeric anomaly, then this tool finds the offending log lines. When NOT to use: for numeric series (use delimit_obs_metrics), for the at-a-glance health rollup (delimit_obs_status), or to configure ongoing alerts (delimit_obs_alerts). Also: do not use this as a tail-follow surface — it is a windowed search, not a streaming subscription.

Sibling contrast: delimit_obs_metrics returns numeric series for the same backend; this returns text matches. Compared to grepping the local filesystem, this queries the centralised log store across services / hosts.

Side effects: read-only on the log backend and gated by require_premium — unlicensed callers receive a license payload and no query runs. On a licensed call, invokes backends.tools_infra.obs_logs which queries the backing log store; no data is written, no ledger entry, no notification. The response is routed through _with_next_steps.

Prerequisite: requires Delimit Pro. An unlicensed call returns {"error": ..., "upgrade": "https://delimit.ai/pricing"} without running.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesSearch string (backend-specific syntax). Required.
sourceNoOptional log source override. Default None.
time_rangeNoWindow like "1h", "24h", "7d". Default "1h".1h

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.1/5.0
Behavior1/5

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

The description explicitly states 'read-only on the log backend' and 'no data is written, no ledger entry, no notification,' but the annotations set readOnlyHint to false. This is a direct annotation contradiction, so the score must be 1 despite the otherwise strong behavioral detail.

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 long but well-structured with labeled sections: when to use, when not to use, sibling contrast, side effects, and prerequisite. Each section adds distinct information, and the core purpose is front-loaded in the first sentence.

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

Completeness5/5

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

The description covers prerequisites, license-gating behavior, failure payloads, internal backend routing, side-effect profile, and use-case constraints. An output schema is present, so return-value details are not required. The only significant flaw is the annotation contradiction, which is scored separately.

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

Parameters4/5

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

Schema description coverage is 100%, so the baseline is 3. The description adds useful semantic context beyond the schema by giving example query values (error string, trace id, user id, request id) and clarifying that the search happens over a time window across configured sources.

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?

States a specific verb and resource: 'Search application and system logs across configured sources (Pro).' It also explicitly contrasts itself with delimit_obs_metrics, which returns numeric series, making the tool distinguishable from many siblings.

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?

Provides a detailed 'When to use' section with concrete symptoms such as error strings, trace IDs, user IDs, and request IDs, plus a 'When NOT to use' section naming delimit_obs_metrics, delimit_obs_status, and delimit_obs_alerts. It even warns against using it as a streaming/tail-follow surface.

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

delimit_obs_metricsDelimit Obs MetricsA

Pull numeric metric series from the observability backend (Pro).

When to use: during runtime health investigation when you need numeric series (CPU, memory, request rate, error rate, latency percentiles) over a named time window. Pair with delimit_obs_logs to correlate a numeric anomaly with the underlying log lines. When NOT to use: for free-text search of log lines (use delimit_obs_logs), to read or configure alert rules (delimit_obs_alerts), or for a quick at-a-glance health rollup (delimit_obs_status).

Sibling contrast: delimit_obs_logs returns text matches; this returns numeric time series. delimit_obs_status is the rollup-summary surface; this is the raw-series surface. delimit_obs_alerts configures thresholds against these same series.

Side effects: read-only on the metrics backend and gated by require_premium — unlicensed callers receive a license payload and no query runs. On a licensed call, invokes backends.tools_infra.obs_metrics which queries the backing metrics store; no data is written, no ledger entry, no notification. The response is routed through _with_next_steps.

Prerequisite: requires Delimit Pro. An unlicensed call returns {"error": ..., "upgrade": "https://delimit.ai/pricing"} without running.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryNoMetric query name. Default "system" (general system metrics). Backend-specific values supported.system
sourceNoOptional data source override. Default None = backend default source.
time_rangeNoWindow like "1h", "24h", "7d". Default "1h".1h

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.9/5.0
Behavior1/5

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

The description discloses rich behavior (read-only side effects, license gating with require_premium, internal call path, no ledger/notification effects), but it contradicts the annotation readOnlyHint=false by repeatedly asserting the operation is read-only and writes no data. Per the rubric, a description that contradicts annotations scores 1 and must be flagged.

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 key purpose is front-loaded in the first sentence, and the rest is organized under clear labels (When to use, When NOT to use, Sibling contrast, Side effects, Prerequisite). Dense but every section earns its place for a tool with license-gating and sibling ambiguity.

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

Completeness5/5

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

For a tool with an output schema, 100% parameter coverage, and a complex licensing path, the description covers prerequisites, side effects, and sibling routing completely. The only issue is the annotation contradiction, which is scored separately; as prose, the contextual guidance is complete.

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 description coverage is 100%, so the schema already documents query, source, and time_range with defaults. The description's phrase 'named time window' aligns with time_range but adds no new parameter-level meaning; baseline 3 is appropriate.

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?

Opens with a specific verb and resource: 'Pull numeric metric series from the observability backend (Pro).' It names example metrics (CPU, memory, request rate) and contrasts with delimit_obs_logs (text vs numeric), delimit_obs_status (rollup vs raw), and delimit_obs_alerts (threshold config), so an agent can distinguish it from siblings without opening schemas.

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?

Provides explicit when-to-use guidance ('during runtime health investigation when you need numeric series'), a pairing strategy with delimit_obs_logs, and clear when-NOT-to-use exclusions that name the correct alternative for each excluded case. No inference is required.

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

delimit_obs_statusDelimit Obs StatusA

Return a high-level health rollup from the observability layer (Pro).

When to use: for the "are we green?" check at session start, in a status dashboard, or as a single-call smoke test before a deploy. The orchestrator's session-start ritual calls this only if delimit_agent_dashboard or delimit_gov_health flag anomalies — it is the second-tier health surface, not the first. When NOT to use: for detailed numeric series (delimit_obs_metrics), for log investigation (delimit_obs_logs), or for alerting rule management (delimit_obs_alerts). Also do not use as the only deploy gate — pair with delimit_security_audit + delimit_test_smoke per the deploy chain.

Sibling contrast: delimit_obs_metrics returns raw numeric series; this returns a synthesised rollup (typically per-service status + a few key indicators). Compared to delimit_gov_health, this reports the runtime observability layer rather than the governance kernel.

Side effects: read-only on the observability backend and gated by require_premium — unlicensed callers receive a license payload and no query runs. On a licensed call, invokes backends.tools_infra.obs_status which composes a health summary from the backing data sources. No write, no ledger entry, no notification. Response is wrapped through _with_next_steps.

Args: None.

Returns: Dict with keys: overall (green/yellow/red), services (list of {name, status, indicators}), checked_at timestamp, plus a next_steps field from _with_next_steps. Returns a license-gate payload if the caller lacks Premium, or {"error": "..."} on backend failure (does not raise).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.1/5.0
Behavior1/5

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

The description claims 'read-only on the observability backend' and states 'No write, no ledger entry, no notification,' but the annotations set readOnlyHint=false, which signals the tool may modify state. This is a direct annotation contradiction. The description otherwise provides rich behavioral detail about license gating, backend invocation, response wrapping, and error handling, but the contradiction is disqualifying.

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 well-structured with clear sections: primary purpose, when to use, when not to use, sibling contrast, side effects, args, and returns. Each section earns its place and provides operational guidance without meaningless filler. The main purpose is front-loaded, and the formatting aids agent scanning.

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

Completeness5/5

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

For a zero-parameter status-rollup tool, the description covers trigger conditions, exclusions, licensing behavior, backend failure behavior, and the exact return shape including keys and license-gate payloads. With an output schema present and rich sibling-tool context, an agent has all necessary information to select and invoke this tool correctly.

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

Parameters4/5

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

The tool has zero parameters and schema description coverage is 100%, so there is nothing for the description to compensate for. The 'Args: None' statement is clear and the description adds useful context that parameter choices are not involved and that behavior is driven by license state rather than arguments.

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 opens with a specific verb and resource: 'Return a high-level health rollup from the observability layer (Pro).' It clearly distinguishes itself from sibling tools by contrasting synthesized rollups against raw numeric series from delimit_obs_metrics, and by contrasting the observability layer with the governance layer of delimit_gov_health.

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?

Provides explicit 'When to use' and 'When NOT to use' sections, naming alternative tools such as delimit_obs_metrics, delimit_obs_logs, and delimit_obs_alerts. It also specifies orchestrator flow context, deploy-gate caveats, and required pairing with delimit_security_audit and delimit_test_smoke.

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

delimit_os_gatesDelimit Os GatesA
Read-onlyIdempotent

Check governance gates for an OS plan (Pro).

When to use: to check whether a specific plan is currently blocked by a governance gate before proceeding. When NOT to use: for general OS counts (use delimit_os_status) or governance engine health (delimit_gov_health).

Sibling contrast: delimit_os_status returns aggregate counts; delimit_gov_health reports the engine; this returns gate state for one plan.

Side effects: read-only on the OS backend; gated by require_premium. Calls backends.os_bridge.check_gates.

ParametersJSON Schema
NameRequiredDescriptionDefault
plan_idYesPlan identifier, e.g. "PLAN-A1B2C3D4". Required.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.7/5.0
Behavior5/5

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

Beyond the readOnlyHint annotation, the description discloses that the operation is read-only on the OS backend, is gated by require_premium, and calls backends.os_bridge.check_gates. This adds meaningful behavioral context such as authorization requirements and backend coupling.

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 efficiently organized with clear sections: core purpose, when to use, when not to use, sibling contrast, and side effects. Every sentence contributes useful decision-making information without redundancy.

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

Completeness5/5

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

Given annotations cover read-only/idempotent behavior, the schema covers the sole parameter, the output schema exists, and the description provides usage guidance plus authorization and side-effect context, the tool definition is complete for an agent to invoke correctly.

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 for the single parameter is 100%, so the schema already documents plan_id. The description adds minimal semantic value beyond noting it checks a 'specific plan,' which is sufficient given the complete schema.

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 states a specific verb and resource: 'Check governance gates for an OS plan (Pro).' It clearly distinguishes the tool from siblings by noting it 'returns gate state for one plan' versus aggregate counts or engine health.

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?

The description gives explicit when-to-use ('to check whether a specific plan is currently blocked by a governance gate before proceeding'), when-not-to-use, and names the specific alternatives (delimit_os_status, delimit_gov_health). This leaves no ambiguity about selection.

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

delimit_os_planDelimit Os PlanA

Mint an OS-level execution plan against a target component (Pro).

When to use: to draft a structured plan (deploy, migrate, rotation, rollback) that the governance kernel can later inspect via delimit_os_gates and human reviewers can approve before any side-effecting execution. The pattern is plan -> approval check via gates -> separate execution call. When NOT to use: for aggregate OS counts (delimit_os_status), to check gate state on an existing plan (delimit_os_gates), or to actually execute a deploy (delimit_deploy_* / delimit_deploy_build). Also do not use this as an audit-trail surrogate for free-form work; that is delimit_ledger_add territory.

Sibling contrast: delimit_os_gates checks gates on an existing plan; delimit_os_status reports portfolio-wide counts; this is the only OS surface that mints a new plan. Compared to delimit_gov_new_task (governance-classed task), this records an OS-level operation (deploy/migrate/rotation) rather than a policy-scoped task.

Side effects: gated by require_premium — unlicensed callers receive a license payload and no plan is created. On a licensed call, parameters is first coerced (string -> dict via _coerce_dict_arg); a malformed payload short-circuits with an error response. On success, invokes backends.os_bridge.create_plan which writes a new plan record to the OS plan store keyed by a generated plan_id. Result is wrapped via _with_next_steps. No deploy is executed by this call.

ParametersJSON Schema
NameRequiredDescriptionDefault
targetYesTarget component or service. Required.
operationYesOperation to plan (e.g. "deploy", "migrate"). Required.
parametersNoOptional operation parameters as dict or JSON string.
require_approvalNoIf True (default), the plan requires approval before execution.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.9/5.0
Behavior5/5

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

The description discloses substantial behavior beyond annotations: require_premium gating, license-payload responses for unlicensed callers, coercion of parameters from string to dict, malformed-payload error short-circuiting, the underlying backend call backends.os_bridge.create_plan, writing a plan record keyed by generated plan_id, wrapping via _with_next_steps, and the explicit statement that no deploy is executed. This far exceeds the minimal readOnlyHint/destructiveHint annotations.

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 long but every sentence earns its place: scoping, workflow, exclusions, sibling contrast, side effects, and internal behavior are each in clearly separated sections. The most important identifying sentence is front-loaded, and the structure makes scanning easy despite the volume.

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

Completeness5/5

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

Given an output schema exists, the return-value burden is reduced, yet the description still covers the write path, license gate, error behavior, and the absence of deployment execution. Context signals confirm low structured annotation coverage, so the description fully compensates by giving the agent everything needed to select and safely invoke the tool.

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

Parameters4/5

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

Schema coverage is 100%, so the schema already documents all four parameters and their defaults. The description adds meaningful extra semantics for `parameters` specifically, explaining string-to-dict coercion and malformed-payload failure behavior. It does not significantly enrich `target`, `operation`, or `require_approval`, but the schema already covers those adequately.

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 opens with a specific verb and resource: 'Mint an OS-level execution plan against a target component (Pro).' It differentiates from siblings by naming delimit_os_gates, delimit_os_status, delimit_deploy_*, delimit_gov_new_task, and delimit_ledger_add, making it unmistakable what this tool does versus alternatives.

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?

There is an explicit 'When to use' paragraph laying out the plan -> gate check -> execute workflow, and an explicit 'When NOT to use' list naming concrete sibling tools. It also provides a sibling-contrast paragraph that clarifies the exact boundaries against related OS and governance tools.

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

delimit_os_statusDelimit Os StatusA
Read-onlyIdempotent

Report overall Delimit platform status (plans, tasks, tokens) (Pro).

When to use: at session start or in a status dashboard, to read aggregate OS-level counts and active plan IDs. When NOT to use: for governance health (use delimit_gov_health) or per-plan gates (use delimit_os_gates).

Sibling contrast: delimit_gov_health reports governance engine; delimit_os_gates reports a specific plan's gate state; this reports overall OS counts.

Side effects: read-only on the OS backend; gated by require_premium. Calls backends.os_bridge.get_status.

Prerequisite: requires Delimit Pro. An unlicensed call returns {"error": ..., "upgrade": "https://delimit.ai/pricing"} without running.

Args: None.

Returns: Dict with plan/task/token counts and next_steps.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.8/5.0
Behavior5/5

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

Annotations already flag readOnlyHint and idempotentHint, and the description adds important behavioral context beyond them: the call is gated by require_premium, unlicensed calls return an upgrade error without executing, and it invokes backends.os_bridge.get_status. This fully discloses side effects and failure behavior.

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 well-organized with labeled sections and front-loads the core purpose. It is slightly longer than strictly necessary because the sibling contrast partially repeats the when-not-to-use guidance and the backend call detail is extra, but every section is still informative.

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

Completeness5/5

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

For a zero-parameter read-only tool with an output schema, the description covers everything an agent needs: purpose, usage timing, alternatives, exclusions, side effects, license prerequisite, failure behavior, and return type. Nothing critical is missing.

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

Parameters4/5

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

The tool has zero parameters and the schema is empty, so there is nothing to document. The description explicitly states 'Args: None', which is correct and sufficient. Baseline 4 applies for zero-parameter tools.

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 opens with a specific verb and resource: 'Report overall Delimit platform status (plans, tasks, tokens)'. It also explicitly differentiates this tool from delimit_gov_health and delimit_os_gates, so an agent can distinguish it from the most confusable siblings.

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?

The description provides explicit 'When to use' (session start/status dashboard) and 'When NOT to use' conditions with named alternatives (delimit_gov_health, delimit_os_gates). This is direct, actionable routing guidance that removes ambiguity.

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

delimit_outreach_loop_tickDelimit Outreach Loop TickA

Run one tick of the autonomous github-outreach loop (LED-2214b).

When to use: from an external scheduler (cron, loop_daemon) or for an ad-hoc manual cycle. The tick monitors existing outreach LEDs for new activity AND scans for new substantive candidates. When NOT to use: as a backfill for thousands of stale items — the per-tick caps are intentional. Multiple ticks at the scheduler interval is the right pattern.

Sibling contrast: delimit_social_target scans a broader platform set; this is github-only and dispatches via the substantive- outreach path (with the SHIFT-1 gates). delimit_sensor_github_ issue watches a single issue; this orchestrates the sensor over every open outreach LED.

Side effects: reads ledger, network reads (gh CLI) for the monitor phase, writes new intel-class LEDs + dispatches new substantive tasks for the scan phase. Honours the DELIMIT_GITHUB_OUTREACH_DISABLED env var and the ~/.delimit/outreach_pause sentinel file as kill switches.

ParametersJSON Schema
NameRequiredDescriptionDefault
ventureNoSourcing venture (default "delimit").delimit
max_monitorNoPer-tick monitor-call cap (default 50).
max_dispatchNoPer-tick substantive-dispatch cap (default 3). Targets beyond the cap still file intel LEDs but are not dispatched on this tick.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.7/5.0
Behavior5/5

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

The description discloses meaningful side effects beyond the annotations: reads ledger and network state, writes new intel-class LEDs, dispatches new substantive tasks, and honors DELIMIT_GITHUB_OUTREACH_DISABLED and ~/.delimit/outreach_pause as kill switches. Annotations only say readOnlyHint=false and destructiveHint=false, so this behavioral detail is valuable and consistent.

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 well-structured with clear sections: one-line summary, when-to-use, when-not-to-use, sibling contrast, and side effects. Every sentence carries distinct information, and the core purpose is front-loaded.

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

Completeness5/5

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

For a complex tool with side effects and scheduling context, this description is complete. It covers invocation context, exclusions, sibling differentiation, side effects, and kill switches. The presence of an output schema means return-value details are not required in the description.

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?

The input schema already provides 100% parameter documentation with descriptions for venture, max_monitor, and max_dispatch. The description adds context about per-tick caps being intentional and the pattern of multiple ticks, but it does not add much parameter-specific meaning beyond what the schema already supplies.

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 opens with a specific verb and resource: 'Run one tick of the autonomous github-outreach loop.' It distinguishes itself from siblings by explicitly noting it is github-only, orchestrates over every open outreach LED, and uses the substantive-outreach path, unlike delimit_social_target and delimit_sensor_github_issue.

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?

The description states exactly when to use it (external scheduler, loop_daemon, or ad-hoc manual cycle) and when not to use it (backfill for thousands of stale items), even explaining the right pattern: multiple ticks at the scheduler interval. It names specific sibling alternatives and how they differ.

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

delimit_playbookDelimit PlaybookA
Destructive

Manage reusable prompt templates — save / run / list / delete.

When to use: to save your best prompts as named commands and run them later with variable substitution. Shared across AI assistants. When NOT to use: to manage project config (use delimit_project_config) or memories (delimit_memory_store).

Sibling contrast: delimit_memory_store records info; this stores executable prompt templates with {{variable}} substitution.

Side effects: action="save" / "delete" mutate ~/.delimit/playbooks/. action="run" calls the configured model with substituted prompt. action="list" is read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoPlaybook name. Required for save/run/delete.
tagsNoComma-separated tags for organization.
actionNo"save", "run", "list" (default), or "delete".list
promptNoTemplate with {{variable}} placeholders (save only).
variablesNoFor run, "key=value,..."; for save, "name1,name2,...".
model_hintNoSuggested model (e.g. "claude-opus").
descriptionNoShort description.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.8/5.0
Behavior5/5

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

Even though annotations already declare readOnlyHint=false and destructiveHint=true, the description adds precise side effects: save/delete mutate the specific path ~/.delimit/playbooks/, run calls the configured model (a non-obvious external effect with cost implications), and list is explicitly read-only. This contextualizes the annotation flags rather than merely restating them.

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?

Well-structured with the core purpose front-loaded, then compact labeled sections for routing and side effects. Every sentence earns its place; the minor overlap between 'When NOT to use' and 'Sibling contrast' is acceptable since one handles routing and the other conceptual differentiation.

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?

For a 7-parameter, 4-action tool, the description covers purpose, routing, substitution mechanics, and per-action side effects, and the output schema handles return values. The only gap is that action-to-required-parameter mapping isn't spelled out in prose, but the schema documents this fully at 100% coverage, so the gap is minor.

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

Parameters4/5

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

Schema coverage is 100%, so the per-parameter baseline is 3. The description elevates this by explaining cross-parameter semantics the schema can't: how {{variable}} placeholders flow from save (template creation) to run (substitution), and how each action maps to side effects. Per-parameter detail is fully in the schema, so the description appropriately focuses on the interaction between parameters.

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 opening line 'Manage reusable prompt templates — save / run / list / delete' names a specific resource (prompt templates) and enumerates its four operations. The sibling contrast explicitly differentiates it from delimit_memory_store ('records info') and delimit_project_config, making it cleanly distinguishable from related tools without opening any schema.

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?

Contains explicit 'When to use' and 'When NOT to use' sections that name exact alternative tools (delimit_project_config for config, delimit_memory_store for memories) and the conditions that route to each. The sibling contrast adds a further conceptual distinction, leaving nothing to inference.

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

delimit_policyDelimit PolicyA
Read-onlyIdempotent

Inspect or simulate governance policy configuration.

When to use: to inspect the active policy or dry-run lint+policy against several presets to preview what would block. When NOT to use: for an actual gate decision (use delimit_lint) or to manage the policy file itself (delimit_gov_policy).

Sibling contrast: delimit_gov_policy reads the live policy; delimit_lint enforces; this lets you simulate / inspect.

Side effects: read-only on policy + spec files. action="simulate" runs lint internally without writing evidence.

ParametersJSON Schema
NameRequiredDescriptionDefault
actionNo"inspect" (default) or "simulate".inspect
new_specNoProposed spec path (required for simulate).
old_specNoBaseline spec path (required for simulate).
spec_filesYesList of spec file paths. Required.
policy_fileNoOptional custom policy file path.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.9/5.0
Behavior5/5

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

Although annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, the description adds valuable specifics: 'read-only on policy + spec files' and 'action="simulate" runs lint internally without writing evidence.' This goes beyond the annotations and clarifies the practical safety profile.

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 compact and front-loaded with the core purpose, then organized into clear when/when-not, sibling contrast, and side effects sections. Every sentence adds useful information without redundancy.

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

Completeness5/5

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

For a tool with five parameters, a rich annotation set, an output schema, and many siblings, the description covers purpose, usage boundaries, side effects, and alternatives. Nothing crucial is missing for an agent to select and invoke the tool correctly.

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

Parameters4/5

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

Schema description coverage is 100%, so the schema already documents all five parameters. The description adds meaning beyond the schema by explaining that action='simulate' runs lint internally, which clarifies what the action parameter actually does in practice.

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 opens with 'Inspect or simulate governance policy configuration,' a specific verb+resource statement. It also distinguishes itself from delimit_gov_policy and delimit_lint via explicit sibling contrast, so an agent can tell exactly what this tool does.

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?

The description explicitly provides 'When to use' and 'When NOT to use' sections, naming the exact alternative tools (delimit_lint, delimit_gov_policy) and the conditions that select them. No inference is required.

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

delimit_project_configDelimit Project ConfigA

Manage delimit.yml project configuration (load / init / model).

When to use: to inspect, create, or query the project's delimit.yml AI configuration. When NOT to use: for governance state (use delimit_gov_status) or to manage prompts (use delimit_playbook).

Sibling contrast: delimit_gov_status reports governance runtime state; this manages the static config file.

Side effects: action="init" writes a new delimit.yml at project_path via ai.project_config.init_project_config. "load" and "model" are read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
modeNoGovernance mode (only for init). One of "advisory", "guarded", "enforce". Default "advisory".advisory
actionNo"load" (default), "init", or "model".load
presetNoPolicy preset (only for init). One of "strict", "default", "relaxed". Default "default".default
task_typeNoTask type for model lookup (only for action="model").
project_pathNoProject root directory. Default "." (cwd)..

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.7/5.0
Behavior5/5

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

The description discloses concrete side effects: action='init' writes a new delimit.yml at project_path, while 'load' and 'model' are read-only. This goes beyond the annotations and clarifies the mixed read/write nature of the tool, which is essential for safe invocation.

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 well-structured with clear sections, front-loads the core purpose, and every sentence adds useful guidance. It is compact despite covering usage, exclusions, sibling contrast, and side effects.

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

Completeness5/5

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

Given the tool's multi-action nature and conditional parameters, the description provides complete context: what the tool manages, when to use it, when not to, how it differs from the closest sibling, and what side effects to expect. An output schema exists, so return-value documentation is not required here.

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 description coverage is 100%, so the baseline is 3. The description adds minimal value beyond the schema: it confirms that 'init' writes to project_path and lists the modes, but the schema already documents parameter-specific constraints like 'only for init' and 'only for action=model'.

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 opens with a specific verb and resource: 'Manage delimit.yml project configuration (load / init / model).' It names the exact file and modes of operation, and the sibling contrast explicitly distinguishes it from delimit_gov_status, so an agent can tell them apart.

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?

The description provides explicit 'When to use' and 'When NOT to use' guidance, naming delimit_gov_status and delimit_playbook as alternatives for governance state and prompt management. This fully routes the agent to the correct tool.

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

delimit_prompt_driftDelimit Prompt DriftA

Detect prompt drift across Claude / Codex / Gemini for the same task.

When to use: to track per-model prompt performance over time, or to rank models for specific task categories on your codebase. When NOT to use: to run a multi-model deliberation (use delimit_deliberate) — drift tracks single-model behaviour.

Sibling contrast: delimit_deliberate runs cross-model on a question; this tracks how a known prompt drifts per model.

Side effects: action="record" writes a result to the prompt-drift store via ai.prompt_drift.record_result. "check" and "rank" are read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
modelNoAI model name (required for record).
actionNo"record", "check" (default), or "rank".check
promptNoPrompt text (for record / check).
successNo"true" / "false" — whether the result was good.true
task_typeNoTask category — "refactoring", "testing", "debugging", "docs".
result_summaryNoBrief description of the result (for record).

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.7/5.0
Behavior5/5

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

Although annotations provide readOnlyHint=false and destructiveHint=false, the description goes beyond them by disclosing that action='record' writes to ai.prompt_drift.record_result, while 'check' and 'rank' are read-only. This is critical operational context an agent cannot derive from the structured fields alone.

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 compact and sectioned for scannability. Every sentence earns its place: purpose, usage, sibling contrast, and side effects are all covered without digression or repetition.

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

Completeness5/5

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

For a tool with six optional parameters, an output schema, and clear annotations, the description provides the essential context: what drift tracking means, when to use it, when not to, how it differs from a related sibling, and which actions have side effects. Nothing critical is missing.

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 description coverage is 100%, so the description does not need to re-explain each parameter. It adds some contextual meaning around the action parameter via side-effect information, but does not materially enrich the semantics of the individual parameters beyond the schema.

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 opens with a specific verb-resource pair: 'Detect prompt drift across Claude / Codex / Gemini for the same task.' It clearly distinguishes itself from delimit_deliberate by noting deliberation is cross-model, whereas this tool tracks single-model drift.

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?

Explicit 'When to use' and 'When NOT to use' sections name the alternative delimit_deliberate and the condition that makes it inappropriate. The sibling contrast reinforces the routing decision with a concrete difference.

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

delimit_quickstartDelimit QuickstartA

60-second guided quickstart for a new install.

When to use: immediately after installing Delimit, as the minimum-effort path to prove value — combines init + scan + environment detection. When NOT to use: for activation/license confirmation (use delimit_activate) or full diagnostics (delimit_diagnose).

Sibling contrast: delimit_init only writes scaffolding; delimit_scan only inspects; delimit_activate is post-license; this is the unified first-run flow.

Side effects: triggers init (writes .delimit/) and runs scan (read-only). Detects environment in passing.

ParametersJSON Schema
NameRequiredDescriptionDefault
project_pathNoProject path to quickstart. Default "." (cwd)..

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior4/5

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

Annotations only provide readOnlyHint=false and destructiveHint=false; the description adds concrete side effects: it triggers init (writes .delimit/) and runs a read-only scan. This is valuable behavioral context beyond the annotations, though it does not go deeper into failure modes or environmental interactions.

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?

Each section—summary, when to use, when not to use, sibling contrast, side effects—adds distinct value and is front-loaded with the core purpose. No filler or redundant restatement of the schema.

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

Completeness5/5

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

The description fully orients an agent: when to call, when not to, which siblings do what, and what side effects to expect. With the output schema and full parameter schema present, nothing needed for correct invocation is missing.

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 description coverage is 100% with the single project_path parameter fully described (default '.'). The tool description adds no extra parameter semantics, aligning with the baseline 3 when the schema carries the weight.

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 names a specific outcome ('60-second guided quickstart for a new install') and clarifies it as the unified first-run flow combining init, scan, and environment detection. It explicitly contrasts with delimit_init, delimit_scan, and delimit_activate, so an agent can distinguish it without inspecting schemas.

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?

A 'When to use' section defines the exact trigger (immediately after installation) and the 'When NOT to use' section routes to delimit_activate and delimit_diagnose. The sibling contrast further clarifies the alternatives, leaving no ambiguity about when to select this tool.

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

delimit_redactDelimit RedactA
Read-onlyIdempotent

Scan or redact sensitive data (API keys, secrets, PII) from text.

When to use: before sending text to external LLMs or publishing output, to prevent leaking credentials or PII. When NOT to use: to manage stored secrets (use delimit_secret_store family) — this is in-memory text redaction.

Sibling contrast: delimit_secret_* manages credentials at rest; this scrubs them out of arbitrary text.

Side effects: read-only on input text — produces a sanitized copy in action="redact". Calls ai.pii_redact.scan / redact. Detects: API keys (OpenAI, xAI, Google, GitHub, npm), passwords, bearer tokens, emails, phone numbers, SSNs, credit cards, IPs, database URLs.

The internal token map is intentionally NOT exposed via MCP — it stays local. action="redact" returns only the redacted text and counts; the original cannot be recovered through this tool.

ParametersJSON Schema
NameRequiredDescriptionDefault
textNoText to process.
actionNo"scan" (preview, default) or "redact" (replace).scan
categoriesNoComma-separated categories — "api_key", "secret", "pii", "infra". Empty = all categories.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.9/5.0
Behavior5/5

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

Beyond the readOnlyHint/idempotentHint/destructiveHint annotations, the description adds valuable behavioral details: it is read-only on input text, produces a sanitized copy, calls internal PII redaction services, keeps the token map local, and states that the original cannot be recovered through this tool. This gives an agent a clear safety and privacy model.

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 long but each section earns its place: when-to-use, sibling contrast, side effects, detection scope, and token-map caveat. It is front-loaded with purpose and clearly structured, with no filler.

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

Completeness5/5

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

Given the full input schema, output schema presence, and annotations, the description is complete for correct invocation. It covers purpose, routing to alternatives, side effects, parameter behavior, and limitations such as the unrecoverable original text.

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

Parameters4/5

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

Schema coverage is 100%, so the schema already documents text, action, and categories. The description adds meaning by enumerating detected sensitive-data types (API keys, passwords, emails, SSNs, etc.) and clarifying action='redact' behavior. It does not fully map the detected types to the category enum values, so a 5 is not warranted.

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 first line states a specific verb ('scan or redact') and resource ('sensitive data from text'), making the core function immediately clear. The sibling contrast explicitly distinguishes it from delimit_secret_* tools, so an agent can tell them apart.

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?

The description explicitly states when to use it (before sending text to external LLMs or publishing output) and when NOT to use it (for managing stored secrets, use delimit_secret_store family). It also provides the sibling contrast explaining that delimit_secret_* manages credentials at rest while this tool scrubs arbitrary text.

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

delimit_reddit_scanDelimit Reddit ScanA
Read-onlyIdempotent

Bulk scan 25+ subreddits for outreach targets (Pro).

When to use: as a venture-agnostic bulk Reddit scan — returns ranked, categorized targets ready for comment drafting. When NOT to use: for venture-scoped scan (use delimit_reddit_fetch_thread or delimit_social_target) or one specific thread.

Sibling contrast: delimit_reddit_fetch_thread is single thread; delimit_social_target is multi-platform venture scan; this is the broad Reddit pass.

Side effects: read-only network via residential proxy. Rate limited to 1 req / 2sec. The orchestrator must chain (per rule below).

IMPORTANT -- TOOL CHAINING RULE: After scanning, the AI MUST process high_priority targets:

  1. Draft replies via delimit_social_post or delimit_notify

  2. Create ledger items for strategic opportunities via delimit_ledger_add Never just return targets and stop. Always chain.

ParametersJSON Schema
NameRequiredDescriptionDefault
sortNoReddit sort order — "hot" (default), "new", "top".hot
limitNoPosts per subreddit. Default 10, max 25.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.7/5.0
Behavior5/5

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

Beyond the annotations (readOnlyHint, idempotentHint, destructiveHint), the description discloses read-only network access via residential proxy, a 1 req/2sec rate limit, and a mandatory tool-chaining rule after scanning. This adds substantive behavioral context that annotations alone do not provide.

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 well-structured and front-loaded: the core purpose appears first, followed by usage guidance, side effects, and the chaining rule. Every section earns its place and the text is dense without being bloated.

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

Completeness5/5

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

The tool is fully contextualized for an agent: clear purpose, explicit alternative routing, side-effect disclosures, rate limiting, and a mandatory follow-up chain. With an output schema present and annotations covering safety, nothing essential is missing for correct invocation and follow-through.

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 description coverage is 100%, so the schema already fully documents the sort and limit parameters. The description does not add new parameter-level semantics, but this is acceptable because the baseline of 3 applies when the schema carries the load.

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 opens with a specific verb and resource: bulk scanning 25+ subreddits for outreach targets. It further distinguishes itself by stating it is venture-agnostic and returns ranked, categorized targets, which clearly separates it from sibling tools like delimit_social_target and delimit_reddit_fetch_thread.

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?

The description provides explicit 'when to use' and 'when NOT to use' guidance, names the alternative tools by name, and includes a sibling contrast section. An agent can confidently route to this tool versus the alternatives without ambiguity.

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

delimit_release_historyDelimit Release HistoryA

Return the recent release timeline for an environment (experimental).

When to use: during incident investigation when you need to see what shipped and when ("what changed in the last 10 releases?"), or when picking a known-good to_version for delimit_release_rollback. The output is the release-tier equivalent of git log for a deploy environment. When NOT to use: to inspect only the current release (use delimit_release_status) or for per-app deploy timeline (delimit_deploy_status / SHA-level history). Also: for audit-trail evidence collection use delimit_evidence_collect.

Sibling contrast: delimit_release_status is the point-in-time snapshot; this is the time-axis sibling. delimit_release_rollback consumes the output of this tool when picking a target version.

Side effects: read-only against the ops backend. No license gate at this level. Calls backends.ops_bridge.release_history which reads the release timeline store. No write, no probe, no notification. Marked EXPERIMENTAL — output schema may evolve.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of releases to return. Default 10.
environmentYesTarget environment. Required.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.9/5.0
Behavior1/5

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

The description is very transparent about side effects, internal backend calls, and experimental status. However, annotations declare readOnlyHint=false while the description explicitly claims 'read-only against the ops backend' and 'No write'. This is a direct contradiction, so the score must be 1 per rubric.

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 front-loaded with the core purpose and organized into clear, purposeful sections. Every section contributes actionable information without boilerplate or unnecessary repetition.

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

Completeness5/5

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

The description covers when to use, when not to use, sibling relationships, side effects, backend implementation, and experimental caveats. Since an output schema exists and the tool has only two simple parameters, this is complete enough for correct selection and invocation.

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 description coverage is 100%, with the schema already documenting environment as required and limit as an integer defaulting to 10. The description adds useful context about 'recent' releases but does not need to restate parameter semantics.

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 states a specific operation on a specific resource: returning the recent release timeline for an environment. It also distinguishes itself from related siblings such as delimit_release_status, delimit_release_rollback, and delimit_evidence_collect.

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?

The description provides explicit 'When to use' and 'When NOT to use' sections with concrete scenarios and names the alternative tools. It also clarifies the time-axis versus point-in-time relationship with delimit_release_status.

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

_delimit_release_implDelimit Release ImplA

Unified release-management entry point — dispatches to one of six actions.

When to use: as the single MCP-registered release surface (delimit_release) when the caller wants to pick the release operation by name in one call rather than choosing a specific delimit_release_* alias. Release-tier means whole-environment, multi-service versions (the rollup across apps), as opposed to the deploy-tier (per-app SHA) covered by the delimit_deploy_* tools. When NOT to use: from internal code paths — prefer the specific alias (delimit_release_plan, delimit_release_validate, delimit_release_status, delimit_release_rollback, delimit_release_history, delimit_release_sync) for clarity and so each action's docstring and license gate show up at the right call site. For per-app rollout state use delimit_deploy_status; to ship code use delimit_deploy_publish; for OpenAPI spec linting use delimit_lint.

Sibling contrast: each delimit_release_ wrapper is a thin alias over this implementation; they exist so the action's docstring lives at the right name. This is the dispatch core. delimit_release_validate routes through a shared _release_validate chain, and the public delimit_release_sync exposes its sub-action as a param named action, which this function receives as sync_action.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of releases to return. Default 10. Used only by "history".
actionNoWhich release operation to perform. One of "plan", "validate", "status", "rollback", "history", "sync". Default "status". Other values return a deterministic error.status
versionNoRelease version (auto-detected from git tags if empty). Used by "plan", "validate", and "rollback" (as the expected current version to roll back FROM).
servicesNoOptional list of service names to scope the plan; None = all services in the repo manifest. Used only by "plan".
repositoryNoRepository path. Default ".". Used only by "plan"..
to_versionNoPrior release version to roll back to. Required for "rollback"; ignored otherwise.
environmentNoTarget environment, "staging" or "production". Default "production".production
sync_actionNoSub-action for "sync" — "audit" (default) or "config". Ignored by other actions.audit

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior4/5

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

With no readOnly or destructive annotations present, the description carries the behavioral burden. It is transparent about being a dispatch core with six possible actions, thin alias wrappers, and a sync_action mapping. The main gap is that potentially mutating actions like rollback and sync are implied by name rather than explicitly flagged as state-changing operations.

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 front-loaded with its core purpose and organized into labeled sections: purpose, when to use, when not to use, and sibling contrast. The long alias lists earn their place because they directly route the agent to the correct tool among hundreds of siblings.

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?

For a complex multi-action dispatch tool with 8 parameters and many sibling tools, the description is nearly complete: it defines dispatch scope, differentiates tiers, names alternatives, and relies on the 100%-covered schema for parameter detail. It loses one point for not explicitly disclosing side-effect or safety characteristics of the rollback/sync actions, especially since annotations provide no mutation hints.

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 description coverage is 100%, and the input schema already gives each of the 8 parameters a thorough description, defaults, and action-scope notes. The description adds only the useful but nonessential cross-reference that the public sync surface names the sub-action 'action' while this implementation receives it as 'sync_action', so it stays at the high-coverage baseline of 3.

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 leads with a specific verb-plus-resource statement: a unified release-management entry point that dispatches to one of six named actions. It also differentiates itself from the delimit_release_* alias wrappers and from deploy-tier tools, so an agent can distinguish this tool from its many siblings without opening other definitions.

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?

There are explicit 'When to use' and 'When NOT to use' sections. It tells the agent to call this single MCP-registered release surface when selecting an action by name, to prefer specific delimit_release_* aliases from internal code paths, and names the correct alternative tools for deploy status, publish, and linting.

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

delimit_release_planDelimit Release PlanA
Read-onlyIdempotent

Generate a release plan from git history (Pro).

When to use: ahead of cutting a release, to enumerate the services and changes that will ship and surface the version to bump. When NOT to use: to validate readiness (use delimit_release_validate) or to ship code (use delimit_deploy_publish).

Sibling contrast: delimit_deploy_plan plans a deploy of one app; this plans a multi-service release across an environment.

Side effects: read-only on git/repo state; gated by require_premium. Calls backends.tools_infra.release_plan.

Prerequisite: requires Delimit Pro. An unlicensed call returns {"error": ..., "upgrade": "https://delimit.ai/pricing"} without running.

ParametersJSON Schema
NameRequiredDescriptionDefault
versionNoRelease version. Auto-detected from git tags if empty.
servicesNoOptional list of service names to scope the plan; None = all services in the repo manifest.
repositoryNoRepository path. Default "." (cwd)..
environmentNoTarget environment, "production" or "staging". Default "production".production

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.7/5.0
Behavior5/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false. The description adds valuable behavioral context beyond this: it states the call is read-only on git/repo state, gated by require_premium, invokes backends.tools_infra.release_plan, and returns an upgrade error without running when unlicensed. This is rich, concrete behavioral disclosure.

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 well-structured with labeled sections, zero filler, and the core purpose front-loaded. Each sentence earns its place: purpose, usage, exclusions, sibling contrast, side effects, backend call, and prerequisite. The formatting makes it easy for an agent to scan.

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

Completeness5/5

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

Given the output schema exists, all parameters are documented, and annotations cover safety, the description is fully complete for correct selection and invocation. It covers when to use, when not to use, the sibling distinction, side effects, backend call, and licensing prerequisite. Nothing material is missing.

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 description coverage is 100%, so the schema fully documents all four parameters. The description adds context about surfacing the version to bump and multi-service release planning, but it does not need to explain individual parameters. Baseline 3 is appropriate because the schema carries the semantic load.

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 opens with a specific verb and resource: 'Generate a release plan from git history.' It clarifies the output is a multi-service release plan and explicitly contrasts with delimit_deploy_plan, so an agent can distinguish it from a similarly named sibling without inspecting schemas.

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?

The description provides explicit 'When to use' and 'When NOT to use' guidance, naming delimit_release_validate and delimit_deploy_publish as alternatives. It also contrasts with delimit_deploy_plan, making the selection criteria unambiguous.

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

delimit_release_rollbackDelimit Release RollbackA
Destructive

Revert a whole environment to a prior release version (experimental).

When to use: when delimit_release_validate or delimit_obs_alerts indicate a regression that spans services and you need to revert the WHOLE environment to a known-good release, not just one app. Typical sequence: alert fires -> delimit_release_history to pick a target -> this -> delimit_release_status to confirm. When NOT to use: to roll back a single app at the SHA level (use delimit_deploy_rollback), to roll back an npm publish (npm publish history is largely append-only — there is no clean rollback), or to roll forward (delimit_release_plan).

Sibling contrast: delimit_deploy_rollback reverts one app at the SHA level; this reverts a release version across services in lockstep. delimit_release_history is how you pick the to_version.

Side effects: invokes backends.ops_bridge.release_rollback which MUTATES the live environment — services are flipped to the to_version artifacts. No license gate at this level (handled by the backend's own admin checks). Marked EXPERIMENTAL — handler may return partial results on backends without rollback automation; verify with delimit_release_status afterwards. No automatic ledger write, no automatic notification — pair with delimit_evidence_collect + delimit_notify per the deploy-gate chain.

ParametersJSON Schema
NameRequiredDescriptionDefault
versionYesCurrent release version that is failing. Required.
to_versionYesPrior release version to roll back to. Required.
environmentYesTarget environment. Required.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.9/5.0
Behavior5/5

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

The description goes far beyond the annotations' destructiveHint, explaining that the tool invokes backends.ops_bridge.release_rollback, mutates the live environment, may return partial results on backends without rollback automation, and does not write to the ledger or notify automatically. It also tells the agent to verify with delimit_release_status afterwards. This is thorough behavioral disclosure.

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 long but highly structured with clear sections: summary, when to use, when not to use, sibling contrast, and side effects. Every sentence earns its place, especially given the destructive and experimental nature of the operation. The main action is front-loaded.

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

Completeness5/5

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

For a destructive, experimental environment-wide rollback, the description covers the full workflow, selection criteria, alternatives, side effects, failure modes, verification step, and missing automatic behaviors. The output schema exists, so return-value documentation is not the description's responsibility. Nothing critical is missing.

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

Parameters4/5

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

Schema coverage is 100% and the schema already documents the three required parameters. The description adds operational meaning by explaining that 'version' is the current failing release, 'to_version' is the prior known-good target, and that delimit_release_history should be used to choose it. This enriches the schema without redundancy.

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 opens with a specific verb and resource: 'Revert a whole environment to a prior release version.' It clearly distinguishes this from sibling tools by explicitly stating it reverts an entire environment in lockstep, not a single app at the SHA level. The experimental marker adds an important scoping note.

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?

The 'When to use' section names concrete triggers (delimit_release_validate/delimit_obs_alerts indicating a cross-service regression) and gives a typical sequence with adjacent tools. 'When NOT to use' explicitly excludes single-app rollbacks, npm publish rollbacks, and roll-forwards, naming the correct alternatives. This is exemplary routing guidance.

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

delimit_release_statusDelimit Release StatusA

Report the active release version for a whole environment (Pro).

When to use: to inspect which release version is currently live across all services in an environment — the "what is shipped right now?" check at the release-tier (versions across services) rather than the deploy-tier (per-app SHA). Useful for incident pages and pre-deploy "what are we coming from?" snapshots. When NOT to use: for per-app rollout state (use delimit_deploy_status), for past releases on the same env (use delimit_release_history), or to plan a new release (delimit_release_plan).

Sibling contrast: delimit_deploy_status reports a single app's SHA rollout; this reports the environment's release version overall (the rollup across apps). delimit_release_history is the time-axis sibling; this is the point-in-time snapshot.

Side effects: read-only against the ops backend and gated by require_premium — unlicensed callers receive a license payload and no query runs. On a licensed call, invokes backends.tools_infra.release_status which reads the release manifest for the environment. No write, no probe, no notification. Response routed through _with_next_steps.

Prerequisite: requires Delimit Pro. An unlicensed call returns {"error": ..., "upgrade": "https://delimit.ai/pricing"} without running.

ParametersJSON Schema
NameRequiredDescriptionDefault
environmentNoTarget environment. Default "production".production

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.7/5.0
Behavior1/5

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

The description provides rich behavioral context: licensing gate, unlicensed payload, no write/probe/notification, and internal invocation. However, it states 'read-only against the ops backend' while the annotations declare readOnlyHint=false, directly conflicting with the annotation; per rubric this is a 1.

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 front-loaded with the purpose and organized into scannable sections, and most content earns its place for a tool with many siblings. It is slightly long and includes some implementation detail like '_with_next_steps' that an agent does not need for selection, so 4 rather than 5.

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?

With one optional parameter, an output schema, and comprehensive sibling/alternative/exclusion guidance, the description covers everything needed to invoke the tool correctly. The contradictory readOnlyHint=false annotation versus the 'read-only' claim leaves the agent with conflicting safety signals, so it is not fully complete.

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 100% and the only parameter, environment, is described with a default in the schema. The description reinforces environment-level scope but adds no new syntax, constraints, or format details beyond what the schema already provides, so baseline 3 applies.

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?

Opens with a specific verb and resource: 'Report the active release version for a whole environment (Pro).' It clarifies the release-tier vs deploy-tier distinction and names the sibling tools it is not, so an agent can differentiate it from delimit_deploy_status and delimit_release_history without opening schemas.

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?

The description has explicit 'When to use' and 'When NOT to use' sections. It names delimit_deploy_status, delimit_release_history, and delimit_release_plan as alternatives with the conditions that select them, and adds a sibling contrast paragraph.

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

delimit_release_syncDelimit Release SyncA
Read-onlyIdempotent

Audit or report config of public surfaces for consistency (Pro).

When to use: to confirm that all public surfaces (CLI, action, npm, site) reference the same release version and configuration. When NOT to use: to actually deploy or sync content — this is a read/audit tool only.

Sibling contrast: delimit_release_status reports the deployed state; this audits the public surface configuration for drift.

Side effects: gated by require_premium. Calls ai.release_sync.audit (read-only audit) or ai.release_sync.get_release_config when action="config".

Prerequisite: requires Delimit Pro. An unlicensed call returns {"error": ..., "upgrade": "https://delimit.ai/pricing"} without running.

ParametersJSON Schema
NameRequiredDescriptionDefault
actionNoSub-action — "audit" (default) or "config".audit

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.8/5.0
Behavior5/5

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

Annotations already declare readOnly, idempotent, and non-destructive hints. The description goes further by disclosing the license gate, naming the internal endpoints (ai.release_sync.audit and ai.release_sync.get_release_config), and specifying the unlicensed response shape. This adds meaningful behavioral context beyond the annotations.

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 well-structured with labeled sections and front-loaded purpose. There is minor redundancy between the initial '(Pro)' marker and the later prerequisite line, but otherwise every section contributes useful information without bloat.

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

Completeness5/5

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

For a single-parameter read-only audit tool with an output schema and comprehensive annotations, the description covers scope, exclusions, sibling distinction, licensing, side effects, and error behavior. Nothing an agent needs to decide whether to call this tool is missing.

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

Parameters4/5

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

Schema coverage is 100% and the lone parameter's description already documents the 'audit' and 'config' values. The description adds extra meaning by mapping each action to a specific internal endpoint and reinforcing the default behavior, which helps the agent anticipate what happens for each value.

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 opens with a specific verb and resource: 'Audit or report config of public surfaces for consistency.' It explicitly names the surfaces (CLI, action, npm, site) and contrasts with delimit_release_status, so an agent can distinguish it from siblings without opening schemas.

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?

The description provides explicit 'When to use' and 'When NOT to use' guidance, plus a direct sibling contrast: delimit_release_status reports deployed state, while this tool audits config drift. It also states the prerequisite (Delimit Pro) and the unlicensed error behavior.

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

delimit_release_validateDelimit Release ValidateA

Validate that a release is safe to ship.

When to use: as the gate between delimit_release_plan and the actual rollout — confirms the release passes preflight checks. When NOT to use: for OpenAPI spec linting (delimit_lint) or for runtime health (delimit_obs_status).

Sibling contrast: delimit_release_plan describes what would ship; this attests it is safe to ship.

Side effects: on success, returns a passed verdict (no side effects). On failure, auto-chains:

  1. backends.repo_bridge.evidence_collect (records failure evidence)

  2. ai.notify.send_notification (webhook event release_validation_failed)

  3. ai.ledger_manager.add_item (creates ops-ledger fix item, P1)

ParametersJSON Schema
NameRequiredDescriptionDefault
versionYesRelease version string. Required.
environmentYesTarget environment ("production" / "staging").

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.7/5.0
Behavior5/5

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

Beyond the annotations, the description clearly discloses the conditional side-effect behavior: no side effects on success, but on failure it auto-chains three specific actions (evidence collection, notification, ledger item). This is significant behavioral context the agent needs before invoking the 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?

The description is well-structured with labeled sections: purpose, when to use, when not to use, sibling contrast, and side effects. Every section adds distinct value, and the most important usage guidance is front-loaded.

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

Completeness5/5

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

Given the tool has an output schema, the description does not need to explain return values. It covers purpose, usage boundaries, sibling differentiation, and side effects, which are the critical elements for correct invocation. Nothing essential is missing.

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 description coverage is 100%, so the parameters version and environment are already fully documented in the input schema. The description adds no additional parameter-level detail, which is acceptable but not above the baseline.

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 opens with a specific verb and resource: 'Validate that a release is safe to ship.' It explicitly distinguishes itself from delimit_release_plan, delimit_lint, and delimit_obs_status, making the tool's role clear relative to siblings.

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?

The description provides explicit when-to-use ('gate between delimit_release_plan and the actual rollout'), when-not-to-use (OpenAPI linting, runtime health), and a sibling contrast with delimit_release_plan. This leaves no ambiguity about selection.

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

delimit_repo_analyzeDelimit Repo AnalyzeA
Read-onlyIdempotent

Analyze repository structure and quality (experimental).

When to use: for a deep audit of a repo (local or remote) — code structure, language mix, quality signals. When NOT to use: for a fast health pass (use delimit_repo_diagnose) or config-only audit (delimit_repo_config_audit).

Sibling contrast: delimit_repo_diagnose is a quick smoke test; this is the deeper structural audit.

Side effects: read-only on the resolved local path. Accepts local path, "owner/repo" shorthand, or GitHub URL — remote inputs are shallow-cloned into a tempdir for the call. Calls backends.repo_bridge.analyze through _run_repo_tool_with_remote.

ParametersJSON Schema
NameRequiredDescriptionDefault
targetNoRepository path, "owner/repo", or GitHub URL. Default "." (cwd)..

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.8/5.0
Behavior5/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false. The description adds meaningful behavioral context: read-only on the resolved local path, remote inputs are shallow-cloned into a tempdir, and the underlying call path is disclosed. This goes well beyond the annotations.

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 well-structured with clear sections and front-loaded purpose. Every sentence contributes useful guidance, though the final implementation-detail sentence about backends.repo_bridge.analyze is slightly lower-value for an agent deciding whether to call the tool.

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

Completeness5/5

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

For a tool with one parameter, rich annotations, and an output schema, the description covers intent, usage boundaries, side effects, accepted input forms, and remote behavior. Nothing essential for correct invocation is missing.

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

Parameters4/5

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

Schema description coverage is 100%, so the target parameter is already well documented. The description adds value by explaining the remote-clone behavior for non-local targets and reinforcing the accepted input formats. This is more than the baseline, though the schema already carries most of the semantic weight.

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 states a specific verb and resource: 'Analyze repository structure and quality,' and clarifies it is a 'deep audit' covering code structure, language mix, and quality signals. It also distinguishes itself from the sibling delimit_repo_diagnose, making its purpose unmistakable.

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?

Provides explicit 'When to use' and 'When NOT to use' guidance, directly naming alternatives delimit_repo_diagnose and delimit_repo_config_audit. The sibling contrast further clarifies when this tool is the right choice versus a quick smoke test.

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

delimit_repo_config_auditDelimit Repo Config AuditA
Read-onlyIdempotent

Audit repository configuration for compliance (experimental).

When to use: when checking a repo's config against a compliance standard — required files, branch protection, license header. When NOT to use: for structural validity (use delimit_repo_config_validate) or full quality analysis (delimit_repo_analyze).

Sibling contrast: delimit_repo_config_validate checks well-formedness; this checks compliance.

Side effects: read-only on the resolved local path. Accepts local path, "owner/repo" shorthand, or GitHub URL — remote inputs are shallow-cloned. Calls backends.repo_bridge.config_audit via _run_repo_tool_with_remote.

ParametersJSON Schema
NameRequiredDescriptionDefault
targetNoRepository or config path, "owner/repo", or GitHub URL. Default "." (cwd)..

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false. The description adds value beyond them by flagging the tool as 'experimental' and disclosing that remote inputs are shallow-cloned, plus naming the call path via backends.repo_bridge.config_audit. A minor gap is the absence of failure-mode disclosure for invalid or unreachable repo targets.

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?

Well-structured with labeled sections (When to use, When NOT to use, Sibling contrast, Side effects). The core purpose is front-loaded immediately, and every sentence contributes meaningful information — the experimental warning and side-effect disclosure each earn their place.

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

Completeness5/5

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

For a tool with a single fully-documented parameter, an output schema, and safety annotations, the description covers all essentials: purpose, routing against siblings, accepted input formats, remote handling behavior, and side effects. Nothing an agent needs to select and invoke it correctly is missing.

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 100%, so the single 'target' parameter is already fully documented in the input schema. The description's mention of accepted formats (local path, owner/repo, GitHub URL) largely repeats schema content; the only added meaning is the shallow-clone behavior for remote inputs, which is more behavioral than parameter-semantic. The baseline 3 is appropriate.

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 opens with a specific verb+resource phrase — 'Audit repository configuration for compliance' — which precisely states the tool's function. It further distinguishes from siblings by contrasting 'delimit_repo_config_validate checks well-formedness; this checks compliance'.

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?

Includes explicit 'When to use' and 'When NOT to use' sections with named alternatives: delimit_repo_config_validate for structural validity and delimit_repo_analyze for full quality analysis. The sibling contrast paragraph reinforces the routing decision, leaving no ambiguity about when to select this tool.

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

delimit_repo_config_validateDelimit Repo Config ValidateA
Read-onlyIdempotent

Validate repository configuration files (experimental).

When to use: as a pre-merge check that .github/, package.json, pyproject.toml, etc. are well-formed and self-consistent. When NOT to use: for compliance vs an external standard (use delimit_repo_config_audit) or full repo analysis (delimit_repo_analyze).

Sibling contrast: delimit_repo_config_audit reports policy compliance; this checks structural validity.

Side effects: read-only on the resolved local path. Accepts local path, "owner/repo" shorthand, or GitHub URL — remote inputs are shallow-cloned into a tempdir. Calls backends.repo_bridge.config_validate via _run_repo_tool_with_remote.

ParametersJSON Schema
NameRequiredDescriptionDefault
targetNoRepository or config path, "owner/repo", or GitHub URL. Default "." (cwd)..

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.8/5.0
Behavior5/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint. The description adds meaningful context beyond this: read-only on the resolved local path, remote inputs are shallow-cloned into a tempdir, and it names the internal code path. No contradiction with annotations.

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 well-structured with labeled sections and the core purpose front-loaded. The final sentence about internal backend calls is a marginal implementation detail, but it does not significantly harm readability.

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

Completeness5/5

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

For a tool with one optional parameter, an output schema, and safety annotations, the description covers purpose, usage boundaries, sibling differentiation, side effects, and input semantics. No critical information for correct invocation is missing.

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

Parameters4/5

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

The schema already fully documents the single target parameter, so the baseline is 3. The description adds value by reinforcing accepted input forms (local path, owner/repo, GitHub URL) and explaining the behavioral difference for remote inputs.

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?

Opens with a specific verb and resource: 'Validate repository configuration files.' It clarifies that this checks structural validity and self-consistency, and explicitly contrasts itself with delimit_repo_config_audit and delimit_repo_analyze, so an agent can tell it apart from relevant siblings.

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?

Provides explicit 'When to use' and 'When NOT to use' guidance, naming the exact alternatives (delimit_repo_config_audit for compliance, delimit_repo_analyze for full repo analysis). The sibling contrast further removes ambiguity.

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

delimit_repo_diagnoseDelimit Repo DiagnoseA
Read-onlyIdempotent

Diagnose repository health issues (experimental) (Pro).

When to use: before a commit or push to surface common repo problems — broken hooks, missing config, dirty working tree. When NOT to use: for full quality analysis (use delimit_repo_analyze) or per-file config validation (delimit_repo_config_validate).

Sibling contrast: delimit_repo_analyze is a deeper structural audit; this is a quick health-check pass.

Side effects: read-only on the repo; gated by require_premium. Calls backends.repo_bridge.diagnose. Marked experimental — output schema may evolve.

ParametersJSON Schema
NameRequiredDescriptionDefault
targetNoRepository path. Default "." (cwd)..

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.7/5.0
Behavior5/5

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

Annotations already mark readOnly/idempotent/non-destructive, and the description adds meaningful context: gated by require_premium, explicitly 'read-only on the repo', experimental output schema, and backend call name. The description is fully consistent with the annotations and adds non-redundant behavioral detail.

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 compact yet information-dense: purpose, usage windows, exclusions, sibling contrast, side effects, gating, and experimental status are all covered in a few short labeled segments. No filler or tautology is present.

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

Completeness5/5

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

For a single-optional-parameter, output-schema-backed tool with rich annotations, the description covers everything an agent needs to select and invoke it correctly: what it does, when to use it, when not to, safety profile, and access requirements. Nothing critical is missing.

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?

The single parameter 'target' is already fully documented in the schema at 100% coverage, including default '.'. The description does not need to add more parameter detail, so baseline 3 applies. No contradiction or gap exists here.

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?

States a specific verb and resource: 'Diagnose repository health issues', and clarifies it is a 'quick health-check pass'. It explicitly contrasts with the deeper structural audit of delimit_repo_analyze, so an agent can distinguish it from siblings without opening schemas.

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?

Gives a concrete trigger ('before a commit or push') and lists examples of detected problems. It also names when NOT to use it, pointing to delimit_repo_analyze and delimit_repo_config_validate as alternatives. This is explicit routing guidance.

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

delimit_resource_driversDelimit Resource DriversA
Read-onlyIdempotent

List available data plane drivers and their resource schemas.

When to use: to inventory which external systems Delimit can read from (github, etc.) and what resources each driver exposes. When NOT to use: to read data from a driver (use delimit_resource_list / delimit_resource_get).

Sibling contrast: delimit_resource_list lists items via a driver; this lists the drivers themselves.

Side effects: read-only. Calls ai.data_plane.list_drivers.

Args: None.

Returns: Dict with key "drivers" (list of driver definitions and their resource schemas) and next_steps.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.7/5.0
Behavior4/5

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

Annotations already provide readOnlyHint, idempotentHint, and destructiveHint, so the safety profile is covered. The description adds value by stating the underlying call (ai.data_plane.list_drivers) and clarifying the return shape, which goes beyond the annotations.

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 well structured with clear sections, front-loaded purpose, and no filler. Every section earns its place: when to use, when not to use, sibling contrast, side effects, args, and returns.

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

Completeness5/5

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

For a zero-parameter read-only inventory tool, the description is complete: it explains what the tool returns, how it differs from siblings, and what side effects to expect. The presence of an output schema also reduces the need to document return values further.

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

Parameters4/5

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

The tool has zero parameters, so there is no parameter semantics burden. The description explicitly states 'Args: None', which is consistent with the empty input schema and gives the agent certainty.

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 states a specific verb and resource: 'List available data plane drivers and their resource schemas.' It also explicitly contrasts with sibling tools delimit_resource_list and delimit_resource_get, making it unambiguous which tool is which.

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?

The description gives explicit 'When to use', 'When NOT to use', and names the exact alternative tools for reading data. This is ideal routing guidance for an agent deciding among many delimit_* siblings.

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

delimit_resource_getDelimit Resource GetA
Read-onlyIdempotent

Get a specific resource from a connected data-plane system.

When to use: to fetch a single item by identifier via a driver — a repo, PR, issue, or workflow run. When NOT to use: to list items (use delimit_resource_list) or inventory drivers (delimit_resource_drivers).

Sibling contrast: delimit_resource_list returns many; this returns one.

Side effects: read-only network call via the driver. Calls ai.data_plane.get_driver and the driver's get_* method.

ParametersJSON Schema
NameRequiredDescriptionDefault
repoNo"owner/name" required for PRs / issues / workflow runs.
driverNoDriver key. Default "github".github
resourceNoOne of "repos", "pull_requests", "issues", "workflows". Required.
identifierNoResource identifier — repo name, PR number, run id. Required.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already mark it read-only, idempotent, and non-destructive; the description adds that it performs a network call through a driver and names the internal functions it invokes (ai.data_plane.get_driver and the driver's get_* method). This is useful behavioral context beyond the annotations, though it does not detail failure modes or connection requirements.

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 organized into labeled sections, starts with the core action, and each sentence carries distinct value: scope, exclusions, sibling contrast, and side effects. There is no filler or redundant repetition of the schema.

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

Completeness5/5

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

For a single-item read tool, the description covers what it does, when to use it, when not to, how it behaves, and its side effects; the schema documents all parameters and an output schema exists. An agent has enough context to select and invoke it correctly without additional assumptions.

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 description coverage is 100%, so the baseline applies and the schema already explains repo, driver, resource, and identifier. The description adds no parameter-level detail beyond the schema; its mention of 'single item by identifier' supports conceptual semantics but is not necessary for invocation.

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 uses a specific verb ('Get'), a clear resource ('a specific resource from a connected data-plane system'), and explicitly limits scope to a single item by identifier: repo, PR, issue, or workflow run. It also distinguishes itself by saying delimit_resource_list returns many while this returns one.

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?

It includes explicit 'When to use' and 'When NOT to use' sections, naming the exact sibling tools to choose instead (delimit_resource_list, delimit_resource_drivers). This gives an agent clear decision criteria rather than leaving the choice to inference.

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

delimit_resource_listDelimit Resource ListA
Read-onlyIdempotent

List resources from a connected data-plane system.

When to use: to enumerate items via a driver — repos, PRs, issues, workflow runs. When NOT to use: to fetch a specific item (use delimit_resource_get) or inventory drivers (delimit_resource_drivers).

Sibling contrast: delimit_resource_drivers lists drivers; delimit_resource_get fetches one item; this lists items.

Side effects: read-only network calls via the chosen driver. Calls ai.data_plane.get_driver and the driver's list_* method.

ParametersJSON Schema
NameRequiredDescriptionDefault
orgNoOrganization filter for repos.
repoNo"owner/name" — required for workflow listing.
limitNoMax results. Default 10.
stateNoPR/issue state — "open" (default), "closed", "all".open
driverNoDriver key. Default "github".github
resourceNoOne of "repos", "pull_requests", "issues", "workflows". Required.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.7/5.0
Behavior5/5

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

Beyond the readOnly/idempotent annotations, the description discloses the side effect of read-only network calls, names the internal calls to ai.data_plane.get_driver and the driver's list_* method, and confirms no destructive behavior. This gives an agent a clear model of what executing the tool involves.

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 compact and well-structured: a one-sentence purpose followed by tightly scoped sections for usage, contrast, and side effects. Every sentence earns its place with no filler.

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

Completeness5/5

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

The description is self-sufficient for selection and invocation: purpose, alternatives, side effects, and internal behavior are all covered. Parameter details and return shape are delegated to the input/output schemas, which is appropriate given the schema coverage.

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?

The schema already documents all six parameters with descriptions, so the description does not need to restate parameter semantics. It adds general context about driver-based enumeration but no parameter-specific detail beyond the schema. The baseline of 3 applies because schema coverage is complete.

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 states a specific verb and resource: 'List resources from a connected data-plane system' and clarifies that it enumerates items like repos, PRs, issues, and workflow runs. It distinguishes itself from peers by naming delimit_resource_get and delimit_resource_drivers as different operations.

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?

Provides explicit 'When to use' and 'When NOT to use' guidance, including named alternatives. This leaves no ambiguity about when to choose this tool over delimit_resource_get or delimit_resource_drivers.

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

delimit_reviewDelimit ReviewA

Run a multi-model code review on a diff or file.

When to use: to get cross-model feedback on a code change before merging, optionally posted as a PR comment. When NOT to use: for structured cross-lens audit (use delimit_audit) or full multi-round debate (delimit_deliberate).

Sibling contrast: delimit_audit is structured (security / correctness / governance lenses); delimit_deliberate is full debate; this is single-prompt multi-model review.

Side effects: calls multiple models via ai.multi_review. May write a saved review record. When pr_url is provided, the review can be posted as a PR comment by the caller (this tool returns the comment body, it does not auto-post).

ParametersJSON Schema
NameRequiredDescriptionDefault
diffNoGit diff or code text to review. Takes priority over file_path.
pr_urlNoGitHub PR URL for linking the review.
contextNoAdditional context about the change.
file_pathNoPath to file to review (reads current content if no diff).

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.9/5.0
Behavior5/5

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

Beyond the annotations' readOnlyHint=false and destructiveHint=false, the description discloses side effects: calls multiple models via ai.multi_review, may write a saved review record, and when pr_url is provided returns a comment body without auto-posting. This materially clarifies what invoking the tool can do.

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 front-loaded with the core purpose, then logically organized into usage, non-usage, sibling contrast, and side effects. Each section adds distinct information without fluff or repetition that wastes tokens.

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

Completeness5/5

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

With no required parameters and an output schema present, the description covers all essential selection and invocation context: what it does, when to use it, when to avoid it, which siblings are alternatives, and what side effects to expect. An agent can confidently choose and call this tool based on the description alone.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3. The description adds extra semantic value for pr_url by explaining the post-as-comment behavior is caller-driven and that the tool returns the comment body rather than auto-posting, which goes beyond the schema's 'GitHub PR URL for linking the review.'

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 opens with 'Run a multi-model code review on a diff or file,' naming a specific action, resource, and input. It further distinguishes itself from delimit_audit and delimit_deliberate, making its scope immediately clear.

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?

It explicitly states 'When to use' and 'When NOT to use,' naming the exact sibling tools that should replace it in other scenarios. The sibling contrast section reinforces the decision boundary with concrete lens/debate vs. single-prompt review distinctions.

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

delimit_reviveDelimit ReviveA
Read-onlyIdempotent

Revive the last session's captured soul in any model.

When to use: at session start, to load the prior session's soul (active task, decisions, blockers, next steps). When NOT to use: to capture a soul (delimit_soul_capture) or read recent memories (delimit_memory_recent).

Sibling contrast: delimit_soul_capture writes the soul; this reads and applies it (cross-model: Claude, Codex, Gemini, Cursor).

Side effects: read-only; calls ai.session_phoenix.revive.

ParametersJSON Schema
NameRequiredDescriptionDefault
scopeNoOptional handoff/receipt id. When set, revives ONLY that scoped handoff context (for dispatched subagents) instead of the global session soul. Empty = full soul (default).
soul_idNoSpecific soul id to revive. Empty = latest.
project_pathNoProject path to revive. Empty = auto-detect from cwd.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior4/5

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

The annotations already provide readOnlyHint, idempotentHint, and destructiveHint. The description adds useful context by explicitly stating the operation is read-only, that it reads and applies the soul, and that it is cross-model. This aligns with and supplements the annotations without contradicting them.

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 well-organized with front-loaded purpose, concise when/where/contrast sections, and a short side-effects note. Every sentence adds value, and the formatting makes scanning easy.

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

Completeness5/5

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

The description covers when to use, when not to use, sibling contrast, side effects, and model scope. With a rich output schema and full parameter documentation in the input schema, nothing critical is missing for an agent to invoke this tool correctly.

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?

The input schema descriptions cover 100% of the three parameters, including defaults and empty-string meanings. The description itself adds no parameter-specific detail, but because the schema carries the full burden, the baseline of 3 is appropriate.

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 states a specific action ('Revive the last session's captured soul') and clearly distinguishes it from sibling tools like delimit_soul_capture and delimit_memory_recent. The unique resource ('soul') and the intent ('any model') are immediately clear.

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?

The description explicitly states when to use ('at session start'), when NOT to use (capturing a soul or reading recent memories), and names the alternative tools. It also contrasts with delimit_soul_capture, giving the agent unambiguous routing guidance.

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

delimit_scanDelimit ScanA

Scan a project and report what Delimit can do for it.

When to use: as a first-run discovery on a new project — finds OpenAPI specs, checks for security issues, detects frameworks, suggests what to track. When NOT to use: to initialize governance (use delimit_init) or run the 60-second quickstart (delimit_quickstart).

Sibling contrast: delimit_quickstart is a guided first-run flow; delimit_init creates the governance scaffolding; this is read-only discovery.

Side effects: read-only scan via filesystem globs. Does not write to project files.

ParametersJSON Schema
NameRequiredDescriptionDefault
project_pathNoPath to the project to scan. Default "." (cwd)..

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior1/5

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

The description claims this is a 'read-only scan' and 'Does not write to project files,' but the annotations declare readOnlyHint=false. This is a direct contradiction about a critical behavioral trait, so the score must be 1 despite the otherwise useful side-effect disclosure.

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 well organized with labeled sections, opens with the one-sentence purpose, and has no filler. Every sentence contributes either routing guidance or behavioral context.

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?

For a simple one-parameter tool with an output schema, the description covers what, when, when not, and side effects thoroughly. However, the conflict between the stated read-only behavior and readOnlyHint=false leaves a serious ambiguity about side effects, preventing a perfect score.

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 description coverage is 100%, and the single optional project_path parameter is already fully described with a default value and meaning. The description adds no parameter-specific detail, but none is required beyond what the schema provides.

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?

States a specific action ('Scan a project'), a clear object (the project), and the output ('report what Delimit can do for it'). It also lists concrete discovery results (OpenAPI specs, security issues, frameworks) and distinguishes itself from delimit_init and delimit_quickstart.

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?

Provides explicit 'When to use' and 'When NOT to use' guidance, naming delimit_quickstart and delimit_init as alternatives. The sibling contrast section further reinforces the correct selection logic.

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

delimit_screen_recordDelimit Screen RecordA

Record a screen capture (browser or terminal session) (Pro).

When to use: to capture a video for documentation, demo, or audit evidence over a fixed window. When NOT to use: for a single still (use delimit_screenshot).

Sibling contrast: delimit_screenshot is one frame; this is a duration-bound recording.

Side effects: launches headless Chromium (browser mode) or a terminal subprocess (terminal mode), writes MP4 (browser) or GIF

  • MP4 (terminal) under ~/.delimit/recordings/. Gated by require_premium. Duration is capped at 120 seconds.

Prerequisite: requires Delimit Pro. An unlicensed call returns {"error": ..., "upgrade": "https://delimit.ai/pricing"} without running.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlNoURL to visit (browser mode only).
modeNo"browser" (default) or "terminal".browser
nameNoOutput filename without extension. Default "recording".recording
scriptNoShell script to run (terminal mode only). Empty = idle terminal capture.
durationNoRecording duration in seconds. Max 120. Default 30.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.6/5.0
Behavior5/5

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

The description discloses concrete side effects: launching headless Chromium or a terminal subprocess, writing MP4/GIF files to ~/.delimit/recordings/, gating on require_premium, and returning an upgrade error without running when unlicensed. Annotations only provide readOnlyHint=false and destructiveHint=false, so this description adds substantial behavioral context that the annotations do not convey.

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 well-structured with clear headers, front-loaded purpose, and useful side-effect and prerequisite sections. It is slightly longer than necessary because the 'When NOT to use' and 'Sibling contrast' sections partially overlap, but every section still contributes actionable information.

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

Completeness5/5

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

For a tool with optional parameters, a Pro licensing prerequisite, file-output side effects, and an output schema, the description covers the prerequisite, the failure behavior, output locations, duration cap, and sibling differentiation. Nothing an agent needs to decide whether and how to invoke it is missing.

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 description coverage is 100%, so the input schema already documents all five parameters with defaults and constraints. The description reinforces the 120-second cap and browser/terminal modes, but does not add significant meaning beyond the schema. Baseline 3 is appropriate.

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 opens with a specific verb and resource: 'Record a screen capture (browser or terminal session)'. It clearly identifies this as a duration-bound recording tool and contrasts it directly with delimit_screenshot, making the tool's identity and scope unambiguous.

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?

The description provides explicit 'When to use' and 'When NOT to use' guidance, including naming delimit_screenshot as the alternative for still images. This gives an agent a clear decision rule for selecting this tool over its closest sibling.

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

delimit_screenshotDelimit ScreenshotA

Take a screenshot of a URL using headless Chromium (Pro).

When to use: for audit evidence, visual regression baselines, or documentation captures. When NOT to use: for time-based recordings (use delimit_screen_record) or rendered HTML extraction.

Sibling contrast: delimit_screen_record captures over time (browser or terminal); this captures a single image.

Side effects: gated by require_premium. Launches headless Chromium via Playwright and writes a PNG file under ~/.delimit/screenshots/.

Prerequisite: requires Delimit Pro. An unlicensed call returns {"error": ..., "upgrade": "https://delimit.ai/pricing"} without running.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesURL to screenshot. Required.
nameNoOutput filename (without extension). Default "screenshot".screenshot

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.6/5.0
Behavior5/5

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

Beyond the annotations, it discloses concrete side effects: launching headless Chromium via Playwright, writing a PNG under ~/.delimit/screenshots/, and requiring a Pro license. It also describes the unlicensed failure response, which makes actual runtime behavior predictable.

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 well-structured with labeled sections and the core action front-loaded. There is minor redundancy—'headless Chromium' appears twice and Pro is mentioned in both the opening and prerequisite—but every section earns its place.

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

Completeness5/5

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

For a two-parameter tool with an output schema, the description covers purpose, usage boundaries, sibling comparison, side effects, licensing prerequisite, and failure behavior. Nothing an agent needs to call it correctly is missing.

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 description coverage is 100%, so the schema already documents url and name. The description adds context about the output artifact (a PNG file under ~/.delimit/screenshots/) but does not provide additional parameter-level meaning, so the baseline score of 3 is appropriate.

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 opens with a concrete verb and resource: 'Take a screenshot of a URL using headless Chromium.' It also explicitly distinguishes itself from delimit_screen_record, so an agent can tell them apart despite the large sibling list.

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?

It provides explicit when-to-use scenarios (audit evidence, visual regression baselines, documentation captures) and explicit when-not-to-use cases (time-based recordings, rendered HTML extraction). For time-based recordings it names the alternative tool, delimit_screen_record.

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

delimit_seal_verifyDelimit Seal VerifyA
Read-onlyIdempotent

Verify a Delimit Seal receipt against the bundled Layer-0 constitution (Free).

When to use: to check that a signed governed-output receipt has not been tampered with — content-pin to the published constitution, a valid Ed25519 signature, and a well-formed structure. Free tier. Pass mode='a1' to verify a hardened offline A1 bundle (schema_version >= 0.3) with subject binding + key-manifest crosscheck. When NOT to use: to verify an evidence bundle (use delimit_evidence_verify) or to query the ledger (delimit_ledger).

Sibling contrast: delimit_evidence_verify checks an evidence bundle's hash chain; this checks an open-core Seal receipt's signature + content-pin with no access to the engine or the signing key.

Side effects: read-only. Calls backends.repo_bridge.seal_verify. The 'cryptography' dependency is optional + lazy-imported: if absent, it returns verification_unavailable rather than failing. No license gate.

ParametersJSON Schema
NameRequiredDescriptionDefault
modeNoVerification mode. 'receipt' (default) = legacy/v0.2 receipt path, unchanged. 'a1' = hardened offline A1 bundle path (schema_version >= 0.3): tar-safety, version floor, crypto-suite allowlist, subject binding, key-manifest crosscheck.receipt
expect_repoNoA1 only: the canonical repo URL the relying party expects. When given, sha256(subject_salt || url) must equal subject.repo or verification hard-fails.
receipt_pathYesPath to a Delimit Seal receipt JSON file, OR (mode='a1') an A1 bundle (.a1.tar.gz). Required.
expect_merge_commitNoA1 only: the git merge-commit SHA the relying party expects. When given, verification hard-fails unless subject.merge_commit matches (anti-replay binding, spec §2.2 step 11).

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.6/5.0
Behavior5/5

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

Beyond the readOnly/idempotent/non-destructive annotations, the description states read-only side effects, calls an internal backend, discloses the lazy-import behavior ('returns verification_unavailable' if cryptography is absent), and notes there is no license gate. No contradiction with annotations.

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 well organized and front-loaded with purpose, but it is slightly repetitive: 'Free tier' and 'No license gate' say similar things, and the signature/content-pin checks are described twice. Still, each major section earns its place.

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

Completeness5/5

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

For a tool with schemas and annotations carrying the structured details, the description adds the necessary selection context, side-effect and failure-mode transparency, sibling differentiation, and mode guidance. Nothing critical is missing for correct invocation.

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 description coverage is 100%, so the schema already documents all four parameters thoroughly. The description reinforces mode='a1' context but does not add significant parameter-level meaning beyond what the schema provides; baseline 3 applies.

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 uses a specific verb and resource: verifying a Delimit Seal receipt against the bundled Layer-0 constitution, with concrete checks (content-pin, Ed25519 signature, structure). It distinguishes itself from delimit_evidence_verify by naming what this tool checks versus what the sibling checks.

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?

Explicit 'When to use' and 'When NOT to use' sections name alternatives: delimit_evidence_verify for evidence bundles and delimit_ledger for ledger queries. The mode='a1' path is also scoped with a condition, leaving no ambiguity about when this tool should be selected.

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

delimit_secret_access_logDelimit Secret Access LogA
Read-onlyIdempotent

Show the audit log of secret accesses.

When to use: for compliance review, incident investigation, or to see who/what fetched a credential. When NOT to use: to read a secret value (delimit_secret_get) or to inventory secrets (delimit_secret_list).

Sibling contrast: delimit_secret_get appends to this log; this reads it back.

Side effects: read-only. Calls ai.secrets_broker.get_access_log.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoOptional secret name to filter the log. Empty = all secrets.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, and the description reinforces the read-only side effect and names the underlying call 'ai.secrets_broker.get_access_log.' It also adds useful behavioral context by noting that delimit_secret_get appends to this log while this tool reads it back, which helps the agent understand the operational relationship.

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 well-organized with clear labeled sections: core purpose, when to use, when not to use, sibling contrast, and side effects. Every sentence contributes useful selection or invocation guidance without repetition or filler.

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

Completeness5/5

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

For a simple read-only audit-log tool with one optional parameter and an output schema, the description covers purpose, usage boundaries, sibling relationships, and side effects. It provides everything an agent needs to decide when to call it and how it behaves.

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?

The input schema already fully documents the single optional 'name' parameter with the meaning of an empty value. The description adds no new parameter-level detail, so with 100% schema coverage the baseline score of 3 is appropriate.

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 opens with a specific verb and resource: 'Show the audit log of secret accesses.' It explicitly distinguishes itself from the sibling tools delimit_secret_get and delimit_secret_list by stating what each is for, so an agent can select this tool with confidence.

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?

The description gives concrete use cases ('compliance review, incident investigation, or to see who/what fetched a credential') and explicit negative guidance ('When NOT to use: to read a secret value... or to inventory secrets...'), naming the alternative tools. This leaves no ambiguity about when the tool is appropriate.

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

delimit_secret_getDelimit Secret GetA

Request just-in-time access to a stored secret.

When to use: when a tool or agent needs a credential at execution time. The broker logs every access for audit. When NOT to use: to add a secret (use delimit_secret_store) or to examine the audit log (use delimit_secret_access_log).

Sibling contrast: delimit_secret_store writes; this reads with audit; delimit_secret_access_log shows the resulting access trail.

Side effects: appends an access log entry via ai.secrets_broker.get_secret. Does not return secrets to scopes that were not authorised at store time.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoSecret name to retrieve. Required.
toolNoName of the requesting tool (used by the broker to check scope).
agent_typeNoIdentity of the requesting agent (used by the broker to check scope).

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.7/5.0
Behavior5/5

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

The description discloses side effects beyond the annotations: it appends an access log entry via ai.secrets_broker.get_secret and does not return secrets to scopes unauthorized at store time. This is valuable behavioral context that the readOnlyHint=false and destructiveHint=false annotations alone do not provide, and it does not contradict them.

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 well-organized with clear sections: purpose, when to use, when not to use, sibling contrast, and side effects. Every sentence contributes actionable information, and the most important details are front-loaded.

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

Completeness5/5

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

For a simple 3-parameter tool with an output schema present, the description is complete. It covers purpose, usage boundaries, side effects, and authorization scope, so an agent has enough context to invoke it correctly.

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 description coverage is 100%, so the input schema already documents all three parameters. The description adds the conceptual framing of just-in-time scope checking, but it does not add parameter-level meaning beyond what the schema provides. The baseline of 3 is appropriate here.

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 opens with a specific verb and resource: 'Request just-in-time access to a stored secret.' It also explicitly contrasts with delimit_secret_store and delimit_secret_access_log, so an agent can distinguish it from sibling tools without needing to inspect their schemas.

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?

The description states exactly when to use the tool ('when a tool or agent needs a credential at execution time') and when NOT to use it, naming the alternatives: delimit_secret_store for adding secrets and delimit_secret_access_log for examining audit logs. This gives the agent explicit routing criteria.

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

_delimit_secret_implDelimit Secret ImplA

Unified secrets-broker entry point — dispatches to one of five actions.

Manages just-in-time credential access through the local Delimit secrets broker (ai.secrets_broker) instead of bare environment variables or .env files: store a credential once with an access scope, fetch it at execution time with every read recorded to an audit trail, inventory credential metadata without exposing values, revoke on rotation/leak, and read the access log.

When to use: as the single MCP-registered secrets surface (delimit_secret) when the caller wants to pick the operation by name in one call rather than choosing a specific delimit_secret_* alias. When NOT to use: from internal code paths — prefer the specific alias (delimit_secret_store, delimit_secret_get, delimit_secret_list, delimit_secret_revoke, delimit_secret_access_log) so each operation's docstring and arg schema show up at the right call site. Do not use the broker as a general key/value store — it is credential-scoped and every read is audited.

Sibling contrast: each delimit_secret_ wrapper below is a thin alias over this implementation; they exist so the action's docstring lives at the right name. This is the dispatch core. Versus delimit_context_* / delimit_memory_*: those persist plans and notes; this persists access-controlled credentials with a read audit trail.

Storage & access model: credentials are persisted to the local broker store under ~/.delimit/secrets/ (encoded at rest) and returned in cleartext to an authorized caller — the host filesystem is the trust boundary, so protect it accordingly. Scope is enforced at READ time: scope="all" permits any caller; otherwise the requester's agent_type or tool must appear in the credential's comma-separated allow-list. The access log records who/what/when and whether access was granted — it never stores the credential value, and "list" returns metadata only, never values.

Side effects (per action):

  • "store": WRITES/overwrites the credential under ~/.delimit/secrets/ with its scope and description. A same-name store overwrites silently; there is no version history.

  • "get": returns the credential value to an authorized requester and appends an access-log entry (granted true/false); on success it updates the credential's access counter / last-accessed timestamp. A scope denial, a missing name, or a revoked credential is logged and returns without a value.

  • "list": READ-ONLY. Returns credential metadata (name, scope, description, created_by, access_count, revoked, timestamps) — never values. Wrapped via _with_next_steps.

  • "revoke": WRITES a revoked flag + timestamp and appends a revoke entry to the access log; subsequent "get" calls are denied. Does NOT hard-delete the stored file.

  • "access_log": READ-ONLY. Returns the access trail (newest first), optionally filtered to one credential name. Wrapped via _with_next_steps. No action is license-gated. Errors are deterministic ({"error": "..."}): a missing required argument or an unknown action short-circuits before the backend call.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoCredential name / key. Required for "store", "get", "revoke"; optional filter for "access_log" (empty = all); ignored for "list". Sanitized for filesystem safety.
toolNoName of the requesting tool (action="get" only), checked against scope.
scopeNoComma-separated agent/tool identities permitted to read this credential, or "all" for any requester. Used only by action="store". Default "all". Enforced at read time.all
valueNoThe credential to store. Required for action="store"; ignored otherwise. Never echoed back by "store".
actionNoWhich secret operation to perform. One of "store", "get", "list", "revoke", "access_log". Default "list". Case- insensitive (lowered + stripped). Other values return a deterministic error.list
agent_typeNoIdentity of the requesting agent (action="get" only), checked against scope.
descriptionNoHuman-readable description (action="store" only). Optional but recommended; surfaces in "list" and the audit trail.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.8/5.0
Behavior5/5

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

Annotations are minimal (title only), so the description carries the full burden. It discloses per-action side effects, silent overwrites, no version history, revoke-not-delete behavior, read-only guarantees for list/access_log, audit-log behavior, scope enforcement at read time, cleartext return, filesystem trust boundary, and deterministic error handling. This is exceptionally transparent.

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 long, but it is well-structured with clear sections and every section contributes necessary detail for a five-action dispatcher. It is slightly repetitive around the alias relationship and unified entry point, but the density of useful information justifies the length.

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

Completeness5/5

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

Given the tool's complexity — seven parameters, five actions, minimal annotations, and an output schema — the description covers everything an agent needs: storage location, access control model, audit behavior, side effects, limitations, error shape, and what each action returns. Nothing essential is missing.

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

Parameters4/5

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

Schema description coverage is 100%, so the baseline is 3. The description adds value by mapping parameters to actions: name is required for store/get/revoke but only filters access_log, scope is enforced at read time, value is never echoed, and action is case-insensitive. This enriches the parameter semantics beyond the raw schema.

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 identifies a specific verb-and-resource relationship: a unified secrets-broker entry point that dispatches to five named actions (store, get, list, revoke, access_log). It clearly distinguishes itself from the delimit_secret_* aliases and from the delimit_context_* / delimit_memory_* families, so an agent can tell what this tool is and is not.

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?

There is an explicit 'When to use' and 'When NOT to use' section. It names the preferred alternatives (delimit_secret_store, delimit_secret_get, etc.) and the condition that selects them, and it warns against using the broker as a general key/value store. This is unambiguous routing guidance.

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

delimit_secret_listDelimit Secret ListA
Read-onlyIdempotent

List secrets in the broker (metadata only — never values).

When to use: to inventory what credentials are stored without exposing the values themselves. When NOT to use: to retrieve a value (use delimit_secret_get) or to add one (delimit_secret_store).

Sibling contrast: delimit_secret_get returns values (audited); this returns only metadata (name, scope, description).

Side effects: read-only. Calls ai.secrets_broker.list_secrets.

Args: None.

Returns: Dict with key "secrets" containing a list of metadata records, plus next_steps suggestions.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.7/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, so the safety profile is covered. The description adds meaningful behavioral context beyond that: it emphasizes that secret values are never exposed, states side effects as read-only, and reveals the underlying call to ai.secrets_broker.list_secrets. This is strong but not exhaustive; a 4 reflects solid added value without needing to over-credit.

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 well-structured and front-loaded: core purpose first, then usage guidance, sibling contrast, side effects, args, and returns. Every section earns its place and is concise; there is no filler or repetition.

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

Completeness5/5

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

For a read-only, zero-parameter tool with an output schema, this description is complete. It explains what the tool returns, confirms there are no arguments, clarifies side effects, and gives enough selection guidance against relevant siblings. Nothing an agent needs to invoke it correctly is missing.

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

Parameters4/5

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

The tool has zero parameters, and the description explicitly states 'Args: None,' which aligns with the empty input schema. With no parameters to document, the schema and description together fully disambiguate invocation requirements. The baseline for zero-parameter tools is 4, and nothing else is needed.

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 starts with a specific verb and resource: 'List secrets in the broker' and immediately clarifies the scope with 'metadata only — never values.' It distinguishes itself from delimit_secret_get and delimit_secret_store, making the tool's purpose unmistakable even within a very large sibling list.

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?

The description includes explicit 'When to use' and 'When NOT to use' sections, names the exact alternative tools for retrieving values and storing secrets, and adds a sibling contrast explaining the audited versus metadata-only difference. This leaves no ambiguity about tool selection.

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

delimit_secret_revokeDelimit Secret RevokeA
Destructive

Revoke a secret to prevent any future access.

When to use: after a credential leak or when rotating away from an old secret name. When NOT to use: to delete metadata only — revocation also blocks delimit_secret_get from succeeding.

Sibling contrast: delimit_secret_store creates; this disables.

Side effects: writes a revocation record via ai.secrets_broker.revoke_secret. Subsequent get calls will be denied; the access log is preserved.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoSecret name to revoke. Required.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.7/5.0
Behavior5/5

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

Beyond the destructiveHint annotation, it discloses the exact side effect: writes a revocation record via ai.secrets_broker.revoke_secret, subsequent get calls denied, and access log preserved. This is richer than the annotation and clarifies what destructive means here.

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 compact and front-loaded, then organized into labeled sections (When to use, When NOT to use, Sibling contrast, Side effects). Every sentence carries distinct information with no filler.

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

Completeness5/5

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

For a single-parameter destructive tool, the description covers use cases, exclusions, sibling relationship, side effects, and downstream behavior. An output schema exists, so return-value documentation is not required here.

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?

The only parameter is fully described in the schema ('Secret name to revoke. Required.'), so the description does not need to repeat it. It adds no extra format or behavior details beyond the schema, matching the baseline for 100% schema coverage.

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?

Opens with a specific verb and resource ('Revoke a secret to prevent any future access') and explicitly contrasts with delimit_secret_store ('creates; this disables'), which distinguishes it from the closest sibling. An agent knows exactly what this tool does.

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?

Provides explicit when-to-use conditions ('after a credential leak or when rotating away from an old secret name') and a when-NOT-to-use condition ('to delete metadata only') with a concrete consequence (blocks delimit_secret_get). It also names the creating sibling as the alternative, leaving no ambiguity about selection.

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

delimit_secret_storeDelimit Secret StoreA
Destructive

Write a credential into the Delimit secrets broker store.

When to use: when onboarding an API key, OAuth token, or other credential that one or more agents/tools will need at execution time, and you want the access scoped + audit-logged rather than sitting in an environment variable or .env file. Typical pairing: call this once at setup, then call delimit_secret_get from the consuming tool at runtime. When NOT to use: to fetch the value (use delimit_secret_get for just-in-time access with audit), to inspect which secrets exist without revealing values (delimit_secret_list), to disable an existing secret (delimit_secret_revoke), or to read the access audit trail (delimit_secret_access_log). Also: do not use this as a general-purpose key/value store — the broker is credential- scoped and the audit log will fill up with non-credential noise.

Sibling contrast: delimit_secret_store writes; delimit_secret_get reads with JIT access logging; delimit_secret_list shows metadata only (never values); delimit_secret_revoke disables; together they form the broker surface. Compared to writing a value directly to .env, this routes through a scoped, audited broker.

Side effects: invokes ai.secrets_broker.store_secret which persists the value to the broker's at-rest store. The scope field is also persisted and is enforced on every subsequent delimit_secret_get call. There is no append-only history of stored values — a re-store with the same name overwrites. No network egress and no ledger write; the audit trail is the broker's own access log (visible via delimit_secret_access_log), which records the WRITE event as well as later reads.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoSecret name (key). Required.
scopeNoComma-separated agent/tool scopes that may access this secret, or "all" to allow any. Default "all".all
valueNoSecret value (the actual credential). Required.
descriptionNoHuman-readable description for audit trails.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.8/5.0
Behavior5/5

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

The description goes well beyond the annotations, explaining that the call persists to an at-rest store, enforces scope on later reads, overwrites on re-store with no append-only history, has no network egress or ledger write, and records a WRITE event in the access log. This fully discloses side effects and gives the agent an accurate model of the operation's consequences.

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 structured into clear labeled sections (When to use, When NOT to use, Sibling contrast, Side effects) and front-loads the core purpose. There is some redundancy between the 'When to use' section and the 'Sibling contrast' paragraph, but every section still adds useful decision-relevant content, and the length is appropriate for a credential-writing tool with side effects.

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

Completeness5/5

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

Given that an output schema exists, the description does not need to document return values. It covers purpose, usage boundaries, sibling routing, parameter behavior, side effects, persistence semantics, and audit implications. An agent has everything needed to decide when to call this tool and what to expect from invoking it.

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

Parameters4/5

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

The schema already covers all four parameters at 100%, so no parameter documentation burden falls on the description. The description still adds useful meaning by emphasizing that 'value' holds the actual credential, that 'name' acts as the key subject to overwrite on re-store, and that 'scope' is persisted and enforced on subsequent delimit_secret_get calls.

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 opens with a specific verb and resource: 'Write a credential into the Delimit secrets broker store.' It clearly distinguishes this write tool from its siblings by naming what each sibling does, e.g., delimit_secret_get reads, delimit_secret_list shows metadata only, and delimit_secret_revoke disables.

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?

This is exemplary: it provides explicit 'When to use' context, a typical pairing pattern with delimit_secret_get, and a thorough 'When NOT to use' list naming each alternative tool. It even warns against using the broker as a general-purpose key/value store, which an agent otherwise might assume.

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

delimit_security_auditDelimit Security AuditA

Audit security and auto-chain evidence + governance on critical findings.

When to use: as the deploy gate / pre-release security check — combines dependency vulnerability scanning, hardcoded-secret detection, dangerous-pattern checks, and .env-tracked-in-git checks, AND automatically opens a governance task + sends a notification when critical findings are present. When NOT to use: for a baseline scanner pass without auto-chained side effects (use delimit_security_scan), to ingest an external scanner's output (delimit_security_ingest), or to triage existing findings (delimit_security_deliberate).

Sibling contrast: delimit_security_scan is the read-only baseline scanner; delimit_security_ingest accepts external tool output; delimit_security_deliberate triages findings via multi-model panel; this one runs the audit AND auto-chains evidence collection, governance task creation, and notification on criticals.

LED-1278: by default the scanner skips test directories (tests/, tests/, spec/, fixtures/, *_test.py, *.test.tsx, etc.) and suppresses well-known dummy values (AWS canonical example, alphabet-pattern GitHub tokens, leading-1234567890 Slack tokens, trivial JWTs, generic placeholder dict values). Pass include_tests=True to scan test trees too — useful for repos that ship real secrets in fixture files (rare, but legitimate).

Side effects: writes an evidence bundle (always, best-effort). On critical findings, creates a governance task via the governance engine and sends a webhook notification. Optional: SNYK_TOKEN or Trivy in the environment enable enhanced scanning.

ParametersJSON Schema
NameRequiredDescriptionDefault
targetNoRepository or file path to audit. Default "." (cwd)..
include_testsNoWhen True, scan test directories (tests/, __tests__/, spec/, fixtures/, etc.). Default False — test trees are skipped to avoid the canonical fixture-credential FP class (LED-1278).

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.8/5.0
Behavior5/5

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

The description goes well beyond the sparse annotations (readOnlyHint=false, destructiveHint=false) by disclosing concrete side effects: always writes an evidence bundle (best-effort), and on critical findings creates a governance task and sends a webhook notification. It also reveals the LED-1278 default behavior (skipping test dirs, suppressing dummy values) and the optional SNYK_TOKEN/Trivy enhancement. No contradiction with annotations — readOnlyHint=false correctly matches the disclosed 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.

Conciseness4/5

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

The description is longer than average but earns its length with clear section headers (When to use, When NOT to use, Sibling contrast, Side effects) and front-loading of the core purpose. Minor redundancy exists between the 'When NOT to use' list and the 'Sibling contrast' paragraph, but the structure keeps it scannable.

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

Completeness5/5

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

For a tool with side effects and a deploy-gate role, the description covers everything needed for correct invocation: purpose, routing, default behavior quirks, side-effect conditions, and optional environment enhancements. The output schema exists, so return-value documentation is already covered by structured data, and the two parameters are fully described.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3. The description adds value beyond the schema by explaining the LED-1278 rationale for include_tests and giving guidance on when passing include_tests=True is legitimate (repos shipping real secrets in fixtures). This contextualizes both parameters beyond their raw schema definitions.

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 opens with a specific verb+resource and the defining differentiator: 'Audit security and auto-chain evidence + governance on critical findings.' It enumerates the concrete checks performed (dependency scanning, secret detection, dangerous-pattern checks, .env-in-git) and explicitly contrasts with siblings, so an agent can identify it immediately.

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?

Has dedicated 'When to use' and 'When NOT to use' sections that name exact alternatives (delimit_security_scan, delimit_security_ingest, delimit_security_deliberate) and the conditions that select each. The sibling-contrast paragraph reinforces the routing decision. This is the ideal level of usage guidance.

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

delimit_security_deliberateDelimit Security DeliberateA

Multi-model triage of security findings (Pro).

When to use: after delimit_security_ingest has loaded findings, to classify each as real risk / false positive / accepted risk / needs immediate action. When NOT to use: to ingest the findings (use delimit_security_ingest) or to scan from scratch (delimit_security_scan).

Sibling contrast: delimit_deliberate is general-purpose multi-model consensus; this is the security-class variant scoped to findings.

Side effects: gated by require_premium. Calls multiple models via the deliberation panel. Updates ledger items with triage verdicts.

Prerequisite: requires Delimit Pro. An unlicensed call returns {"error": ..., "upgrade": "https://delimit.ai/pricing"} without running.

ParametersJSON Schema
NameRequiredDescriptionDefault
repoNoRepository context for the triage.
focusNoWhich findings to triage — "critical" (default), "high", "all".critical
findingsNoJSON string of findings to triage. Empty = pull from the ledger automatically.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.7/5.0
Behavior5/5

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

Beyond the annotations (readOnlyHint=false, destructiveHint=false), the description discloses side effects: it calls multiple models via the deliberation panel and updates ledger items with triage verdicts. It also explains the Pro prerequisite and the exact unlicensed-call error behavior, which is valuable operational context.

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 organized with clear labeled sections (When to use, When NOT to use, Sibling contrast, Side effects, Prerequisite) and no filler. Each sentence adds distinct value, from routing to side effects to failure behavior.

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

Completeness5/5

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

For a tool with no required parameters and an existing output schema, the description covers the pipeline context, safety/mutation effects, licensing constraint, and error behavior. An agent has enough to decide when to invoke it and what to expect from an unlicensed call.

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 description coverage is 100%, so the schema already documents repo, focus, and findings fully. The description does not add parameter-specific detail beyond the schema, which matches the baseline of 3 for high schema coverage.

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 opens with a specific verb phrase, 'Multi-model triage of security findings', and enumerates the classification outcomes (real risk / false positive / accepted risk / needs immediate action), so an agent knows exactly what the tool accomplishes. It also distinguishes the tool from delimit_security_ingest, delimit_security_scan, and delimit_deliberate, making it unambiguous among siblings.

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?

Explicit 'When to use' and 'When NOT to use' sections state the prerequisite pipeline step (after delimit_security_ingest) and route ingest and scan tasks to the correct siblings. The sibling contrast with delimit_deliberate further clarifies which variant to choose.

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

delimit_security_ingestDelimit Security IngestA

Ingest external security scan output and normalize into ledger findings (Pro).

When to use: after running a scanner externally — Trivy, Semgrep, npm-audit, pip-audit, Snyk, CodeQL — to feed its JSON output into Delimit's canonical schema and gate deploys on unresolved criticals. When NOT to use: to run a scan from scratch (use delimit_security_scan) or to triage findings (delimit_security_deliberate).

Sibling contrast: delimit_security_scan runs the built-in scan; delimit_security_deliberate triages findings; this is the bridge that pulls external scanner output into the same ledger.

Side effects: gated by require_premium. Writes findings to the ledger (creates new items, optionally closes resolved ones). Computes a stable fingerprint per finding to enable diffing.

Prerequisite: requires Delimit Pro. An unlicensed call returns {"error": ..., "upgrade": "https://delimit.ai/pricing"} without running.

ParametersJSON Schema
NameRequiredDescriptionDefault
repoNo"owner/repo" identifier. Empty = auto-detect.
toolYesScanner name — one of "trivy", "semgrep", "npm-audit", "pip-audit", "snyk", "codeql". Required.
resultsYesJSON string of scan results, or path to a JSON file. Required.
commit_shaNoGit SHA the scan ran against. Empty = auto-detect.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.6/5.0
Behavior5/5

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

Beyond the annotations, the description discloses concrete behavioral details: writes findings to the ledger, creates new items, optionally closes resolved ones, computes a stable fingerprint for diffing, is gated by require_premium, and returns a specific unlicensed-call error without running. This fully informs the agent of side effects and failure modes.

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 well-structured with clear sections and front-loaded purpose. It is slightly redundant, repeating the Pro/premium requirement and partially restating sibling contrast, but overall every major section earns its place and the length is justified for the tool's complexity.

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

Completeness5/5

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

Given that an output schema exists, return-value documentation is not required. The description covers when to use, when not to use, sibling alternatives, side effects, prerequisites, and unlicensed behavior. Nothing critical is missing for an agent to select and invoke this tool correctly.

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 description coverage is 100%, so the input schema already documents all four parameters thoroughly, including allowed scanner names and auto-detect behavior. The description adds useful high-level context about external scanner JSON output but does not contribute meaningfully beyond the schema for individual parameters.

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 states a specific verb and resource: 'Ingest external security scan output and normalize into ledger findings.' It immediately distinguishes itself from delimit_security_scan and delimit_security_deliberate by naming the exact bridging role it plays, making the tool's purpose unmistakable.

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?

The description provides explicit 'When to use' and 'When NOT to use' guidance, names the alternative tools (delimit_security_scan, delimit_security_deliberate), and explains the sibling contrast. An agent can reliably decide whether to call this tool or a sibling without further inference.

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

delimit_security_scanDelimit Security ScanA
Read-onlyIdempotent

Scan a repository for security vulnerabilities.

When to use: as a baseline security pass over a repo, before a deploy or a release. When NOT to use: to ingest external scan results (use delimit_security_ingest) or to triage findings (delimit_security_deliberate).

Sibling contrast: delimit_security_ingest accepts external scanner output; delimit_security_deliberate triages findings; this is the built-in scan.

Side effects: read-only on the target. Calls backends.repo_bridge.security_scan.

ParametersJSON Schema
NameRequiredDescriptionDefault
targetNoRepository or file path. Default "." (cwd)..

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false. The description adds useful behavioral context by stating 'Side effects: read-only on the target' and revealing the internal backend call, which goes beyond the structured annotations without contradicting them.

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 well-structured with clear headings, front-loads the core purpose, and every sentence adds value. It covers usage, exclusions, sibling contrast, and side effects without unnecessary repetition.

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

Completeness5/5

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

Given the simple single-parameter schema, full parameter documentation, robust annotations (read-only, idempotent, non-destructive), and the presence of an output schema, the description covers all necessary context. It clearly explains when to use this tool versus its security-focused siblings.

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 description coverage is 100%, so the schema fully documents the single 'target' parameter. The description adds no extra parameter meaning, but with full schema coverage and a simple optional parameter, the baseline of 3 is appropriate.

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 states a specific verb and resource: 'Scan a repository for security vulnerabilities.' It also explicitly contrasts itself with sibling tools, distinguishing this built-in scan from ingest and triage tools, so an agent can tell them apart immediately.

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?

The description provides explicit when-to-use guidance (baseline security pass before deploy/release), when-not-to-use guidance (don't ingest external results or triage findings), and names the alternative sibling tools. This fully routes the agent to the correct tool.

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

delimit_self_repair_daemonDelimit Self Repair DaemonA
Idempotent

Control the self-repair watcher daemon (LED-191, internal).

When to use: to start, stop, or inspect the watcher that polls function KPIs and emits founder alerts on breaches. When NOT to use: for general daemon status (use delimit_daemon_status) or inbox / social daemons (delimit_inbox_daemon, delimit_social_daemon).

Sibling contrast: delimit_daemon_status is the autonomous loop's daemon; this is the KPI-watcher daemon. Different processes.

Side effects: action="start" / "stop" mutate daemon state. Idempotent start. Circuit-breakered stop after 3 consecutive pass failures. Honors DELIMIT_SELF_REPAIR_PAUSE=1 at every pass without requiring a daemon restart. Higher modes (diagnose / deliberate / apply / verify) chain through the watcher when configured per function in ~/.delimit/self_repair.yaml.

ParametersJSON Schema
NameRequiredDescriptionDefault
actionNo'start' (begin polling), 'stop' (halt polling), 'status' (running / last_pass / breaches_emitted / consecutive_failures).status

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.8/5.0
Behavior5/5

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

Annotations already set readOnlyHint=false and idempotentHint=true, and description adds matching detail: start/stop mutate state, idempotent start, circuit-breakered stop, environment-pause behavior, and mode chaining. It also mentions config path. No contradiction with annotations.

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?

Well structured with labeled sections and front-loaded purpose; all sentences contribute, but it is denser/longer than strictly necessary and could be trimmed without losing key info.

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

Completeness5/5

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

Complete for a one-parameter control tool: covers when, when not, alternatives, side effects, env var, and config path; output schema exists so return values need no description.

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

Parameters4/5

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

Schema covers action with 100% coverage; description adds operational consequences for parameter values: start/stop mutate daemon state, idempotent start, circuit-breakered stop. This is beyond schema's 'begin polling'/'halt polling', though status output is only in schema.

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 states a specific verb+resource: control the self-repair watcher daemon, with explicit actions start/stop/inspect and object (KPI watcher emitting founder alerts on breaches). It distinguishes from siblings by naming delimit_daemon_status, inbox/social daemons and noting different processes.

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?

Explicit when-to-use and when-not-to-use sections; names alternative tools (delimit_daemon_status, delimit_inbox_daemon, delimit_social_daemon) and clarifies the sibling contrast. No inference required.

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

delimit_semverDelimit SemverA
Read-onlyIdempotent

Classify a spec change's semver bump (MAJOR/MINOR/PATCH/NONE).

When to use: to deterministically pick the version bump for an API spec change, optionally computing the next version string. When NOT to use: for full lint with policy (use delimit_lint) or a plain change list (delimit_diff).

Sibling contrast: delimit_diff lists changes; delimit_lint adds policy; this maps the diff to a semver verdict only.

Side effects: read-only. Calls backends.gateway_core.run_semver (deterministic classification on top of the diff engine output).

ParametersJSON Schema
NameRequiredDescriptionDefault
new_specYesPath to the proposed OpenAPI spec file. Required.
old_specYesPath to the baseline OpenAPI spec file. Required.
current_versionNoOptional version string (e.g. "1.2.3") to compute the next version. Default None = no next computed.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already cover read-only/idempotent/non-destructive behavior, and the description reinforces this with 'Side effects: read-only' while adding new context: it calls backends.gateway_core.run_semver and is deterministic on top of the diff engine output. This goes beyond the annotation metadata without contradicting it.

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?

Every section earns its place: core purpose, usage guidance, sibling contrast, and side effects are all compact and front-loaded. The use of short headings makes it easy to scan without any padding or repetition.

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

Completeness5/5

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

For a tool with full parameter documentation and an output schema, the description covers all selection-relevant context: what it returns, when to use it, when not to, how it relates to siblings, and side-effect behavior. Nothing an agent needs to pick or invoke this tool correctly is missing.

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 description coverage is 100%, so the schema already documents old_spec/new_spec as required paths and current_version as optional. The description's mention of 'optionally computing the next version string' mirrors the schema and adds no new parameter-level detail. Baseline 3 is appropriate when the schema does the heavy lifting.

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?

Opens with a specific verb-resource pair—'Classify a spec change's semver bump'—and names the exact output enum (MAJOR/MINOR/PATCH/NONE), so an agent knows exactly what the tool produces. It also explicitly contrasts itself with delimit_diff and delimit_lint, making sibling differentiation clear.

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?

Has explicit 'When to use' and 'When NOT to use' sections that name delimit_lint and delimit_diff as alternatives. The sibling contrast line further clarifies the boundary: this maps a diff to a semver verdict only, while siblings list changes or add policy.

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

delimit_senseDelimit SenseA

Review and manage the signal corpus (LED-877).

When to use: to inspect, cluster, or explicitly promote sensed signals into ledger items. Signals live separately from the ledger so noise doesn't pollute it. When NOT to use: to fetch new signals (use the platform-specific sensors like delimit_reddit_scan / delimit_github_scan) or write ledger items directly (delimit_ledger_add).

Sibling contrast: platform sensors capture; this manages the captured corpus and bridges it into the ledger.

Side effects: "promote" writes a new ledger item (via the ledger manager). "freeze" cold-archives a month of signals. "query", "digest", "show", "status" are read-only against ~/.delimit/intel/signals/.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax rows for query. Default 50.
monthNoYYYY-MM string for "freeze".
actionNoOne of "query" (default), "digest", "show", "promote", "freeze", "status".query
ledgerNoTarget ledger for promote — "ops" (default) or "strategy".ops
platformNoFilter source platform — "reddit", "x", "github", "hn". Empty = all.
priorityNoPriority for promoted item — "P0", "P1", "P2".P2
signal_idNoSIG-XXXX id for "show" / "promote".
since_daysNoLookback window in days (query/digest). Default 1.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.6/5.0
Behavior5/5

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

Annotations only say readOnlyHint=false and destructiveHint=false, which are coarse. The description adds crucial per-action side effects: 'promote' writes a ledger item, 'freeze' cold-archives a month, and 'query', 'digest', 'show', 'status' are read-only. It also names the storage path, giving the agent a realistic behavioral model beyond the annotations.

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 well-structured with labeled sections and front-loaded purpose. It is slightly longer than strictly necessary because 'Sibling contrast' partially repeats the 'When NOT to use' content, but every section contributes useful decision and side-effect information.

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

Completeness5/5

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

For a multi-action tool with eight optional parameters and an output schema, the description covers the corpus boundary, when to use it, when not to use it, alternatives, side effects, and read-only vs write actions. Combined with the fully documented schema, nothing essential is missing for correct selection and invocation.

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?

Input schema coverage is 100% and each parameter already has a clear description with defaults and allowed values. The tool description doesn't add parameter-level detail beyond the schema, so the baseline 3 applies.

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?

States a specific verb and resource: 'review and manage the signal corpus (LED-877).' It clearly distinguishes this tool from platform sensors and ledger write tools by naming them directly, so an agent can tell it apart from delimit_reddit_scan, delimit_github_scan, and delimit_ledger_add.

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?

Provides explicit 'When to use' and 'When NOT to use' guidance, names the exact alternative tools for each excluded case, and adds a sibling contrast sentence that captures the boundary: sensors capture; this manages. An agent has clear decision criteria for selecting this tool versus alternatives.

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

delimit_sensor_github_issueDelimit Sensor Github IssueA
Read-onlyIdempotent

Check a GitHub issue for new comments since the last sensor tick.

When to use: to monitor a specific outreach / tracking issue for new activity, returning a structured signal for routing. When NOT to use: for repo-wide scans (use delimit_github_scan) or one-shot fetch (delimit_resource_get).

Sibling contrast: delimit_github_scan scans many repos for migrations; this watches one issue for new comments.

Side effects: read-only network call via gh CLI. Validates repo format with regex (defense-in-depth). Subject to the confused-deputy guard (_check_repo_allowlist) before fetching.

ParametersJSON Schema
NameRequiredDescriptionDefault
repoYes"owner/repo" GitHub repository. Required.
issue_numberYesIssue number to monitor. Must be > 0.
since_comment_idNoLast seen comment id. 0 = all comments.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.7/5.0
Behavior5/5

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

Annotations already declare readOnlyHint=true and idempotentHint=true, and the description reinforces this by stating 'read-only network call via gh CLI.' It adds valuable context beyond the annotations: the regex repo-format validation (defense-in-depth) and the confused-deputy guard (_check_repo_allowlist) that can block the call before fetching. This is genuinely useful failure-mode disclosure.

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?

Compact and efficiently organized: one-line purpose, then labeled sections for when-to-use, when-not-to-use, sibling contrast, and side effects. Every sentence earns its place and the most decision-critical information (purpose, exclusions) is front-loaded.

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

Completeness5/5

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

Complete for a monitored-read tool. An output schema exists to document return values, annotations cover the safety profile, and the description covers usage boundaries, side effects, validation behavior, and the allowlist guard. Nothing an agent needs to call or route this tool correctly is missing.

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 description coverage is 100%, so the baseline is 3. The description's 'since the last sensor tick' framing gives conceptual meaning to since_comment_id (incremental monitoring), but it does not add concrete parameter-level detail beyond what the schema already documents for repo, issue_number, or since_comment_id. The schema carries the weight here, which is acceptable.

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 opens with a specific verb+resource+scope construction: 'Check a GitHub issue for new comments since the last sensor tick.' It names both alternatives it is not (delimit_github_scan for repo-wide scans, delimit_resource_get for one-shot fetch), making sibling differentiation explicit and immediate.

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?

Provides explicit 'When to use' and 'When NOT to use' sections with concrete alternative tool names and the conditions that select them. Also adds a sibling contrast paragraph specifically distinguishing this tool from delimit_github_scan. No inference is required by the agent.

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

delimit_sensor_github_migrationsDelimit Sensor Github MigrationsA
Read-onlyIdempotent

Scan GitHub issues/PRs for migration patterns across target repos.

When to use: for competitive intelligence — surface where target repos are migrating between tools (e.g. "switched from X to Y", "replaced X with Y") so the sensing function can act on the signal. When NOT to use: for general sensing/outreach research (use delimit_sense), to pull single-issue intel (delimit_sensor_github_issue), or for broad public-repo polling (delimit_github_scan).

Sibling contrast: delimit_sensor_github_issue tracks a specific issue's state; delimit_github_scan does broad public-repo polling; delimit_sense is the high-level sensing entrypoint; this one detects migration-pattern language specifically.

Side effects: read-only on the target repos via GitHub API. Enforces the per-repo allowlist (LED-881 confused-deputy guard) — refuses non-allowlisted repos. Calls ai.social_target.scan_github_migrations.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax migration signals per repo. Default 20.
reposYesList of GitHub repos in owner/repo format (e.g. ["chatwoot/chatwoot", "cal-com/cal.com"]). Required.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.7/5.0
Behavior5/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, and the description adds meaningful behavioral context: it is read-only via the GitHub API, enforces a per-repo allowlist with the LED-881 confused-deputy guard, refuses non-allowlisted repos, and calls ai.social_target.scan_github_migrations. This goes well beyond the structured annotations.

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 well-organized with scannable sections: a front-loaded purpose sentence, explicit usage guidance, sibling contrast, and side effects. Every section earns its place and adds actionable context without fluff.

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

Completeness5/5

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

Given a high-coverage schema, an output schema, and only two parameters, the description is fully complete. It covers purpose, usage boundaries, sibling differentiation, side effects, allowlist constraints, and internal delegation, so an agent has everything needed to call it correctly.

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 description coverage is 100%, so the input schema already documents the repos and limit parameters fully. The description mentions scanning target repos and migration signals, but it does not add parameter-level detail beyond what the schema provides. Baseline 3 is appropriate here.

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 states a specific verb, resource, and scope: 'Scan GitHub issues/PRs for migration patterns across target repos.' It further distinguishes itself from sibling tools by name, so an agent can tell it apart from delimit_sensor_github_issue, delimit_github_scan, and delimit_sense without opening schemas.

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?

The description explicitly provides 'When to use' and 'When NOT to use' conditions, including named alternatives such as delimit_sense, delimit_sensor_github_issue, and delimit_github_scan. This gives clear routing guidance and leaves no ambiguity about selection.

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

delimit_session_handoffDelimit Session HandoffA

Save a session summary for cross-session continuity.

When to use: at the end of a productive session, to leave a structured record the next session can recover. When NOT to use: for richer cross-model state (use delimit_soul_capture, which auto-detects more) or single-line memory (delimit_memory_store).

Sibling contrast: delimit_soul_capture writes a richer "soul" with git state; this writes a structured handoff with explicit fields.

Side effects: writes a handoff record via ai.ledger_manager.session_handoff. Coerces list inputs from comma strings via _coerce_list_arg. LED-3731: also refreshes a lightweight pointer-soul for project_path (default = cwd) so the NEXT delimit_revive for that project returns THIS handoff's state rather than a stale older soul.

ParametersJSON Schema
NameRequiredDescriptionDefault
summaryYes2-3 sentence summary of the session. Required.
ventureNoVenture context. Empty = auto-detect.
blockersNoWhat's blocked and why.
items_addedNoNewly added item ids as list or comma string.
project_pathNoProject path whose revive soul this handoff should refresh. Empty = auto-detect from cwd.
files_changedNoKey files that were modified.
key_decisionsNoKey decisions or consensus results.
items_completedNoCompleted ledger item ids (e.g. ["LED-164"]) as list or comma string.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.6/5.0
Behavior5/5

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

Goes well beyond the annotations by describing side effects: writes a handoff record via ai.ledger_manager.session_handoff, coerces list inputs from comma strings, and refreshes a pointer-soul for project_path which affects future delimit_revive behavior. This discloses meaningful state-changing behavior beyond what readOnlyHint/destructiveHint convey.

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 longer than average but logically structured with a lead sentence, usage guidance, sibling contrast, and side effects. The internal ticket reference (LED-3731) adds minor noise, but every major section earns its place and the core action is front-loaded.

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

Completeness5/5

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

For an 8-parameter tool with an output schema, complete schema coverage, and clear annotations, this description covers the action, alternatives, side effects, and downstream behavioral implications. Nothing needed for correct invocation or sibling differentiation is missing.

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 description coverage is 100%, so detailed per-parameter semantics already exist in the schema. The description adds useful context about comma-string coercion and project_path default behavior, but these are also partially implied by the schema and do not fundamentally compensate for missing schema info.

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 states a specific action ('Save a session summary') with a clear resource and purpose (cross-session continuity). It also distinguishes the tool from siblings by explicitly contrasting it with delimit_soul_capture and delimit_memory_store.

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?

Provides explicit 'When to use' and 'When NOT to use' guidance, including named alternatives (delimit_soul_capture, delimit_memory_store) and the conditions that would select each. This gives the agent directly actionable routing information.

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

delimit_session_historyDelimit Session HistoryA
Read-onlyIdempotent

Load recent session handoffs for context recovery.

When to use: at session start to see what previous sessions left — items completed, key decisions, blockers from the last N runs. When NOT to use: to write a handoff (use delimit_session_handoff) or for richer cross-model state (delimit_revive).

Sibling contrast: delimit_session_handoff writes; delimit_revive reads soul state; this reads structured handoffs.

Side effects: read-only. Calls ai.ledger_manager.session_history.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoNumber of recent sessions to return. Default 5.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/non-destructive, and the description reinforces this with 'Side effects: read-only' while adding the implementation target (ai.ledger_manager.session_history) and what the recovered content consists of. It stops short of describing edge cases or empty-state behavior, so not a 5.

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 front-loaded with a one-sentence summary followed by clearly labeled sections for usage, exclusions, sibling contrast, and side effects. Every line earns its place; there is no filler or repetition of the title.

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

Completeness5/5

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

For a simple read-only tool with one optional parameter, an output schema, and annotations covering safety, the description covers selection context, usage timing, sibling distinctions, and side effects. Nothing needed for correct invocation is missing.

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 100% and the only parameter, limit, is already documented in the schema with its default. The description's 'last N runs' is largely a restatement of 'recent sessions' and adds no new constraints such as minimum/maximum values or ordering rules.

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 opens with a specific action and resource: 'Load recent session handoffs for context recovery.' It then contrasts itself with siblings (delimit_session_handoff writes, delimit_revive reads soul state), making its role unmistakable.

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?

It provides an explicit 'When to use' section (session start, to recover completed items, decisions, blockers) and an explicit 'When NOT to use' section naming the correct alternatives. This removes ambiguity for an agent selecting between read and write handoff tools.

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

delimit_siemDelimit SiemA

Manage SIEM streaming for audit-event forwarding (Splunk/Datadog/etc.).

When to use: to inspect or configure where Delimit's audit events stream — Splunk, Datadog, EventBridge, generic webhooks. When NOT to use: for one-shot notifications (use delimit_notify) or inbox handling (delimit_notify_inbox).

Sibling contrast: delimit_notify sends to humans; this configures structured-log streaming to SIEM endpoints.

Side effects: action="configure" / "forward" / "test" write to the configured SIEM endpoints (network calls). action="status" is read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
eventNoJSON string of an event (for forward / test).
actionNoOne of "status" (default), "configure", "test", "forward".status
enabledNo"true" or "false" (for configure).
settingsNoJSON string of settings (for configure).
integrationNoOne of "splunk", "datadog", "eventbridge", "webhook" (for configure).

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.7/5.0
Behavior5/5

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

The description explicitly discloses action-dependent side effects: configure/forward/test write to SIEM endpoints via network calls, while status is read-only. This adds behavior beyond the readOnlyHint=false annotation and gives the agent a clear safety/impact model.

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 front-loaded with the core purpose and uses labeled sections for use, exclusion, sibling contrast, and side effects. It is compact with no redundant sentences.

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

Completeness5/5

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

Given the output schema exists, the rich schema descriptions for all 5 optional parameters, and the annotations, the description covers purpose, exclusions, alternative tools, and side effects. Nothing critical for an agent to select and invoke the tool correctly is missing.

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 description coverage is 100% and each parameter is already documented in the input schema. The description reinforces that actions have side effects but does not add new parameter-level semantics beyond what the schema provides, so baseline 3 is appropriate.

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?

States a specific verb and resource: managing SIEM streaming for audit-event forwarding, naming Splunk/Datadog/EventBridge/webhooks. It also differentiates itself from delimit_notify and delimit_notify_inbox, so an agent can distinguish it from nearby siblings.

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?

Gives explicit 'When to use' and 'When NOT to use' guidance with named alternatives (delimit_notify for one-shot notifications, delimit_notify_inbox for inbox handling). The sibling contrast further clarifies when this tool is the right choice: structured-log streaming vs human notifications.

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

delimit_social_accountsDelimit Social AccountsA
Read-onlyIdempotent

List configured social media accounts.

When to use: to inventory which Twitter/X accounts have credentials available before drafting or scheduling a post. When NOT to use: to draft content (use delimit_social_generate) or publish (delimit_social_post).

Sibling contrast: delimit_social_generate drafts; delimit_social_post publishes; this lists who can publish.

Side effects: read-only. Calls ai.social.list_twitter_accounts, which scans ~/.delimit/secrets/twitter-.json files.

Args: None.

Returns: Dict with "accounts" list and "count" plus next_steps.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.7/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and idempotentHint=true, covering the safety profile. The description adds meaningful context beyond that: 'Calls ai.social.list_twitter_accounts, which scans ~/.delimit/secrets/twitter-<handle>.json files.' This discloses the data source and underlying implementation, letting the agent infer scope (only locally configured accounts) and potential failure modes (missing secret files). It doesn't dwell on edge cases, but it adds real value beyond annotations.

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 uses labeled sections (When to use, When NOT to use, Sibling contrast, Side effects, Args, Returns) that make it scannable and every section earns its place. The opening line states the core purpose, and nothing is redundant or padded. This is an exemplary structure for an MCP tool description.

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

Completeness5/5

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

For a zero-parameter read-only tool, the description covers everything an agent needs: purpose, usage timing, sibling routing, side effects, underlying data source, the fact that there are no arguments, and the return shape ('Dict with accounts list and count plus next_steps'). The output schema exists and the description confirms the return format. Nothing material is missing.

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

Parameters4/5

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

The tool has zero parameters, which carries a baseline of 4 per the rubric. The description explicitly states 'Args: None,' which is genuinely useful — it prevents an agent from hallucinating optional parameters like a platform filter or handle argument that the tool does not accept.

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 opens with a specific verb and resource — 'List configured social media accounts' — and then explicitly differentiates itself from siblings: 'delimit_social_generate drafts; delimit_social_post publishes; this lists who can publish.' An agent can immediately tell exactly what this tool does and how it differs from its direct siblings without opening any schema.

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?

The description provides an explicit 'When to use' section ('to inventory which Twitter/X accounts have credentials available before drafting or scheduling a post') and a 'When NOT to use' section naming the exact alternatives (delimit_social_generate for drafting, delimit_social_post for publishing). This is textbook usage guidance — the condition and the routing are both explicit.

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

delimit_social_approveDelimit Social ApproveA

Manage social media drafts — list, approve, reject (Pro).

When to use: to clear the social drafts queue created by delimit_social_post(draft=True). When NOT to use: to draft (use delimit_social_post(draft=True)) or inspect history (delimit_social_history).

Sibling contrast: delimit_social_post creates the draft; this lists / approves / rejects them.

Side effects: action="approve" actually posts via the social backend (network write). action="reject" discards. action="list" is read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
actionNo"list" (default), "approve", or "reject".list
draft_idNoRequired for approve / reject. Returned by delimit_social_post(draft=True).

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.7/5.0
Behavior5/5

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

The description goes well beyond the annotations by disclosing action-dependent side effects: approve performs a network write, reject discards the draft, and list is read-only. This is especially valuable because the tool-level annotations (readOnlyHint=false, destructiveHint=false) cannot express per-action behavior.

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 compact, well-organized, and front-loaded with the core purpose before structured guidance sections. Each sentence earns its place: when to use, when not to use, sibling contrast, and side effects. The minor repetition about delimit_social_post reinforces rather than bloats the message.

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

Completeness5/5

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

For a tool with mixed read/write/discard actions, the description covers all essential contexts: queue origin, alternative tools, per-action side effects, and the source of the required draft_id. Because an output schema exists, the absence of return-value details is acceptable.

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 description coverage is 100%, so the input schema already documents both parameters, including that draft_id is required for approve/reject and is returned by delimit_social_post(draft=True). The tool description adds little parameter-level meaning beyond the schema, so the baseline score of 3 is appropriate.

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 opens with a specific verb-plus-resource statement: 'Manage social media drafts — list, approve, reject'. It enumerates the exact operations, making the tool's scope immediately clear. It also distinguishes itself from siblings by explicitly contrasting with delimit_social_post, which creates the drafts.

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?

The description provides explicit when-to-use guidance ('to clear the social drafts queue created by delimit_social_post(draft=True)') and when-not-to-use guidance by naming delimit_social_post and delimit_social_history as alternatives. This leaves no ambiguity about when the agent should select this tool over its siblings.

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

delimit_social_daemonDelimit Social DaemonA

Control the social sensing daemon (Pro).

When to use: to start, stop, or inspect the autonomous social discovery daemon that scans Reddit/X/HN every 15 min. When NOT to use: to run a one-shot scan (use delimit_social_target) or read the inbox (delimit_notify_inbox).

Sibling contrast: delimit_social_target is one-shot; this controls the long-running daemon.

Side effects: action="start" / "stop" mutate daemon state. The daemon scans, deduplicates, and emits HTML draft emails. Calls ai.social_daemon.{start_daemon, stop_daemon, get_daemon_status}.

ParametersJSON Schema
NameRequiredDescriptionDefault
actionNo"start", "stop", or "status" (default).status

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.9/5.0
Behavior5/5

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

Annotations only provide readOnlyHint=false and destructiveHint=false, but the description adds substantive behavioral context: start/stop mutate daemon state, the daemon autonomously scans/deduplicates and emits HTML draft emails, and it maps to ai.social_daemon.{start_daemon, stop_daemon, get_daemon_status}. This goes well beyond the annotation flags and does not contradict them.

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?

Every labeled section earns its place: when-to-use, when-not-to-use, sibling contrast, side effects, and internal method mapping. Despite being detailed, the description is scannable, front-loaded, and contains no filler.

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

Completeness5/5

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

For a one-parameter tool with an output schema, this is complete: action semantics are clear, exclusions are explicit, side effects are disclosed, and sibling tools are referenced. An agent has everything needed to select and invoke it correctly.

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

Parameters4/5

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

Schema coverage is 100%, so the action parameter is already documented; the description still adds value by tying 'status' to inspection and noting that 'start'/'stop' mutate daemon state. The internal method mapping provides extra semantic grounding for the parameter values.

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 opens with a specific verb and resource, 'Control the social sensing daemon (Pro)', and enumerates the supported start/stop/inspect operations within an explicit every-15-min scanning scope. It also differentiates itself from delimit_social_target as the one-shot alternative, so an agent can tell them apart without opening the schema.

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?

Contains explicit 'When to use' and 'When NOT to use' sections that name delimit_social_target for one-shot scans and delimit_notify_inbox for inbox reads. The sibling-contrast line further reinforces the long-running daemon versus one-shot boundary, leaving no ambiguity about when to invoke this tool.

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

delimit_social_generateDelimit Social GenerateA
Read-onlyIdempotent

Generate a social media post draft (no posting) (Pro).

When to use: to draft a tweet for review before manual or automated posting. When NOT to use: to actually publish (use delimit_social_post or delimit_content_publish) or to manage targets (delimit_social_target_config).

Sibling contrast: delimit_social_post publishes a draft; this only generates one.

Side effects: read-only / draft. Calls ai.social.generate_post.

ParametersJSON Schema
NameRequiredDescriptionDefault
categoryNoPost category — "tip" (default), "changelog", "insight", or "engagement".tip

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false. The description adds useful behavioral context beyond that: it only creates a draft, never publishes, and calls ai.social.generate_post. This meaningfully supplements the annotations without contradicting them.

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 compact, well-structured, and front-loaded with the core purpose before diving into usage guidance. Every sentence provides useful information with no redundancy.

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

Completeness5/5

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

The tool is simple, has only one optional parameter, and has an output schema. Annotations cover safety semantics, and the description covers purpose, usage boundaries, sibling contrast, and side effects. Nothing critical is missing for an agent to invoke it correctly.

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 description coverage is 100%, and the single optional category parameter is already fully documented in the schema. The description does not add parameter-level detail, but it does not need to because the schema carries the weight.

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 generates a social media post draft without posting, which is a specific verb and resource. It also distinguishes itself from delimit_social_post and delimit_content_publish, so an agent can tell them apart immediately.

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?

The description explicitly says when to use it (drafting a tweet for review) and when NOT to use it (publishing, managing targets), and names the alternative tools. This leaves no ambiguity about tool selection.

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

delimit_social_historyDelimit Social HistoryA
Read-onlyIdempotent

View recent social media post history (Pro).

When to use: to recall prior posts/comments for context when drafting follow-ups or DM replies — Reddit entries include thread context. When NOT to use: to draft new posts (use delimit_social_generate) or scan targets (delimit_social_target).

Sibling contrast: delimit_social_generate drafts; delimit_social_post publishes; this reads what was already posted.

Side effects: read-only. Calls ai.social.get_post_history.

ParametersJSON Schema
NameRequiredDescriptionDefault
userNoFilter by Reddit user we interacted with (e.g. "coolinjapan001").
limitNoMax entries to return. Default 20.
platformNoFilter by "twitter" or "reddit". Empty = all.
subredditNoFilter by subreddit (e.g. "r/vibecoding").

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, so the safety profile is covered. The description adds value beyond annotations by revealing the underlying call (ai.social.get_post_history), explicitly stating 'Side effects: read-only,' and noting that Reddit entries include thread context. This is useful behavioral context, though it could go further with pagination or filtering details.

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 well-structured with short labeled sections (When to use, When NOT to use, Sibling contrast, Side effects) that make scanning easy. Every sentence carries functional information, with no filler or redundant restatements of the title. It is dense but appropriately sized for the amount of guidance it provides.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers purpose, usage conditions, exclusions, sibling relationships, and side effects. With a 100% documented schema and an output schema present, nothing essential for correct invocation is missing. The note about thread context also prepares the agent for the shape of returned Reddit entries. The tool is fully contextualized.

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 description coverage is 100%, and all four parameters have clear descriptions in the schema. The tool description does not add parameter-level meaning beyond what the schema already provides, so the baseline of 3 applies. No parameter explanation is missing, but the description contributes no extra semantic enrichment.

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 opens with a specific verb and resource: 'View recent social media post history.' It also explicitly differentiates from siblings by stating 'this reads what was already posted,' making it unmistakably distinct from delimit_social_generate and delimit_social_post. The purpose is fully clear.

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?

The description provides an explicit 'When to use' section with concrete use cases (recalling prior posts/comments for follow-ups and DM replies) and an explicit 'When NOT to use' section naming delimit_social_generate and delimit_social_target. The sibling contrast further clarifies role boundaries, leaving no ambiguity about when to select this tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

delimit_social_postDelimit Social PostA

Post to social media (Twitter / Reddit) (Pro).

When to use: when the AI drafts a social post, it MUST call this immediately (auto-trigger rule). Email approval flow handles human review. When NOT to use: just to generate (use delimit_social_generate) or to inspect history (delimit_social_history).

Sibling contrast: delimit_social_generate is draft-only; delimit_social_approve manages the queue; this is the actual post path.

Side effects: when draft=True, queues for delimit_social_approve. Otherwise posts via the social backend. Subject to rate cap: 2 original posts per hour, 24 per day (founder-approved 2026-04-30). Override via DELIMIT_HOURLY_TWEETS / DELIMIT_DAILY_TWEETS env. Sends approval email with the registry_draft_id for inbox-daemon matching.

IMPORTANT - AUTO-TRIGGER RULE: When the AI drafts a social post, it MUST call this tool immediately. Never ask "want me to send this?" — just call the tool. The email-based approval flow handles human review.

Categories: tip, changelog, insight, engagement. Leave text empty to auto-generate from templates. Every post provides value - tips, insights, governance wisdom. Rate cap: 2 original posts per hour, 24 per day (founder-approved 2026-04-30). Override via DELIMIT_HOURLY_TWEETS / DELIMIT_DAILY_TWEETS.

IMPORTANT - Platform tone rules (these are DIFFERENT per platform):

  • Twitter: confident technical brand. Direct, professional, ALWAYS POSITIVE. Celebrate wins and progress. Never complain or air gaps publicly. No em dashes or en dashes. Default to insight-first with no CTA unless source-grounded.

  • Reddit: helpful builder voice. Grounded, concise, never salesy. Default to no Delimit mention unless directly necessary and source-grounded. NO bullet points/lists/bold/em dashes. 2-3 sentences max.

  • LinkedIn: professional hook + insight + CTA

ParametersJSON Schema
NameRequiredDescriptionDefault
textNoTweet text. Leave empty to auto-generate.
draftNoIf True, save as draft for approval instead of posting immediately.
accountNoTwitter handle (without @) to post from. Empty = default account.
contextNoWHY this post should be made. Strategic reasoning shown in the approval email.
categoryNoContent category for auto-generation.
platformNoSocial platform (twitter).twitter
reply_to_idNoTweet ID to reply to (creates a reply).
quote_tweet_idNoTweet ID to quote (creates a quote tweet).

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Discloses side effects (queuing when draft=True, immediate posting otherwise), rate caps with environment overrides, and approval-email behavior with registry_draft_id. Annotations only say readOnlyHint=false and destructiveHint=false, so the description adds substantial operational context. It does not contradict the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with headers and bullets, but it is overlong and repeats the rate cap and auto-trigger rule nearly verbatim. A leaner version would be easier to consume, though the key information is front-loaded.

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?

Covers when to use, when not to use, side effects, approval flow, rate caps, categories, and per-platform tone. The only material gap is the platform inconsistency between the prose ('Twitter / Reddit', LinkedIn rules) and the schema's twitter-only platform parameter; otherwise an agent has enough to invoke correctly.

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?

The input schema already covers all 8 parameters at 100%, so the baseline is 3. The description adds useful category values and auto-generation behavior, but its platform guidance (Reddit/LinkedIn tone rules) conflicts with the schema's platform parameter description ('Social platform (twitter)'), which keeps it from rising above baseline.

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?

Opens with 'Post to social media (Twitter / Reddit) (Pro)' — a specific verb and resource — and immediately contrasts with delimit_social_generate and delimit_social_history, so an agent can tell this is the actual posting tool. The sibling contrast removes ambiguity about what this tool is not.

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?

Contains dedicated 'When to use' and 'When NOT to use' sections, names the alternatives (delimit_social_generate, delimit_social_history, delimit_social_approve), and encodes an explicit auto-trigger rule. This is unambiguous routing guidance beyond anything the schema provides.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

delimit_social_targetDelimit Social TargetA

Scan platforms for demand signals / engagement opportunities (Pro).

When to use: mode="demand_signal" (recommended under SHIFT-1) to research which topics/repos show API-governance / breaking-change pain and feed the INTERNAL report-topic backlog — the input to choosing the next public worked-example report. mode="engagement" (legacy) finds posts a venture could engage with. When NOT to use: to fetch one X tweet (use delimit_x_fetch) or drafts (delimit_social_generate).

Sibling contrast: delimit_social_target_config configures which platforms to scan; delimit_x_fetch is single-tweet; this is the multi-platform scanner.

Side effects: read-only network scans by default. With mode="demand_signal" (LED-3729) scored results are written to the local report-topic backlog — an internal research list, NOT outbound; nothing is posted or contacted. With draft_replies=True, calls delimit_social_post(draft=True) for "reply" targets. With create_ledger=True, calls delimit_ledger_add for "strategic" targets. Deduplicates across runs.

SHIFT-1 NOTE (LED-3729): under the anonymity constitution, brand-account reply/DM prospecting is forbidden, so engagement targets are mostly un-actionable. Prefer mode="demand_signal": a "target" becomes a demonstrated public question/pain to answer with a BROADCAST report, not a person to contact. The produced artifact is a public report — squarely in-bounds. Do NOT chain scan results into outbound replies.

Scans X, Reddit (RapidAPI), HN, Dev.to, GitHub. NamePros flagged as manual_check_needed (no API). Run in a /loop for continuous discovery.

ParametersJSON Schema
NameRequiredDescriptionDefault
modeNo"engagement" (default, legacy behavior) or "demand_signal" to route scan results into the INTERNAL report-topic backlog instead of drafting outbound. LED-3729.engagement
limitNoMax targets per platform.
actionNo"scan" to discover targets, "list" to show recent, "stats" to show counts, "backlog" to show the report-topic backlog.scan
keywordsNoExtra keywords to search for beyond venture topics.
venturesNoComma-separated ventures to scan for. Empty = all.
platformsNoComma-separated platforms to scan (x, hn, devto, reddit, github, namepros).x,hn,devto,reddit,github
create_ledgerNoIf True, create ledger items for "strategic" targets.
draft_repliesNoIf True, auto-draft social posts for "reply" targets.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the sparse annotations, the description discloses default read-only behavior, conditional writes to an internal backlog, delegation to delimit_social_post and delimit_ledger_add, deduplication, platform API limitations, and explicit 'NOT outbound' constraints. It fully informs the agent of side effects and policy boundaries.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The definition is well-structured and front-loaded, but it is quite long and repeats the demand_signal preference and sibling comparisons in multiple places. Most content is valuable, but tighter editing would improve conciseness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the 8-parameter surface, output schema presence, and complex policy context, the description covers modes, platform coverage, side effects, dedup behavior, and operating model thoroughly. Nothing an agent needs to call this safely and correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description adds extra value by explaining the behavioral significance of mode='demand_signal' and the side effects of draft_replies and create_ledger, going beyond the schema's field-level descriptions.

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 opens with a specific action and resource: 'Scan platforms for demand signals / engagement opportunities.' It clearly distinguishes the two modes and contrasts the tool with delimit_x_fetch and delimit_social_target_config, making its purpose unambiguous.

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?

The description gives explicit when-to-use guidance for both modes, explicitly states when NOT to use the tool, names the alternatives to use instead, and adds a policy directive to prefer demand_signal mode. This is exemplary routing guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

delimit_social_target_configDelimit Social Target ConfigA

Configure social target scanning platforms.

When to use: to inspect / update which platforms the social-target scanner uses, or to add subreddits a venture should scan. When NOT to use: to run a scan (use delimit_social_target) or drafts (delimit_social_generate).

Sibling contrast: delimit_social_target runs scans; this configures which platforms to scan.

Side effects: action="update" / "add_subreddits" write to the target config. action="status" / "detect" are read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
actionNo"status" (default), "detect", "update", "add_subreddits".status
enabledNoEnable/disable on update. Default True.
platformNoPlatform key — "x", "reddit", "github", "hn", "devto", "namepros".
providerNoProvider name — "twttr241", "xai", "proxy", "gh_cli", etc., for update.
subredditsNoComma-separated subreddits for add_subreddits.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only state readOnlyHint=false and destructiveHint=false, which is generic. The description adds precise behavioral detail: actions 'update' and 'add_subreddits' write to the config, while 'status' and 'detect' are read-only. This is exactly the kind of side-effect transparency an agent 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?

The description is compact, well-organized into labeled sections, and every sentence earns its place. It front-loads the core purpose before moving to usage, exclusions, sibling contrast, and side effects without repetition.

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?

For a tool with 5 optional parameters, full schema coverage, and an output schema, the description covers the essential decision points: when to use, when not to use, sibling relationships, and side effects. A small gap is that the 'detect' action's exact behavior is not elaborated, but the schema and output schema cover enough for successful invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3. The description adds value beyond the schema by mapping action values to behavior (write vs read-only) and clarifying the purpose of subreddit configuration. It does not fully describe every parameter interaction, but it meaningfully supplements the schema.

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 states a specific action and resource: 'Configure social target scanning platforms' and elaborates with inspect/update platforms and add subreddits. It explicitly distinguishes this tool from delimit_social_target, which runs scans, so an agent can immediately tell them apart.

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?

The description gives explicit when-to-use guidance ('to inspect / update which platforms...'), when-not-to-use guidance ('to run a scan...'), and names the correct alternative tools. The sibling contrast line reinforces the routing decision without ambiguity.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

delimit_soul_captureDelimit Soul CaptureA

Capture session state as a 'soul' for cross-model resurrection.

When to use: at session end or when context gets full, to save what you're working on so the next session in any model can pick up where you left off. When NOT to use: for general memory writes (use delimit_memory_store) or full handoff orchestration (delimit_session_handoff).

Sibling contrast: delimit_session_handoff writes a structured handoff for the next session; this writes a richer "soul" with git state and active task pointers, used by delimit_revive.

Side effects: writes a soul record via ai.session_phoenix.capture_soul. Auto-detects git state and the current model. Splits comma-string inputs into lists internally.

ParametersJSON Schema
NameRequiredDescriptionDefault
blockersNoComma-separated blockers.
decisionsNoComma-separated key decisions made this session.
next_stepsNoComma-separated next steps.
active_taskNoWhat you're currently working on (one line).
key_contextNoComma-separated important context for next session.
task_statusNoOne of "in_progress", "blocked", "almost_done".in_progress
tokens_usedNoEstimated tokens consumed this session.
project_pathNoProject path to capture the soul for. Empty = auto-detect from cwd.
context_fullnessNo0.0-1.0 representing context-window fullness.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Despite readOnlyHint=false and destructiveHint=false already permitting writes, the description adds critical behavioral detail: it writes a soul record via ai.session_phoenix.capture_soul, auto-detects git state and current model, and splits comma-string inputs into lists. These are non-obvious behaviors that meaningfully exceed annotation coverage.

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 well-structured with clear section headers, front-loaded purpose, and zero filler. Every sentence provides actionable information: when to use, when not to use, sibling contrast, and side effects. It is longer than minimal but each part earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has 9 optional parameters and an output schema, the description covers the essential decision-making context: trigger conditions, exclusions, alternative tools, side effects, and internal transformations. An agent can correctly select and invoke this tool based solely on this description plus the schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description adds value by explicitly stating that comma-string inputs are split into lists internally, which clarifies the semantics of blockers, decisions, next_steps, and key_context beyond their schema descriptions. It also notes auto-detection behavior for project_path, aligning with the schema's 'Empty = auto-detect' note.

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 opens with a specific verb and resource: 'Capture session state as a soul', and clarifies the cross-model resurrection purpose. It explicitly contrasts with delimit_session_handoff and names delimit_revive as the consumer, making sibling differentiation clear without needing to open schemas.

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?

Provides explicit 'When to use' and 'When NOT to use' guidance, including concrete alternative tools: delimit_memory_store for general memory writes and delimit_session_handoff for structured handoffs. This leaves no ambiguity about when an agent should select this tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

delimit_spec_healthDelimit Spec HealthA
Read-onlyIdempotent

Score an OpenAPI spec on quality dimensions (0-100, A-F grade).

When to use: for quick spec quality checks during onboarding or review — completeness, security, consistency, documentation, best practices. When NOT to use: as a breaking-change gate (use delimit_lint) or raw diff (delimit_diff).

Sibling contrast: delimit_lint compares two specs; this scores one spec on its own merits.

Side effects: read-only. Calls backends.gateway_core.run_spec_health. Works on any valid OpenAPI 3.x or Swagger 2.0 spec.

ParametersJSON Schema
NameRequiredDescriptionDefault
specYesPath to an OpenAPI spec file (YAML or JSON).

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, so safety is covered. The description adds valuable behavior context: it notes the tool is read-only, calls backends.gateway_core.run_spec_health, and supports any valid OpenAPI 3.x or Swagger 2.0 spec, which goes beyond the annotations.

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 well-structured with distinct sections for purpose, usage, exclusions, sibling contrast, and side effects. It is front-loaded with the core behavior and contains no redundant or filler content; every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers purpose, usage criteria, exclusions, alternatives, side effects, internal backend call, and supported spec versions. With an output schema present and annotations covering safety, nothing essential is missing for an agent to select and call this tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the schema already documents the single 'spec' parameter. The description adds meaning by defining what 'valid spec' means — OpenAPI 3.x or Swagger 2.0 — which helps clarify acceptable input values beyond the schema's 'Path to an OpenAPI spec file'.

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 opens with a specific verb and resource: 'Score an OpenAPI spec on quality dimensions (0-100, A-F grade).' It clearly distinguishes this tool from delimit_lint by explaining that delimit_lint compares two specs while this one scores a single spec on its own merits.

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?

The description explicitly states when to use the tool ('quick spec quality checks during onboarding or review') and when NOT to use it, naming delimit_lint for breaking-change gates and delimit_diff for raw diffs. This gives an agent clear routing guidance among nearby siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

delimit_story_accessibilityDelimit Story AccessibilityA
Read-onlyIdempotent

Scan HTML/JSX/TSX for WCAG accessibility issues.

When to use: as a CI gate or pre-merge check on UI changes for common a11y problems — missing alt, missing labels, empty buttons, heading order, aria-hidden on focusable elements. When NOT to use: for responsive layout (use delimit_design_validate_responsive) or visual regression (delimit_story_visual_test).

Sibling contrast: delimit_design_validate_responsive checks layout; this checks WCAG.

Side effects: read-only static analysis. Calls backends.ui_bridge.story_accessibility_test.

ParametersJSON Schema
NameRequiredDescriptionDefault
standardsNoWCAG standard — "WCAG2A", "WCAG2AA" (default), "WCAG2AAA".WCAG2AA
project_pathYesProject path to scan. Required.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, and the description reinforces this with 'read-only static analysis.' It also adds useful behavioral context beyond the annotations: the scan targets HTML/JSX/TSX and calls backends.ui_bridge.story_accessibility_test. This adds real transparency without contradicting the structured metadata.

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 well-structured with front-loaded purpose and clear labeled sections. It is slightly longer than strictly necessary because 'Sibling contrast' partially repeats the information already given in 'When NOT to use,' but the organization makes it easy for an agent to parse, so it remains efficient rather than bloated.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a two-parameter read-only tool with a fully documented input schema, an output schema, and explicit annotations, the description is complete. It covers what the tool does, when to use it, when not to use it, named alternatives, side effects, and scope. Nothing essential for correct invocation is missing.

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 description coverage is 100%, with both standards and project_path clearly documented in the schema itself. The description does not add parameter-level semantics beyond the schema, so the baseline of 3 is appropriate; it neither improves nor harms parameter understanding.

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 opens with a specific verb and resource: 'Scan HTML/JSX/TSX for WCAG accessibility issues.' It enumerates concrete problem types (missing alt, missing labels, empty buttons, heading order, aria-hidden on focusable elements), and explicitly distinguishes itself from the layout-focused sibling, making purpose and scope unmistakable.

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?

The description gives explicit when-to-use context ('CI gate or pre-merge check on UI changes'), explicit when-not-to-use conditions, and names the exact alternatives (delimit_design_validate_responsive for layout, delimit_story_visual_test for visual regression). This is model routing guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

delimit_story_buildDelimit Story BuildA

Build a Storybook static site (or return setup guidance).

When to use: to build the Storybook static site for an existing project, e.g. for hosting on a docs site. When NOT to use: to write stories (use delimit_story_generate) or run a11y checks (delimit_story_accessibility).

Sibling contrast: delimit_story_generate writes stories; delimit_story_accessibility audits; this builds the static site.

Side effects: when Storybook is configured, invokes the build via backends.ui_bridge.story_build (subprocess writes the static site under output_dir). When not configured, returns setup guidance instead.

ParametersJSON Schema
NameRequiredDescriptionDefault
output_dirNoOutput directory. None = Storybook default.
project_pathYesProject path. Required.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description clearly discloses the side effect: when Storybook is configured, it invokes backends.ui_bridge.story_build via subprocess and writes the static site under output_dir. It also reveals the conditional behavior of returning setup guidance when not configured, going well beyond the sparse readOnlyHint/destructiveHint annotations.

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 well-structured with clear sections and front-loads the core purpose in the first sentence. Every section — when to use, when not, sibling contrast, side effects — adds necessary decision and behavior information without filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a build tool with two parameters, an output schema, and simple annotations, the description covers the essential context: prerequisites, alternative tools, side effects, and fallback behavior. Nothing an agent needs to call it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3. The description adds meaningful context by tying output_dir to the subprocess write destination and implying project_path refers to an existing Storybook project, which is more than the schema alone provides.

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 opens with a specific verb and resource: 'Build a Storybook static site'. It also covers the conditional fallback ('or return setup guidance') and explicitly contrasts itself with delimit_story_generate and delimit_story_accessibility, making its unique role unmistakable.

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?

The description has an explicit 'When to use' section, a 'When NOT to use' section naming the alternative tools, and a direct sibling contrast. An agent knows exactly when to pick this tool over the closely related delimit_story_generate and delimit_story_accessibility.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

delimit_story_generateDelimit Story GenerateA

Generate a .stories.tsx file for a UI component (no Storybook required).

When to use: to scaffold per-variant stories for a React/TSX component without installing the full Storybook toolchain. When NOT to use: for accessibility checks (use delimit_story_accessibility) or component scaffolding from scratch (delimit_design_generate_component).

Sibling contrast: delimit_design_generate_component creates the component; this generates its stories file. Together they form a component-first authoring path.

Side effects: writes a new .stories.tsx file next to the component. Coerces variants from a comma string to a list via _coerce_list_arg.

ParametersJSON Schema
NameRequiredDescriptionDefault
variantsNoVariants to generate (e.g. "Default,WithChildren"). Default = ["Default", "WithChildren"].
story_nameNoCustom story name. Default = component name.
component_pathYesPath to the component (.tsx) file. Required.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only indicate non-read-only and non-destructive. The description adds valuable side-effect disclosure: it writes a new .stories.tsx file next to the component and coerces variants via _coerce_list_arg. It could also state what happens if the target file already exists, but the provided behavior is still solid.

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 well-organized with clear sections: purpose, when/how to use, sibling contrast, and side effects. Every sentence contributes useful information without unnecessary repetition.

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?

Covers purpose, usage boundaries, side effects, and variant coercion. An output schema exists, so return-value documentation is not required. The only minor gap is whether an existing .stories.tsx file is overwritten, but overall the description is sufficiently complete for invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3. The description adds extra meaning by explaining that variants can be supplied as a comma string and are coerced to a list, which is not evident from the schema alone.

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 states a specific verb and resource: 'Generate a .stories.tsx file for a UI component.' It also clarifies the Storybook-free context and contrasts with delimit_design_generate_component, so an agent can distinguish it from siblings.

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?

Provides explicit 'When to use' and 'When NOT to use' guidance, naming alternative tools (delimit_story_accessibility and delimit_design_generate_component). This leaves no ambiguity about routing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

delimit_story_visual_testDelimit Story Visual TestA

Run visual regression test — screenshot vs stored baseline.

When to use: as a CI gate after UI changes, to catch unintended visual regressions vs a stored baseline. Auto-creates the baseline on first run. When NOT to use: for a11y checks (use delimit_story_accessibility) or one-off screenshots (delimit_screenshot).

Sibling contrast: delimit_screenshot is one image without baseline; delimit_story_accessibility audits HTML; this compares against a stored baseline.

Side effects: writes baseline images on first run; subsequent runs are read-only against the baseline. Falls back to Puppeteer (screenshot only) when Playwright is not installed.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesURL to screenshot.
thresholdNoDiff threshold (0.0-1.0). Default 0.05.
project_pathNoProject path for baseline storage.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only say readOnlyHint=false and destructiveHint=false; the description adds the critical nuance that the first run writes baseline images while subsequent runs are read-only against the baseline. It also discloses the Puppeteer fallback when Playwright is unavailable. These are genuine behavioral disclosures beyond what annotations convey, and they are consistent with the annotations (write-on-first-run aligns with readOnlyHint=false).

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 front-loaded with the core purpose, then organized into labeled sections (When to use, When NOT to use, Sibling contrast, Side effects). Every sentence carries distinct information; there is no redundancy or filler, and the structure makes it scannable for an agent deciding whether to call it.

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?

For a 3-parameter tool with an output schema and annotations covering the safety profile, the description is highly complete: it covers purpose, selection criteria, alternatives, side effects, and engine fallback. The only minor gap is absence of any permissions/auth prerequisites, which is a small omission for a tool capable of writing baseline files.

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 description coverage is 100%, so the baseline of 3 applies: the schema already documents url, threshold, and project_path clearly. The description adds only indirect context (baseline lifecycle, what the threshold measures) but no parameter-specific syntax or format details beyond the schema. This is adequate but not additive.

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 opening line 'Run visual regression test — screenshot vs stored baseline' uses a specific verb, names the exact resource, and defines the core mechanism in one sentence. The sibling-contrast section further pins down what this tool is not (delimit_screenshot is a single image without baseline; delimit_story_accessibility audits HTML), making it unmistakably distinct.

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?

The description has explicit 'When to use' and 'When NOT to use' sections. It names the exact CI-gate scenario, and gives two concrete alternatives with the conditions that select them: delimit_story_accessibility for a11y checks and delimit_screenshot for one-off screenshots. Nothing is left to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

delimit_substantive_content_checkDelimit Substantive Content CheckA

Pre-submit gate for autonomous github outreach (LED-2214b).

When to use: as the LAST step before any agent submits a comment, issue body, or PR description to a third-party github repo via the outreach_substantive task path. Mandatory under CLAUDE.md SHIFT-1; bypass requires explicit founder approval. When NOT to use: for internal repo content, for posts on platforms other than github, or for non-outreach submissions (use the surface's own validators instead).

Sibling contrast: delimit_external_pr_check guards PR duplication; this guards the substantive-content boundary itself. For a PR submission the agent calls BOTH — this one first to refuse covert-commercial drafts, then external_pr_check to refuse duplicates.

Side effects: read-only. Pure validator over the body string and target metadata; no network, no ledger writes, no notifications.

The gate runs in two stages:

  1. Target-side veto — if repo / repo_description / repo_topics contain a banking / fintech / regulator-adjacent keyword, the gate blocks regardless of content quality (SHIFT-1 hard veto; KYC would deanonymize the operating account).

  2. Content shape — bans forbidden phrases (incl. our own product names), requires at least one technical anchor (commit hash, issue number, CVE, spec path, source file path), enforces minimum body length.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYesThe draft body to validate. Required.
repoNoTarget "owner/name" if known (used in target veto).
repo_topicsNoList of repo topic tags (target veto).
proposed_actionNo"comment", "issue", or "pr". Default "comment".comment
repo_descriptionNoRepo description string (target veto).

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.9/5.0
Behavior1/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description explicitly claims 'Side effects: read-only. Pure validator... no network, no ledger writes, no notifications,' while the annotations declare readOnlyHint: false. This is a direct contradiction: the annotation signals the tool may have write/network effects, but the description insists it is a pure read-only validator. An agent cannot trust the safety profile, which is critical before invoking a pre-submit gate. Flagged as Annotation Contradiction.

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 long, but it is well-structured with clearly labeled sections (when to use, when not, sibling contrast, side effects, two stages) and front-loads the purpose. The two-stage explanation is detailed and somewhat documentation-like, so not every sentence is lean, but the complexity of the gate justifies most of the length.

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?

For a complex policy gate, the description covers the two veto stages, the side-effect profile, mandatory-usage context, and sibling interaction — essentially everything an agent needs to invoke it correctly. The one caveat: the contradictory readOnlyHint annotation leaves the operational safety picture unresolved, which slightly undermines completeness despite the thorough prose. Output schema exists, so return-value documentation is not the description's burden.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3. The description adds genuine meaning beyond the schema by explaining how parameters participate in the two-stage logic: repo/repo_description/repo_topics feed the 'target-side veto' and body feeds the 'content shape' checks, including the KYC/deanonymization rationale. This tells the agent WHY each parameter matters, not just what it is.

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 states a specific verb-and-resource purpose: 'Pre-submit gate for autonomous github outreach' that validates the substantive-content boundary. It explicitly distinguishes itself from the closest sibling: 'delimit_external_pr_check guards PR duplication; this guards the substantive-content boundary itself.' An agent can tell what this tool does and how it differs from delimit_external_pr_check without opening any schema.

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?

Provides explicit when-to-use ('as the LAST step before any agent submits a comment, issue body, or PR description to a third-party github repo via the outreach_substantive task path'), when-NOT-to-use ('for internal repo content, for posts on platforms other than github, or for non-outreach submissions'), mandatory policy context (CLAUDE.md SHIFT-1, founder-approval bypass), and call-ordering relative to delimit_external_pr_check. This is the gold standard for routing guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

delimit_swarmDelimit SwarmA

Manage the cross-venture agent swarm (personas + namespace isolation).

When to use: to inspect or mutate the swarm — register a venture with its 5 agent roles, create custom tools, hot-reload modules, check namespace access. When NOT to use: to dispatch a single task (use delimit_agent_dispatch) or read agent state (delimit_agent_status / dashboard).

Sibling contrast: delimit_agent_dispatch is per-task; this manages the multi-venture / multi-persona swarm overall (Agent Swarm Standard v1.2).

Side effects: action="register" / "create_tool" / "create_agent" / "approve_agent" / "reload" mutate state. status / venture / agent / list_* / check / approve / guide / rules are read-only.

Each venture gets 5 AI agent roles (Architect, Senior Dev, Reviewer, QA, Ops) with namespace isolation and model binding.

ParametersJSON Schema
NameRequiredDescriptionDefault
actionNoSee actions above.status
ventureNoVenture name (for register/venture/create_agent).
agent_idNoAgent ID (for agent/check/create_agent/approve_agent).
repo_pathNoRepo path, description, or reason depending on action.
target_pathNoFile path, tool name, or role name depending on action.
access_actionNoAction name - for check: "read"/"write"/"deploy". For approve: "deploy_production"/"deploy_staging"/"social_post" etc.read
deploy_targetNoDeploy target for venture registration.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations (readOnlyHint=false, destructiveHint=false) only signal that the tool mutates and is not destructive. The description adds a Side effects section that classifies which action classes mutate (register/create_tool/create_agent/approve_agent/reload) versus which are read-only (status/venture/agent/list_*/check/approve/guide/rules) — genuinely useful beyond the annotations. Minor deductions: 'approve' appears in the read-only list while 'approve_agent' is in the mutation list, creating slight ambiguity, and permission requirements are not disclosed.

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?

Well-structured with labeled sections: purpose sentence, when to use, when not to use, sibling contrast, side effects, and a venture-structure note. The purpose is front-loaded and every section earns its place. Slightly long, but the length is justified by the tool's polymorphic action surface with 14+ action values.

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?

For a high-complexity tool (7 optional parameters, polymorphic action, no enums), the description covers the critical decisions: when to use it, which actions mutate state, and how it differs from the per-task sibling. Output schema presence relieves it of explaining return values. Remaining gaps: it never states that calling with no arguments defaults to action='status', and the action-specific parameter roles rely on the schema's terse hints ('for register/venture/create_agent').

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3. The description earns the extra point by supplying the vocabulary for the polymorphic action parameter — the schema's own action field defers to it ('See actions above') — and by enumerating access_action values (read/write/deploy; deploy_production/deploy_staging/social_post). It does not fully resolve ambiguous parameters like repo_path ('description, or reason depending on action'), but the schema's per-parameter hints cover most of the remaining meaning.

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?

Opens with a specific verb-resource pairing ('Manage the cross-venture agent swarm') and enumerates concrete capabilities (register a venture with its 5 agent roles, create custom tools, hot-reload modules, check namespace access). It distinguishes itself from delimit_agent_dispatch, which the description explicitly labels as per-task, so an agent can separate the two without opening schemas.

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?

Contains explicit 'When to use' and 'When NOT to use' sections, the latter naming exact alternatives (delimit_agent_dispatch for single-task dispatch; delimit_agent_status / dashboard for agent state). Adds a sibling contrast line and even cites the governing standard (Agent Swarm Standard v1.2). This is complete routing guidance, not merely implied context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

delimit_task_completeDelimit Task CompleteA

Mark current loop task done and get the next one.

When to use: at the end of each loop iteration — records completion, updates session metrics, returns the next task. When NOT to use: to close a regular ledger item (use delimit_ledger_done) or fetch next task without closing (delimit_next_task).

Sibling contrast: delimit_ledger_done is per-item; delimit_next_task only fetches; this completes + advances.

Side effects: writes status to the ledger, updates session metrics (cost, errors), returns next task. Loop continues until a STOP signal.

ParametersJSON Schema
NameRequiredDescriptionDefault
errorNoIf task failed, describe error.
resultNoSummary of what was done.
task_idYesLedger item id completed (e.g. "LED-042").
ventureNoProject name or path.
session_idNoLoop session to update.
cost_incurredNoEstimated cost (USD).

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes beyond the annotations by disclosing concrete side effects: writes status to the ledger, updates session metrics (cost, errors), and returns the next task. It also explains the loop-continuation semantics, which is important behavioral context not available from annotations or schema.

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 well-structured with clear headers, front-loads the core purpose, and every sentence earns its place. It is concise but information-dense, covering usage, exclusions, sibling contrast, and side effects without redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/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, existing annotations, and presence of an output schema, the description covers all essential decision points: when to call, when not to call, what side effects occur, and how the loop progresses. Nothing critical is missing.

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 description coverage is 100%, so the schema already documents all parameters. The description adds context about task_id being the 'current loop task' but does not need to explain each parameter further; baseline 3 is appropriate.

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 opens with a specific verb and resource: 'Mark current loop task done and get the next one.' It also explicitly contrasts itself with delimit_ledger_done and delimit_next_task, making the tool's unique role immediately clear.

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?

Provides explicit 'When to use' and 'When NOT to use' guidance, naming the exact alternatives (delimit_ledger_done, delimit_next_task) and the condition that selects this tool. This leaves no ambiguity for an agent deciding between siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

delimit_tdqs_lintDelimit Tdqs LintA

Score MCP tool docstrings against the 6 TDQS dimensions (LED-2108).

When to use: as a CI gate before publishing the MCP server, to catch low-quality tool descriptions. Operates on any Python file with @mcp.tool()-decorated functions.

When NOT to use: for runtime tool selection or policy decisions — TDQS grades documentation, not behaviour. Use delimit_lint for OpenAPI specs and delimit_gov_evaluate for policy-class decisions.

Sibling contrast: unlike delimit_lint (OpenAPI specs) and delimit_spec_health (spec quality scoring), this scores Python source against Glama's Tool Definition Quality Score rubric.

Side effects: none. Pure read-only static analysis via ast (no import, no execution). Does not write ledger, evidence, or notify.

ParametersJSON Schema
NameRequiredDescriptionDefault
humanNoIf True, include a human-readable "report" string in the response. Default False (JSON-only is cheaper for CI pipes).
target_fileNoPath to a Python file with @mcp.tool() decorators. Default "ai/server.py", resolved against cwd.ai/server.py

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior1/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description claims 'Side effects: none. Pure read-only static analysis via ast (no import, no execution)' and explicitly says it does not write ledger/evidence/notify. However, the annotations declare readOnlyHint=false, which signals the tool is not read-only. This direct contradiction undermines the agent's trust in whether invoking the tool can mutate state.

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 well-structured with clear 'When to use', 'When NOT to use', 'Sibling contrast', and 'Side effects' sections, and the main purpose is front-loaded. It is slightly longer than necessary — the ticket reference (LED-2108) and some repetition of the sibling distinction could be trimmed — but every substantive sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with two optional parameters and an output schema, the description covers purpose, operational scope (file pattern), non-goals, side effects, and alternatives. No critical operational information for an agent selecting or invoking the tool is missing; the only issue is the annotation contradiction already scored.

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 description coverage is 100%, so the schema already documents both parameters. The description adds some context for target_file by mentioning it operates on Python files with @mcp.tool() decorators, but it does not explain the 'human' parameter beyond the schema. Baseline 3 is appropriate because the schema carries the parameter-documentation load.

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 opens with a specific verb-resource pair: 'Score MCP tool docstrings against the 6 TDQS dimensions.' It also names sibling tools it is not, noting it differs from delimit_lint (OpenAPI specs) and delimit_spec_health (spec quality scoring). An agent can clearly distinguish this from the many delimit_* siblings.

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?

Provides an explicit 'When to use' ('as a CI gate before publishing the MCP server') and 'When NOT to use' (runtime tool selection or policy decisions), and names alternatives for those cases (delimit_lint for OpenAPI specs, delimit_gov_evaluate for policy). This gives the agent unambiguous selection criteria.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

delimit_test_coverageDelimit Test CoverageA
Read-onlyIdempotent

Analyze test coverage for a project (experimental) (Pro).

When to use: to surface coverage by file/folder against a threshold when you need a pass/fail signal for CI. When NOT to use: to scaffold new test stubs (use delimit_test_generate) or run a smoke run (delimit_test_smoke).

Sibling contrast: delimit_test_smoke validates that tests run at all; delimit_test_generate writes test scaffolds; this measures coverage of existing tests.

Side effects: read-only inspection. Gated by require_premium. Calls backends.ui_bridge.test_coverage. Marked experimental — coverage runner detection is heuristic.

ParametersJSON Schema
NameRequiredDescriptionDefault
thresholdNoCoverage percentage threshold for pass/fail. Default 80.
project_pathYesPath to the project root. Required.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, lowering the bar. The description adds genuinely useful context beyond that: gated by require_premium (a key failure mode), experimental status, and the heuristic nature of coverage-runner detection. The 'Side effects: read-only inspection' line is redundant with the annotation, but the premium gating and reliability caveat earn the score.

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?

Well-organized with labeled sections (when to use, when not to use, sibling contrast, side effects), front-loaded with the core function in the first sentence. Each section earns its place; the experimental and premium-gating disclosures justify the length. Only minor redundancy is the read-only line repeating the annotation.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Complete for a 2-parameter tool with an output schema and safety annotations. Covers purpose, selection criteria, exclusions, sibling alternatives, side effects, premium gating, backend call, and an experimental/heuristic caveat. The output schema covers return values, so the description needn't explain them.

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 description coverage is 100%, so both parameters (project_path, threshold) are already documented with descriptions and the threshold has a default. The description mentions 'against a threshold' and pass/fail semantics, echoing the schema rather than adding new parameter-level detail. Baseline 3 is correct when the schema carries the full weight.

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?

Opens with a specific verb+resource ('Analyze test coverage for a project') and then sharpens the scope: surfaces coverage by file/folder against a threshold and produces a pass/fail signal for CI. The sibling contrast explicitly distinguishes it from delimit_test_smoke and delimit_test_generate, so an agent can tell them apart without opening schemas.

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?

Provides explicit 'When to use' and 'When NOT to use' sections with named alternatives (delimit_test_generate for stubs, delimit_test_smoke for smoke runs), plus a sibling-contrast paragraph explaining exactly how each sibling differs. Nothing is left to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

delimit_test_generateDelimit Test GenerateA

Generate test skeletons for source code (Jest / pytest / vitest).

When to use: to scaffold new test stubs for public functions when starting tests on a previously-untested module. When NOT to use: to measure coverage of existing tests (use delimit_test_coverage) or run a smoke test (delimit_test_smoke).

Sibling contrast: delimit_test_coverage measures; delimit_test_smoke runs; this writes new test scaffolds.

Side effects: writes new test files alongside the source. Uses AST parsing for Python and regex for JS/TS via backends.ui_bridge.test_generate.

ParametersJSON Schema
NameRequiredDescriptionDefault
frameworkNoTest framework — "jest" (default), "pytest", "vitest".jest
project_pathYesProject path. Required.
source_filesNoSpecific files to generate tests for. None = all detectable public functions.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only provide readOnlyHint=false and destructiveHint=false. The description adds meaningful behavioral context by stating that the tool 'writes new test files alongside the source' and explains the parsing approaches for different languages. This goes beyond the structured fields without contradicting them.

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 tightly organized into labeled sections that are easy to scan. Every section earns its place: purpose, when to use, when not to use, sibling contrast, and side effects. It is long enough to be useful but not padded with filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with an output schema and 100% schema coverage, the description covers the remaining contextual needs: selection criteria, exclusions, side effects, and implementation nuance. An agent has enough to decide when to invoke it and what to expect.

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 description coverage is 100%, so the baseline is 3 and the schema already documents all three parameters. The description adds some framing like 'public functions' and framework names, but it does not meaningfully extend the parameter-level semantics provided in the schema.

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 opens with a specific verb and resource: 'Generate test skeletons for source code (Jest / pytest / vitest).' It goes beyond a generic label by naming the frameworks and the artifact produced, and the sibling contrast explicitly distinguishes this tool from delimit_test_coverage and delimit_test_smoke.

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?

The description provides explicit 'When to use' and 'When NOT to use' sections, including concrete alternative tools for excluded cases. The sibling contrast further clarifies the division of labor, leaving no ambiguity about when to select this tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

delimit_test_smokeDelimit Test SmokeA
Read-onlyIdempotent

Run smoke tests for a project.

When to use: as a pre-commit / pre-deploy gate to confirm tests pass. Auto-detects framework (pytest / jest / vitest / mocha) from project config. When NOT to use: to scaffold new tests (use delimit_test_generate) or measure coverage (delimit_test_coverage).

Sibling contrast: delimit_test_generate writes; delimit_test_coverage measures; this runs and parses.

Side effects: invokes the project's test runner via backends.ui_bridge.test_smoke (subprocess). Read-only on filesystem apart from the test runner's own outputs.

ParametersJSON Schema
NameRequiredDescriptionDefault
fail_fastNoStop execution immediately on first failure.
extra_argsNoOptional extra arguments to pass to the test runner.
test_suiteNoOptional specific test suite or pattern.
project_pathYesProject path. Required.
timeout_secondsNoOptional execution timeout in seconds. Default is 120.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description goes beyond the annotations by disclosing that it invokes the project's test runner via backends.ui_bridge.test_smoke as a subprocess, and that it is read-only on the filesystem apart from the test runner's own outputs. This adds meaningful operational context that the annotations do not fully convey.

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 well-structured with clear sections for use cases, non-use cases, sibling contrast, and side effects. Each section earns its place and the core purpose is front-loaded in the first sentence.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers purpose, usage timing, alternatives, framework detection, side effects, and filesystem impact. With an output schema present and all parameters fully described in the schema, nothing essential is missing for an agent to correctly select and invoke this tool.

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 description coverage is 100%, so the schema already documents all five parameters and their defaults. The description adds general context like framework auto-detection but does not add much per-parameter meaning beyond what the schema provides, which matches the baseline of 3.

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 opens with a specific verb and resource: 'Run smoke tests for a project.' It further differentiates from siblings by stating delimit_test_generate writes, delimit_test_coverage measures, and this tool 'runs and parses,' leaving no ambiguity about its role.

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?

Explicit when-to-use guidance is provided: 'as a pre-commit / pre-deploy gate to confirm tests pass.' It also includes clear when-not-to-use instructions with named alternatives for scaffolding tests and measuring coverage, making the routing decision unmistakable.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

delimit_toolcard_cacheDelimit Toolcard CacheA
Read-onlyIdempotent

Manage the tool-schema cache to reduce per-session token waste.

When to use: when an MCP client repeatedly dumps full tool definitions and you want to send only diffs across sessions. When NOT to use: as a runtime tool dispatcher — this is a cache side-channel, not a tool-call surface.

Sibling contrast: this caches tool schemas; delimit_help describes individual tools at runtime.

Side effects: action="register" / "clear" / "flush" mutate the cache; "status" / "delta" / "estimate" are read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
actionNoOne of "status" (default), "register", "delta", "clear", "estimate", "flush", "usage" (durable tool utilization + dormancy report).status
tool_namesNoComma-separated tool names (for delta).
tool_schemasNoJSON array of tool schema objects (for register/ estimate).

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.7/5.0
Behavior1/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description explicitly states that actions like 'register', 'clear', and 'flush' mutate the cache, and that only 'status', 'delta', and 'estimate' are read-only. This directly contradicts the annotation readOnlyHint=true, which declares the entire tool read-only. The 'clear'/'flush' actions also sit awkwardly with destructiveHint=false.

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 well-structured with a front-loaded one-sentence purpose, followed by compact labeled sections for when to use, when not to use, sibling contrast, and side effects. Every sentence earns its place with no filler.

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?

The description covers the main usage context, exclusions, sibling distinction, and side effects, and the output schema plus full parameter coverage reduce the need for return-value details. However, the direct contradiction between the stated mutating side effects and the readOnlyHint=true annotation leaves an agent unable to trust the tool's safety profile.

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 description coverage is 100%, so the input schema already documents all three parameters and their purposes. The description adds some value by labeling which actions are mutating vs read-only and clarifying the cache side-channel nature, but it does not add significant new parameter-level semantics.

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 states a specific verb ('Manage'), a concrete resource ('tool-schema cache'), and a clear objective ('reduce per-session token waste'). It also distinguishes itself from delimit_help, so an agent can tell them apart.

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?

The description gives explicit 'When to use' and 'When NOT to use' guidance, including a concrete use case (repeated dumps, sending diffs) and a clear exclusion (runtime tool dispatcher). It also names the sibling alternative delimit_help for contrast.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

delimit_tracker_syncDelimit Tracker SyncA

Pull open GitHub issues into the Delimit ledger as context (LED-188).

When to use: to enrich the ledger with external issue context from a GitHub repo so cross-references work. When NOT to use: to write back to GitHub (this is read-only) or to monitor a single issue (delimit_sensor_github_issue).

Sibling contrast: delimit_sensor_github_issue watches one issue; this syncs many into the ledger as context.

Side effects: read-only on GitHub (network calls via gh CLI). Writes context entries into the ledger but does not push back to GitHub.

ParametersJSON Schema
NameRequiredDescriptionDefault
repoNo"owner/repo" GitHub repo. Empty = auto-detect from git remote.
limitNoMax issues to sync. Default 10.
labelsNoComma-separated label filter (e.g. "bug,priority:high").

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations only say readOnlyHint=false and destructiveHint=false, but the description adds important nuance: it is read-only on GitHub, makes network calls via gh CLI, writes context entries into the ledger, and does not push back. This precisely clarifies the mixed read/write behavior beyond what annotations convey.

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 organized into clear labeled sections: purpose, when to use, when not to use, sibling contrast, and side effects. Every sentence adds useful information, and the structure makes it easy for an agent to scan.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the 100% schema coverage, an output schema, and clear annotations, the description fully covers the behavioral and selection context. It explains side effects, sibling differentiation, and usage boundaries, leaving no critical gap for an agent to infer.

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 description coverage is 100%, and the schema already documents repo, limit, and labels with defaults and examples. The description does not add parameter-level detail, but it does not need to because the schema carries the burden effectively.

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 states a specific verb and resource: 'Pull open GitHub issues into the Delimit ledger as context.' It clearly identifies what the tool does and distinguishes it from the sibling delimit_sensor_github_issue, which watches a single issue rather than syncing many.

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?

The description explicitly says when to use it ('to enrich the ledger with external issue context'), when NOT to use it ('to write back to GitHub' or 'to monitor a single issue'), and names the alternative tool. This gives an agent unambiguous routing logic.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

delimit_vault_healthDelimit Vault HealthA
Read-onlyIdempotent

Report vault subsystem health (Pro).

When to use: at session start or as a CI smoke test to confirm the vault backend is reachable and indexes are intact. When NOT to use: to query content (use delimit_vault_search) or to capture state (delimit_vault_snapshot).

Sibling contrast: delimit_vault_search reads content; delimit_vault_snapshot captures state; this reports the engine's own health.

Side effects: read-only on the vault backend; gated by require_premium. Calls backends.vault_bridge.health.

Prerequisite: requires Delimit Pro. An unlicensed call returns {"error": ..., "upgrade": "https://delimit.ai/pricing"} without running.

Args: None.

Returns: Dict with health status and next_steps.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description goes well beyond annotations by disclosing read-only side effects on the vault backend, the require_premium gating, the exact unlicensed response shape, and the underlying backend call. It also aligns with annotations (readOnlyHint, idempotentHint, destructiveHint), adding implementation-level detail without contradiction.

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 well-structured with clear labeled sections: purpose, when to use, when not to use, side effects, prerequisite, args, and returns. Every sentence adds value, and the most important information is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter health-check tool, the description is complete: it covers usage context, exclusions, side effects, licensing prerequisite, error behavior, and return contents. The presence of an output schema also removes the need to heavily describe return structure, and the description still gives a useful summary.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters and the schema is empty, so there is no parameter semantics to document. The description explicitly states 'Args: None,' confirming the schema. With no parameters, the baseline of 4 applies and the description handles it adequately.

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 opens with a specific verb and resource: 'Report vault subsystem health (Pro).' It clearly distinguishes this from sibling tools by stating that delimit_vault_search reads content and delimit_vault_snapshot captures state, leaving no ambiguity about what this tool does.

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?

Usage guidance is explicit: use at session start or as a CI smoke test to confirm vault backend reachability and index integrity. It also states when NOT to use it and names the correct alternatives, making the routing decision unambiguous.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

delimit_vault_snapshotDelimit Vault SnapshotA

Capture a snapshot of vault state (Pro).

When to use: before a risky vault edit, to have a rollback point for content recovery. When NOT to use: for searching content (use delimit_vault_search) or checking health only (delimit_vault_health).

Sibling contrast: delimit_vault_health reports up/down only; this returns a structured snapshot of state.

Side effects: gated by require_premium. Calls backends.vault_bridge.snapshot, which writes a snapshot record on the vault backend.

Args: None.

Returns: Dict with snapshot data and next_steps.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations, the description discloses that the call is gated by require_premium, invokes backends.vault_bridge.snapshot, and writes a snapshot record on the vault backend. This alerts the agent that the operation is state-changing despite destructiveHint=false, adding significant behavioral context the annotations alone do not provide.

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 well-structured with clear labeled sections: purpose, when to use, when not to use, sibling contrast, side effects, args, and returns. The most important information is front-loaded, and each section earns its place by adding actionable guidance rather than filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter tool with an output schema, the description covers all necessary context: what it does, when to use it, alternatives, side effects, and return shape. The output schema presumably details the snapshot structure, so the description's high-level 'Dict with snapshot data and next_steps' is sufficient.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, and the input schema confirms this with empty properties. The description explicitly states 'Args: None,' which is redundant with the schema but harmless. With 0 params, there is no parameter semantics burden, so the baseline 4 applies.

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 opens with a specific verb and resource: 'Capture a snapshot of vault state (Pro).' It distinguishes the tool from siblings by explicitly contrasting it with delimit_vault_health, which reports only up/down status, while this tool returns a structured snapshot. An agent can immediately tell what this tool does and how it differs from adjacent tools.

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?

The description provides explicit when-to-use guidance ('before a risky vault edit, to have a rollback point') and when-not-to-use guidance with named alternatives ('searching content (use delimit_vault_search) or checking health only (delimit_vault_health)'). This leaves no ambiguity about tool selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

delimit_vendor_news_draftDelimit Vendor News DraftA

Draft a brand-voice Delimit-POV riff for a specific X tweet (Pro) (LED-1253).

When to use: when an operator/sensor surfaces a vendor-news tweet that warrants a Delimit-POV riff for the autonomous content queue. When NOT to use: to fetch the tweet without drafting (use delimit_x_fetch) or for general social drafting (delimit_social_generate).

Sibling contrast: delimit_x_fetch fetches; delimit_vendor_news_health inspects subsystem health; this drafts a riff into the queue.

Side effects: gated by require_premium. Runs the riff drafter end-to-end: rate cap, source-fit pre-filter, generator, capability validator, fit floor, queue insert. dry_run=True suppresses the queue insert but still runs validators (and still consults the 24h per-vendor rate cap to avoid log noise).

ParametersJSON Schema
NameRequiredDescriptionDefault
dry_runNoIf True, suppress queue insertion. Default False.
tweet_idNoSource X tweet id (numeric string) or full x.com URL. Required.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations (readOnlyHint=false, destructiveHint=false) already signal this is a mutating operation, and the description goes well beyond them: it discloses premium gating (require_premium), the end-to-end pipeline stages (rate cap, source-fit pre-filter, generator, capability validator, fit floor, queue insert), and the subtle dry_run behavior where validators still run and the 24h rate cap is still consulted. This is rich behavioral context that materially changes how an agent should call the tool.

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 uses labeled sections (When to use, When NOT to use, Sibling contrast, Side effects) that make the content scannable, and the core purpose is front-loaded in the first sentence. It is slightly verbose — the internal task reference 'LED-1253' and the long pipeline enumeration could be trimmed — but every section earns its place with non-redundant information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 2-parameter tool with an output schema, full schema coverage, and annotations present, the description covers everything an agent needs: purpose, selection criteria, exclusions, named alternatives, side effects, gating, and dry_run specifics. Return values are handled by the output schema, so the absence of that detail is not a gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description adds meaningful value beyond the schema by clarifying that dry_run suppresses only the queue insert while still running validators and consulting the rate cap, and by flagging tweet_id as 'Required' — important guidance since the schema shows an empty default but the tool is useless without it. A minor mismatch exists between the schema's default '' and the description's 'Required', but the net guidance is helpful rather than misleading.

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 opening sentence names a specific verb ('Draft'), resource (Delimit-POV riff), and source (specific X tweet), plus the concrete use case of vendor-news surfacing. It also explicitly contrasts with named siblings: 'delimit_x_fetch fetches; delimit_vendor_news_health inspects subsystem health; this drafts a riff into the queue.' An agent can distinguish this from its siblings without opening schemas.

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?

Contains dedicated 'When to use' and 'When NOT to use' sections that name exact alternatives: use delimit_x_fetch to fetch without drafting, and delimit_social_generate for general social drafting. The sibling contrast paragraph reinforces routing decisions. This is explicit, actionable guidance with nothing left to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

delimit_vendor_news_healthDelimit Vendor News HealthA

Health check for the vendor-news riff system (LED-1253).

When to use: to answer "is the cron firing? are drafts landing? what's getting rejected?" without grepping logs. When NOT to use: to draft a riff (use delimit_vendor_news_draft) or inspect the broader social daemon (delimit_social_daemon).

Sibling contrast: delimit_vendor_news_draft writes one riff; delimit_social_daemon controls the broader sensing daemon; this is the vendor-news subsystem health.

Side effects: read-only. Greps crontab for the cron entry, reads sensor JSONL log, tweet queue, rejected log, watchlist file.

Args: None.

Returns: Dict with cron_installed, last_run_ts, sensor stats, 24h queued/rejected entries, watchlist count, budget snapshot.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.1/5.0
Behavior1/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description states 'Side effects: read-only' and lists the files it reads, but the annotations declare readOnlyHint: false. This directly contradicts the annotation. While the description provides useful detail about what it greps/reads, the contradiction forces a score of 1 per the rubric.

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 well-organized into labeled sections (When to use, When NOT to use, Sibling contrast, Side effects, Args, Returns) with no filler. Each section earns its place, and the key purpose is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite the annotation contradiction, the description is otherwise complete: it covers purpose, usage boundaries, side effects, arguments, and return shape ('Dict with cron_installed, last_run_ts, sensor stats...'). An agent has enough to decide whether and how to call it.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters and the input schema is empty. The description explicitly states 'Args: None,' which is clear and sufficient. Baseline 4 applies for 0-parameter tools.

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 opens with a specific verb and resource: 'Health check for the vendor-news riff system (LED-1253).' It names concrete sibling tools and clarifies that this tool is specifically the vendor-news subsystem health check, distinguishing it from delimit_vendor_news_draft and delimit_social_daemon.

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?

Provides explicit 'When to use' guidance with concrete diagnostic questions ('is the cron firing? are drafts landing? what's getting rejected?') and 'When NOT to use' rules with named alternatives. This gives an agent clear routing criteria.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

delimit_vendor_news_scanDelimit Vendor News ScanA

Scan watchlisted vendor accounts and auto-draft riffs (Pro) (LED-1253).

When to use: for ad-hoc execution of the vendor-news sensor (the cron is the normal autonomous path). When NOT to use: for a single tweet (use delimit_vendor_news_draft) or subsystem health (delimit_vendor_news_health).

Sibling contrast: delimit_vendor_news_draft is one tweet; delimit_vendor_news_health is health rollup; this is the full sensor + drafter pass.

Side effects: gated by require_premium. Wraps ai.vendor_news.sensor.scan_vendor_news + draft_vendor_riff. dry_run=True polls (cache-friendly) but skips JSONL log write AND skips the drafter entirely (no queue, no rate-cap consumption).

ParametersJSON Schema
NameRequiredDescriptionDefault
dry_runNoIf True, sensor-only (no drafter, no queue). Default False.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description goes well beyond the annotations by detailing side effects: require_premium gating, wrapped function calls, JSONL log writes, queue behavior, and rate-cap consumption. It also explains exactly what dry_run does and does not do, which is valuable behavioral context not present in the structured annotations.

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 organized with clear labeled sections: purpose, when to use, when not to use, sibling contrast, and side effects. Every sentence contributes useful decision-making information, and the most critical scoping information is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with one optional parameter, explicit sibling differentiation, detailed side-effect disclosure, and an output schema available, this description is complete. There are no obvious gaps an agent would need to resolve elsewhere before invoking the tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Although schema coverage is 100%, the description adds meaning beyond the dry_run schema description by clarifying that dry_run=True is cache-friendly, skips the JSONL log write, and skips the drafter entirely with no queue or rate-cap consumption. This materially improves an agent's ability to choose the right value.

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 opens with a specific verb and resource ('Scan watchlisted vendor accounts and auto-draft riffs') and clearly distinguishes this tool from its closest siblings by naming exactly what each sibling does. This makes the tool's identity unambiguous even among a large family of delimit_ tools.

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?

The description provides an explicit 'When to use' section, a 'When NOT to use' section, and names the alternative tools for each exclusion case. An agent can confidently decide between scan, draft, and health without needing to inspect their schemas.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

delimit_venturesDelimit VenturesA
Read-onlyIdempotent

List all registered ventures (auto-registered project directories).

When to use: to inventory which projects Delimit has tracked, before routing a ledger query or context operation. When NOT to use: to read venture-scoped context (use delimit_context_list) or memory (delimit_memory_recent).

Sibling contrast: delimit_context_list inventories artifacts inside one venture; this lists the ventures themselves.

Side effects: read-only. Calls ai.ledger_manager.list_ventures. Note: ventures are auto-registered when any Delimit tool is run in a project directory.

Args: None.

Returns: Dict with the venture list (each entry has name, path, etc.).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already carry readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is fully covered. The description adds value by disclosing the underlying implementation call (ai.ledger_manager.list_ventures) and the data-provenance mechanism (auto-registration when any Delimit tool runs in a project directory). No contradiction with annotations.

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?

Well-structured with labeled sections (When to use, When NOT to use, Sibling contrast, Side effects, Args, Returns). Front-loaded with a one-sentence purpose, and every section contributes non-redundant information. The 'Side effects' and 'Note' lines are economical and earn their place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a parameterless read-only list tool with full annotation coverage and an output schema, the description is complete: purpose, routing guidance, side effects, data provenance, args, and return shape are all covered. The only absent details (ordering, staleness) are negligible for a simple inventory tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There are zero parameters and the description explicitly states 'Args: None,' confirming the empty schema. Per the baseline for 0-param tools, no parameter documentation is needed; the description even goes beyond by outlining the return shape ('Dict with the venture list (each entry has name, path, etc.)').

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?

Opens with a specific verb+resource statement: 'List all registered ventures (auto-registered project directories).' The parenthetical defines the key term, and the sibling contrast ('delimit_context_list inventories artifacts inside one venture; this lists the ventures themselves') explicitly distinguishes it from the closest sibling without requiring the agent to open either schema.

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?

Contains explicit 'When to use' and 'When NOT to use' sections that name the alternatives (delimit_context_list, delimit_memory_recent) and the routing condition ('before routing a ledger query or context operation'). The sibling contrast reinforces the boundary. Nothing is left to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

delimit_versionDelimit VersionA
Read-onlyIdempotent

Return Delimit server version, tool count, and environment status.

When to use: at session start, in a dashboard, or as a diagnostic when investigating capability availability. When NOT to use: for governance health (use delimit_gov_health) or OS status (delimit_os_status).

Sibling contrast: delimit_help describes individual tools; this reports server-wide version and detected environment.

Side effects: read-only. Counts registered tools and detects API keys / CLIs / security tools in the environment so callers know what's available without manual config.

Args: None.

Returns: Dict with version, total_tools, adapter_contract, authority, environment-detection results, plus next_steps.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already mark it read-only and idempotent, but the description adds meaningful behavioral context: it counts registered tools, detects API keys/CLIs/security tools, and reports environment-detection results. This goes beyond the annotations and helps the agent anticipate side effects and capabilities without manual configuration.

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 well-structured and front-loaded: purpose, usage, exclusions, sibling contrast, side effects, args, and returns. Every section earns its place and contributes directly to correct invocation, without redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a no-argument read-only tool with a returned dict described at a high level and an output schema present, the description is complete. It covers when to use it, when not to, what it reports, and its side-effect profile. Nothing essential is missing for an agent to call it appropriately.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, so the empty input schema is self-explanatory. The description explicitly states 'Args: None' and clarifies what the tool returns, which is sufficient for a parameterless tool. Baseline 4 is appropriate since there is nothing more to add about parameters.

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 states a clear verb and resource: 'Return Delimit server version, tool count, and environment status.' It distinguishes itself from delimit_help, delimit_gov_health, and delimit_os_status by scope, making the tool's purpose unambiguous.

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?

The description gives explicit 'When to use' guidance for session start, dashboards, and diagnostics. It also provides 'When NOT to use' exclusions with named alternatives, which is exactly the level of routing clarity an agent needs.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

delimit_webhook_manageDelimit Webhook ManageA
Destructive

Manage webhook notifications for governance events.

When to use: to register a Slack/Discord/HTTP webhook to receive governance alerts (deploy blocked, security finding, consensus). When NOT to use: for SIEM-class structured streaming (use delimit_siem) or one-shot notifications (delimit_notify).

Sibling contrast: delimit_siem streams structured audit events; this routes governance alerts to chat / HTTP endpoints.

Side effects: action="add" / "remove" mutate ~/.delimit/webhooks.json. action="test" sends a test notification to the configured webhooks. action="list" is read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlNoWebhook URL (Slack, Discord, or any HTTP endpoint). Required for add / remove / test (test uses all configured if not specified).
actionNoOne of "list" (default), "add", "remove", "test".list
eventsNoComma-separated event filter — "all" (default), "blocked", "critical", "security".all

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description discloses side effects per action: add/remove mutate ~/.delimit/webhooks.json, test sends a test notification, and list is read-only. This meaningfully supplements the annotations (readOnlyHint=false, destructiveHint=true) with operation-specific behavior and file-level impact.

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 well-organized into focused sections and front-loads the core purpose. There is minor redundancy between the 'When NOT to use' section and the 'Sibling contrast' paragraph, but overall every section earns its place and is easy to scan.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With full parameter documentation in the schema, an output schema present, and annotations provided, the description covers what remains: when to use, when not to use, side effects, and sibling differentiation. An agent has everything needed to select and invoke this tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the input schema already documents url, action, and events. The description adds extra semantic value by tying actions to side effects and clarifying test behavior, which goes beyond a bare schema listing.

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 opens with a specific verb and resource ('Manage webhook notifications for governance events') and immediately clarifies what registering a Slack/Discord/HTTP webhook does. It explicitly contrasts itself with delimit_siem and delimit_notify, so an agent can distinguish this tool from siblings without inspecting schemas.

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?

Provides explicit 'When to use' and 'When NOT to use' guidance, naming the exact alternatives (delimit_siem for streaming, delimit_notify for one-shot notifications). This gives clear decision rules and removes ambiguity about selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

delimit_work_ordersDelimit Work OrdersA

Manage work orders — structured task artifacts for the founder (STR-177).

When to use: to list, read, or close work orders that bridge strategy deliberations and interactive execution. When NOT to use: for ledger items (use delimit_ledger_*) or governance tasks (delimit_gov_new_task / run / verify).

Sibling contrast: delimit_ledger_add tracks general work; delimit_gov_new_task is governance-classed; this is the founder work-order surface — copy-pasteable markdown artifacts.

Side effects: action="list" / "show" are read-only. action="complete" writes to the work-order store via ai.work_order.complete_work_order.

ParametersJSON Schema
NameRequiredDescriptionDefault
noteNoCompletion note (used by "complete").
wo_idNoWork order id (required for "show" / "complete").
actionNoOne of "list" (default), "show", "complete".list
statusNoFilter for list — "pending" (default), "completed", "all".pending

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations only provide tool-level readOnlyHint=false and destructiveHint=false. The description adds genuinely useful per-action behavioral disclosure: action='list'/'show' are read-only while action='complete' writes to the work-order store via ai.work_order.complete_work_order. This goes beyond the annotations and tells the agent exactly which invocations have 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?

The description is organized into clear labeled sections (purpose, when to use, when not to use, sibling contrast, side effects) and front-loads the core purpose. Every sentence earns its place; the sibling contrast slightly overlaps with 'when NOT to use', but it adds concrete named alternatives rather than pure repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present (return values are covered), zero required parameters, and a description covering purpose, usage boundaries, sibling differentiation, and per-action side effects, there is nothing an agent needs to invoke the tool correctly that is missing. The reference to STR-177 is minor noise but not a gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3 — the schema already documents all four parameters well. The description adds value by mapping action values to side-effect behavior (read-only vs write) and connecting note/wo_id to the 'complete' action, which is beyond the schema. It doesn't elaborate on status filter nuances or wo_id format, so it doesn't reach 5.

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 states a clear verb-resource pair — 'Manage work orders' — and immediately elaborates the concrete actions: 'to list, read, or close work orders'. It frames work orders as 'structured task artifacts for the founder' and explicitly contrasts with ledger and governance tools, so an agent can distinguish it from siblings without opening the schema.

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?

The description has explicit 'When to use' and 'When NOT to use' sections. It names concrete alternatives (delimit_ledger_* for ledger items, delimit_gov_new_task / run / verify for governance tasks) and explains the boundary. This is exactly the kind of routing guidance that lets an agent pick the right tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

delimit_x_fetchDelimit X FetchA

Fetch tweets from X by id or URL via twttr241 RapidAPI (LED-825).

When to use: to surgically fetch one or many tweets by id/URL, sharing the cached path with delimit_social_target so repeats are free. When NOT to use: to scan for new content (use delimit_social_target) or fetch a Reddit thread (delimit_reddit_fetch_thread).

Sibling contrast: delimit_social_target scans for opportunities; delimit_reddit_fetch_thread is the Reddit equivalent; this is the X (Twitter) single/batch fetcher.

Side effects: read-only network call via twttr241 (RapidAPI). Inherits the LRU + SQLite cache + budget gate from the social-target scanner — repeated reads are free. No writes.

ParametersJSON Schema
NameRequiredDescriptionDefault
idsNoComma-separated list of status ids OR URLs for a batch fetch. Each is normalized to a status id and fetched independently.
id_or_urlNoSingle status id ("2048825010371039648") OR a full x.com / twitter.com URL — id is extracted automatically. Mutually exclusive with `ids`.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.7/5.0
Behavior1/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description explicitly claims 'read-only network call' and 'No writes', but the annotations set readOnlyHint to false, which implies the tool is not marked read-only. This is a direct annotation contradiction, and the description's 'No writes' also conflicts with its own mention of an SQLite cache that presumably writes to disk.

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 well structured with clear sections and the most important information is front-loaded. It is slightly verbose due to ticket references and repeated sibling contrast, but every section earns its place and the format is easy for an agent to parse.

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?

The description covers purpose, when to use, alternatives, side effects, caching, and budget behavior, and an output schema is present. It is complete enough for an agent to invoke correctly, though the read-only contradiction with annotations prevents a perfect score.

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 description coverage is 100%, and both parameters have detailed descriptions including mutual exclusivity and normalization behavior. The tool description adds no parameter-level detail beyond restating 'by id or URL', so the schema already does the heavy lifting.

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 opens with a specific verb and resource ('Fetch tweets from X by id or URL') and explicitly names the integration. The sibling contrast further clarifies exactly what this tool is and is not, making it easy for an agent to distinguish from delimit_social_target and delimit_reddit_fetch_thread.

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?

The description has explicit 'When to use' and 'When NOT to use' sections, naming the exact alternative tools and the conditions that should route to them. This gives the agent clear decision criteria without needing to infer anything.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

delimit_zero_specDelimit Zero SpecA
Read-onlyIdempotent

Extract OpenAPI spec from framework source code (no spec file needed).

When to use: when a project has no checked-in OpenAPI spec but uses a framework Delimit can introspect (FastAPI today; Express, NestJS planned). When NOT to use: when a spec file already exists — pass it directly to delimit_lint or delimit_diff.

Sibling contrast: delimit_lint operates on existing spec files; this generates one from source.

Side effects: read-only on the project source. Calls backends.gateway_core.run_zero_spec which may invoke a Python subprocess to introspect FastAPI routes.

ParametersJSON Schema
NameRequiredDescriptionDefault
python_binNoOptional Python binary path. Empty = auto-detect.
project_dirNoProject root directory. Default "." (cwd)..

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false. The description adds valuable behavioral detail beyond those: it is read-only on the project source, calls backends.gateway_core.run_zero_spec, and may invoke a Python subprocess. This is relevant execution context that annotations alone do not provide.

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 core action is front-loaded, and the rest is organized into short labeled sections: when to use, when not to use, sibling contrast, and side effects. Each section carries distinct information without unnecessary padding.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With only two optional parameters, a well-documented schema, and annotations covering safety, the description supplies the remaining context an agent needs: supported frameworks, alternative routing, and execution side effects. It is complete for correct invocation.

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 description coverage is 100%, and both parameters (python_bin, project_dir) are already documented with defaults and semantic descriptions in the input schema. The description does not add parameter-level meaning, so the baseline of 3 is appropriate.

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 opens with a specific verb and resource: 'Extract OpenAPI spec from framework source code'. It also explicitly differentiates from delimit_lint by stating this tool generates a spec from source rather than operating on an existing spec file.

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?

The description gives explicit 'When to use' and 'When NOT to use' guidance, names the exact alternative tools (delimit_lint, delimit_diff), and specifies the deciding condition: absence of a checked-in spec file. Tool selection is unambiguous.

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. 19 tool updatesv4.13.2
    • Changed_delimit_deploy_impl7 fields changed
      • addedInput schema / properties / paths
        Added value: +{
        +  "anyOf": [
        +    {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null
        +}
      • changedInput schema / properties / project_path / description
        Previous value: -"Path to the project. Used by \"site\" and \"npm\".\nDefault \".\" (cwd). For \"site\" it is sanitized and must not\nescape the workspace root; for \"npm\" it must contain a\npackage.json."New value: +"Repository-relative site/package directory. It must\nremain inside repo_path."
      • addedInput schema / properties / repo_path
        Added value: +{
        +  "default": "",
        +  "description": "Required Git worktree root for every deploy action.",
        +  "type": "string"
        +}
      • addedInput schema / properties / staged_only
        Added value: +{
        +  "default": true,
        +  "type": "boolean"
        +}
      • addedInput schema / properties / target_urls
        Added value: +{
        +  "anyOf": [
        +    {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null
        +}
      • addedInput schema / properties / venture
        Added value: +{
        +  "default": "",
        +  "type": "string"
        +}
      • addedInput schema / properties / vercel_timeout
        Added value: +{
        +  "default": 60,
        +  "type": "integer"
        +}
    • Changeddelimit_content_publish1 field changed
      • changedInput schema / properties / content_type / description
        Previous value: -"\"tweet\" (default) to post next queued tweet, or \"youtube\" to generate + upload the next video."New value: +"\"tweet\" (default) to post next queued tweet, \"youtube\" to generate + upload the next video, or \"report\" to STAGE (compose, not post) distribution for the next report."
    • Changeddelimit_content_queue2 fields changed
      • changedInput schema / properties / action / description
        Previous value: -"\"status\" (default), \"seed\", or \"add\"."New value: +"\"status\" (default), \"seed\", \"add\", or \"add_report\"."
      • changedInput schema / properties / items / description
        Previous value: -"For \"add\" — newline-separated tweet texts."New value: +"For \"add\" — newline-separated tweet texts. For \"add_report\" — one or more report slugs (newline- or comma-separated)."
    • Changeddelimit_deliberate1 field changed
      • addedInput schema / properties / context_files
        Added value: +{
        +  "anyOf": [
        +    {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Optional list of file paths whose contents are read server-side, redacted (secrets/PII), size-capped, and injected as a \"Referenced Files\" block so the panel can reason over real source (panelists have no filesystem access). Fails closed per file."
        +}
    • Changeddelimit_deploy_build1 field changed
      • addedInput schema / properties / repo_path
        Added value: +{
        +  "default": "",
        +  "description": "Explicit Git worktree root.",
        +  "type": "string"
        +}
    • Changeddelimit_deploy_npm2 fields changed
      • changedInput schema / properties / project_path / description
        Previous value: -"Path to the npm project root. Default \".\" (cwd)."New value: +"Deprecated compatibility field; repo_path is authoritative."
      • addedInput schema / properties / repo_path
        Added value: +{
        +  "default": "",
        +  "description": "Required explicit Git worktree/package root; never derived from cwd.",
        +  "type": "string"
        +}
    • Changeddelimit_deploy_plan4 fields changed
      • changedInput schema / properties / app / description
        Previous value: -"Application name (project key in the deploy backend). Required."New value: +"Application identity (not a filesystem path). Required."
      • changedInput schema / properties / git_ref / description
        Previous value: -"Git ref (branch/tag/SHA). Optional; defaults to the backend's notion of HEAD when omitted."New value: +"Git ref (branch/tag/SHA). Optional; defaults to HEAD."
      • addedInput schema / properties / repo_path
        Added value: +{
        +  "default": "",
        +  "description": "Explicit Git worktree root used for health, security, governance, evidence, and attribution.",
        +  "type": "string"
        +}
      • addedInput schema / properties / venture
        Added value: +{
        +  "default": "",
        +  "description": "Optional ledger venture identity; repository context remains authoritative.",
        +  "type": "string"
        +}
    • Changeddelimit_deploy_publish1 field changed
      • addedInput schema / properties / repo_path
        Added value: +{
        +  "default": "",
        +  "description": "Explicit Git worktree root.",
        +  "type": "string"
        +}
    • Changeddelimit_deploy_rollback1 field changed
      • addedInput schema / properties / repo_path
        Added value: +{
        +  "default": "",
        +  "description": "Explicit Git worktree root.",
        +  "type": "string"
        +}
    • Changeddelimit_deploy_site6 fields changed
      • addedInput schema / properties / app
        Added value: +{
        +  "default": "",
        +  "description": "Deployment application identity, separate from filesystem context.",
        +  "type": "string"
        +}
      • addedInput schema / properties / paths
        Added value: +{
        +  "anyOf": [
        +    {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Explicit repo-relative paths to stage; set staged_only=false when used."
        +}
      • changedInput schema / properties / project_path / description
        Previous value: -"Path to the site project. Default \".\" (cwd). Sanitized — must not escape the workspace root."New value: +"Site directory inside repo_path, or an absolute path inside it."
      • addedInput schema / properties / repo_path
        Added value: +{
        +  "default": "",
        +  "description": "Required explicit Git worktree root; never derived from MCP server cwd.",
        +  "type": "string"
        +}
      • addedInput schema / properties / staged_only
        Added value: +{
        +  "default": true,
        +  "description": "Deploy only the existing index. Safe default: true.",
        +  "type": "boolean"
        +}
      • addedInput schema / properties / vercel_timeout
        Added value: +{
        +  "default": 60,
        +  "description": "Seconds to wait for Vercel after push before returning pending (10-600).",
        +  "type": "integer"
        +}
    • Changeddelimit_deploy_status1 field changed
      • addedInput schema / properties / repo_path
        Added value: +{
        +  "default": "",
        +  "description": "Explicit Git worktree root.",
        +  "type": "string"
        +}
    • Changeddelimit_deploy_verify3 fields changed
      • changedInput schema / properties / app / description
        Previous value: -"Application name."New value: +"Application identity; selects only this app's targets."
      • addedInput schema / properties / repo_path
        Added value: +{
        +  "default": "",
        +  "description": "Explicit Git worktree root containing deploy target configuration.",
        +  "type": "string"
        +}
      • addedInput schema / properties / target_urls
        Added value: +{
        +  "anyOf": [
        +    {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Optional app-specific HTTPS targets; never expands to the global fleet."
        +}
    • Changeddelimit_design_validate_responsive1 field changed
      • addedInput schema / properties / url
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Optional URL or HTML file path for dynamic Playwright testing."
        +}
    • Changeddelimit_handoff_acknowledge1 field changed
      • addedInput schema / properties / project_path
        Added value: +{
        +  "default": "",
        +  "description": "Optional exact project namespace. Blank searches all namespaces; an explicit path never writes outside that namespace.",
        +  "type": "string"
        +}
    • Changeddelimit_handoff_list2 fields changed
      • addedInput schema / properties / limit
        Added value: +{
        +  "default": 50,
        +  "description": "Maximum receipts to return, 1-200. Default 50.",
        +  "type": "integer"
        +}
      • addedInput schema / properties / project_path
        Added value: +{
        +  "default": "",
        +  "description": "Optional exact project namespace. Blank aggregates all namespaces.",
        +  "type": "string"
        +}
    • Changeddelimit_seal_verify4 fields changed
      • addedInput schema / properties / expect_merge_commit
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "A1 only: the git merge-commit SHA the relying party expects. When given, verification hard-fails unless subject.merge_commit matches (anti-replay binding, spec §2.2 step 11)."
        +}
      • addedInput schema / properties / expect_repo
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "A1 only: the canonical repo URL the relying party expects. When given, sha256(subject_salt || url) must equal subject.repo or verification hard-fails."
        +}
      • addedInput schema / properties / mode
        Added value: +{
        +  "default": "receipt",
        +  "description": "Verification mode. 'receipt' (default) = legacy/v0.2 receipt path, unchanged. 'a1' = hardened offline A1 bundle path (schema_version >= 0.3): tar-safety, version floor, crypto-suite allowlist, subject binding, key-manifest crosscheck.",
        +  "type": "string"
        +}
      • changedInput schema / properties / receipt_path / description
        Previous value: -"Path to a Delimit Seal receipt JSON file. Required."New value: +"Path to a Delimit Seal receipt JSON file, OR (mode='a1') an A1 bundle (.a1.tar.gz). Required."
    • Changeddelimit_session_handoff1 field changed
      • addedInput schema / properties / project_path
        Added value: +{
        +  "default": "",
        +  "description": "Project path whose revive soul this handoff should refresh. Empty = auto-detect from cwd.",
        +  "type": "string"
        +}
    • Changeddelimit_social_target2 fields changed
      • changedInput schema / properties / action / description
        Previous value: -"\"scan\" to discover targets, \"list\" to show recent, \"stats\" to show counts."New value: +"\"scan\" to discover targets, \"list\" to show recent, \"stats\" to show counts, \"backlog\" to show the report-topic backlog."
      • addedInput schema / properties / mode
        Added value: +{
        +  "default": "engagement",
        +  "description": "\"engagement\" (default, legacy behavior) or \"demand_signal\" to route scan results into the INTERNAL report-topic backlog instead of drafting outbound. LED-3729.",
        +  "type": "string"
        +}
    • Changeddelimit_soul_capture1 field changed
      • addedInput schema / properties / project_path
        Added value: +{
        +  "default": "",
        +  "description": "Project path to capture the soul for. Empty = auto-detect from cwd.",
        +  "type": "string"
        +}
  2. 6 tool updatesv4.13.1
    • Changed_delimit_agent_impl12 fields changed
      • changedInput schema / properties / action / description
        Previous value: -"Which agent operation to perform."New value: +"Which lifecycle operation to perform. One of \"dispatch\",\n\"status\", \"complete\", \"handoff\". Default \"status\". Any other\nvalue returns a deterministic {\"error\": \"Unknown action ...\"}."
      • changedInput schema / properties / assignee / description
        Previous value: -"Target model claude/codex/gemini/any (for action='dispatch')."New value: +"Target model \"claude\"/\"codex\"/\"gemini\"/\"any\"\n(action=\"dispatch\" only). Default \"any\", resolved to a\nconcrete model by the router. Invalid values are rejected."
      • changedInput schema / properties / constraints / description
        Previous value: -"Comma-separated constraints (for action='dispatch')."New value: +"Comma-separated constraints, e.g. \"no force push\"\n(action=\"dispatch\" only). Coerced to a list."
      • changedInput schema / properties / context / description
        Previous value: -"Background info (for dispatch) or handoff context (for handoff)."New value: +"Background to seed the executor (action=\"dispatch\") OR\nnotes for the next model (action=\"handoff\"). Unused by\nstatus/complete."
      • changedInput schema / properties / description / description
        Previous value: -"Task description (for action='dispatch')."New value: +"Longer task description (action=\"dispatch\" only)."
      • changedInput schema / properties / files_changed / description
        Previous value: -"Comma-separated files modified (for action='complete')."New value: +"Comma-separated modified file paths\n(action=\"complete\" only). Coerced to a list."
      • changedInput schema / properties / priority / description
        Previous value: -"P0/P1/P2 (for action='dispatch')."New value: +"\"P0\"/\"P1\"/\"P2\" (action=\"dispatch\" only). Default \"P1\";\ninvalid values are rejected."
      • changedInput schema / properties / result / description
        Previous value: -"Summary of what was done (for action='complete')."New value: +"Summary of what was done (action=\"complete\" only)."
      • changedInput schema / properties / task_id / description
        Previous value: -"Task ID e.g. AGT-A1B2C3D4 (for status/complete/handoff)."New value: +"Task id, e.g. \"AGT-A1B2C3D4\". Used by status, complete,\nhandoff. Optional for status (empty lists all active tasks);\nrequired and validated for complete/handoff."
      • changedInput schema / properties / title / description
        Previous value: -"Task title (for action='dispatch')."New value: +"Task title (action=\"dispatch\" only). Required — the backend\nrejects empty titles."
      • changedInput schema / properties / to_model / description
        Previous value: -"Target model for handoff (for action='handoff')."New value: +"Target model for the transfer (action=\"handoff\" only).\nRequired; validated against the allowed models."
      • changedInput schema / properties / tools_needed / description
        Previous value: -"Comma-separated tools list (for action='dispatch')."New value: +"Comma-separated MCP tools the work will need\n(action=\"dispatch\" only). Coerced to a list."
    • Changed_delimit_context_impl8 fields changed
      • changedInput schema / properties / action / description
        Previous value: -"Which context operation to perform."New value: +"Which context operation to perform. One of \"init\", \"read\",\n\"write\", \"list\", \"snapshot\", \"branch\". Default \"list\". Other\nvalues return a deterministic error."
      • changedInput schema / properties / artifact_type / description
        Previous value: -"Type hint text/json/code/plan (for action='write')."New value: +"Type hint stored on the artifact — \"text\", \"json\",\n\"code\", or \"plan\". Used only when action=\"write\". Default\n\"text\". Affects the stored type hint, not the storage format."
      • changedInput schema / properties / branch_action / description
        Previous value: -"Branch sub-action create/merge/list (for action='branch')."New value: +"Branch sub-action — \"list\", \"create\", or \"merge\".\nUsed only when action=\"branch\". Default \"list\"."
      • changedInput schema / properties / branch_name / description
        Previous value: -"Branch name (for action='branch' with create/merge)."New value: +"Branch name. Required when action=\"branch\" with\nbranch_action=\"create\" or \"merge\"; ignored for \"list\"."
      • changedInput schema / properties / content / description
        Previous value: -"Artifact content (for action='write')."New value: +"Artifact text body. Used only when action=\"write\"."
      • changedInput schema / properties / label / description
        Previous value: -"Snapshot label (for action='snapshot')."New value: +"Optional human-readable snapshot label, appended to the\ntimestamp in the snapshot dir name. Used only when\naction=\"snapshot\"."
      • changedInput schema / properties / name / description
        Previous value: -"Artifact name (for read/write)."New value: +"Artifact name, used as the <name>.json file key. Required\nfor action=\"read\" and action=\"write\". Ignored by other\nactions."
      • changedInput schema / properties / venture / description
        Previous value: -"Venture/project namespace (default: \"default\")."New value: +"Venture/project namespace key — selects the\n~/.delimit/context/<venture>/ tree. Used by every action.\nDefault \"default\"."
    • Changed_delimit_deploy_impl10 fields changed
      • changedInput schema / properties / action / description
        Previous value: -"Which deploy operation to perform."New value: +"Which deploy operation to perform. One of \"plan\", \"build\",\n\"npm\", \"publish\", \"site\", \"status\", \"verify\", \"rollback\".\nDefault \"status\". Case/space-insensitive (lowered + stripped).\nOther values return a deterministic {\"error\": ...}."
      • changedInput schema / properties / app / description
        Previous value: -"Application name (for plan/build/publish/verify/rollback/status)."New value: +"Application name / project key in the deploy backend. Used by\n\"plan\", \"build\", \"publish\", \"verify\", \"rollback\", \"status\".\nRequired for a real container operation. (Ignored by \"site\"\nand \"npm\".)"
      • changedInput schema / properties / bump / description
        Previous value: -"Version bump patch/minor/major (for action='npm')."New value: +"Semver bump \"patch\" (default) / \"minor\" / \"major\". Used by\n\"npm\" only."
      • changedInput schema / properties / dry_run / description
        Previous value: -"Preview without publishing (for action='npm')."New value: +"If True, run the npm chain without the final publish. Used\nby \"npm\" only. Default False."
      • changedInput schema / properties / env / description
        Previous value: -"Target environment staging/production (for plan/verify/rollback/status)."New value: +"Target environment, typically \"staging\" or \"production\". Used\nby \"plan\", \"verify\", \"rollback\", \"status\"."
      • changedInput schema / properties / git_ref / description
        Previous value: -"Git reference branch/tag/SHA (for plan/build/publish/verify)."New value: +"Git ref (branch/tag/SHA). Used by \"plan\", \"build\",\n\"publish\", \"verify\". Default None = backend HEAD; drives the\nimage tag for \"build\"."
      • changedInput schema / properties / message / description
        Previous value: -"Git commit message (for action='site')."New value: +"Git commit message. Used by \"site\" only."
      • changedInput schema / properties / project_path / description
        Previous value: -"Path to project (for action='site' or action='npm')."New value: +"Path to the project. Used by \"site\" and \"npm\".\nDefault \".\" (cwd). For \"site\" it is sanitized and must not\nescape the workspace root; for \"npm\" it must contain a\npackage.json."
      • changedInput schema / properties / tag / description
        Previous value: -"npm dist-tag (for action='npm')."New value: +"npm dist-tag. Used by \"npm\" only. Default \"latest\"; use \"next\"\nor a custom tag to avoid auto-installing the new version for\nexisting users."
      • changedInput schema / properties / to_sha / description
        Previous value: -"SHA to rollback to (for action='rollback')."New value: +"SHA to roll back to. Used by \"rollback\" only. None lets the\nbackend select the previous deployed SHA."
    • Changed_delimit_obs_impl7 fields changed
      • changedInput schema / properties / action / description
        Previous value: -"Which observability operation to perform."New value: +"Which observability operation to perform. One of\n\"metrics\", \"logs\", \"alerts\", \"status\". Default \"status\".\nCase-insensitive and whitespace-trimmed. Other values\nreturn a deterministic error listing the valid actions."
      • changedInput schema / properties / alert_action / description
        Previous value: -"Alert sub-action list/create/delete/update (for action='alerts')."New value: +"Alert sub-action — one of \"list\", \"create\",\n\"update\", \"delete\" (used only when action=\"alerts\").\nDefault \"list\". \"create\"/\"update\"/\"delete\" write; \"list\"\nreads."
      • changedInput schema / properties / alert_rule / description
        Previous value: -"Alert rule definition (for alerts create/update)."New value: +"Alert rule definition dict (used only when\naction=\"alerts\", required for alert_action \"create\" and\n\"update\"). Backend-specific schema — typically metric,\nthreshold, comparison, window, severity."
      • changedInput schema / properties / query / description
        Previous value: -"Metrics query type or log search string (for metrics/logs)."New value: +"Metric query name (action=\"metrics\") or log search\nstring (action=\"logs\"). Default \"system\". For \"logs\" this\nis effectively required — empty searches are rejected by\nthe backend. Ignored for \"alerts\" and \"status\"."
      • changedInput schema / properties / rule_id / description
        Previous value: -"Rule ID (for alerts delete/update)."New value: +"Identifier for an existing rule (used only when\naction=\"alerts\", required for alert_action \"delete\" and\n\"update\")."
      • changedInput schema / properties / source / description
        Previous value: -"Optional data source (for metrics/logs)."New value: +"Optional data/log source override (used only when\naction=\"metrics\" or action=\"logs\"). Default None = backend\ndefault / all configured sources."
      • changedInput schema / properties / time_range / description
        Previous value: -"Time range e.g. 1h, 24h, 7d (for metrics/logs)."New value: +"Window like \"1h\", \"24h\", \"7d\" (used only when\naction=\"metrics\" or action=\"logs\"). Default \"1h\". Larger\nwindows may downsample or be capped server-side. Ignored\nfor \"alerts\" and \"status\"."
    • Changed_delimit_release_impl8 fields changed
      • changedInput schema / properties / action / description
        Previous value: -"Which release operation to perform."New value: +"Which release operation to perform. One of \"plan\",\n\"validate\", \"status\", \"rollback\", \"history\", \"sync\".\nDefault \"status\". Other values return a deterministic error."
      • changedInput schema / properties / environment / description
        Previous value: -"Target environment staging/production."New value: +"Target environment, \"staging\" or \"production\".\nDefault \"production\"."
      • changedInput schema / properties / limit / description
        Previous value: -"Number of releases to return (for action='history')."New value: +"Maximum number of releases to return. Default 10. Used\nonly by \"history\"."
      • changedInput schema / properties / repository / description
        Previous value: -"Repository path (for action='plan')."New value: +"Repository path. Default \".\". Used only by \"plan\"."
      • changedInput schema / properties / services / description
        Previous value: -"Optional service list (for action='plan')."New value: +"Optional list of service names to scope the plan;\nNone = all services in the repo manifest. Used only by \"plan\"."
      • changedInput schema / properties / sync_action / description
        Previous value: -"Sub-action audit/config (for action='sync')."New value: +"Sub-action for \"sync\" — \"audit\" (default) or\n\"config\". Ignored by other actions."
      • changedInput schema / properties / to_version / description
        Previous value: -"Version to rollback to (for action='rollback')."New value: +"Prior release version to roll back to. Required for\n\"rollback\"; ignored otherwise."
      • changedInput schema / properties / version / description
        Previous value: -"Release version (auto-detected if empty, for plan/validate/rollback)."New value: +"Release version (auto-detected from git tags if empty).\nUsed by \"plan\", \"validate\", and \"rollback\" (as the expected\ncurrent version to roll back FROM)."
    • Changed_delimit_secret_impl7 fields changed
      • changedInput schema / properties / action / description
        Previous value: -"Which secret operation to perform."New value: +"Which secret operation to perform. One of \"store\", \"get\",\n\"list\", \"revoke\", \"access_log\". Default \"list\". Case-\ninsensitive (lowered + stripped). Other values return a\ndeterministic error."
      • changedInput schema / properties / agent_type / description
        Previous value: -"Requesting agent identity (for action='get')."New value: +"Identity of the requesting agent (action=\"get\" only),\nchecked against scope."
      • changedInput schema / properties / description / description
        Previous value: -"Human-readable description (for action='store')."New value: +"Human-readable description (action=\"store\" only).\nOptional but recommended; surfaces in \"list\" and the audit\ntrail."
      • changedInput schema / properties / name / description
        Previous value: -"Secret name (for store/get/revoke/access_log)."New value: +"Credential name / key. Required for \"store\", \"get\",\n\"revoke\"; optional filter for \"access_log\" (empty = all);\nignored for \"list\". Sanitized for filesystem safety."
      • changedInput schema / properties / scope / description
        Previous value: -"Comma-separated allowed agents/tools or 'all' (for action='store')."New value: +"Comma-separated agent/tool identities permitted to read\nthis credential, or \"all\" for any requester. Used only by\naction=\"store\". Default \"all\". Enforced at read time."
      • changedInput schema / properties / tool / description
        Previous value: -"Requesting tool name (for action='get')."New value: +"Name of the requesting tool (action=\"get\" only), checked\nagainst scope."
      • changedInput schema / properties / value / description
        Previous value: -"Secret value (for action='store')."New value: +"The credential to store. Required for action=\"store\";\nignored otherwise. Never echoed back by \"store\"."
  3. 1 tool updatev4.8.0
    • Addeddelimit_handoff_preflight
  4. 183 tool updatesv4.7.9
    • Changed_delimit_gov_impl8 fields changed
      • changedInput schema / properties / action / description
        Previous value: -"Which governance operation to perform."New value: +"Which governance operation to perform. One of \"health\",\n\"status\", \"policy\", \"evaluate\", \"new_task\", \"run\",\n\"verify\". Default \"health\". Other values return a\ndeterministic error."
      • changedInput schema / properties / context / description
        Previous value: -"Additional context (for action='evaluate')."New value: +"Additional context (used only when action=\"evaluate\").\nStrings are auto-coerced to {\"text\": ...} via\n_coerce_dict_arg; dicts are passed through. None is\nallowed."
      • changedInput schema / properties / eval_action / description
        Previous value: -"The action to evaluate (for action='evaluate')."New value: +"The proposed action name to evaluate (used only\nwhen action=\"evaluate\"). Empty string is rejected by the\nbackend."
      • changedInput schema / properties / repo / description
        Previous value: -"Repository path."New value: +"Repository path. Default \".\" (cwd)."
      • changedInput schema / properties / risk_level / description
        Previous value: -"Risk level low/medium/high/critical (for action='new_task')."New value: +"Risk level low/medium/high/critical (used only when\naction=\"new_task\"). Default \"medium\"."
      • changedInput schema / properties / scope / description
        Previous value: -"Task scope (for action='new_task')."New value: +"Task scope (used only when action=\"new_task\"). Required\nfor new_task."
      • changedInput schema / properties / task_id / description
        Previous value: -"Task ID (for action='run' or action='verify')."New value: +"Task ID (used only when action=\"run\" or\naction=\"verify\"). Required for those actions."
      • changedInput schema / properties / title / description
        Previous value: -"Task title (for action='new_task')."New value: +"Task title (used only when action=\"new_task\"). Required\nfor new_task."
    • Changeddelimit_activate3 fields changed
      • changedInput schema / properties / auto_permissions / description
        Previous value: -"Auto-configure AI assistant permissions for Delimit tools (default True)."New value: +"Auto-configure AI assistant permissions (default True)."
      • changedInput schema / properties / license_key / description
        Previous value: -"Optional license key to activate Pro (e.g. DELIMIT-XXXX-XXXX-XXXX). Leave empty to check free-tier readiness."New value: +"Optional license key (e.g. DELIMIT-XXXX-XXXX-XXXX). Empty = free-tier readiness only."
      • changedInput schema / properties / project_path / description
        Previous value: -"Project directory to check."New value: +"Project directory to check. Default \".\" (cwd)."
    • Changeddelimit_agent_check2 fields changed
      • changedInput schema / properties / action / description
        Previous value: -"Action to check (e.g. \"ledger_write\", \"deploy\")."New value: +"Action to check (e.g. \"ledger_write\", \"deploy\"). Required."
      • changedInput schema / properties / model / description
        Previous value: -"AI model name (claude, codex, gemini, cursor)."New value: +"AI model name — \"claude\", \"codex\", \"gemini\", \"cursor\". Required."
    • Changeddelimit_agent_complete3 fields changed
      • addedInput schema / properties / files_changed / description
        Added value: +"Comma-separated paths of modified files."
      • addedInput schema / properties / result / description
        Added value: +"Summary of what was done."
      • addedInput schema / properties / task_id / description
        Added value: +"Task id from delimit_agent_dispatch. Required."
    • Changeddelimit_agent_dispatch7 fields changed
      • addedInput schema / properties / assignee / description
        Added value: +"Target model — \"claude\", \"codex\", \"gemini\", or \"any\". Default \"any\"."
      • addedInput schema / properties / constraints / description
        Added value: +"Comma-separated constraints (e.g. \"no force push\")."
      • addedInput schema / properties / context / description
        Added value: +"Background info to seed the executor."
      • addedInput schema / properties / description / description
        Added value: +"Longer task description."
      • addedInput schema / properties / priority / description
        Added value: +"One of \"P0\" (immediate), \"P1\" (default), \"P2\"."
      • addedInput schema / properties / title / description
        Added value: +"Short task title. Required."
      • addedInput schema / properties / tools_needed / description
        Added value: +"Comma-separated MCP tools the work will need."
    • Changeddelimit_agent_handoff3 fields changed
      • addedInput schema / properties / context / description
        Added value: +"Notes for the next model."
      • addedInput schema / properties / task_id / description
        Added value: +"Existing task id from delimit_agent_dispatch. Required."
      • addedInput schema / properties / to_model / description
        Added value: +"Target model — \"claude\", \"codex\", \"gemini\", etc. Required."
    • Changeddelimit_agent_link2 fields changed
      • changedInput schema / properties / ledger_item_id / description
        Previous value: -"Ledger item ID (LED-xxx or STR-xxx)."New value: +"Ledger item id (LED-xxx or STR-xxx). Required."
      • changedInput schema / properties / task_id / description
        Previous value: -"Agent task ID (AGT-xxx)."New value: +"Agent task id (AGT-xxx). Required."
    • Changeddelimit_agent_policy7 fields changed
      • changedInput schema / properties / custom_constraints / description
        Previous value: -"Comma-separated constraints (e.g. \"no-deploy,no-publish\")."New value: +"Comma-separated constraints, e.g. \"no-deploy,no-publish\"."
      • changedInput schema / properties / deploy / description
        Previous value: -"Allow deploys (true/false)."New value: +"Allow deploys (\"true\"/\"false\")."
      • changedInput schema / properties / evidence / description
        Previous value: -"Evidence access level (read-only, read-write, none)."New value: +"Evidence access level."
      • changedInput schema / properties / ledger / description
        Previous value: -"Ledger access level (read-only, read-write, none)."New value: +"Ledger access level."
      • changedInput schema / properties / memory / description
        Previous value: -"Memory access level (read-only, read-write, none)."New value: +"Memory access level."
      • changedInput schema / properties / model / description
        Previous value: -"AI model name (claude, codex, gemini, cursor). Empty = show all."New value: +"AI model name — \"claude\", \"codex\", \"gemini\", \"cursor\". Empty = list all."
      • changedInput schema / properties / secrets / description
        Previous value: -"Allow secret access (true/false)."New value: +"Allow secret access (\"true\"/\"false\")."
    • Changeddelimit_agent_status1 field changed
      • addedInput schema / properties / task_id / description
        Added value: +"Specific task id (e.g. \"AGT-A1B2C3D4\") or empty to list all."
    • Changeddelimit_audit3 fields changed
      • changedInput schema / properties / lenses / description
        Previous value: -"Comma-separated lenses to apply (security, correctness, governance). Default: all."New value: +"Comma-separated lenses — \"security\", \"correctness\", \"governance\". Empty = all three."
      • changedInput schema / properties / target / description
        Previous value: -"File path, git diff output, or code snippet to audit."New value: +"File path, git diff output, or code snippet to audit. Required."
      • changedInput schema / properties / target_type / description
        Previous value: -"\"file\" (reads file), \"diff\" (git diff text), \"snippet\" (inline code)."New value: +"\"file\" (default — reads file), \"diff\" (git diff text), or \"snippet\" (inline code)."
    • Changeddelimit_build_loop4 fields changed
      • changedInput schema / properties / action / description
        Previous value: -"'init' to start a session, 'run' to execute one iteration."New value: +"\"init\" to start a session, \"run\" (default) to execute one iteration."
      • changedInput schema / properties / cycle_mode / description
        Previous value: -"'sense' (think+strategy), 'execute' (build+deploy),\n        'full' (all stages). Only applies to loop_type='cycle'.\n        Daemon uses 'sense', interactive sessions use 'full' or 'execute'."New value: +"For loop_type=\"cycle\" — \"sense\" (think+strategy), \"execute\" (build+deploy), or \"full\" (all). Default \"full\"."
      • changedInput schema / properties / loop_type / description
        Previous value: -"'cycle', 'build', 'social', or 'deploy' (default: build)."New value: +"\"cycle\", \"build\" (default), \"social\", or \"deploy\"."
      • changedInput schema / properties / session_id / description
        Previous value: -"Optional session ID to continue."New value: +"Optional session id to continue."
    • Changeddelimit_build_loop_daemon4 fields changed
      • changedInput schema / properties / action / description
        Previous value: -"'start', 'stop', or 'status' (default: status)"New value: +"\"start\", \"stop\", or \"status\" (default)."
      • changedInput schema / properties / interval_seconds / description
        Previous value: -"Tick interval in seconds (default 900 = 15 min). Only used on start."New value: +"Tick interval. Default 900 (15 min). Used on start."
      • changedInput schema / properties / loop_type / description
        Previous value: -"'build', 'social', or 'deploy' (default: build). Only used on start."New value: +"\"build\" (default), \"social\", or \"deploy\". Used on start."
      • changedInput schema / properties / session_id / description
        Previous value: -"Session to run (required for all actions)"New value: +"Session to run. Required for all actions."
    • Changeddelimit_changelog8 fields changed
      • changedInput schema / properties / format / description
        Previous value: -"Output format (markdown, json, keepachangelog, github-release)."New value: +"\"markdown\" (default), \"json\", \"keepachangelog\", \"github-release\"."
      • changedInput schema / properties / include_ledger / description
        Previous value: -"Pull completed ledger items into changelog (git mode, default true)."New value: +"Include completed ledger items (git mode). Default True."
      • changedInput schema / properties / new_spec / description
        Previous value: -"Path to new OpenAPI spec (spec mode only)."New value: +"New OpenAPI spec path (spec mode)."
      • changedInput schema / properties / old_spec / description
        Previous value: -"Path to old OpenAPI spec (spec mode only)."New value: +"Old OpenAPI spec path (spec mode)."
      • changedInput schema / properties / output_file / description
        Previous value: -"Write changelog to this file path. If CHANGELOG.md, prepends entry."New value: +"Write the rendered changelog here. If \"CHANGELOG.md\", prepends the entry."
      • changedInput schema / properties / repo_path / description
        Previous value: -"Path to a git repository (git mode). When set, uses git log."New value: +"Repo path (git mode)."
      • changedInput schema / properties / since_tag / description
        Previous value: -"Git tag to diff from (default: auto-detect latest tag)."New value: +"Git tag to diff from. Empty = auto-detect latest tag."
      • changedInput schema / properties / version / description
        Previous value: -"Version label for the changelog entry (e.g. \"4.1.0\")."New value: +"Version label (e.g. \"4.1.0\")."
    • Changeddelimit_collision_check3 fields changed
      • changedInput schema / properties / action / description
        Previous value: -"\"check\", \"claim\", or \"release\"."New value: +"\"check\" (default), \"claim\", or \"release\"."
      • changedInput schema / properties / model / description
        Previous value: -"AI model name (claude/codex/gemini)."New value: +"AI model name — \"claude\", \"codex\", \"gemini\"."
      • changedInput schema / properties / task_id / description
        Previous value: -"Optional task ID for tracking."New value: +"Optional task id for tracking."
    • Changeddelimit_config_export1 field changed
      • changedInput schema / properties / project_path / description
        Previous value: -"Path to the project root (default: current directory)."New value: +"Path to project root. Default \".\" (cwd)."
    • Changeddelimit_config_import3 fields changed
      • changedInput schema / properties / config_json / description
        Previous value: -"The JSON config bundle string (from delimit_config_export)."New value: +"The JSON config bundle string (from delimit_config_export). Required."
      • changedInput schema / properties / project_path / description
        Previous value: -"Path to the target project root (default: current directory)."New value: +"Target project root. Default \".\" (cwd)."
      • changedInput schema / properties / write_workflow / description
        Previous value: -"Also write the GitHub Action workflow file if present in the bundle."New value: +"Also write the GitHub Action workflow if present. Default False."
    • Changeddelimit_content_publish1 field changed
      • changedInput schema / properties / content_type / description
        Previous value: -"'tweet' to post next queued tweet, 'youtube' to generate+upload next video."New value: +"\"tweet\" (default) to post next queued tweet, or \"youtube\" to generate + upload the next video."
    • Changeddelimit_content_queue2 fields changed
      • changedInput schema / properties / action / description
        Previous value: -"'status' to view queue, 'seed' to populate with defaults, 'add' to add custom tweets."New value: +"\"status\" (default), \"seed\", or \"add\"."
      • changedInput schema / properties / items / description
        Previous value: -"For 'add' action -- newline-separated tweet texts to add to the queue."New value: +"For \"add\" — newline-separated tweet texts."
    • Changeddelimit_context_branch3 fields changed
      • addedInput schema / properties / action / description
        Added value: +"Branch sub-action, one of \"list\", \"create\", \"merge\". Default \"list\"."
      • addedInput schema / properties / branch_name / description
        Added value: +"Branch name (required for create / merge)."
      • addedInput schema / properties / venture / description
        Added value: +"Venture namespace key. Required."
    • Changeddelimit_context_init1 field changed
      • addedInput schema / properties / venture / description
        Added value: +"Venture/project namespace key. Default \"default\"."
    • Changeddelimit_context_list1 field changed
      • addedInput schema / properties / venture / description
        Added value: +"Venture namespace key. Required."
    • Changeddelimit_context_read2 fields changed
      • addedInput schema / properties / name / description
        Added value: +"Artifact name. Required."
      • addedInput schema / properties / venture / description
        Added value: +"Venture namespace key. Required."
    • Changeddelimit_context_snapshot2 fields changed
      • addedInput schema / properties / label / description
        Added value: +"Optional human-readable label for the snapshot."
      • addedInput schema / properties / venture / description
        Added value: +"Venture namespace key. Required."
    • Changeddelimit_context_write4 fields changed
      • addedInput schema / properties / artifact_type / description
        Added value: +"Type hint, one of \"text\", \"json\", \"code\", \"plan\". Default \"text\". Affects render hints, not storage format."
      • addedInput schema / properties / content / description
        Added value: +"Artifact text. Required."
      • addedInput schema / properties / name / description
        Added value: +"Artifact name (used as the file key). Required."
      • addedInput schema / properties / venture / description
        Added value: +"Venture namespace key. Required."
    • Addeddelimit_control
    • Addeddelimit_corp_dashboard
    • Changeddelimit_cost_alert4 fields changed
      • changedInput schema / properties / action / description
        Previous value: -"Action (list/create/delete/toggle)."New value: +"One of \"list\" (default), \"create\", \"delete\", \"toggle\"."
      • changedInput schema / properties / alert_id / description
        Previous value: -"Alert ID (required for delete/toggle)."New value: +"Existing alert id. Required for delete/toggle."
      • changedInput schema / properties / name / description
        Previous value: -"Alert name (required for create)."New value: +"Alert name. Required for create."
      • changedInput schema / properties / threshold / description
        Previous value: -"Cost threshold in USD (required for create)."New value: +"Cost threshold in USD. Required for create."
    • Changeddelimit_cost_analyze1 field changed
      • changedInput schema / properties / target / description
        Previous value: -"Project or infrastructure path to analyze."New value: +"Project or infrastructure path to analyze. Default \".\" (cwd)."
    • Changeddelimit_cost_controls4 fields changed
      • changedInput schema / properties / action / description
        Previous value: -"One of 'status', 'quota', 'set', or 'reset'."New value: +"One of \"status\" (default), \"quota\", \"set\", \"reset\"."
      • changedInput schema / properties / cost_cap / description
        Previous value: -"New session cost cap in USD (used with action='set')."New value: +"New session cost cap in USD (used with action=\"set\")."
      • changedInput schema / properties / limit / description
        Previous value: -"New hourly call limit for the tool (used with action='set')."New value: +"New hourly call limit (used with action=\"set\")."
      • changedInput schema / properties / tool_name / description
        Previous value: -"Tool name (required for 'quota' and 'set' with limit)."New value: +"Tool name. Required for \"quota\" and \"set\" with limit."
    • Changeddelimit_cost_optimize1 field changed
      • changedInput schema / properties / target / description
        Previous value: -"Project or infrastructure path to analyze."New value: +"Project or infrastructure path to analyze. Default \".\" (cwd)."
    • Changeddelimit_daemon_classify1 field changed
      • changedInput schema / properties / item_id / description
        Previous value: -"Specific ledger item ID to classify. If empty, classifies the next automatable item."New value: +"Specific ledger item id to classify. Empty = pick the next automatable item from the open ledger."
    • Changeddelimit_daemon_run2 fields changed
      • changedInput schema / properties / dry_run / description
        Previous value: -"If true, log actions but don't execute (default true)"New value: +"If True (default), log actions but do not execute."
      • changedInput schema / properties / iterations / description
        Previous value: -"Number of loop iterations (0 = infinite, default 1)"New value: +"Number of iterations. 0 = infinite. Default 1."
    • Changeddelimit_data_backup1 field changed
      • changedInput schema / properties / target / description
        Previous value: -"Directory or file to back up."New value: +"Directory or file to back up. Default \".\" (cwd)."
    • Changeddelimit_data_migrate1 field changed
      • changedInput schema / properties / target / description
        Previous value: -"Project path to scan for migration files."New value: +"Project path to scan for migration files. Default \".\" (cwd)."
    • Changeddelimit_data_validate1 field changed
      • changedInput schema / properties / target / description
        Previous value: -"Directory or file path containing data files."New value: +"Directory or file path with data files. Default \".\" (cwd)."
    • Changeddelimit_deliberate5 fields changed
      • changedInput schema / properties / context / description
        Previous value: -"Background context for all models."New value: +"Background context shared to all models."
      • changedInput schema / properties / max_rounds / description
        Previous value: -"Maximum rounds (default 3 for debate, 6 for dialogue)."New value: +"Max rounds. Default 3 for debate, 6 for dialogue."
      • changedInput schema / properties / mode / description
        Previous value: -"\"dialogue\" (short turns) or \"debate\" (long essays)."New value: +"\"dialogue\" (short turns) or \"debate\" (long essays). Default \"dialogue\"."
      • changedInput schema / properties / question / description
        Previous value: -"The question to reach consensus on."New value: +"The question to reach consensus on. Required."
      • changedInput schema / properties / scope / description
        Previous value: -"Optional scope override — \"strategic\", \"social\", or\n\"operational\". When empty, the engine classifies from\nkeywords in the question and context. Strategic and social\nscopes enforce the 3-model minimum (charter consensus-thresholds)\nand allow Grok as a tiebreaker on deadlock."New value: +"Optional scope override — \"strategic\", \"social\", or \"operational\". Empty = engine classifies from keywords."
    • Changeddelimit_deploy_build2 fields changed
      • addedInput schema / properties / app / description
        Added value: +"Application name (project key in the deploy backend)."
      • addedInput schema / properties / git_ref / description
        Added value: +"Git ref (branch/tag/SHA). Default None = backend HEAD."
    • Changeddelimit_deploy_npm4 fields changed
      • addedInput schema / properties / bump / description
        Added value: +"Semver bump — \"patch\" (default), \"minor\", or \"major\"."
      • addedInput schema / properties / dry_run / description
        Added value: +"If True, run the chain without publishing. Default False."
      • addedInput schema / properties / project_path / description
        Added value: +"Path to the npm project root. Default \".\" (cwd)."
      • addedInput schema / properties / tag / description
        Added value: +"npm dist-tag for the publish. Default \"latest\"."
    • Changeddelimit_deploy_plan3 fields changed
      • addedInput schema / properties / app / description
        Added value: +"Application name (project key in the deploy backend). Required."
      • addedInput schema / properties / env / description
        Added value: +"Target environment, typically \"staging\" or \"production\"."
      • addedInput schema / properties / git_ref / description
        Added value: +"Git ref (branch/tag/SHA). Optional; defaults to the backend's notion of HEAD when omitted."
    • Changeddelimit_deploy_publish2 fields changed
      • addedInput schema / properties / app / description
        Added value: +"Application name (project key in the deploy backend)."
      • addedInput schema / properties / git_ref / description
        Added value: +"Git ref the images were built at. Default None."
    • Changeddelimit_deploy_rollback3 fields changed
      • addedInput schema / properties / app / description
        Added value: +"Application name."
      • addedInput schema / properties / env / description
        Added value: +"Target environment."
      • addedInput schema / properties / to_sha / description
        Added value: +"Target SHA to roll back to. If None, the backend selects the previous deployed SHA."
    • Changeddelimit_deploy_site2 fields changed
      • addedInput schema / properties / message / description
        Added value: +"Git commit message for the deploy commit."
      • addedInput schema / properties / project_path / description
        Added value: +"Path to the site project. Default \".\" (cwd). Sanitized — must not escape the workspace root."
    • Changeddelimit_deploy_status2 fields changed
      • addedInput schema / properties / app / description
        Added value: +"Application name."
      • addedInput schema / properties / env / description
        Added value: +"Target environment."
    • Changeddelimit_deploy_verify3 fields changed
      • addedInput schema / properties / app / description
        Added value: +"Application name."
      • addedInput schema / properties / env / description
        Added value: +"Target environment (\"staging\" or \"production\")."
      • addedInput schema / properties / git_ref / description
        Added value: +"Optional git ref the deploy targets."
    • Changeddelimit_design_component_library2 fields changed
      • changedInput schema / properties / output_format / description
        Previous value: -"Output format (json/markdown)."New value: +"One of \"json\" (default) or \"markdown\"."
      • changedInput schema / properties / project_path / description
        Previous value: -"Project path to scan."New value: +"Project path to scan. Required."
    • Changeddelimit_design_extract_tokens3 fields changed
      • changedInput schema / properties / figma_file_key / description
        Previous value: -"Optional Figma file key (auto-uses Figma API if a token is available)."New value: +"Optional Figma file key (uses Figma API if a token is available)."
      • changedInput schema / properties / project_path / description
        Previous value: -"Project directory to scan. Defaults to cwd."New value: +"Project directory to scan. Default = cwd."
      • changedInput schema / properties / token_types / description
        Previous value: -"Token types to extract (colors, typography, spacing, breakpoints)."New value: +"Token types — \"colors\", \"typography\", \"spacing\", \"breakpoints\". Comma string or list. None = all."
    • Changeddelimit_design_generate_component2 fields changed
      • changedInput schema / properties / component_name / description
        Previous value: -"Component name (PascalCase)."New value: +"Component name (PascalCase). Required."
      • changedInput schema / properties / output_path / description
        Previous value: -"Output file path. Defaults to components/<Name>/<Name>.tsx."New value: +"Output file path. Default = components/<Name>/<Name>.tsx."
    • Changeddelimit_design_validate_responsive2 fields changed
      • changedInput schema / properties / check_types / description
        Previous value: -"Check types (breakpoints, containers, fluid-type, etc.)."New value: +"Specific checks (\"breakpoints\", \"containers\", \"fluid-type\", etc.) as comma string or list. None = all."
      • changedInput schema / properties / project_path / description
        Previous value: -"Project path to validate."New value: +"Project path to validate. Required."
    • Changeddelimit_diagnose3 fields changed
      • changedInput schema / properties / dry_run / description
        Previous value: -"If True, return a preview of what doctor would create/modify without executing changes."New value: +"If True, preview changes without executing."
      • changedInput schema / properties / project_path / description
        Previous value: -"Project to diagnose."New value: +"Project to diagnose. Default \".\" (cwd)."
      • changedInput schema / properties / undo / description
        Previous value: -"If True, revert changes from the last doctor --fix run using the saved manifest."New value: +"If True, revert changes from the last run."
    • Changeddelimit_diff2 fields changed
      • changedInput schema / properties / new_spec / description
        Previous value: -"Path to the new OpenAPI spec file."New value: +"Path to the proposed OpenAPI spec file. Required."
      • changedInput schema / properties / old_spec / description
        Previous value: -"Path to the old OpenAPI spec file."New value: +"Path to the baseline OpenAPI spec file. Required."
    • Changeddelimit_diff_report5 fields changed
      • changedInput schema / properties / new_spec / description
        Previous value: -"Path to the new (proposed) OpenAPI spec file."New value: +"Proposed OpenAPI spec path."
      • changedInput schema / properties / old_spec / description
        Previous value: -"Path to the old (baseline) OpenAPI spec file."New value: +"Baseline OpenAPI spec path."
      • changedInput schema / properties / output_file / description
        Previous value: -"Optional file path to write the report to disk."New value: +"Optional path to write the report to disk."
      • changedInput schema / properties / output_format / description
        Previous value: -"\"html\" for a standalone HTML report, \"json\" for structured data."New value: +"\"html\" (default) or \"json\"."
      • changedInput schema / properties / policy_file / description
        Previous value: -"Optional path to a .delimit/policies.yml file."New value: +"Optional .delimit/policies.yml path."
    • Changeddelimit_digest4 fields changed
      • changedInput schema / properties / action / description
        Previous value: -"'run' to build and write, 'latest' to return existing file paths."New value: +"\"run\" (default) or \"latest\"."
      • changedInput schema / properties / send_email / description
        Previous value: -"if True, attempt to email the digest to `to` or\n        DELIMIT_SMTP_TO. Requires DELIMIT_DIGEST_EMAIL=true\n        in the env to actually send (pipeline gate)."New value: +"If True, attempt to email the digest. Requires DELIMIT_DIGEST_EMAIL=true env to actually send."
      • changedInput schema / properties / to / description
        Previous value: -"recipient email. Defaults to DELIMIT_SMTP_TO."New value: +"Email recipient. Empty = DELIMIT_SMTP_TO."
      • changedInput schema / properties / window_hours / description
        Previous value: -"lookback window. Default 24."New value: +"Lookback window. Default 24."
    • Changeddelimit_docs_generate1 field changed
      • changedInput schema / properties / target / description
        Previous value: -"Project path."New value: +"Project path. Default \".\" (cwd)."
    • Changeddelimit_docs_validate1 field changed
      • changedInput schema / properties / target / description
        Previous value: -"Project path."New value: +"Project path. Default \".\" (cwd)."
    • Changeddelimit_drift_check3 fields changed
      • changedInput schema / properties / project_path / description
        Previous value: -"Project root. Defaults to current directory."New value: +"Project root. Default \".\" (cwd)."
      • changedInput schema / properties / spec_path / description
        Previous value: -"Path to OpenAPI spec. Auto-detects if empty."New value: +"OpenAPI spec path. Empty = auto-detect."
      • changedInput schema / properties / staleness_days / description
        Previous value: -"Alert if baseline older than this (default 7)."New value: +"Alert if baseline older than this. Default 7."
    • Changeddelimit_drift_history1 field changed
      • changedInput schema / properties / limit / description
        Previous value: -"Max entries to return."New value: +"Max entries to return. Default 20."
    • Changeddelimit_evidence_collect3 fields changed
      • addedInput schema / properties / asset_meta
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Optional JSON string with asset provenance metadata (for evidence_type='asset')."
        +}
      • changedInput schema / properties / evidence_type / description
        Previous value: -"Type of evidence (e.g. \"deploy\", \"security\", \"test\", \"audit\"). Stored in bundle metadata."New value: +"Type of evidence — e.g. \"deploy\", \"security\", \"test\", \"audit\". Stored in bundle metadata. Empty = generic."
      • changedInput schema / properties / target / description
        Previous value: -"Repository or task path."New value: +"Repository or task path. Default \".\" (cwd)."
    • Changeddelimit_evidence_verify2 fields changed
      • changedInput schema / properties / bundle_id / description
        Previous value: -"Evidence bundle ID to verify."New value: +"Evidence bundle id. Either this or bundle_path must be provided."
      • changedInput schema / properties / bundle_path / description
        Previous value: -"Path to evidence bundle file."New value: +"Path to a bundle file on disk. Either this or bundle_id must be provided."
    • Changeddelimit_executor4 fields changed
      • changedInput schema / properties / action / description
        Previous value: -"'run' (one work order), 'poll' (scan + run all approved),\n'status' (return paused + pending count), 'pause'/'resume'."New value: +"\"run\" (one), \"poll\" (scan + run all approved), \"status\" (default), \"pause\", \"resume\"."
      • changedInput schema / properties / executed_by / description
        Previous value: -"Identifier for the audit log (e.g. 'dashboard', 'cron')."New value: +"Identifier for the audit log (e.g. \"dashboard\", \"cron\")."
      • changedInput schema / properties / live / description
        Previous value: -"When False (default), dry-run — describes what would happen."New value: +"When False (default), dry-run — describe what would happen without firing."
      • changedInput schema / properties / wo_id / description
        Previous value: -"Required for action='run'."New value: +"Work order id. Required for action=\"run\"."
    • Changeddelimit_explain5 fields changed
      • changedInput schema / properties / new_spec / description
        Previous value: -"Path to the new OpenAPI spec file."New value: +"Path to the proposed OpenAPI spec file. Required."
      • changedInput schema / properties / new_version / description
        Previous value: -"New version string."New value: +"New version string for context."
      • changedInput schema / properties / old_spec / description
        Previous value: -"Path to the old OpenAPI spec file."New value: +"Path to the baseline OpenAPI spec file. Required."
      • changedInput schema / properties / old_version / description
        Previous value: -"Previous version string."New value: +"Previous version string for context."
      • changedInput schema / properties / template / description
        Previous value: -"Template name (default: developer)."New value: +"One of \"developer\" (default), \"team_lead\", \"product\", \"migration\", \"changelog\", \"pr_comment\", \"slack\"."
    • Changeddelimit_external_pr_check2 fields changed
      • changedInput schema / properties / repo / description
        Previous value: -"External GitHub repo, e.g. \"goharbor/harbor\"."New value: +"External GitHub repo, e.g. \"goharbor/harbor\". Required."
      • changedInput schema / properties / state / description
        Previous value: -"\"open\" | \"closed\" | \"merged\" | \"all\". Default \"all\"."New value: +"\"open\", \"closed\", \"merged\", or \"all\" (default)."
    • Changeddelimit_generate_scaffold3 fields changed
      • changedInput schema / properties / name / description
        Previous value: -"Project name."New value: +"Project name (becomes the root directory). Required."
      • changedInput schema / properties / packages / description
        Previous value: -"Packages to include."New value: +"Packages to include — either a comma string or list."
      • changedInput schema / properties / project_type / description
        Previous value: -"Project type (nextjs, api, library, etc.)."New value: +"Project flavour, e.g. \"nextjs\", \"api\", \"library\". Required."
    • Changeddelimit_generate_template5 fields changed
      • changedInput schema / properties / features / description
        Previous value: -"Optional feature flags."New value: +"Optional feature flags as a comma string or list."
      • changedInput schema / properties / framework / description
        Previous value: -"Target framework."New value: +"Target framework key, e.g. \"react\", \"nextjs\", \"fastapi\"."
      • changedInput schema / properties / name / description
        Previous value: -"Name for the generated code."New value: +"Name for the generated code (file stem). Required."
      • changedInput schema / properties / target / description
        Previous value: -"Directory to write the generated file into. Defaults to current directory."New value: +"Output directory. Default \".\" (cwd). Sanitized to remain inside the workspace."
      • changedInput schema / properties / template_type / description
        Previous value: -"Template type (component, page, api, etc.)."New value: +"Template flavour, e.g. \"component\", \"page\", \"api\". Required."
    • Changeddelimit_github_scan2 fields changed
      • changedInput schema / properties / cadence / description
        Previous value: -"pulse, hunter, or deep."New value: +"\"pulse\" (default), \"hunter\", or \"deep\"."
      • changedInput schema / properties / limit / description
        Previous value: -"Max results per search query (default 20, max 30)."New value: +"Max results per search query. Default 20. Max 30."
    • Changeddelimit_gov_evaluate3 fields changed
      • addedInput schema / properties / action / description
        Added value: +"Proposed action name to evaluate (e.g. \"external_pr\", \"deploy\"). Empty string returns an error."
      • addedInput schema / properties / context / description
        Added value: +"Optional dict with action-specific context (e.g. target repo, author). Strings are auto-coerced to {\"text\": ...} via _coerce_dict_arg."
      • addedInput schema / properties / repo / description
        Added value: +"Filesystem path to the repository. Default \".\" (cwd)."
    • Changeddelimit_gov_health1 field changed
      • addedInput schema / properties / repo / description
        Added value: +"Filesystem path to the repository. Default \".\" (cwd)."
    • Changeddelimit_gov_new_task4 fields changed
      • addedInput schema / properties / repo / description
        Added value: +"Filesystem path to the repository. Default \".\" (cwd)."
      • addedInput schema / properties / risk_level / description
        Added value: +"One of \"low\", \"medium\", \"high\", \"critical\". Default \"medium\". Drives later approval requirements."
      • addedInput schema / properties / scope / description
        Added value: +"Description of what the task covers. Required."
      • addedInput schema / properties / title / description
        Added value: +"Short task title. Required (empty string is rejected)."
    • Changeddelimit_gov_policy1 field changed
      • addedInput schema / properties / repo / description
        Added value: +"Filesystem path to the repository. Default \".\" (cwd)."
    • Changeddelimit_gov_run2 fields changed
      • addedInput schema / properties / repo / description
        Added value: +"Filesystem path to the repository. Default \".\" (cwd)."
      • addedInput schema / properties / task_id / description
        Added value: +"Identifier returned by delimit_gov_new_task. Required."
    • Changeddelimit_gov_status1 field changed
      • addedInput schema / properties / repo / description
        Added value: +"Filesystem path to the repository. Default \".\" (cwd)."
    • Changeddelimit_gov_verify2 fields changed
      • addedInput schema / properties / repo / description
        Added value: +"Filesystem path to the repository. Default \".\" (cwd)."
      • addedInput schema / properties / task_id / description
        Added value: +"Identifier from delimit_gov_new_task / delimit_gov_run. Required."
    • Changeddelimit_handoff_acknowledge1 field changed
      • changedInput schema / properties / receipt_id / description
        Previous value: -"The receipt ID to acknowledge."New value: +"Receipt id to acknowledge. Required (empty string returns an error payload)."
    • Changeddelimit_handoff_create9 fields changed
      • changedInput schema / properties / assumptions / description
        Previous value: -"Comma-separated assumptions made during work."New value: +"Comma-separated assumptions made."
      • changedInput schema / properties / completed / description
        Previous value: -"Comma-separated list of completed items."New value: +"Comma-separated completed items."
      • changedInput schema / properties / files_modified / description
        Previous value: -"JSON list of {path, change_type, summary} dicts, or empty for auto-detect."New value: +"JSON list of {path, change_type, summary} dicts, or empty to auto-detect."
      • changedInput schema / properties / in_scope / description
        Previous value: -"Comma-separated items that were in scope."New value: +"Comma-separated in-scope items."
      • changedInput schema / properties / next_action / description
        Previous value: -"What the receiving agent should do first."New value: +"First thing the receiving agent should do."
      • changedInput schema / properties / not_completed / description
        Previous value: -"Comma-separated list of items not completed (with reasons)."New value: +"Comma-separated items not completed (with reasons)."
      • changedInput schema / properties / out_of_scope / description
        Previous value: -"Comma-separated items explicitly excluded."New value: +"Comma-separated explicitly excluded items."
      • changedInput schema / properties / priority / description
        Previous value: -"P0/P1/P2."New value: +"P0 / P1 (default) / P2."
      • changedInput schema / properties / to_model / description
        Previous value: -"Target model (or \"any\")."New value: +"Target model name or \"any\" (default)."
    • Changeddelimit_handoff_list1 field changed
      • changedInput schema / properties / status / description
        Previous value: -"\"pending\" (unacknowledged), \"acknowledged\", or \"all\"."New value: +"\"pending\" (default), \"acknowledged\", or \"all\"."
    • Addeddelimit_heartbeat_check
    • Changeddelimit_help1 field changed
      • changedInput schema / properties / tool_name / description
        Previous value: -"Tool name (e.g. 'lint', 'gov_health'). Leave empty for overview."New value: +"Tool name (e.g. \"lint\", \"gov_health\"). Empty returns the workflows overview."
    • Changeddelimit_impact2 fields changed
      • changedInput schema / properties / api_name / description
        Previous value: -"The API that changed."New value: +"The API name that changed. Required."
      • changedInput schema / properties / dependency_file / description
        Previous value: -"Optional path to dependency manifest."New value: +"Optional path to a dependency manifest file (package.json, requirements.txt, go.mod) to scan for callers. Default None = backend default path."
    • Changeddelimit_inbox_daemon1 field changed
      • changedInput schema / properties / action / description
        Previous value: -"'start' (begin polling), 'stop' (halt polling),\n    'status' (show daemon state, last poll, failures)."New value: +"\"start\" (begin polling), \"stop\" (halt polling), \"status\" (default — show daemon state)."
    • Changeddelimit_init3 fields changed
      • changedInput schema / properties / no_permissions / description
        Previous value: -"Skip the filesystem permission auto-config (LED-269)."New value: +"Skip filesystem permission auto-config (LED-269)."
      • changedInput schema / properties / preset / description
        Previous value: -"Policy preset - strict, default, or relaxed."New value: +"Policy preset — \"strict\", \"default\", \"relaxed\"."
      • changedInput schema / properties / project_path / description
        Previous value: -"Project root directory."New value: +"Project root directory. Default \".\" (cwd)."
    • Changeddelimit_intel_dataset_freeze1 field changed
      • changedInput schema / properties / dataset_id / description
        Previous value: -"Dataset identifier."New value: +"Dataset identifier from the registry. Required."
    • Changeddelimit_intel_dataset_register3 fields changed
      • changedInput schema / properties / description / description
        Previous value: -"Human-readable description."New value: +"Human-readable description for the registry."
      • changedInput schema / properties / name / description
        Previous value: -"Dataset name."New value: +"Dataset name (key). Required."
      • changedInput schema / properties / schema / description
        Previous value: -"Optional JSON schema for the dataset."New value: +"Optional JSON schema as dict or JSON string."
    • Changeddelimit_intel_query3 fields changed
      • changedInput schema / properties / dataset_id / description
        Previous value: -"Optional dataset to filter by."New value: +"Optional dataset to scope the query to."
      • changedInput schema / properties / parameters / description
        Previous value: -"Optional params (date_from, date_to, limit)."New value: +"Optional dict with date_from, date_to, limit. Accepted as JSON string and coerced."
      • changedInput schema / properties / query / description
        Previous value: -"Keyword search string."New value: +"Keyword search string. Empty = all."
    • Changeddelimit_intel_snapshot_ingest1 field changed
      • changedInput schema / properties / data / description
        Previous value: -"Snapshot data (any JSON-serializable dict)."New value: +"Snapshot data (JSON-serializable dict or JSON string). Required."
    • Changeddelimit_ledger4 fields changed
      • changedInput schema / properties / api_name / description
        Previous value: -"Filter events by API name."New value: +"Optional filter by API name."
      • changedInput schema / properties / ledger_path / description
        Previous value: -"Path to the ledger JSONL file (e.g. .delimit/ledger/operations.jsonl)."New value: +"Path to the ledger JSONL file (e.g. .delimit/ledger/operations.jsonl). Required."
      • changedInput schema / properties / repository / description
        Previous value: -"Filter events by repository."New value: +"Optional filter by repository."
      • changedInput schema / properties / validate_chain / description
        Previous value: -"Validate hash chain integrity."New value: +"If True, verify the hash chain integrity in addition to filtering. Default False."
    • Changeddelimit_ledger_add2 fields changed
      • changedInput schema / properties / title / description
        Previous value: -"What needs to be done."New value: +"What needs to be done. Required."
      • changedInput schema / properties / venture / description
        Previous value: -"Project name or path (e.g. \"my-project\", \"./path/to/project\"). Auto-detects if empty."New value: +"Project name or path. Empty = auto-detect from cwd."
    • Addeddelimit_ledger_auto_cancel_stale
    • Addeddelimit_ledger_auto_close_external
    • Addeddelimit_ledger_bulk
    • Changeddelimit_ledger_context1 field changed
      • changedInput schema / properties / venture / description
        Previous value: -"Project name or path. Auto-detects if empty."New value: +"Project name or path. Empty = auto-detect from cwd."
    • Changeddelimit_ledger_done5 fields changed
      • addedInput schema / properties / commit_sha
        Added value: +{
        +  "default": "",
        +  "description": "LED-1408: optional merge-commit SHA proving the fix shipped. Recorded as ship_proof on the event; verified=True flag set on the item.",
        +  "type": "string"
        +}
      • changedInput schema / properties / item_id / description
        Previous value: -"The item ID (e.g. LED-001 or STR-001)."New value: +"Ledger item id (e.g. \"LED-001\"). Required."
      • changedInput schema / properties / note / description
        Previous value: -"Optional completion note."New value: +"Optional completion note. If the note contains a GitHub PR URL, it will be auto-extracted as ship proof."
      • addedInput schema / properties / pr_url
        Added value: +{
        +  "default": "",
        +  "description": "LED-1408: optional GitHub PR URL proving the fix shipped. Parsed into pr_owner/pr_repo/pr_number; verified=True flag set on the item.",
        +  "type": "string"
        +}
      • changedInput schema / properties / venture / description
        Previous value: -"Project name or path. Auto-detects if empty."New value: +"Project name or path. Empty = auto-detect."
    • Addeddelimit_ledger_groom
    • Addeddelimit_ledger_health
    • Changeddelimit_ledger_link4 fields changed
      • changedInput schema / properties / from_id / description
        Previous value: -"Source item ID (e.g. \"LED-025\")."New value: +"Source item id (e.g. \"LED-025\"). Required."
      • changedInput schema / properties / link_type / description
        Previous value: -"Relationship type - \"blocks\", \"blocked_by\", \"parent\", \"child\", \"relates_to\", \"duplicates\"."New value: +"One of \"blocks\" (default), \"blocked_by\", \"parent\", \"child\", \"relates_to\", \"duplicates\"."
      • changedInput schema / properties / to_id / description
        Previous value: -"Target item ID (e.g. \"STR-005\")."New value: +"Target item id (e.g. \"STR-005\"). Required."
      • changedInput schema / properties / venture / description
        Previous value: -"Project name or path. Auto-detects if empty."New value: +"Project name/path. Empty = auto-detect."
    • Changeddelimit_ledger_links2 fields changed
      • changedInput schema / properties / item_id / description
        Previous value: -"The item ID to look up links for."New value: +"Item id to look up links for. Required."
      • changedInput schema / properties / venture / description
        Previous value: -"Project name or path. Auto-detects if empty."New value: +"Project name/path. Empty = auto-detect."
    • Changeddelimit_ledger_list18 fields changed
      • addedInput schema / properties / created_after
        Added value: +{
        +  "default": "",
        +  "description": "ISO-8601 timestamp lower bound on creation time. If omitted, no lower bound is applied.",
        +  "type": "string"
        +}
      • addedInput schema / properties / created_before
        Added value: +{
        +  "default": "",
        +  "description": "ISO-8601 timestamp upper bound on creation time. If omitted, no upper bound is applied.",
        +  "type": "string"
        +}
      • addedInput schema / properties / cursor
        Added value: +{
        +  "default": "",
        +  "description": "Opaque pagination token from prior next_cursor. Becomes invalid if filters change between calls.",
        +  "type": "string"
        +}
      • addedInput schema / properties / fields
        Added value: +{
        +  "default": "",
        +  "description": "Response projection. \"\" / \"*\" = full; \"slim\" = subset; CSV = those fields only. Unknown names ERROR.",
        +  "type": "string"
        +}
      • changedInput schema / properties / ledger / description
        Previous value: -"\"ops\", \"strategy\", or \"both\"."New value: +"\"ops\", \"strategy\", or \"both\" (default)."
      • changedInput schema / properties / limit / description
        Previous value: -"Max items to return."New value: +"Page size. Default 20."
      • addedInput schema / properties / linked_external_id
        Added value: +{
        +  "default": "",
        +  "description": "Substring match in description / tags / context (github URL, Linear id, Discord thread).",
        +  "type": "string"
        +}
      • addedInput schema / properties / order
        Added value: +{
        +  "default": "desc",
        +  "description": "\"asc\" or \"desc\" (default).",
        +  "type": "string"
        +}
      • changedInput schema / properties / priority / description
        Previous value: -"Filter by priority - \"P0\", \"P1\", \"P2\", or empty for all."New value: +"Single-value priority filter (back-compat)."
      • addedInput schema / properties / priority_in
        Added value: +{
        +  "default": "",
        +  "description": "Comma-separated priorities (e.g. \"P0,P1\").",
        +  "type": "string"
        +}
      • addedInput schema / properties / sort
        Added value: +{
        +  "default": "updated_at",
        +  "description": "\"updated_at\" (default), \"created_at\", or \"priority\".",
        +  "type": "string"
        +}
      • changedInput schema / properties / status / description
        Previous value: -"Filter by status - \"open\", \"done\", \"in_progress\", or empty for all."New value: +"Single-value status filter (back-compat)."
      • addedInput schema / properties / status_in
        Added value: +{
        +  "default": "",
        +  "description": "Comma-separated statuses (e.g. \"open,blocked\").",
        +  "type": "string"
        +}
      • addedInput schema / properties / tags_contains_all
        Added value: +{
        +  "default": "",
        +  "description": "Comma-separated tags; item must contain ALL.",
        +  "type": "string"
        +}
      • addedInput schema / properties / text
        Added value: +{
        +  "default": "",
        +  "description": "Case-insensitive substring match on title + description.",
        +  "type": "string"
        +}
      • addedInput schema / properties / updated_after
        Added value: +{
        +  "default": "",
        +  "description": "ISO-8601 timestamp lower bound on last-update time. If omitted, no lower bound is applied.",
        +  "type": "string"
        +}
      • addedInput schema / properties / updated_before
        Added value: +{
        +  "default": "",
        +  "description": "ISO-8601 timestamp upper bound on last-update time. If omitted, no upper bound is applied.",
        +  "type": "string"
        +}
      • changedInput schema / properties / venture / description
        Previous value: -"Project name or path. Auto-detects if empty."New value: +"Project name/path. Empty = auto-detect."
    • Changeddelimit_ledger_propose3 fields changed
      • changedInput schema / properties / focus / description
        Previous value: -"Optional area filter - \"outreach\", \"engineering\", \"security\", etc."New value: +"Optional area filter — \"outreach\", \"engineering\", \"security\", etc."
      • changedInput schema / properties / max_items / description
        Previous value: -"Maximum proposals to generate (default 5)."New value: +"Maximum proposals. Default 5."
      • changedInput schema / properties / venture / description
        Previous value: -"Focus on a specific venture (auto-detects if empty)."New value: +"Focus on a specific venture. Empty = auto-detect."
    • Changeddelimit_ledger_query2 fields changed
      • changedInput schema / properties / query / description
        Previous value: -"Natural language question about the ledger."New value: +"Natural-language question (e.g. \"what's blocked?\", \"search for dashboard\"). Required."
      • changedInput schema / properties / venture / description
        Previous value: -"Project name or path. Auto-detects if empty."New value: +"Project name/path. Empty = auto-detect."
    • Changeddelimit_ledger_update11 fields changed
      • changedInput schema / properties / assignee / description
        Previous value: -"Assign to a person or agent (e.g. \"founder\", \"claude\", \"codex\")."New value: +"Assign to person or agent (e.g. \"founder\", \"claude\")."
      • changedInput schema / properties / blocked_by / description
        Previous value: -"Item ID that blocks this item (e.g. \"LED-025\")."New value: +"Item id that blocks this one (e.g. \"LED-025\")."
      • changedInput schema / properties / blocks / description
        Previous value: -"Item ID that this item blocks (e.g. \"STR-005\")."New value: +"Item id that this one blocks (e.g. \"STR-005\")."
      • changedInput schema / properties / due_date / description
        Previous value: -"Due date in ISO format (e.g. \"2026-04-01\")."New value: +"ISO date string (e.g. \"2026-04-01\")."
      • changedInput schema / properties / item_id / description
        Previous value: -"The item ID (e.g. LED-001 or STR-001)."New value: +"Ledger item id, e.g. \"LED-001\" or \"STR-001\". Required."
      • changedInput schema / properties / labels / description
        Previous value: -"Labels/tags (e.g. [\"dashboard\", \"ux\"] or \"dashboard,ux\")."New value: +"Labels/tags as comma string or list."
      • changedInput schema / properties / note / description
        Previous value: -"Add a note/comment to the item."New value: +"Append a note/comment to the item."
      • changedInput schema / properties / priority / description
        Previous value: -"New priority - \"P0\", \"P1\", \"P2\"."New value: +"New priority — \"P0\", \"P1\", \"P2\"."
      • changedInput schema / properties / status / description
        Previous value: -"New status - \"open\", \"in_progress\", \"blocked\", \"done\"."New value: +"New status — \"open\", \"in_progress\", \"blocked\", \"done\"."
      • changedInput schema / properties / venture / description
        Previous value: -"Project name or path. Auto-detects if empty."New value: +"Project name/path. Empty = auto-detect."
      • changedInput schema / properties / worked_by / description
        Previous value: -"Which AI model is working on this. Auto-detected if empty."New value: +"AI model working on this. Empty = auto-detect."
    • Changeddelimit_lint4 fields changed
      • changedInput schema / properties / dry_run / description
        Previous value: -"If True, return violations without side effects (no evidence, no chains)."New value: +"If True, return violations + semver without side effects."
      • changedInput schema / properties / new_spec / description
        Previous value: -"Path to the new (proposed) OpenAPI spec file."New value: +"Path or URL to the proposed spec."
      • changedInput schema / properties / old_spec / description
        Previous value: -"Path to the old (baseline) OpenAPI spec file."New value: +"Path or URL to the baseline spec."
      • changedInput schema / properties / policy_file / description
        Previous value: -"Optional path to a .delimit/policies.yml file."New value: +"Optional .delimit/policies.yml path."
    • Changeddelimit_loop_config7 fields changed
      • changedInput schema / properties / auto_consensus / description
        Previous value: -"If True, suggest consensus when ledger is empty."New value: +"If True, suggest consensus when ledger empty."
      • changedInput schema / properties / cost_cap / description
        Previous value: -"Max cost in dollars before stopping (default 5.0)."New value: +"Max session cost in dollars. Default 5.0."
      • changedInput schema / properties / error_threshold / description
        Previous value: -"Consecutive errors before circuit breaker trips (default 3)."New value: +"Consecutive errors before circuit-breaker trips. Default 3."
      • changedInput schema / properties / max_iterations / description
        Previous value: -"Max tasks before stopping (default 50)."New value: +"Max tasks before stopping. Default 50."
      • changedInput schema / properties / require_approval_for / description
        Previous value: -"Comma-separated list of action types requiring human approval."New value: +"Comma-separated action types requiring human approval."
      • changedInput schema / properties / session_id / description
        Previous value: -"Session to configure. Creates new if empty."New value: +"Session to configure. Empty = create new."
      • changedInput schema / properties / status / description
        Previous value: -"Set loop status: running, paused, stopped."New value: +"Set loop status — \"running\", \"paused\", \"stopped\"."
    • Changeddelimit_loop_status1 field changed
      • changedInput schema / properties / session_id / description
        Previous value: -"The session to check. Uses most recent if empty."New value: +"Session id to check. Empty = most recent session."
    • Addeddelimit_memory_index
    • Changeddelimit_memory_recent1 field changed
      • changedInput schema / properties / limit / description
        Previous value: -"Number of recent entries to return."New value: +"Number of most-recent entries to return. Default 5."
    • Changeddelimit_memory_search2 fields changed
      • changedInput schema / properties / limit / description
        Previous value: -"Maximum results to return."New value: +"Maximum number of matching entries to return. Default 10."
      • changedInput schema / properties / query / description
        Previous value: -"Natural language search query."New value: +"Natural-language search query. Required."
    • Changeddelimit_memory_store3 fields changed
      • changedInput schema / properties / content / description
        Previous value: -"The content to remember."New value: +"The content to remember. Required."
      • addedInput schema / properties / hot_load
        Added value: +{
        +  "default": false,
        +  "description": "When True, mark for one-way projection into the Claude Code MEMORY.md hot-load index (LED-1165 Phase 2). Default False = durable but not projected.",
        +  "type": "boolean"
        +}
      • changedInput schema / properties / tags / description
        Previous value: -"Optional categorization tags."New value: +"Optional categorization tags as comma string or list."
    • Changeddelimit_models4 fields changed
      • changedInput schema / properties / action / description
        Previous value: -"list, detect, add, or remove."New value: +"One of \"list\" (default), \"detect\", \"add\", \"remove\"."
      • changedInput schema / properties / api_key / description
        Previous value: -"API key for the provider (only used with action=add)."New value: +"API key value. Required for action=\"add\"."
      • changedInput schema / properties / model_name / description
        Previous value: -"Optional model name override (e.g. \"gpt-4o\", \"claude-sonnet-4-5-20250514\")."New value: +"Optional model override (e.g. \"gpt-4o\", \"claude-sonnet-4-5\"). Falls back to provider default."
      • changedInput schema / properties / provider / description
        Previous value: -"Model provider for add/remove (grok, gemini, openai, anthropic, codex)."New value: +"Provider name for add/remove. One of \"grok\", \"gemini\", \"openai\", \"anthropic\", \"codex\". Required for add/remove."
    • Changeddelimit_next_task3 fields changed
      • changedInput schema / properties / max_risk / description
        Previous value: -"Filter tasks by max risk level (low, medium, high, critical)."New value: +"Max risk level — \"low\", \"medium\", \"high\", \"critical\"."
      • changedInput schema / properties / session_id / description
        Previous value: -"Resume an existing session. Creates a new one if empty."New value: +"Resume existing session. Empty = new."
      • changedInput schema / properties / venture / description
        Previous value: -"Project name or path. Auto-detects if empty."New value: +"Project name or path. Empty = auto-detect."
    • Changeddelimit_notify6 fields changed
      • addedInput schema / properties / draft_kind
        Added value: +{
        +  "default": "",
        +  "description": "One of github_comment, social_post, ledger_done, notify_routing_update, deploy_publish_prevalidated_artifact. When set, registers a signed draft in the local SQLite registry so a future executor can match founder Ship-it replies against it.",
        +  "type": "string"
        +}
      • addedInput schema / properties / draft_payload
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "additionalProperties": true,
        +      "type": "object"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "The action contents (e.g. {\"body\": \"...\"} for github_comment). JSON string or dict. Required when draft_kind is set."
        +}
      • addedInput schema / properties / draft_target
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "additionalProperties": true,
        +      "type": "object"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Where the action lands (e.g. {\"repo\":\"x/y\",\"issue\":1}). JSON string or dict. Required when draft_kind is set."
        +}
      • changedInput schema / properties / from_account / description
        Previous value: -"Sender account key from ~/.delimit/secrets/smtp-all.json\n(e.g. 'notifications@example.com'). Email only."New value: +"Sender account key from ~/.delimit/secrets/smtp-all.json (e.g. 'notifications@example.com'). Email only. Optional inbox-executor binding (LED-1129 Phase 1, no auto-execution yet):."
      • addedInput schema / properties / led_ref
        Added value: +{
        +  "default": "",
        +  "description": "Optional LED-XXXX tag tying the draft to its tracking item. Surfaced in subject-line matching by the executor.",
        +  "type": "string"
        +}
      • changedInput schema / properties / to / description
        Previous value: -"Recipient email address (email only). Overrides default DELIMIT_SMTP_TO.\nSend to any address - leave empty for default."New value: +"Recipient email address (email only). Overrides default DELIMIT_SMTP_TO. Send to any address - leave empty for default."
    • Changeddelimit_notify_inbox2 fields changed
      • changedInput schema / properties / action / description
        Previous value: -"'status' (show inbox state), 'poll' (classify and optionally forward),\n    'history' (show routing log)."New value: +"\"status\" (default), \"poll\", or \"history\"."
      • changedInput schema / properties / process / description
        Previous value: -"If True with action='poll', actually forward owner-action emails.\n     If False, dry-run only (classify without forwarding)."New value: +"With action=\"poll\", forward owner-action emails when True (default), dry-run only when False."
    • Changeddelimit_notify_routing5 fields changed
      • changedInput schema / properties / action / description
        Previous value: -"'status' (show current config), 'configure' (update routing rules),\n    'test' (send test notifications at each severity level)."New value: +"One of \"status\" (default), \"configure\", \"test\"."
      • changedInput schema / properties / config / description
        Previous value: -"JSON string with routing config for action='configure'.\nExample: {\"routing\": {\"critical\": {\"channels\": [\"email\",\"webhook\"],\n\"email_subject_prefix\": \"[URGENT]\", \"webhook_priority\": \"high\"},\n\"warning\": {\"channels\": [\"webhook\"], \"webhook_priority\": \"normal\"},\n\"info\": {\"channels\": [], \"digest\": true}}}"New value: +"JSON string with routing config for action=\"configure\". Example shape: {\"routing\": {\"critical\": {...}, ...}}."
      • changedInput schema / properties / email_to / description
        Previous value: -"Email recipient for test notifications."New value: +"Email recipient used by action=\"test\"."
      • changedInput schema / properties / from_account / description
        Previous value: -"Sender account key for test email delivery."New value: +"Sender account key for the test email."
      • changedInput schema / properties / webhook_url / description
        Previous value: -"Webhook URL for test notifications."New value: +"Webhook URL used by action=\"test\"."
    • Changeddelimit_obs_alerts3 fields changed
      • addedInput schema / properties / action / description
        Added value: +"Alert sub-action. One of \"list\", \"create\", \"update\", \"delete\". Required."
      • addedInput schema / properties / alert_rule / description
        Added value: +"Rule definition dict (required for create/update). Backend-specific schema."
      • addedInput schema / properties / rule_id / description
        Added value: +"Identifier for an existing rule (required for delete/update)."
    • Changeddelimit_obs_logs3 fields changed
      • addedInput schema / properties / query / description
        Added value: +"Search string (backend-specific syntax). Required."
      • addedInput schema / properties / source / description
        Added value: +"Optional log source override. Default None."
      • addedInput schema / properties / time_range / description
        Added value: +"Window like \"1h\", \"24h\", \"7d\". Default \"1h\"."
    • Changeddelimit_obs_metrics3 fields changed
      • addedInput schema / properties / query / description
        Added value: +"Metric query name. Default \"system\" (general system metrics). Backend-specific values supported."
      • addedInput schema / properties / source / description
        Added value: +"Optional data source override. Default None = backend default source."
      • addedInput schema / properties / time_range / description
        Added value: +"Window like \"1h\", \"24h\", \"7d\". Default \"1h\"."
    • Changeddelimit_os_gates1 field changed
      • changedInput schema / properties / plan_id / description
        Previous value: -"The plan ID (e.g. \"PLAN-A1B2C3D4\")."New value: +"Plan identifier, e.g. \"PLAN-A1B2C3D4\". Required."
    • Changeddelimit_os_plan4 fields changed
      • changedInput schema / properties / operation / description
        Previous value: -"Operation to plan (e.g. \"deploy\", \"migrate\")."New value: +"Operation to plan (e.g. \"deploy\", \"migrate\"). Required."
      • changedInput schema / properties / parameters / description
        Previous value: -"Operation parameters."New value: +"Optional operation parameters as dict or JSON string."
      • changedInput schema / properties / require_approval / description
        Previous value: -"Whether to require approval before execution."New value: +"If True (default), the plan requires approval before execution."
      • changedInput schema / properties / target / description
        Previous value: -"Target component or service."New value: +"Target component or service. Required."
    • Addeddelimit_outreach_loop_tick
    • Changeddelimit_playbook6 fields changed
      • changedInput schema / properties / action / description
        Previous value: -"\"save\", \"run\", \"list\", or \"delete\"."New value: +"\"save\", \"run\", \"list\" (default), or \"delete\"."
      • changedInput schema / properties / description / description
        Previous value: -"Short description of what this playbook does."New value: +"Short description."
      • changedInput schema / properties / model_hint / description
        Previous value: -"Suggested model (e.g. \"claude-opus\" for complex tasks)."New value: +"Suggested model (e.g. \"claude-opus\")."
      • changedInput schema / properties / name / description
        Previous value: -"Playbook name (required for save/run/delete)."New value: +"Playbook name. Required for save/run/delete."
      • changedInput schema / properties / prompt / description
        Previous value: -"Prompt template with {{variable}} placeholders (save only)."New value: +"Template with {{variable}} placeholders (save only)."
      • changedInput schema / properties / variables / description
        Previous value: -"For run: comma-separated key=value pairs. For save: comma-separated variable names."New value: +"For run, \"key=value,...\"; for save, \"name1,name2,...\"."
    • Changeddelimit_policy4 fields changed
      • changedInput schema / properties / action / description
        Previous value: -"\"inspect\" or \"simulate\"."New value: +"\"inspect\" (default) or \"simulate\"."
      • changedInput schema / properties / new_spec / description
        Previous value: -"Path to proposed spec (required for simulate)."New value: +"Proposed spec path (required for simulate)."
      • changedInput schema / properties / old_spec / description
        Previous value: -"Path to baseline spec (required for simulate)."New value: +"Baseline spec path (required for simulate)."
      • changedInput schema / properties / spec_files / description
        Previous value: -"List of spec file paths."New value: +"List of spec file paths. Required."
    • Changeddelimit_project_config5 fields changed
      • changedInput schema / properties / action / description
        Previous value: -"\"load\", \"init\", or \"model\"."New value: +"\"load\" (default), \"init\", or \"model\"."
      • changedInput schema / properties / mode / description
        Previous value: -"Governance mode for init (advisory/guarded/enforce)."New value: +"Governance mode (only for init). One of \"advisory\", \"guarded\", \"enforce\". Default \"advisory\"."
      • changedInput schema / properties / preset / description
        Previous value: -"Policy preset for init (strict/default/relaxed)."New value: +"Policy preset (only for init). One of \"strict\", \"default\", \"relaxed\". Default \"default\"."
      • changedInput schema / properties / project_path / description
        Previous value: -"Project root directory."New value: +"Project root directory. Default \".\" (cwd)."
      • changedInput schema / properties / task_type / description
        Previous value: -"Task type for model lookup (refactoring/testing/docs/debugging)."New value: +"Task type for model lookup (only for action=\"model\")."
    • Changeddelimit_prompt_drift5 fields changed
      • changedInput schema / properties / action / description
        Previous value: -"\"record\", \"check\", or \"rank\"."New value: +"\"record\", \"check\" (default), or \"rank\"."
      • changedInput schema / properties / model / description
        Previous value: -"AI model name (for record)."New value: +"AI model name (required for record)."
      • changedInput schema / properties / prompt / description
        Previous value: -"The prompt text (for record/check)."New value: +"Prompt text (for record / check)."
      • changedInput schema / properties / success / description
        Previous value: -"Whether the result was good (\"true\"/\"false\")."New value: +"\"true\" / \"false\" — whether the result was good."
      • changedInput schema / properties / task_type / description
        Previous value: -"Task category (refactoring/testing/debugging/docs)."New value: +"Task category — \"refactoring\", \"testing\", \"debugging\", \"docs\"."
    • Changeddelimit_quickstart1 field changed
      • changedInput schema / properties / project_path / description
        Previous value: -"Path to the project to quickstart."New value: +"Project path to quickstart. Default \".\" (cwd)."
    • Changeddelimit_redact3 fields changed
      • changedInput schema / properties / action / description
        Previous value: -"\"scan\" or \"redact\"."New value: +"\"scan\" (preview, default) or \"redact\" (replace)."
      • changedInput schema / properties / categories / description
        Previous value: -"Comma-separated categories (api_key, secret, pii, infra). Empty = all."New value: +"Comma-separated categories — \"api_key\", \"secret\", \"pii\", \"infra\". Empty = all categories."
      • changedInput schema / properties / text / description
        Previous value: -"Text to scan/redact."New value: +"Text to process."
    • Changeddelimit_reddit_scan2 fields changed
      • changedInput schema / properties / limit / description
        Previous value: -"Posts per subreddit (default 10, max 25)."New value: +"Posts per subreddit. Default 10, max 25."
      • changedInput schema / properties / sort / description
        Previous value: -"Reddit sort order (hot, new, top)."New value: +"Reddit sort order — \"hot\" (default), \"new\", \"top\"."
    • Changeddelimit_release_history2 fields changed
      • addedInput schema / properties / environment / description
        Added value: +"Target environment. Required."
      • addedInput schema / properties / limit / description
        Added value: +"Maximum number of releases to return. Default 10."
    • Changeddelimit_release_plan4 fields changed
      • addedInput schema / properties / environment / description
        Added value: +"Target environment, \"production\" or \"staging\". Default \"production\"."
      • addedInput schema / properties / repository / description
        Added value: +"Repository path. Default \".\" (cwd)."
      • addedInput schema / properties / services / description
        Added value: +"Optional list of service names to scope the plan; None = all services in the repo manifest."
      • addedInput schema / properties / version / description
        Added value: +"Release version. Auto-detected from git tags if empty."
    • Changeddelimit_release_rollback3 fields changed
      • addedInput schema / properties / environment / description
        Added value: +"Target environment. Required."
      • addedInput schema / properties / to_version / description
        Added value: +"Prior release version to roll back to. Required."
      • addedInput schema / properties / version / description
        Added value: +"Current release version that is failing. Required."
    • Changeddelimit_release_status1 field changed
      • addedInput schema / properties / environment / description
        Added value: +"Target environment. Default \"production\"."
    • Changeddelimit_release_sync1 field changed
      • addedInput schema / properties / action / description
        Added value: +"Sub-action — \"audit\" (default) or \"config\"."
    • Changeddelimit_release_validate2 fields changed
      • addedInput schema / properties / environment / description
        Added value: +"Target environment (\"production\" / \"staging\")."
      • addedInput schema / properties / version / description
        Added value: +"Release version string. Required."
    • Changeddelimit_repo_analyze1 field changed
      • changedInput schema / properties / target / description
        Previous value: -"Repository path."New value: +"Repository path, \"owner/repo\", or GitHub URL. Default \".\" (cwd)."
    • Changeddelimit_repo_config_audit1 field changed
      • changedInput schema / properties / target / description
        Previous value: -"Repository or config path."New value: +"Repository or config path, \"owner/repo\", or GitHub URL. Default \".\" (cwd)."
    • Changeddelimit_repo_config_validate1 field changed
      • changedInput schema / properties / target / description
        Previous value: -"Repository or config path."New value: +"Repository or config path, \"owner/repo\", or GitHub URL. Default \".\" (cwd)."
    • Changeddelimit_repo_diagnose1 field changed
      • changedInput schema / properties / target / description
        Previous value: -"Repository path."New value: +"Repository path. Default \".\" (cwd)."
    • Changeddelimit_resource_get4 fields changed
      • changedInput schema / properties / driver / description
        Previous value: -"The data plane driver to use (default: github)."New value: +"Driver key. Default \"github\"."
      • changedInput schema / properties / identifier / description
        Previous value: -"The resource identifier (repo name, PR number, run ID)."New value: +"Resource identifier — repo name, PR number, run id. Required."
      • changedInput schema / properties / repo / description
        Previous value: -"Repository in owner/name format (for PRs, issues, workflow runs)."New value: +"\"owner/name\" required for PRs / issues / workflow runs."
      • changedInput schema / properties / resource / description
        Previous value: -"The resource type (repos, pull_requests, issues, workflows)."New value: +"One of \"repos\", \"pull_requests\", \"issues\", \"workflows\". Required."
    • Changeddelimit_resource_list6 fields changed
      • changedInput schema / properties / driver / description
        Previous value: -"The data plane driver to use (default: github)."New value: +"Driver key. Default \"github\"."
      • changedInput schema / properties / limit / description
        Previous value: -"Maximum number of results."New value: +"Max results. Default 10."
      • changedInput schema / properties / org / description
        Previous value: -"Organization filter (for repos)."New value: +"Organization filter for repos."
      • changedInput schema / properties / repo / description
        Previous value: -"Repository in owner/name format (required for workflows)."New value: +"\"owner/name\" — required for workflow listing."
      • changedInput schema / properties / resource / description
        Previous value: -"The resource type to list (repos, pull_requests, issues, workflows)."New value: +"One of \"repos\", \"pull_requests\", \"issues\", \"workflows\". Required."
      • changedInput schema / properties / state / description
        Previous value: -"State filter for PRs/issues (open, closed, all)."New value: +"PR/issue state — \"open\" (default), \"closed\", \"all\"."
    • Changeddelimit_review3 fields changed
      • changedInput schema / properties / context / description
        Previous value: -"Additional context about the change (what it does, why)."New value: +"Additional context about the change."
      • changedInput schema / properties / diff / description
        Previous value: -"Git diff or code to review. Takes priority over file_path."New value: +"Git diff or code text to review. Takes priority over file_path."
      • changedInput schema / properties / file_path / description
        Previous value: -"Path to file to review (reads current content)."New value: +"Path to file to review (reads current content if no diff)."
    • Changeddelimit_revive3 fields changed
      • changedInput schema / properties / project_path / description
        Previous value: -"Project to revive. Auto-detects from cwd."New value: +"Project path to revive. Empty = auto-detect from cwd."
      • addedInput schema / properties / scope
        Added value: +{
        +  "default": "",
        +  "description": "Optional handoff/receipt id. When set, revives ONLY that scoped handoff context (for dispatched subagents) instead of the global session soul. Empty = full soul (default).",
        +  "type": "string"
        +}
      • changedInput schema / properties / soul_id / description
        Previous value: -"Specific soul to revive. Empty = latest."New value: +"Specific soul id to revive. Empty = latest."
    • Changeddelimit_scan1 field changed
      • changedInput schema / properties / project_path / description
        Previous value: -"Path to the project to scan."New value: +"Path to the project to scan. Default \".\" (cwd)."
    • Changeddelimit_screen_record5 fields changed
      • changedInput schema / properties / duration / description
        Previous value: -"Recording duration in seconds (max 120)"New value: +"Recording duration in seconds. Max 120. Default 30."
      • changedInput schema / properties / mode / description
        Previous value: -"\"browser\" or \"terminal\""New value: +"\"browser\" (default) or \"terminal\"."
      • changedInput schema / properties / name / description
        Previous value: -"Output filename (without extension)"New value: +"Output filename without extension. Default \"recording\"."
      • changedInput schema / properties / script / description
        Previous value: -"Shell script to run (terminal mode only). If empty, records idle terminal."New value: +"Shell script to run (terminal mode only). Empty = idle terminal capture."
      • changedInput schema / properties / url / description
        Previous value: -"URL to visit (browser mode only)"New value: +"URL to visit (browser mode only)."
    • Changeddelimit_screenshot2 fields changed
      • changedInput schema / properties / name / description
        Previous value: -"Output filename (without extension)."New value: +"Output filename (without extension). Default \"screenshot\"."
      • changedInput schema / properties / url / description
        Previous value: -"URL to screenshot."New value: +"URL to screenshot. Required."
    • Addeddelimit_seal_verify
    • Changeddelimit_secret_access_log1 field changed
      • addedInput schema / properties / name / description
        Added value: +"Optional secret name to filter the log. Empty = all secrets."
    • Changeddelimit_secret_get3 fields changed
      • addedInput schema / properties / agent_type / description
        Added value: +"Identity of the requesting agent (used by the broker to check scope)."
      • addedInput schema / properties / name / description
        Added value: +"Secret name to retrieve. Required."
      • addedInput schema / properties / tool / description
        Added value: +"Name of the requesting tool (used by the broker to check scope)."
    • Changeddelimit_secret_revoke1 field changed
      • addedInput schema / properties / name / description
        Added value: +"Secret name to revoke. Required."
    • Changeddelimit_secret_store4 fields changed
      • addedInput schema / properties / description / description
        Added value: +"Human-readable description for audit trails."
      • addedInput schema / properties / name / description
        Added value: +"Secret name (key). Required."
      • addedInput schema / properties / scope / description
        Added value: +"Comma-separated agent/tool scopes that may access this secret, or \"all\" to allow any. Default \"all\"."
      • addedInput schema / properties / value / description
        Added value: +"Secret value (the actual credential). Required."
    • Changeddelimit_security_audit2 fields changed
      • addedInput schema / properties / include_tests
        Added value: +{
        +  "default": false,
        +  "description": "When True, scan test directories (tests/, __tests__/, spec/, fixtures/, etc.). Default False — test trees are skipped to avoid the canonical fixture-credential FP class (LED-1278).",
        +  "type": "boolean"
        +}
      • changedInput schema / properties / target / description
        Previous value: -"Repository or file path to audit."New value: +"Repository or file path to audit. Default \".\" (cwd)."
    • Changeddelimit_security_deliberate2 fields changed
      • changedInput schema / properties / findings / description
        Previous value: -"JSON string of findings to triage, or empty to pull from ledger."New value: +"JSON string of findings to triage. Empty = pull from the ledger automatically."
      • changedInput schema / properties / focus / description
        Previous value: -"Which findings to triage - \"critical\", \"high\", \"all\". Default: critical."New value: +"Which findings to triage — \"critical\" (default), \"high\", \"all\"."
    • Changeddelimit_security_ingest4 fields changed
      • changedInput schema / properties / commit_sha / description
        Previous value: -"Git commit SHA the scan was run against. Auto-detects if empty."New value: +"Git SHA the scan ran against. Empty = auto-detect."
      • changedInput schema / properties / repo / description
        Previous value: -"Repository identifier (e.g. \"my-org/my-repo\"). Auto-detects if empty."New value: +"\"owner/repo\" identifier. Empty = auto-detect."
      • changedInput schema / properties / results / description
        Previous value: -"JSON string of scan results, or path to a JSON results file."New value: +"JSON string of scan results, or path to a JSON file. Required."
      • changedInput schema / properties / tool / description
        Previous value: -"Scanner name (trivy, semgrep, npm-audit, pip-audit, snyk, codeql)."New value: +"Scanner name — one of \"trivy\", \"semgrep\", \"npm-audit\", \"pip-audit\", \"snyk\", \"codeql\". Required."
    • Changeddelimit_security_scan1 field changed
      • changedInput schema / properties / target / description
        Previous value: -"Repository or file path."New value: +"Repository or file path. Default \".\" (cwd)."
    • Addeddelimit_self_repair_daemon
    • Changeddelimit_semver3 fields changed
      • changedInput schema / properties / current_version / description
        Previous value: -"Optional current version (e.g. \"1.2.3\") to compute next version."New value: +"Optional version string (e.g. \"1.2.3\") to compute the next version. Default None = no next computed."
      • changedInput schema / properties / new_spec / description
        Previous value: -"Path to the new OpenAPI spec file."New value: +"Path to the proposed OpenAPI spec file. Required."
      • changedInput schema / properties / old_spec / description
        Previous value: -"Path to the old OpenAPI spec file."New value: +"Path to the baseline OpenAPI spec file. Required."
    • Changeddelimit_sense8 fields changed
      • changedInput schema / properties / action / description
        Previous value: -"One of 'query', 'digest', 'show', 'promote', 'freeze', 'status'."New value: +"One of \"query\" (default), \"digest\", \"show\", \"promote\", \"freeze\", \"status\"."
      • changedInput schema / properties / ledger / description
        Previous value: -"Target ledger for 'promote' (ops or strategy)."New value: +"Target ledger for promote — \"ops\" (default) or \"strategy\"."
      • changedInput schema / properties / limit / description
        Previous value: -"Max rows to return (query). Default 50."New value: +"Max rows for query. Default 50."
      • changedInput schema / properties / month / description
        Previous value: -"YYYY-MM for 'freeze' action (cold archive)."New value: +"YYYY-MM string for \"freeze\"."
      • changedInput schema / properties / platform / description
        Previous value: -"Filter by source platform (reddit, x, github, hn). Empty = all."New value: +"Filter source platform — \"reddit\", \"x\", \"github\", \"hn\". Empty = all."
      • changedInput schema / properties / priority / description
        Previous value: -"Priority for the promoted ledger item (P0/P1/P2)."New value: +"Priority for promoted item — \"P0\", \"P1\", \"P2\"."
      • changedInput schema / properties / signal_id / description
        Previous value: -"Signal id (SIG-XXXX) for 'show' and 'promote'."New value: +"SIG-XXXX id for \"show\" / \"promote\"."
      • changedInput schema / properties / since_days / description
        Previous value: -"Lookback window in days (query/digest). Default 1 = last 24h."New value: +"Lookback window in days (query/digest). Default 1."
    • Changeddelimit_sensor_github_issue3 fields changed
      • changedInput schema / properties / issue_number / description
        Previous value: -"The issue number to monitor."New value: +"Issue number to monitor. Must be > 0."
      • changedInput schema / properties / repo / description
        Previous value: -"GitHub repository in owner/repo format (e.g. \"owner/repo\")."New value: +"\"owner/repo\" GitHub repository. Required."
      • changedInput schema / properties / since_comment_id / description
        Previous value: -"Last seen comment ID. Pass 0 to get all comments."New value: +"Last seen comment id. 0 = all comments."
    • Changeddelimit_sensor_github_migrations1 field changed
      • changedInput schema / properties / repos / description
        Previous value: -"List of GitHub repos in owner/repo format (e.g. [\"chatwoot/chatwoot\", \"cal-com/cal.com\"])."New value: +"List of GitHub repos in owner/repo format (e.g. [\"chatwoot/chatwoot\", \"cal-com/cal.com\"]). Required."
    • Changeddelimit_session_handoff4 fields changed
      • changedInput schema / properties / items_added / description
        Previous value: -"List of newly added item IDs."New value: +"Newly added item ids as list or comma string."
      • changedInput schema / properties / items_completed / description
        Previous value: -"List of completed ledger item IDs (e.g. [\"LED-164\", \"LED-165\"])."New value: +"Completed ledger item ids (e.g. [\"LED-164\"]) as list or comma string."
      • changedInput schema / properties / summary / description
        Previous value: -"2-3 sentence summary of what happened this session."New value: +"2-3 sentence summary of the session. Required."
      • changedInput schema / properties / venture / description
        Previous value: -"Venture context. Auto-detects if empty."New value: +"Venture context. Empty = auto-detect."
    • Changeddelimit_session_history1 field changed
      • changedInput schema / properties / limit / description
        Previous value: -"Number of recent sessions to return (default 5)."New value: +"Number of recent sessions to return. Default 5."
    • Changeddelimit_siem5 fields changed
      • changedInput schema / properties / action / description
        Previous value: -"status, configure, test, or forward"New value: +"One of \"status\" (default), \"configure\", \"test\", \"forward\"."
      • changedInput schema / properties / enabled / description
        Previous value: -"\"true\" or \"false\" to enable/disable (for configure)"New value: +"\"true\" or \"false\" (for configure)."
      • changedInput schema / properties / event / description
        Previous value: -"JSON string of event to forward (for forward/test)"New value: +"JSON string of an event (for forward / test)."
      • changedInput schema / properties / integration / description
        Previous value: -"splunk, datadog, eventbridge, or webhook (for configure)"New value: +"One of \"splunk\", \"datadog\", \"eventbridge\", \"webhook\" (for configure)."
      • changedInput schema / properties / settings / description
        Previous value: -"JSON string of settings to update (for configure)"New value: +"JSON string of settings (for configure)."
    • Changeddelimit_social_approve2 fields changed
      • changedInput schema / properties / action / description
        Previous value: -"'list' to show pending drafts, 'approve' to post a draft,\n    'reject' to discard a draft."New value: +"\"list\" (default), \"approve\", or \"reject\"."
      • changedInput schema / properties / draft_id / description
        Previous value: -"Required for approve/reject actions. The draft ID from save_draft()."New value: +"Required for approve / reject. Returned by delimit_social_post(draft=True)."
    • Changeddelimit_social_daemon1 field changed
      • changedInput schema / properties / action / description
        Previous value: -"'start' (begin scanning), 'stop' (halt scanning),\n    'status' (show daemon state, last scan, targets found)."New value: +"\"start\", \"stop\", or \"status\" (default)."
    • Changeddelimit_social_generate1 field changed
      • addedInput schema / properties / category / description
        Added value: +"Post category — \"tip\" (default), \"changelog\", \"insight\", or \"engagement\"."
    • Changeddelimit_social_history2 fields changed
      • changedInput schema / properties / limit / description
        Previous value: -"Max entries to return."New value: +"Max entries to return. Default 20."
      • changedInput schema / properties / platform / description
        Previous value: -"Filter by platform - \"twitter\" or \"reddit\"."New value: +"Filter by \"twitter\" or \"reddit\". Empty = all."
    • Changeddelimit_social_target_config5 fields changed
      • changedInput schema / properties / action / description
        Previous value: -"status, detect, update, add_subreddits"New value: +"\"status\" (default), \"detect\", \"update\", \"add_subreddits\"."
      • changedInput schema / properties / enabled / description
        Previous value: -"Enable/disable the platform (used with update action)"New value: +"Enable/disable on update. Default True."
      • changedInput schema / properties / platform / description
        Previous value: -"Platform to configure (x, reddit, github, hn, devto, namepros)"New value: +"Platform key — \"x\", \"reddit\", \"github\", \"hn\", \"devto\", \"namepros\"."
      • changedInput schema / properties / provider / description
        Previous value: -"Provider to use, e.g. twttr241, xai, proxy, gh_cli (used with update action)"New value: +"Provider name — \"twttr241\", \"xai\", \"proxy\", \"gh_cli\", etc., for update."
      • changedInput schema / properties / subreddits / description
        Previous value: -"Comma-separated subreddits to add (with add_subreddits action)"New value: +"Comma-separated subreddits for add_subreddits."
    • Changeddelimit_soul_capture2 fields changed
      • changedInput schema / properties / context_fullness / description
        Previous value: -"0.0-1.0 how full the context window is."New value: +"0.0-1.0 representing context-window fullness."
      • changedInput schema / properties / task_status / description
        Previous value: -"in_progress, blocked, or almost_done."New value: +"One of \"in_progress\", \"blocked\", \"almost_done\"."
    • Changeddelimit_story_accessibility2 fields changed
      • changedInput schema / properties / project_path / description
        Previous value: -"Project path to scan."New value: +"Project path to scan. Required."
      • changedInput schema / properties / standards / description
        Previous value: -"Accessibility standard (WCAG2A/WCAG2AA/WCAG2AAA)."New value: +"WCAG standard — \"WCAG2A\", \"WCAG2AA\" (default), \"WCAG2AAA\"."
    • Changeddelimit_story_build2 fields changed
      • changedInput schema / properties / output_dir / description
        Previous value: -"Output directory."New value: +"Output directory. None = Storybook default."
      • changedInput schema / properties / project_path / description
        Previous value: -"Project path."New value: +"Project path. Required."
    • Changeddelimit_story_generate3 fields changed
      • changedInput schema / properties / component_path / description
        Previous value: -"Path to the component file."New value: +"Path to the component (.tsx) file. Required."
      • changedInput schema / properties / story_name / description
        Previous value: -"Custom story name. Defaults to component name."New value: +"Custom story name. Default = component name."
      • changedInput schema / properties / variants / description
        Previous value: -"Variants to generate. Defaults to [Default, WithChildren]."New value: +"Variants to generate (e.g. \"Default,WithChildren\"). Default = [\"Default\", \"WithChildren\"]."
    • Changeddelimit_story_visual_test1 field changed
      • changedInput schema / properties / threshold / description
        Previous value: -"Diff threshold (0.0-1.0)."New value: +"Diff threshold (0.0-1.0). Default 0.05."
    • Addeddelimit_substantive_content_check
    • Changeddelimit_task_complete4 fields changed
      • changedInput schema / properties / cost_incurred / description
        Previous value: -"Estimated cost of this iteration (dollars)."New value: +"Estimated cost (USD)."
      • changedInput schema / properties / error / description
        Previous value: -"If the task failed, describe the error."New value: +"If task failed, describe error."
      • changedInput schema / properties / session_id / description
        Previous value: -"The loop session to update."New value: +"Loop session to update."
      • changedInput schema / properties / task_id / description
        Previous value: -"The ledger item ID that was completed (e.g. LED-042)."New value: +"Ledger item id completed (e.g. \"LED-042\")."
    • Addeddelimit_tdqs_lint
    • Changeddelimit_test_coverage2 fields changed
      • changedInput schema / properties / project_path / description
        Previous value: -"Project path."New value: +"Path to the project root. Required."
      • changedInput schema / properties / threshold / description
        Previous value: -"Coverage threshold percentage."New value: +"Coverage percentage threshold for pass/fail. Default 80."
    • Changeddelimit_test_generate3 fields changed
      • changedInput schema / properties / framework / description
        Previous value: -"Test framework (jest/pytest/vitest)."New value: +"Test framework — \"jest\" (default), \"pytest\", \"vitest\"."
      • changedInput schema / properties / project_path / description
        Previous value: -"Project path."New value: +"Project path. Required."
      • changedInput schema / properties / source_files / description
        Previous value: -"Specific files to generate tests for."New value: +"Specific files to generate tests for. None = all detectable public functions."
    • Changeddelimit_test_smoke5 fields changed
      • addedInput schema / properties / extra_args
        Added value: +{
        +  "anyOf": [
        +    {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Optional extra arguments to pass to the test runner."
        +}
      • addedInput schema / properties / fail_fast
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "boolean"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": false,
        +  "description": "Stop execution immediately on first failure."
        +}
      • changedInput schema / properties / project_path / description
        Previous value: -"Project path."New value: +"Project path. Required."
      • changedInput schema / properties / test_suite / description
        Previous value: -"Specific test suite to run."New value: +"Optional specific test suite or pattern."
      • addedInput schema / properties / timeout_seconds
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "integer"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": 120,
        +  "description": "Optional execution timeout in seconds. Default is 120."
        +}
    • Changeddelimit_toolcard_cache3 fields changed
      • changedInput schema / properties / action / description
        Previous value: -"One of: status, register, delta, clear, estimate, flush"New value: +"One of \"status\" (default), \"register\", \"delta\", \"clear\", \"estimate\", \"flush\", \"usage\" (durable tool utilization + dormancy report)."
      • changedInput schema / properties / tool_names / description
        Previous value: -"Comma-separated tool names (for delta)"New value: +"Comma-separated tool names (for delta)."
      • changedInput schema / properties / tool_schemas / description
        Previous value: -"JSON array of tool schema objects (for register/estimate)"New value: +"JSON array of tool schema objects (for register/ estimate)."
    • Changeddelimit_tracker_sync2 fields changed
      • changedInput schema / properties / limit / description
        Previous value: -"Max issues to sync (default 10)."New value: +"Max issues to sync. Default 10."
      • changedInput schema / properties / repo / description
        Previous value: -"GitHub repository in owner/repo format. Auto-detects from git remote if empty."New value: +"\"owner/repo\" GitHub repo. Empty = auto-detect from git remote."
    • Changeddelimit_vault_search1 field changed
      • changedInput schema / properties / query / description
        Previous value: -"Search query for vault entries."New value: +"Search query string. Required."
    • Addeddelimit_vendor_news_draft
    • Addeddelimit_vendor_news_health
    • Addeddelimit_vendor_news_scan
    • Changeddelimit_webhook_manage3 fields changed
      • changedInput schema / properties / action / description
        Previous value: -"list, add, remove, or test."New value: +"One of \"list\" (default), \"add\", \"remove\", \"test\"."
      • changedInput schema / properties / events / description
        Previous value: -"Comma-separated event filter: \"all\", \"blocked\", \"critical\", \"security\"."New value: +"Comma-separated event filter — \"all\" (default), \"blocked\", \"critical\", \"security\"."
      • changedInput schema / properties / url / description
        Previous value: -"Webhook URL (Slack, Discord, or any HTTP endpoint)."New value: +"Webhook URL (Slack, Discord, or any HTTP endpoint). Required for add / remove / test (test uses all configured if not specified)."
    • Changeddelimit_work_orders4 fields changed
      • changedInput schema / properties / action / description
        Previous value: -"'list' (show pending), 'show' (read one), 'complete' (mark done)."New value: +"One of \"list\" (default), \"show\", \"complete\"."
      • changedInput schema / properties / note / description
        Previous value: -"Completion note for 'complete'."New value: +"Completion note (used by \"complete\")."
      • changedInput schema / properties / status / description
        Previous value: -"Filter for list: 'pending', 'completed', 'all'."New value: +"Filter for list — \"pending\" (default), \"completed\", \"all\"."
      • changedInput schema / properties / wo_id / description
        Previous value: -"Work order ID for 'show' and 'complete'."New value: +"Work order id (required for \"show\" / \"complete\")."
    • Addeddelimit_x_fetch
    • Changeddelimit_zero_spec2 fields changed
      • changedInput schema / properties / project_dir / description
        Previous value: -"Path to the project root directory."New value: +"Project root directory. Default \".\" (cwd)."
      • changedInput schema / properties / python_bin / description
        Previous value: -"Optional Python binary path (auto-detected if omitted)."New value: +"Optional Python binary path. Empty = auto-detect."
  5. 173 tool updatesv4.5.5
    • Added_delimit_agent_impl
    • Added_delimit_context_impl
    • Added_delimit_deploy_impl
    • Added_delimit_gov_impl
    • Added_delimit_obs_impl
    • Added_delimit_release_impl
    • Added_delimit_secret_impl
    • Changeddelimit_activate5 fields changed
      • addedInput schema / properties / auto_permissions
        Added value: +{
        +  "default": true,
        +  "description": "Auto-configure AI assistant permissions for Delimit tools (default True).",
        +  "type": "boolean"
        +}
      • addedInput schema / properties / license_key / default
        Added value: +""
      • addedInput schema / properties / license_key / description
        Added value: +"Optional license key to activate Pro (e.g. DELIMIT-XXXX-XXXX-XXXX). Leave empty to check free-tier readiness."
      • addedInput schema / properties / project_path
        Added value: +{
        +  "default": ".",
        +  "description": "Project directory to check.",
        +  "type": "string"
        +}
      • removedInput schema / required
        Removed value: -[
        -  "license_key"
        -]
    • Addeddelimit_agent_check
    • Addeddelimit_agent_complete
    • Addeddelimit_agent_dashboard
    • Addeddelimit_agent_dispatch
    • Addeddelimit_agent_handoff
    • Addeddelimit_agent_link
    • Addeddelimit_agent_policy
    • Addeddelimit_agent_status
    • Addeddelimit_audit
    • Addeddelimit_build_loop
    • Addeddelimit_build_loop_daemon
    • Addeddelimit_changelog
    • Addeddelimit_collision_check
    • Addeddelimit_config_export
    • Addeddelimit_config_import
    • Addeddelimit_content_publish
    • Addeddelimit_content_queue
    • Addeddelimit_content_schedule
    • Addeddelimit_context_branch
    • Addeddelimit_context_init
    • Addeddelimit_context_list
    • Addeddelimit_context_read
    • Addeddelimit_context_snapshot
    • Addeddelimit_context_write
    • Changeddelimit_cost_alert4 fields changed
      • addedInput schema / properties / action / description
        Added value: +"Action (list/create/delete/toggle)."
      • addedInput schema / properties / alert_id / description
        Added value: +"Alert ID (required for delete/toggle)."
      • addedInput schema / properties / name / description
        Added value: +"Alert name (required for create)."
      • addedInput schema / properties / threshold / description
        Added value: +"Cost threshold in USD (required for create)."
    • Changeddelimit_cost_analyze1 field changed
      • addedInput schema / properties / target / description
        Added value: +"Project or infrastructure path to analyze."
    • Addeddelimit_cost_controls
    • Changeddelimit_cost_optimize1 field changed
      • addedInput schema / properties / target / description
        Added value: +"Project or infrastructure path to analyze."
    • Addeddelimit_daemon_classify
    • Addeddelimit_daemon_run
    • Addeddelimit_daemon_status
    • Changeddelimit_data_backup1 field changed
      • addedInput schema / properties / target / description
        Added value: +"Directory or file to back up."
    • Changeddelimit_data_migrate1 field changed
      • addedInput schema / properties / target / description
        Added value: +"Project path to scan for migration files."
    • Changeddelimit_data_validate1 field changed
      • addedInput schema / properties / target / description
        Added value: +"Directory or file path containing data files."
    • Changeddelimit_deliberate6 fields changed
      • addedInput schema / properties / context / description
        Added value: +"Background context for all models."
      • addedInput schema / properties / max_rounds / description
        Added value: +"Maximum rounds (default 3 for debate, 6 for dialogue)."
      • addedInput schema / properties / mode / description
        Added value: +"\"dialogue\" (short turns) or \"debate\" (long essays)."
      • addedInput schema / properties / question / description
        Added value: +"The question to reach consensus on."
      • addedInput schema / properties / save_path / description
        Added value: +"Optional file path to save the full transcript."
      • addedInput schema / properties / scope
        Added value: +{
        +  "default": "",
        +  "description": "Optional scope override — \"strategic\", \"social\", or\n\"operational\". When empty, the engine classifies from\nkeywords in the question and context. Strategic and social\nscopes enforce the 3-model minimum (charter consensus-thresholds)\nand allow Grok as a tiebreaker on deadlock.",
        +  "type": "string"
        +}
    • Addeddelimit_deliberation_status
    • Changeddelimit_deploy_build2 fields changed
      • addedInput schema / properties / app / default
        Added value: +""
      • removedInput schema / required
        Removed value: -[
        -  "app"
        -]
    • Changeddelimit_deploy_plan3 fields changed
      • addedInput schema / properties / app / default
        Added value: +""
      • addedInput schema / properties / env / default
        Added value: +""
      • removedInput schema / required
        Removed value: -[
        -  "app",
        -  "env"
        -]
    • Changeddelimit_deploy_publish2 fields changed
      • addedInput schema / properties / app / default
        Added value: +""
      • removedInput schema / required
        Removed value: -[
        -  "app"
        -]
    • Changeddelimit_deploy_rollback3 fields changed
      • addedInput schema / properties / app / default
        Added value: +""
      • addedInput schema / properties / env / default
        Added value: +""
      • removedInput schema / required
        Removed value: -[
        -  "app",
        -  "env"
        -]
    • Changeddelimit_deploy_status3 fields changed
      • addedInput schema / properties / app / default
        Added value: +""
      • addedInput schema / properties / env / default
        Added value: +""
      • removedInput schema / required
        Removed value: -[
        -  "app",
        -  "env"
        -]
    • Addeddelimit_deploy_verify
    • Changeddelimit_design_component_library2 fields changed
      • addedInput schema / properties / output_format / description
        Added value: +"Output format (json/markdown)."
      • addedInput schema / properties / project_path / description
        Added value: +"Project path to scan."
    • Changeddelimit_design_extract_tokens4 fields changed
      • addedInput schema / properties / figma_file_key / description
        Added value: +"Optional Figma file key (auto-uses Figma API if a token is available)."
      • addedInput schema / properties / project_path / description
        Added value: +"Project directory to scan. Defaults to cwd."
      • changedInput schema / properties / token_types / anyOf
        Previous value: -[
        -  {
        -    "items": {
        -      "type": "string"
        -    },
        -    "type": "array"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "type": "string"
        +  },
        +  {
        +    "items": {
        +      "type": "string"
        +    },
        +    "type": "array"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • addedInput schema / properties / token_types / description
        Added value: +"Token types to extract (colors, typography, spacing, breakpoints)."
    • Changeddelimit_design_generate_component4 fields changed
      • addedInput schema / properties / component_name / description
        Added value: +"Component name (PascalCase)."
      • addedInput schema / properties / figma_node_id / description
        Added value: +"Optional Figma node ID (reserved for future use)."
      • addedInput schema / properties / output_path / description
        Added value: +"Output file path. Defaults to components/<Name>/<Name>.tsx."
      • addedInput schema / properties / project_path / description
        Added value: +"Project root for Tailwind detection."
    • Changeddelimit_design_generate_tailwind3 fields changed
      • addedInput schema / properties / figma_file_key / description
        Added value: +"Optional Figma file key (reserved for future use)."
      • addedInput schema / properties / output_path / description
        Added value: +"Output file path for generated config."
      • addedInput schema / properties / project_path / description
        Added value: +"Project root to scan for existing config or CSS tokens."
    • Changeddelimit_design_validate_responsive3 fields changed
      • changedInput schema / properties / check_types / anyOf
        Previous value: -[
        -  {
        -    "items": {
        -      "type": "string"
        -    },
        -    "type": "array"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "type": "string"
        +  },
        +  {
        +    "items": {
        +      "type": "string"
        +    },
        +    "type": "array"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • addedInput schema / properties / check_types / description
        Added value: +"Check types (breakpoints, containers, fluid-type, etc.)."
      • addedInput schema / properties / project_path / description
        Added value: +"Project path to validate."
    • Changeddelimit_diagnose3 fields changed
      • addedInput schema / properties / dry_run
        Added value: +{
        +  "default": false,
        +  "description": "If True, return a preview of what doctor would create/modify without executing changes.",
        +  "type": "boolean"
        +}
      • addedInput schema / properties / project_path / description
        Added value: +"Project to diagnose."
      • addedInput schema / properties / undo
        Added value: +{
        +  "default": false,
        +  "description": "If True, revert changes from the last doctor --fix run using the saved manifest.",
        +  "type": "boolean"
        +}
    • Changeddelimit_diff2 fields changed
      • addedInput schema / properties / new_spec / description
        Added value: +"Path to the new OpenAPI spec file."
      • addedInput schema / properties / old_spec / description
        Added value: +"Path to the old OpenAPI spec file."
    • Addeddelimit_diff_report
    • Addeddelimit_digest
    • Changeddelimit_docs_generate1 field changed
      • addedInput schema / properties / target / description
        Added value: +"Project path."
    • Changeddelimit_docs_validate1 field changed
      • addedInput schema / properties / target / description
        Added value: +"Project path."
    • Addeddelimit_drift_check
    • Addeddelimit_drift_history
    • Changeddelimit_evidence_collect2 fields changed
      • addedInput schema / properties / evidence_type
        Added value: +{
        +  "default": "",
        +  "description": "Type of evidence (e.g. \"deploy\", \"security\", \"test\", \"audit\"). Stored in bundle metadata.",
        +  "type": "string"
        +}
      • addedInput schema / properties / target / description
        Added value: +"Repository or task path."
    • Changeddelimit_evidence_verify2 fields changed
      • addedInput schema / properties / bundle_id / description
        Added value: +"Evidence bundle ID to verify."
      • addedInput schema / properties / bundle_path / description
        Added value: +"Path to evidence bundle file."
    • Addeddelimit_executor
    • Changeddelimit_explain6 fields changed
      • addedInput schema / properties / api_name / description
        Added value: +"API/service name for context."
      • addedInput schema / properties / new_spec / description
        Added value: +"Path to the new OpenAPI spec file."
      • addedInput schema / properties / new_version / description
        Added value: +"New version string."
      • addedInput schema / properties / old_spec / description
        Added value: +"Path to the old OpenAPI spec file."
      • addedInput schema / properties / old_version / description
        Added value: +"Previous version string."
      • addedInput schema / properties / template / description
        Added value: +"Template name (default: developer)."
    • Addeddelimit_external_pr_check
    • Changeddelimit_generate_scaffold4 fields changed
      • addedInput schema / properties / name / description
        Added value: +"Project name."
      • changedInput schema / properties / packages / anyOf
        Previous value: -[
        -  {
        -    "items": {
        -      "type": "string"
        -    },
        -    "type": "array"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "type": "string"
        +  },
        +  {
        +    "items": {
        +      "type": "string"
        +    },
        +    "type": "array"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • addedInput schema / properties / packages / description
        Added value: +"Packages to include."
      • addedInput schema / properties / project_type / description
        Added value: +"Project type (nextjs, api, library, etc.)."
    • Changeddelimit_generate_template6 fields changed
      • changedInput schema / properties / features / anyOf
        Previous value: -[
        -  {
        -    "items": {
        -      "type": "string"
        -    },
        -    "type": "array"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "type": "string"
        +  },
        +  {
        +    "items": {
        +      "type": "string"
        +    },
        +    "type": "array"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • addedInput schema / properties / features / description
        Added value: +"Optional feature flags."
      • addedInput schema / properties / framework / description
        Added value: +"Target framework."
      • addedInput schema / properties / name / description
        Added value: +"Name for the generated code."
      • addedInput schema / properties / target
        Added value: +{
        +  "default": ".",
        +  "description": "Directory to write the generated file into. Defaults to current directory.",
        +  "type": "string"
        +}
      • addedInput schema / properties / template_type / description
        Added value: +"Template type (component, page, api, etc.)."
    • Addeddelimit_github_scan
    • Changeddelimit_gov_evaluate3 fields changed
      • addedInput schema / properties / action / default
        Added value: +""
      • changedInput schema / properties / context / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": true,
        -    "type": "object"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "type": "string"
        +  },
        +  {
        +    "additionalProperties": true,
        +    "type": "object"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • removedInput schema / required
        Removed value: -[
        -  "action"
        -]
    • Changeddelimit_gov_new_task3 fields changed
      • addedInput schema / properties / scope / default
        Added value: +""
      • addedInput schema / properties / title / default
        Added value: +""
      • removedInput schema / required
        Removed value: -[
        -  "title",
        -  "scope"
        -]
    • Changeddelimit_gov_run2 fields changed
      • addedInput schema / properties / task_id / default
        Added value: +""
      • removedInput schema / required
        Removed value: -[
        -  "task_id"
        -]
    • Changeddelimit_gov_verify2 fields changed
      • addedInput schema / properties / task_id / default
        Added value: +""
      • removedInput schema / required
        Removed value: -[
        -  "task_id"
        -]
    • Addeddelimit_handoff_acknowledge
    • Addeddelimit_handoff_create
    • Addeddelimit_handoff_list
    • Changeddelimit_help1 field changed
      • addedInput schema / properties / tool_name / description
        Added value: +"Tool name (e.g. 'lint', 'gov_health'). Leave empty for overview."
    • Changeddelimit_impact2 fields changed
      • addedInput schema / properties / api_name / description
        Added value: +"The API that changed."
      • addedInput schema / properties / dependency_file / description
        Added value: +"Optional path to dependency manifest."
    • Addeddelimit_inbox_daemon
    • Changeddelimit_init3 fields changed
      • addedInput schema / properties / no_permissions
        Added value: +{
        +  "default": false,
        +  "description": "Skip the filesystem permission auto-config (LED-269).",
        +  "type": "boolean"
        +}
      • addedInput schema / properties / preset / description
        Added value: +"Policy preset - strict, default, or relaxed."
      • addedInput schema / properties / project_path / description
        Added value: +"Project root directory."
    • Changeddelimit_intel_dataset_freeze1 field changed
      • addedInput schema / properties / dataset_id / description
        Added value: +"Dataset identifier."
    • Changeddelimit_intel_dataset_register4 fields changed
      • addedInput schema / properties / description / description
        Added value: +"Human-readable description."
      • addedInput schema / properties / name / description
        Added value: +"Dataset name."
      • changedInput schema / properties / schema / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": true,
        -    "type": "object"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "type": "string"
        +  },
        +  {
        +    "additionalProperties": true,
        +    "type": "object"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • addedInput schema / properties / schema / description
        Added value: +"Optional JSON schema for the dataset."
    • Changeddelimit_intel_query4 fields changed
      • addedInput schema / properties / dataset_id / description
        Added value: +"Optional dataset to filter by."
      • changedInput schema / properties / parameters / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": true,
        -    "type": "object"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "type": "string"
        +  },
        +  {
        +    "additionalProperties": true,
        +    "type": "object"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • addedInput schema / properties / parameters / description
        Added value: +"Optional params (date_from, date_to, limit)."
      • addedInput schema / properties / query / description
        Added value: +"Keyword search string."
    • Changeddelimit_intel_snapshot_ingest6 fields changed
      • removedInput schema / properties / data / additionalProperties
        Removed value: -true
      • addedInput schema / properties / data / anyOf
        Added value: +[
        +  {
        +    "type": "string"
        +  },
        +  {
        +    "additionalProperties": true,
        +    "type": "object"
        +  }
        +]
      • addedInput schema / properties / data / description
        Added value: +"Snapshot data (any JSON-serializable dict)."
      • removedInput schema / properties / data / type
        Removed value: -"object"
      • changedInput schema / properties / provenance / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": true,
        -    "type": "object"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "type": "string"
        +  },
        +  {
        +    "additionalProperties": true,
        +    "type": "object"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • addedInput schema / properties / provenance / description
        Added value: +"Optional provenance metadata (source, author, etc.)."
    • Changeddelimit_ledger4 fields changed
      • addedInput schema / properties / api_name / description
        Added value: +"Filter events by API name."
      • addedInput schema / properties / ledger_path / description
        Added value: +"Path to the ledger JSONL file (e.g. .delimit/ledger/operations.jsonl)."
      • addedInput schema / properties / repository / description
        Added value: +"Filter events by repository."
      • addedInput schema / properties / validate_chain / description
        Added value: +"Validate hash chain integrity."
    • Changeddelimit_ledger_add13 fields changed
      • addedInput schema / properties / acceptance_criteria
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "List of testable \"done when\" conditions (e.g. \"tests pass\", \"coverage > 80%\")."
        +}
      • addedInput schema / properties / context
        Added value: +{
        +  "default": "",
        +  "description": "Background info an AI agent needs to work on this item.",
        +  "type": "string"
        +}
      • addedInput schema / properties / description / description
        Added value: +"Details."
      • addedInput schema / properties / estimated_complexity
        Added value: +{
        +  "default": "",
        +  "description": "small, medium, or large.",
        +  "type": "string"
        +}
      • addedInput schema / properties / item_type / description
        Added value: +"task, fix, feat, strategy, consensus."
      • addedInput schema / properties / ledger / description
        Added value: +"\"ops\" (tasks, bugs, features) or \"strategy\" (decisions, direction)."
      • addedInput schema / properties / priority / description
        Added value: +"P0 (urgent), P1 (important), P2 (nice to have)."
      • addedInput schema / properties / source / description
        Added value: +"Where this came from (session, consensus, focus-group, etc)."
      • addedInput schema / properties / tags
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Labels/tags (e.g. [\"deploy-ready\", \"ship\"] or \"deploy-ready,ship\")."
        +}
      • addedInput schema / properties / title / description
        Added value: +"What needs to be done."
      • addedInput schema / properties / tools_needed
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Delimit tools needed (e.g. \"delimit_lint\", \"delimit_test_coverage\")."
        +}
      • addedInput schema / properties / venture / description
        Added value: +"Project name or path (e.g. \"my-project\", \"./path/to/project\"). Auto-detects if empty."
      • addedInput schema / properties / worked_by
        Added value: +{
        +  "default": "",
        +  "description": "Which AI model is working on this. Auto-detected if empty.",
        +  "type": "string"
        +}
    • Changeddelimit_ledger_context1 field changed
      • addedInput schema / properties / venture / description
        Added value: +"Project name or path. Auto-detects if empty."
    • Changeddelimit_ledger_done3 fields changed
      • addedInput schema / properties / item_id / description
        Added value: +"The item ID (e.g. LED-001 or STR-001)."
      • addedInput schema / properties / note / description
        Added value: +"Optional completion note."
      • addedInput schema / properties / venture / description
        Added value: +"Project name or path. Auto-detects if empty."
    • Addeddelimit_ledger_link
    • Addeddelimit_ledger_links
    • Changeddelimit_ledger_list5 fields changed
      • addedInput schema / properties / ledger / description
        Added value: +"\"ops\", \"strategy\", or \"both\"."
      • addedInput schema / properties / limit / description
        Added value: +"Max items to return."
      • addedInput schema / properties / priority / description
        Added value: +"Filter by priority - \"P0\", \"P1\", \"P2\", or empty for all."
      • addedInput schema / properties / status / description
        Added value: +"Filter by status - \"open\", \"done\", \"in_progress\", or empty for all."
      • addedInput schema / properties / venture / description
        Added value: +"Project name or path. Auto-detects if empty."
    • Addeddelimit_ledger_propose
    • Addeddelimit_ledger_query
    • Addeddelimit_ledger_update
    • Changeddelimit_lint4 fields changed
      • addedInput schema / properties / dry_run
        Added value: +{
        +  "default": false,
        +  "description": "If True, return violations without side effects (no evidence, no chains).",
        +  "type": "boolean"
        +}
      • addedInput schema / properties / new_spec / description
        Added value: +"Path to the new (proposed) OpenAPI spec file."
      • addedInput schema / properties / old_spec / description
        Added value: +"Path to the old (baseline) OpenAPI spec file."
      • addedInput schema / properties / policy_file / description
        Added value: +"Optional path to a .delimit/policies.yml file."
    • Addeddelimit_loop_config
    • Addeddelimit_loop_status
    • Changeddelimit_memory_recent1 field changed
      • addedInput schema / properties / limit / description
        Added value: +"Number of recent entries to return."
    • Changeddelimit_memory_search2 fields changed
      • addedInput schema / properties / limit / description
        Added value: +"Maximum results to return."
      • addedInput schema / properties / query / description
        Added value: +"Natural language search query."
    • Changeddelimit_memory_store4 fields changed
      • addedInput schema / properties / content / description
        Added value: +"The content to remember."
      • addedInput schema / properties / context / description
        Added value: +"Optional context about when/why this was stored."
      • changedInput schema / properties / tags / anyOf
        Previous value: -[
        -  {
        -    "items": {
        -      "type": "string"
        -    },
        -    "type": "array"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "type": "string"
        +  },
        +  {
        +    "items": {
        +      "type": "string"
        +    },
        +    "type": "array"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • addedInput schema / properties / tags / description
        Added value: +"Optional categorization tags."
    • Changeddelimit_models4 fields changed
      • addedInput schema / properties / action / description
        Added value: +"list, detect, add, or remove."
      • addedInput schema / properties / api_key / description
        Added value: +"API key for the provider (only used with action=add)."
      • addedInput schema / properties / model_name / description
        Added value: +"Optional model name override (e.g. \"gpt-4o\", \"claude-sonnet-4-5-20250514\")."
      • addedInput schema / properties / provider / description
        Added value: +"Model provider for add/remove (grok, gemini, openai, anthropic, codex)."
    • Addeddelimit_next_task
    • Addeddelimit_notify
    • Addeddelimit_notify_inbox
    • Addeddelimit_notify_routing
    • Addeddelimit_obs_alerts
    • Changeddelimit_os_gates1 field changed
      • addedInput schema / properties / plan_id / description
        Added value: +"The plan ID (e.g. \"PLAN-A1B2C3D4\")."
    • Changeddelimit_os_plan5 fields changed
      • addedInput schema / properties / operation / description
        Added value: +"Operation to plan (e.g. \"deploy\", \"migrate\")."
      • changedInput schema / properties / parameters / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": true,
        -    "type": "object"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "type": "string"
        +  },
        +  {
        +    "additionalProperties": true,
        +    "type": "object"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • addedInput schema / properties / parameters / description
        Added value: +"Operation parameters."
      • addedInput schema / properties / require_approval / description
        Added value: +"Whether to require approval before execution."
      • addedInput schema / properties / target / description
        Added value: +"Target component or service."
    • Addeddelimit_playbook
    • Changeddelimit_policy5 fields changed
      • addedInput schema / properties / action
        Added value: +{
        +  "default": "inspect",
        +  "description": "\"inspect\" or \"simulate\".",
        +  "type": "string"
        +}
      • addedInput schema / properties / new_spec
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Path to proposed spec (required for simulate)."
        +}
      • addedInput schema / properties / old_spec
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Path to baseline spec (required for simulate)."
        +}
      • addedInput schema / properties / policy_file / description
        Added value: +"Optional custom policy file path."
      • addedInput schema / properties / spec_files / description
        Added value: +"List of spec file paths."
    • Addeddelimit_project_config
    • Addeddelimit_prompt_drift
    • Addeddelimit_quickstart
    • Addeddelimit_redact
    • Addeddelimit_reddit_scan
    • Addeddelimit_release_history
    • Addeddelimit_release_rollback
    • Addeddelimit_release_validate
    • Addeddelimit_repo_analyze
    • Addeddelimit_repo_config_audit
    • Addeddelimit_repo_config_validate
    • Addeddelimit_repo_diagnose
    • Addeddelimit_resource_drivers
    • Addeddelimit_resource_get
    • Addeddelimit_resource_list
    • Addeddelimit_review
    • Addeddelimit_revive
    • Changeddelimit_scan1 field changed
      • addedInput schema / properties / project_path / description
        Added value: +"Path to the project to scan."
    • Addeddelimit_screen_record
    • Addeddelimit_screenshot
    • Addeddelimit_secret_access_log
    • Addeddelimit_secret_get
    • Addeddelimit_secret_list
    • Addeddelimit_secret_revoke
    • Addeddelimit_secret_store
    • Changeddelimit_security_audit1 field changed
      • addedInput schema / properties / target / description
        Added value: +"Repository or file path to audit."
    • Addeddelimit_security_deliberate
    • Addeddelimit_security_ingest
    • Changeddelimit_security_scan1 field changed
      • addedInput schema / properties / target / description
        Added value: +"Repository or file path."
    • Changeddelimit_semver3 fields changed
      • addedInput schema / properties / current_version / description
        Added value: +"Optional current version (e.g. \"1.2.3\") to compute next version."
      • addedInput schema / properties / new_spec / description
        Added value: +"Path to the new OpenAPI spec file."
      • addedInput schema / properties / old_spec / description
        Added value: +"Path to the old OpenAPI spec file."
    • Addeddelimit_sense
    • Changeddelimit_sensor_github_issue3 fields changed
      • addedInput schema / properties / issue_number / description
        Added value: +"The issue number to monitor."
      • addedInput schema / properties / repo / description
        Added value: +"GitHub repository in owner/repo format (e.g. \"owner/repo\")."
      • addedInput schema / properties / since_comment_id / description
        Added value: +"Last seen comment ID. Pass 0 to get all comments."
    • Addeddelimit_sensor_github_migrations
    • Addeddelimit_session_handoff
    • Addeddelimit_session_history
    • Addeddelimit_siem
    • Addeddelimit_social_accounts
    • Addeddelimit_social_approve
    • Addeddelimit_social_daemon
    • Addeddelimit_social_generate
    • Addeddelimit_social_history
    • Addeddelimit_social_post
    • Addeddelimit_social_target
    • Addeddelimit_social_target_config
    • Addeddelimit_soul_capture
    • Addeddelimit_spec_health
    • Changeddelimit_story_accessibility2 fields changed
      • addedInput schema / properties / project_path / description
        Added value: +"Project path to scan."
      • addedInput schema / properties / standards / description
        Added value: +"Accessibility standard (WCAG2A/WCAG2AA/WCAG2AAA)."
    • Addeddelimit_story_build
    • Changeddelimit_story_generate4 fields changed
      • addedInput schema / properties / component_path / description
        Added value: +"Path to the component file."
      • addedInput schema / properties / story_name / description
        Added value: +"Custom story name. Defaults to component name."
      • changedInput schema / properties / variants / anyOf
        Previous value: -[
        -  {
        -    "items": {
        -      "type": "string"
        -    },
        -    "type": "array"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "type": "string"
        +  },
        +  {
        +    "items": {
        +      "type": "string"
        +    },
        +    "type": "array"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • addedInput schema / properties / variants / description
        Added value: +"Variants to generate. Defaults to [Default, WithChildren]."
    • Changeddelimit_story_visual_test3 fields changed
      • addedInput schema / properties / project_path / description
        Added value: +"Project path for baseline storage."
      • addedInput schema / properties / threshold / description
        Added value: +"Diff threshold (0.0-1.0)."
      • addedInput schema / properties / url / description
        Added value: +"URL to screenshot."
    • Addeddelimit_swarm
    • Addeddelimit_task_complete
    • Addeddelimit_test_coverage
    • Changeddelimit_test_generate3 fields changed
      • addedInput schema / properties / framework / description
        Added value: +"Test framework (jest/pytest/vitest)."
      • addedInput schema / properties / project_path / description
        Added value: +"Project path."
      • addedInput schema / properties / source_files / description
        Added value: +"Specific files to generate tests for."
    • Changeddelimit_test_smoke2 fields changed
      • addedInput schema / properties / project_path / description
        Added value: +"Project path."
      • addedInput schema / properties / test_suite / description
        Added value: +"Specific test suite to run."
    • Addeddelimit_toolcard_cache
    • Addeddelimit_tracker_sync
    • Changeddelimit_vault_search1 field changed
      • addedInput schema / properties / query / description
        Added value: +"Search query for vault entries."
    • Addeddelimit_webhook_manage
    • Addeddelimit_work_orders
    • Changeddelimit_zero_spec2 fields changed
      • addedInput schema / properties / project_dir / description
        Added value: +"Path to the project root directory."
      • addedInput schema / properties / python_bin / description
        Added value: +"Optional Python binary path (auto-detected if omitted)."
  6. 81 tool updatesv0.1.0
    • First observeddelimit_activate
    • First observeddelimit_cost_alert
    • First observeddelimit_cost_analyze
    • First observeddelimit_cost_optimize
    • First observeddelimit_data_backup
    • First observeddelimit_data_migrate
    • First observeddelimit_data_validate
    • First observeddelimit_deliberate
    • First observeddelimit_deploy_build
    • First observeddelimit_deploy_npm
    • First observeddelimit_deploy_plan
    • First observeddelimit_deploy_publish
    • First observeddelimit_deploy_rollback
    • First observeddelimit_deploy_site
    • First observeddelimit_deploy_status
    • First observeddelimit_design_component_library
    • First observeddelimit_design_extract_tokens
    • First observeddelimit_design_generate_component
    • First observeddelimit_design_generate_tailwind
    • First observeddelimit_design_validate_responsive
    • First observeddelimit_diagnose
    • First observeddelimit_diff
    • First observeddelimit_docs_generate
    • First observeddelimit_docs_validate
    • First observeddelimit_evidence_collect
    • First observeddelimit_evidence_verify
    • First observeddelimit_explain
    • First observeddelimit_generate_scaffold
    • First observeddelimit_generate_template
    • First observeddelimit_gov_evaluate
    • First observeddelimit_gov_health
    • First observeddelimit_gov_new_task
    • First observeddelimit_gov_policy
    • First observeddelimit_gov_run
    • First observeddelimit_gov_status
    • First observeddelimit_gov_verify
    • First observeddelimit_help
    • First observeddelimit_impact
    • First observeddelimit_init
    • First observeddelimit_intel_dataset_freeze
    • First observeddelimit_intel_dataset_list
    • First observeddelimit_intel_dataset_register
    • First observeddelimit_intel_query
    • First observeddelimit_intel_snapshot_ingest
    • First observeddelimit_ledger
    • First observeddelimit_ledger_add
    • First observeddelimit_ledger_context
    • First observeddelimit_ledger_done
    • First observeddelimit_ledger_list
    • First observeddelimit_license_status
    • First observeddelimit_lint
    • First observeddelimit_memory_recent
    • First observeddelimit_memory_search
    • First observeddelimit_memory_store
    • First observeddelimit_models
    • First observeddelimit_obs_logs
    • First observeddelimit_obs_metrics
    • First observeddelimit_obs_status
    • First observeddelimit_os_gates
    • First observeddelimit_os_plan
    • First observeddelimit_os_status
    • First observeddelimit_policy
    • First observeddelimit_release_plan
    • First observeddelimit_release_status
    • First observeddelimit_release_sync
    • First observeddelimit_scan
    • First observeddelimit_security_audit
    • First observeddelimit_security_scan
    • First observeddelimit_semver
    • First observeddelimit_sensor_github_issue
    • First observeddelimit_story_accessibility
    • First observeddelimit_story_generate
    • First observeddelimit_story_visual_test
    • First observeddelimit_test_generate
    • First observeddelimit_test_smoke
    • First observeddelimit_vault_health
    • First observeddelimit_vault_search
    • First observeddelimit_vault_snapshot
    • First observeddelimit_ventures
    • First observeddelimit_version
    • First observeddelimit_zero_spec

TDQS

B3.4/5.0
Disambiguation2/5

With 209 tools, there is substantial overlap between similar tools like the many ledger, governance, and deploy variants. The detailed descriptions help, but the boundaries are often subtle, and internal implementation tools (prefixed with underscore) add confusion. An agent would frequently misselect.

Naming Consistency3/5

The naming mostly follows a consistent verb_noun snake_case pattern (e.g., delimit_agent_dispatch, delimit_ledger_add). However, there are irregularities like delimit_ledger_done instead of delimit_ledger_complete, and internal tools with underscore prefixes break the pattern.

Tool Count1/5

209 tools is far beyond the typical well-scoped range of 3-15. The server attempts to cover an enormous breadth of functionality (governance, deploy, social, design, etc.), making it monolithic and unfocused. This extreme count severely hurts usability.

Completeness3/5

Given the server's vast scope, it covers many operations (CRUD for ledger, deploy pipeline, governance lifecycle, social posting, etc.). However, many tools are marked experimental or gated behind Pro, and some workflows require chaining multiple tools, indicating room for improvement.

Maintenance

ActivityActive
ResponsivenessWithin a week

Related MCP Connectors

Related MCP Servers

  • A
    license
    B
    quality
    D
    maintenance
    Gives AI coding assistants persistent memory, safety controls, and project awareness by tracking coding sessions, protecting critical files from modifications, and managing approval workflows with automatic changelog generation.
    19
    18
    MIT
  • A
    license
    Not graded
    quality
    Not graded
    maintenance
    Provides unified development tools including code analysis, debugging, refactoring, documentation, testing, and project automation through multiple LLM providers (KIMI, GLM, OpenRouter). Features agentic audit capabilities with multi-model consensus for finding issues and generating direct fixes.
    -
  • F
    license
    Not graded
    quality
    Not graded
    maintenance
    Orchestrates multiple AI models (Gemini, OpenAI, Claude, local models) within a single conversation context, enabling collaborative workflows like multi-model code reviews, consensus building, and CLI-to-CLI bridging for specialized tasks.
    -

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/delimit-ai/delimit-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server