AI Loop Library MCP
Read-only MCP server that lets your agent find, run, and design bounded verifiable work loops from the AI Loop Library (68 loops) — no writes, no credentials, no third-party runtime deps.
Survey the library —
browse_catalogreturns the whole catalog as a ~2k-token digest (id, category, use_when, verifier strength);list_categoriesandcatalog_statsgive counts, featured loops, and load source.Find loops —
search_loopsranks matches by keyword/job-to-be-done with why-matched explanations;pick_loop_for_goalreturns a 5-candidate shortlist with a confidence signal (you make the final call).Inspect a loop —
get_loopfetches the full spec: objective, trigger, allowed actions, verification, stop condition, budget, approval boundary, copyable prompt, canonical URL.Run a loop —
render_run_protocolproduces an executable markdown protocol with one-change-per-round discipline, durable state skeleton, stop conditions, budgets, risk-colored approvals, and a paste-ready prompt; session loops getmax_rounds/max_minutes, scheduled-tick loops get experiment logs and no-progress stops.Lint and create loops —
critique_loopscores any loop design 0–10 against the anti-pattern rubric with per-check fixes;design_loopscaffolds a new spec with a domain verifier and TODOs.Browse resources —
ailooplibrary://catalogandailooplibrary://loop/{id}.Operate offline/degraded — loads from a local JSON path, remote URL, or bundled fallback; caches for 5 min, warns and retains the last good snapshot on outages, and never serves sample data as real.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@AI Loop Library MCPpick a loop for refactoring"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
AI Loop Library MCP server
Version 2.1.0. A read-only, local MCP server for the AI Loop Library and its 68 bounded work loops. The calling agent uses its knowledge of the operator's project to choose a loop; the server supplies searchable specs, runnable protocols, and design checks.
One Python file, Python 3.9+, standard library only at runtime. No write tools, credentials, model calls, or hosted server to operate.
Install
Download the single file:
mkdir -p ~/.ai-loop-library
curl -fsSL https://ailooplibrary.com/mcp/server.py -o ~/.ai-loop-library/server.py
python3 ~/.ai-loop-library/server.py --self-test
claude mcp add ai-loop-library -- python3 ~/.ai-loop-library/server.pyFor Cursor or another stdio client:
{
"mcpServers": {
"ai-loop-library": {
"command": "python3",
"args": ["/absolute/path/to/server.py"]
}
}
}The standalone repository
contains the same server. Run the following from its root, or from mcp/ in
the site repository:
python3 server.py --self-test
python3 server.py --eval
pip install -e .
claude mcp add ai-loop-library -- ai-loop-library-mcpAlready installed? Download the file again or update your clone and reinstall, then restart the MCP connection. Existing installations do not update themselves.
Related MCP server: agent-orchestrator
Tools
Tool | Result |
| Compact catalog digest for the calling agent to judge |
| Ranked matches with why-matched explanations |
| Full spec, canonical URL, verifier classification, loop kind |
| Lexical shortlist and confidence signal; the calling agent chooses |
| Markdown protocol and copyable prompt sharing the same stop conditions and approval boundaries |
| Text-based lint, per-check findings, critical missing checks, and related loops |
| New loop scaffold with a suggested domain verifier and explicit TODOs |
| Category counts and library links |
| Counts, catalog source, update metadata, and cache status |
Session protocols honor round and minute caps. Scheduled-tick protocols use
experiment logs, per-tick/total spend guidance, and a two-tick no-progress stop.
max_rounds and max_minutes apply only to session protocols. Strict posture
requires explicit approval for shared-surface actions, including in copied prompts.
The linter recognizes explicit gate language and flags common negations such as "without human approval" or "approval is optional". Critical missing verification, stop, budget, or approval checks prevent a positive overall grade. Text matching cannot establish safety or grant permission, regardless of the numeric score.
Resources: ailooplibrary://catalog and ailooplibrary://loop/{id}.
All tools declare readOnlyHint and idempotentHint.
Catalog loading and outages
Resolution order:
AI_LOOP_LIBRARY_CATALOG_PATH: an authoritative local JSON file, using either thecatalog.jsonordata/loops.jsonshape. An invalid explicit path fails.AI_LOOP_LIBRARY_CATALOG_URL, defaulting tohttps://ailooplibrary.com/catalog.json.Local fallback:
catalog.jsonbeside the server, then../catalog.json, then../data/loops.json.
The server caches a validated catalog in memory for five minutes. Remote fetches have a ten-second timeout and a 4 MiB response limit. Validation and search indexing finish before a new snapshot replaces the current one.
If refresh and local fallback fail, the server retains its last validated snapshot
and waits 60 seconds before retrying. Tool responses include a stale-catalog warning
and _meta["ai-loop-library/catalog"] with source, age, and stale status;
catalog_stats also includes catalog_status. The cache is process-local and does
not survive restart. Changing the configured source invalidates the old snapshot.
An initial outage without a valid local catalog returns an error, never sample data.
The two-loop embedded sample is reserved for offline tests.
Client compatibility
Supported protocol revisions: 2024-11-05, 2025-03-26, 2025-06-18.
Transport: newline-delimited JSON-RPC 2.0 over stdio. Diagnostics go to stderr.
Malformed requests and invalid tool arguments return protocol errors without
terminating the server. Execution failures return isError: true.
Request params and tool arguments must be objects when supplied; omit them for
no-argument calls. Explicit null for these objects is intentionally rejected,
including for older clients. Nullable individual fields remain supported as declared
in each input schema. This validation is a deliberate tightening from 2.0.0.
With 2025-06-18, the six JSON-returning tools advertise output schemas and return
structuredContent alongside identical JSON text. Earlier revisions retain the
text-only contract. Browse, design, and render tools continue to return Markdown.
Ranking uses IDF-weighted keyword overlap, light stemming, synonyms, and category hints. It is a browsing aid, not a model judgment or constraint solver.
Verification and development
From the directory containing server.py:
python3 -m venv .venv
. .venv/bin/activate
pip install -e '.[test]'
python -m unittest -v test_server
python server.py --self-test
python server.py --evalThe runtime has no third-party dependencies. The optional test dependency,
jsonschema, independently validates advertised schemas and real tool results.
The 43 offline self-checks and 20 golden ranking queries remain separate from the
regression suite, which covers request recovery, argument validation, old-client
compatibility, protocol fidelity, lint negation, domain routing, and cache outages.
CI runs these gates on Python 3.9 and 3.13.
Release invariant: the site and standalone repositories must ship identical
server.py, README.md, pyproject.toml, and test_server.py files. Version metadata
must match SERVER_VERSION; the standalone server.json is a registry submission
manifest, not proof that a PyPI or registry publication has occurred.
Available Tools
9 toolsbrowse_catalogARead-onlyIdempotent
The entire AI Loop Library as a compact digest (~2k tokens): every loop's id, category, one-line use_when, and verifier strength. This is the highest-signal single call here — you know the operator's repo, data, and recurring pain, so scan the digest against that context and make the pick yourself. Follow with get_loop for depth or render_run_protocol to run one.
| Name | Required | Description | Default |
|---|---|---|---|
| category | No | Optional exact category filter, e.g. Engineering, Growth |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish readOnlyHint and idempotentHint, so the safety profile is covered. The description still adds real value beyond the annotations: the ~2k token cost and the exact digest fields returned, which helps an agent budget context. It stops short of describing truncation or paging behavior for large libraries.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with the concrete deliverable (the digest and its fields) before any next-step guidance. The middle sentence is somewhat chatty ('you know the operator's repo, data, and recurring pain'), but it still orients the agent toward its own selection judgment.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, and the description compensates by stating the digest's contents and rough size (~2k tokens), plus the follow-up options. For a one-optional-param read tool, this is enough for an agent to call it correctly and know what comes back.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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' filter is documented there with examples, so the schema does the heavy lifting. The description only mentions 'category' as a returned field, not as a filter, adding no meaning beyond the schema; baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific resource and scope: the entire AI Loop Library as a compact digest, enumerating exactly what each entry contains (id, category, use_when, verifier strength). It also names the follow-up siblings (get_loop for depth, render_run_protocol to run one), so an agent can distinguish this from deeper or execution-oriented tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Says this is the highest-signal single call and describes the follow-on path (get_loop for depth, render_run_protocol to run), giving a clear usage context. However it never contrasts with close siblings search_loops or pick_loop_for_goal, so the when-not guidance is incomplete.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
catalog_statsARead-onlyIdempotent
Catalog overview: loop count, categories, featured loops, last_updated, and where the catalog was loaded from.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| loop_count | Yes | |
| catalog_source | Yes | |
| catalog_status | Yes | |
| category_count | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and idempotentHint=true, so safety and repeatability are covered without description help. The description adds that results describe the catalog's provenance ('where the catalog was loaded from'), which is genuine context, but it does not disclose freshness guarantees or whether last_updated reflects load time or content change.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded fragment that lists only relevant fields, with no filler. It is a noun phrase rather than a sentence, which is terse but marginally less readable than a stated verb would be.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so the return shape need not be explained further, and with zero parameters there is no invocation nuance to cover. For a no-arg read-only stats tool, the description is sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so the baseline of 4 applies. There is no parameter semantics to explain and the description correctly avoids inventing any.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a concrete resource (the catalog) and enumerates the exact payload: loop count, categories, featured loops, last_updated, and load origin. It is distinguishable from browse_catalog, search_loops, and list_categories, though it never uses an explicit verb like 'returns' or 'reports', leaving the action slightly implicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to call this versus siblings. An agent cannot tell from the text whether this should precede browse_catalog/scarch_loops or how it relates to list_categories, which overlaps on the 'categories' output. No prerequisites or exclusions are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
critique_loopARead-onlyIdempotent
Lint any loop design — the operator's own, or one you drafted — against the AI Loop Library anti-pattern rubric: verifier present and objective, stop condition, budget, one-change-per-round, durable state, same-check-every-round, micro-metric objective (MVL), human gates on risky surfaces, defined trigger. Returns a 0–10 score, per-check fixes, and related catalog loops. Deterministic text lint, not a model — 'missing' means 'not stated'.
| Name | Required | Description | Default |
|---|---|---|---|
| loop_description | Yes | The loop design in plain words: objective, trigger, action, verification, stop condition, budget, risk handling |
Output Schema
| Name | Required | Description |
|---|---|---|
| grade | Yes | |
| score | Yes | |
| findings | Yes | |
| critical_missing | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds meaningful context beyond the readOnly/idempotent annotations: it discloses that this is a deterministic text lint rather than a model, and that 'missing' means 'not stated' rather than absent — a crucial interpretive caveat. It stops short of describing limits such as length caps or determinism guarantees on scoring.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action and scope, then the rubric list, then the return shape. The nine-item check enumeration is long but earns its place by telling the agent what to include; the trailing clause about determinism could be tightened.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema handling return values and annotations covering safety, the description fills the remaining gaps: the rubric criteria, the deterministic-lint caveat, and the return shape. Nothing material to correct invocation is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With a single parameter at 100% schema coverage, the baseline is already 3-4; the description goes further by enumerating the rubric dimensions (verifier, stop condition, budget, MVL, human gates…) that loop_description should cover, effectively telling the agent what content to supply.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('lint any loop design') and immediately distinguishes it from the design/browse siblings by its rubric-linting scope. An agent can tell it apart from design_loop or get_loop 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear context for when to call it ('the operator's own, or one you drafted'), which covers both review and self-check scenarios. It does not, however, name an alternative or an explicit when-not condition relative to siblings like design_loop or render_run_protocol.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
design_loopARead-onlyIdempotent
Scaffold a NEW loop spec from a stated bottleneck when no catalog loop fits: returns a draft with every required field (trigger, scope, one-round action, suggested verifier for the domain, state files, stop conditions, budget, risk colors), an MVL sanity check on the objective, and the nearest existing loops to steal structure from. Follow with critique_loop on the completed draft.
| Name | Required | Description | Default |
|---|---|---|---|
| goal | Yes | The bottleneck or outcome, in plain words | |
| cadence | No | Optional trigger/cadence, e.g. 'nightly', 'monthly tick' | |
| context | No | Optional operator context: stack, data sources, what already exists | |
| constraints | No | Optional constraints, e.g. 'read-only', 'no budget for APIs' |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint and idempotentHint, which the description is consistent with (it produces a draft rather than persisting anything). It goes beyond the annotations by enumerating the returned draft's contents (trigger, scope, one-round action, verifier, state files, stop conditions, budget, risk colors), the MVL sanity check, and nearest existing loops — though it does not say whether the draft is saved anywhere.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the core action and its precondition, then packs the return contents into a single dense clause, closing with the next-step instruction. Efficient overall, though the middle enumeration is long and slightly list-heavy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description compensates by describing what the draft contains and what analysis accompanies it, and it states the required follow-up tool. Only the persistence/state question is left open, which is minor for a scaffolding tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 goal, cadence, context, and constraints, and the baseline is 3. The description only loosely echoes these (bottleneck, domain, trigger) without adding format, syntax, or interaction detail beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (scaffold) and resource (a new loop spec), plus the trigger condition (from a stated bottleneck when no catalog loop fits). This distinguishes it cleanly from catalog-reading siblings like search_loops, get_loop, and pick_loop_for_goal.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly scopes usage with 'when no catalog loop fits', implying the catalog tools are the alternative when one does fit, and names the required follow-up step (critique_loop on the completed draft). It stops short of naming a specific sibling to try first, so it is clear context without full routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_loopARead-onlyIdempotent
Fetch one loop's full spec by id or slug: objective, trigger, allowed actions, verification (+ verifier strength), stop condition, budget, approval boundary, copyable prompt, and canonical URL. Use after browse_catalog or search_loops.
| Name | Required | Description | Default |
|---|---|---|---|
| id_or_slug | Yes | Loop id, e.g. 'ci-optimization', or its title |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | |
| url | Yes | |
| title | Yes | |
| summary | Yes | |
| category | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover safety (readOnlyHint, idempotentHint), so the bar is lower; the description still adds value by disclosing the depth of the payload, including verifier strength and approval boundary. It stops short of noting error behavior for unknown ids/slugs or whether the response is cached.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two compact sentences, front-loaded with the action and the returned surface, ending with the routing hint. No filler or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, the description need not explain return values, yet it usefully summarizes them; the single required parameter is fully documented in the schema. 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.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% on the single parameter, so the baseline is 3. The description says 'by id or slug' while the schema documents 'id ... or its title', a mild inconsistency that adds no disambiguating detail beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Fetch') and resource ('one loop's full spec') and enumerates exactly what is returned: objective, trigger, verification, stop condition, budget, approval boundary, prompt, canonical URL. This is clearly distinguishable from siblings like browse_catalog and search_loops.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Use after browse_catalog or search_loops' gives explicit sequencing context, telling the agent when this tool is the right next step. It does not, however, name an exclusion or an alternative for the case where the agent already knows the identifier directly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_categoriesBRead-onlyIdempotent
List loop categories with live counts and library filter URLs.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| categories | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and idempotentHint, so the safety profile is covered. The description adds that counts are "live" and that filter URLs are included, but with an output schema present it need not elaborate further; this is modest added context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler; the key noun (loop categories) leads. It is almost too terse to carry usage or scope nuance, but every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With zero parameters, read-only annotations, and an output schema to describe the return shape, the description covers the essentials. The one gap is routing guidance relative to the many sibling catalog tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters and the schema coverage is 100%, so there is nothing for the description to disambiguate. Baseline 4 applies for a no-argument tool.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
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 loop categories") and adds scope detail (live counts, library filter URLs), so the agent knows exactly what comes back. It does not distinguish itself from siblings like browse_catalog or catalog_stats, which also surface catalog-level information.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to reach for this tool versus browse_catalog, search_loops, or catalog_stats. The implied usage is a bare listing, but no conditions, prerequisites, or exclusions are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pick_loop_for_goalARead-onlyIdempotent
Shortlist the best-matching loops for a stated goal (lexical ranking with an honest confidence signal) — you make the final call. Returns 5 candidates with use_when, verification, and why-matched so you can judge against operator context the server can't see. When confidence is low, trust your own read of browse_catalog over this ranking. Follow with render_run_protocol for the executable version.
| Name | Required | Description | Default |
|---|---|---|---|
| goal | Yes | The outcome the operator wants, in plain words | |
| limit | No | ||
| constraints | No | Optional constraints, e.g. 'read-only', 'no production access' |
Output Schema
| Name | Required | Description |
|---|---|---|
| goal | Yes | |
| shortlist | Yes | |
| confidence | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and idempotentHint, so safety is covered. The description adds genuinely non-structured behavior: lexical ranking, an honest confidence signal, and a candidate payload of use_when/verification/why-matched. It stops short of rate limits or failure modes, so 4 rather than 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the verb and resource, then layers the caveat and the follow-up. Dense but every clause carries routing or behavioral information; the em-dash aside is slightly compressed but not wasteful.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Output schema exists, so return values needn't be enumerated, yet the description still tells the agent what the candidates contain and when to distrust the ranking. Nothing needed 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.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 67%, so the schema already documents goal, limit, and constraints reasonably. The description clarifies that goal is an operator outcome and that constraints capture operator context the server can't see, but it omits the constraints parameter by name and the configurable limit ('Returns 5 candidates' only reflects the default). Baseline 3 fits.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('shortlist the best-matching loops') scoped to a stated goal, and distinguishes itself from siblings by naming browse_catalog and render_run_protocol. An agent can tell it apart from search_loops without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly names the fallback ('When confidence is low, trust your own read of browse_catalog') and the required follow-up ('Follow with render_run_protocol for the executable version'). This is a clear when-to-use plus named alternatives, not mere implication.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
render_run_protocolARead-onlyIdempotent
Render a loop as an executable markdown run protocol an agent can follow directly: objective/done contract, allowed actions, one-change-per-round rule, the same verification every round, a durable state-file skeleton, stop conditions, budget, risk-colored approval boundary, proof format, and a paste-ready Claude Code prompt. Session loops get bounded rounds; scheduled-tick business loops (SEO, ads, product metrics) get experiment logs, undo-losers discipline, and notify-the-human ticks.
| Name | Required | Description | Default |
|---|---|---|---|
| goal | No | Optional operator goal to embed in the protocol | |
| kind | No | auto infers from the loop's trigger; override to force a session or tick protocol | auto |
| id_or_slug | Yes | Loop id or title | |
| max_rounds | No | Session loops: round budget | |
| max_minutes | No | Session loops: time budget | |
| risk_posture | No | strict treats every shared-surface action as approval-gated | default |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish readOnlyHint and idempotentHint, so the safety profile is covered. The description adds substantive behavioral detail beyond that: the protocol is paste-ready, includes a durable state-file skeleton, stop conditions, budget, a risk-colored approval boundary, and undo-losers discipline for tick loops. It stops short of saying what is returned (inline markdown vs. file) or what happens on a bad id_or_slug.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the core purpose before the content enumeration. The first sentence is a dense but scannable list where each item earns its place; the second adds the session/tick split. Slightly list-heavy, but no filler or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the burden of describing the return value, and it does so thoroughly by enumerating the protocol's sections. The remaining gap is the delivery form (returned as text, written to a file, or a URL) and error handling for an unresolved id_or_slug, which an agent would want before invoking.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline would be 3, but the description goes further by explaining the two protocol flavors that the `kind` enum selects between (session rounds vs. scheduled-tick experiment logs) and by tying budgets, risk-colored approval, and the goal to their respective parameters. That meaning is not present in the schema strings alone.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description leads with a specific verb+resource: 'Render a loop as an executable markdown run protocol an agent can follow directly,' and then enumerates the artifact's contents, so the agent knows exactly what is produced. It does not, however, name or contrast any sibling (design_loop, critique_loop, get_loop), so an agent must infer the boundary itself.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: the description explains that session loops get bounded rounds and scheduled-tick loops get experiment logs, which hints at when each flavor applies, but it never states when to reach for this tool versus design_loop or critique_loop, nor any prerequisite (e.g., the loop must already exist).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_loopsARead-onlyIdempotent
Search AI Loop Library's bounded, verifiable work loops by job-to-be-done, keyword, or category. Each loop ships with a trigger, one-change-per-round discipline, a verification check, a stop condition, a budget, and a human approval boundary — so an agent can run it without thrashing. Returns ranked matches with a one-line why-matched.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| query | Yes | Job to be done or keywords, e.g. 'flaky tests' or 'source-check a draft' | |
| category | No | Optional exact category filter, e.g. Engineering, Knowledge, Operations |
Output Schema
| Name | Required | Description |
|---|---|---|
| results | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnlyHint, idempotentHint), and the description adds real behavioral context: loops are bounded, ship with trigger/verification/stop-condition/budget/human-approval boundaries, and results are ranked with a one-line why-matched. It omits pagination/rate-limit behavior, keeping it below 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the verb and resource, then one compact sentence explaining what a loop contains. It is a touch long in the middle clause list, but every phrase carries informational weight about the returned objects.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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 not be explained, yet the description still tells the agent results are ranked and include a why-matched line. For a low-risk read-only search with three params, nothing critical is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 67% and the schema already documents query and category with examples. The description reinforces the 'job-to-be-done' framing and confirms category filtering but adds no syntax, matching, or limit semantics beyond what the schema provides, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Search) and resource (AI Loop Library's bounded, verifiable work loops) plus the search axes (job-to-be-done, keyword, category), so it is distinguishable from get_loop or browse_catalog. It does not explicitly name rival siblings like pick_loop_for_goal, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the query axes, but there is no explicit when-to-use statement, when-not condition, or named alternative. The closest sibling, pick_loop_for_goal, is also goal-driven and the description gives no cue for choosing between them.
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.
9 tool updates
v2.1.0- Changed
browse_catalog1 field changed- added
Input schema / additionalPropertiesAdded value: +false
- Changed
catalog_stats2 fields changed- added
Input schema / additionalPropertiesAdded value: +false - changed
Output schema / (root)Previous value: -nullNew value: +{ + "properties": { + "catalog_source": { + "type": "string" + }, + "catalog_status": { + "properties": { + "age_seconds": { + "minimum": 0, + "type": "integer" + }, + "source": { + "type": "string" + }, + "stale": { + "type": "boolean" + } + }, + "required": [ + "stale", + "source", + "age_seconds" + ], + "type": "object" + }, + "category_count": { + "type": "integer" + }, + "loop_count": { + "type": "integer" + } + }, + "required": [ + "loop_count", + "category_count", + "catalog_source", + "catalog_status" + ], + "type": "object" +}
- Changed
critique_loop2 fields changed- added
Input schema / additionalPropertiesAdded value: +false - changed
Output schema / (root)Previous value: -nullNew value: +{ + "properties": { + "critical_missing": { + "items": { + "type": "string" + }, + "type": "array" + }, + "findings": { + "items": { + "properties": { + "check": { + "type": "string" + }, + "fix": { + "type": [ + "string", + "null" + ] + }, + "label": { + "type": "string" + }, + "status": { + "enum": [ + "pass", + "missing" + ], + "type": "string" + } + }, + "required": [ + "check", + "label", + "status", + "fix" + ], + "type": "object" + }, + "type": "array" + }, + "grade": { + "type": "string" + }, + "score": { + "type": "string" + } + }, + "required": [ + "score", + "grade", + "critical_missing", + "findings" + ], + "type": "object" +}
- Changed
design_loop1 field changed- added
Input schema / additionalPropertiesAdded value: +false
- Changed
get_loop2 fields changed- added
Input schema / additionalPropertiesAdded value: +false - changed
Output schema / (root)Previous value: -nullNew value: +{ + "properties": { + "category": { + "type": "string" + }, + "id": { + "type": "string" + }, + "summary": { + "type": "string" + }, + "title": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "required": [ + "id", + "title", + "category", + "url", + "summary" + ], + "type": "object" +}
- Changed
list_categories2 fields changed- added
Input schema / additionalPropertiesAdded value: +false - changed
Output schema / (root)Previous value: -nullNew value: +{ + "properties": { + "categories": { + "items": { + "properties": { + "category": { + "type": "string" + }, + "library_url": { + "type": "string" + }, + "loop_count": { + "type": "integer" + } + }, + "required": [ + "category", + "loop_count", + "library_url" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "categories" + ], + "type": "object" +}
- Changed
pick_loop_for_goal2 fields changed- added
Input schema / additionalPropertiesAdded value: +false - changed
Output schema / (root)Previous value: -nullNew value: +{ + "properties": { + "confidence": { + "enum": [ + "none", + "low", + "medium", + "high" + ], + "type": "string" + }, + "goal": { + "type": "string" + }, + "shortlist": { + "items": { + "properties": { + "category": { + "type": "string" + }, + "id": { + "type": "string" + }, + "summary": { + "type": "string" + }, + "title": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "required": [ + "id", + "title", + "category", + "url", + "summary" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "goal", + "shortlist", + "confidence" + ], + "type": "object" +}
- Changed
render_run_protocol1 field changed- added
Input schema / additionalPropertiesAdded value: +false
- Changed
search_loops2 fields changed- added
Input schema / additionalPropertiesAdded value: +false - changed
Output schema / (root)Previous value: -nullNew value: +{ + "properties": { + "results": { + "items": { + "properties": { + "category": { + "type": "string" + }, + "id": { + "type": "string" + }, + "summary": { + "type": "string" + }, + "title": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "required": [ + "id", + "title", + "category", + "url", + "summary" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "results" + ], + "type": "object" +}
2 tool updates
v2.0.0- Added
critique_loop - Added
pick_loop_for_goal
7 tool updates
v0.1.0- First observed
browse_catalog - First observed
catalog_stats - First observed
design_loop - First observed
get_loop - First observed
list_categories - First observed
render_run_protocol - First observed
search_loops
TDQS
Scored across 9 tools
Most tools have distinct roles (get_loop vs render_run_protocol, critique_loop vs design_loop). However, browse_catalog, search_loops, and pick_loop_for_goal all help discover loops, and their boundaries—especially between search and pick—require reading descriptions to avoid misselection.
Most names follow a clear verb_noun snake_case pattern (browse_catalog, search_loops, get_loop, critique_loop, design_loop, list_categories). Minor deviation: catalog_stats is a noun phrase rather than verb-led, inconsistent with the rest.
Nine tools are well-scoped for a library browse/curate/design server. Each tool earns its place across discovery, inspection, rendering, critique, design, and metadata.
The surface covers discovery (browse/search/pick), depth (get_loop), execution (render_run_protocol), quality (critique_loop), creation (design_loop), and metadata (list_categories/catalog_stats). A gap remains for updating or managing existing loop entries, but that may be out of scope.
Maintenance
Related MCP Connectors
Goal and task planning MCP for Codex and AI agents, with evidence-backed completion.
Control plane for autonomous software labor. Agents claim objectives over MCP with audit trail.
- WauldoOAuthcom.wauldo
Stateless agentic tools over MCP: concept extraction, long-context, knowledge graph, planning.
GodPrompt MCP + Agent Skill for coding agents with TDD, debugging, verification, and task routing.
Related MCP Servers
- AlicenseAqualityDmaintenanceExposes 31 high-assurance agentic coding skills as MCP tools and resources, enabling AI agents to invoke structured workflows across DISCIPLINE, TECHNIQUE, KNOWLEDGE LAYER, and REFERENCE registers.5Apache 2.0
- AlicenseNot gradedqualityDmaintenanceEnables multi-model leader-worker agent orchestration, workflow execution, and deterministic validation via structured MCP tools.8 npmApache 2.0
- AlicenseNot gradedqualityBmaintenanceProvides 300+ MCP tools for orchestrating AI agents — including swarm coordination, self-learning memory, and task management — enabling MCP clients like Claude Code and Cursor to spawn, coordinate, and learn from specialist agents across sessions.11,321 npm1MIT
- AlicenseNot gradedqualityBmaintenanceEnables coding agents to perform file, search, patch, git, process, test, package, network, and system operations through 60 typed MCP tools with structured inputs/outputs, structured errors, and a full event journal, replacing terminal use with a typed machine API.MIT