worklore
Server Details
Search worklore stories and x-ray any skill or story capability tier (T0-T4) before you run it.
- Status
- Healthy
- Uptime
- 28.0% over 33 days
- OAuth
- Works in Glama
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-06-18
- URL
- Repository
- worklore/worklore-mcp
- GitHub Stars
- 0
TDQS
Scored across 8 tools
Most tools target distinct actions: search_stories/get_story/publish_story/edit_story cover the story lifecycle, and check_capability is a distinct safety-analysis action. The main overlap is report_check vs report_reproduction, which share the report_ prefix and both 'record a result' framing; descriptions do differentiate them (read-only check vs applied reproduction), so confusion is limited.
All eight tools follow a consistent verb_noun snake_case pattern (check_capability, edit_story, get_story, publish_story, report_check, report_reproduction, search_stories, suggest_for_project). No mixing of conventions or vague verbs.
Eight tools is well-scoped for a story-sharing/skill-disclosure platform. Each tool earns its place across discovery, retrieval, authoring, safety analysis, and feedback.
The surface covers the full lifecycle: search, fetch, publish, edit, capability checking, and two feedback channels, plus project-based suggestion. The notable gap is no delete/retract or 'list my own stories' operation, though omission of delete may be intentional given the public history design.
Available Tools
8 toolscheck_capabilityARead-onlyInspect
Disclose what an agent Skill or worklore story CAN DO before you run it: a capability tier T0-T4 bound to a content sha256, with findings that carry file:line evidence, PLUS a separate list of behavioral red flags (prompt-injection / deception / exfiltration-intent / safety-bypass phrasings) for a human to review. This is blast-radius disclosure and triage, never a 'safe' verdict. Prefer a url over pasting a file: a skill on GitHub (github.com or raw.githubusercontent.com, up to 200 KB) needs no sign-in, and you do not have to copy the whole file into the call. Other URLs need a signed-in session. If you paste text, also pass expected_sha256 (the file's sha256, e.g. shasum -a 256 SKILL.md): a copy that changed on the way is reported instead of scanned. received says exactly what was scanned.
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | A URL to fetch and scan. GitHub URLs need no sign-in; a github.com/…/blob/… link works. | |
| text | No | The skill/story text to scan. | |
| expected_sha256 | No | sha256 (hex) of the file you mean, when you paste `text`. A mismatch is an error, not a scan. |
Output Schema
| Name | Required | Description |
|---|---|---|
| tier | Yes | |
| sha256 | Yes | |
| findings | No | |
| received | No | |
| endpoints | No | |
| behavioral | No | |
| disclaimer | No | |
| tier_label | No | |
| behavioral_note | No | |
| scanner_version | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover readOnly/openWorld/destructive, and the description adds substantial context beyond them: GitHub fetch is capped at 200 KB, non-GitHub URLs require a signed-in session, a sha256 mismatch is reported rather than scanned, and `received` reports exactly what was scanned. For a network-fetching read tool, this is rich operational disclosure.
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?
Dense but well-ordered: purpose and scope caveat first, then input guidance, then the sha256 safety note and the `received` return hint. Nearly every sentence carries information, though the description is long and packs multiple concerns into single sentences.
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?
For a 3-param, no-required-arg tool with an output schema, it covers what matters: mutual use of url vs text, the integrity guard for pasted text, auth boundaries per URL class, size limits, and the explicit 'not a safe verdict' caveat. An agent can call it correctly without opening the schema.
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 baseline is 3, but the description adds real meaning: it explains when to prefer url vs text, the 200 KB GitHub limit and sign-in requirement, and couples expected_sha256 to text with a concrete `shasum -a 256 SKILL.md` example plus the mismatch-as-error semantic. That is meaningful guidance beyond the schema strings.
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 ('disclose') and resource ('what an agent Skill or worklore story CAN DO') with a concrete output shape: capability tier T0-T4 bound to a content sha256, findings with file:line evidence, plus behavioral red flags. It also draws a clear scope boundary ('blast-radius disclosure and triage, never a safe verdict') that distinguishes it from verdict-style siblings like report_check.
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 explicit timing ('before you run it') and a strong input-selection preference ('Prefer a url over pasting a file'), including the condition that GitHub URLs need no sign-in while other URLs need a session. It lacks explicit routing against named siblings (get_story, report_check), so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
edit_storyADestructiveInspect
Revise a worklore story the signed-in account PUBLISHED — only its author can edit it. Call get_story first, then show the human a before/after diff of your change and get their EXPLICIT approval before calling this; never edit on your own initiative. Send the COMPLETE revised story as markdown (frontmatter + '# title' + narrative + '## Reproduce this'), not a fragment. Keep the frontmatter date exactly as it is: it records when the work happened, and a revision never moves it. Say what kind of edit this is: 'rephrase' (same claims, better wording), 'addition' (new detail, nothing was wrong), or 'correction' (something in the story was WRONG — a step, a claim, a result). If anything was wrong, it is a correction: never hide a correction as a rephrase. A correction requires a one-line note saying what was wrong, and notifies everyone who reported reproducing the story. source optionally credits what prompted the revision (an https URL). The new text REPLACES the old (worklore keeps no copy of earlier text), while a record of this revision — when, what kind, the note — is appended to the story's public history.
| Name | Required | Description | Default |
|---|---|---|---|
| kind | No | rephrase (default) — same claims, reworded; addition — new detail, nothing was wrong; correction — something was wrong (requires `note`, notifies reproducers). | rephrase |
| note | No | One line on what changed (max 500 chars). Required for a correction: what was wrong. | |
| slug | Yes | The slug of the story to revise (one the signed-in account wrote). | |
| source | No | Optional https URL crediting what prompted the revision (a comment, an issue, an article). | |
| markdown | Yes | The complete revised story markdown, frontmatter included, with the original `date` unchanged. |
Output Schema
| Name | Required | Description |
|---|---|---|
| url | Yes | |
| slug | Yes | |
| notified | Yes | |
| revision | Yes | |
| visibility | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds substantial context beyond the annotations (destructiveHint=true, idempotentHint=false, openWorldHint=true): the new text fully replaces the old with no copy kept, a public history record is appended, corrections notify everyone who reported reproducing the story, and the frontmatter date must not move. It does not, however, mention rate limits, auth scopes, or failure modes, so it stops short of the top mark.
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?
The description is long but front-loaded with the ownership constraint and approval workflow before details, and every sentence carries operational information. Dense and somewhat repetitive in the kind explanations, which keeps it just under the top score.
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?
For a destructive, non-idempotent mutation with a rich schema and an output schema, the description covers ownership, approval workflow, replacement semantics, history side effects, notification side effects, and the correction note requirement. Nothing an agent needs to call this safely 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%, so the baseline is 3; the description goes further by clarifying the kind taxonomy, the correction-requires-note rule, the optional source URL meaning, and that markdown must be the complete document with the original date preserved. It adds real semantic value beyond the schema's own descriptions.
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 (Revise) and resource (a worklore story) with an ownership scope: only the signed-in account's own published story. This cleanly separates it from get_story (read) and publish_story (create) among siblings.
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?
Explicit workflow prerequisites and exclusions: call get_story first, show the human a before/after diff, obtain EXPLICIT approval, and never edit on your own initiative. It also gives a decision rule for classifying edits (rephrase vs addition vs correction, 'never hide a correction as a rephrase').
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_storyARead-onlyInspect
Fetch one worklore story by slug — its full markdown (narrative + the 'Reproduce this' contract your agent would run) WITH its capability disclosure attached (tier + findings), so you see what it can do before applying it. Read the capability first; run check_capability on the live artifacts before executing. After you apply the story to the user's task, call report_reproduction with an honest result to record it.
| Name | Required | Description | Default |
|---|---|---|---|
| slug | Yes | The story slug (from search_stories / a worklore URL). |
Output Schema
| Name | Required | Description |
|---|---|---|
| slug | Yes | |
| title | No | |
| checks | No | |
| markdown | No | |
| has_check | No | |
| capability | No | |
| visibility | No | |
| unavailable | No | |
| to_check_only | No | |
| visibility_note | No | |
| after_you_apply_this | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/not-destructive, so the safety profile is covered. The description adds real context beyond that: the returned markdown includes the 'Reproduce this' contract and an attached capability disclosure (tier + findings), plus the requirement to re-check live artifacts before executing. It doesn't mention pagination or limits, but the added workflow context is genuinely useful.
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 verb and resource, then layered with workflow steps. The three sentences are dense but each carries distinct information (what is returned, what to check first, what to report after). Slightly heavy but no filler.
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-value explanation is not strictly required, yet the description usefully characterizes the payload (markdown + capability disclosure). Combined with the explicit sibling workflow, the agent has enough to call and sequence this tool correctly.
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?
Single slug parameter at 100% schema coverage, so the schema already documents source and format. The description repeats only the sourcing hint ('slug'), adding marginal value over the schema. Baseline 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.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Fetch one worklore story by slug') and immediately scopes it against the sibling search_stories by emphasizing the singular, slug-addressed nature. An agent can distinguish it from list/create/edit 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Names the exact workflow and alternatives: read the capability first, then 'run check_capability on the live artifacts before executing', and finally 'call report_reproduction'. It explicitly routes the agent between this tool and two named siblings with conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
publish_storyAInspect
Publish a NEW worklore story as the signed-in account. worklore stories are PUBLIC and honest, so before you call this you MUST show the human the complete draft — the title, the first-person narrative, and the 'Reproduce this' contract — and get their EXPLICIT approval. Never publish on your own initiative and never invent details. Provide the full story as markdown (frontmatter with title/date/tags/type/reproducible, then '# title', the narrative, then '## Reproduce this' with prerequisites/inputs/steps/verify) — call get_story on an existing story first to match the format — OR provide the structured fields title + narrative (+ reproduce, tags, type, stack) and the server assembles it. SANITIZE: no secrets, employer internals, client names, or private URLs. Returns the live URL and capability tier.
| Name | Required | Description | Default |
|---|---|---|---|
| tags | No | 3-6 lowercase kebab tags. | |
| type | No | success (default), fail, or proposal — a proposal is work the author believes is right but cannot prove yet, published to get evidence or review rather than to claim a result. | |
| stack | No | Optional: the ecosystem this story is about. | |
| title | No | Story title (used only if `markdown` is not given). | |
| markdown | No | The complete story markdown (frontmatter + '# title' + narrative + '## Reproduce this' contract). Preferred. | |
| narrative | No | First-person narrative, ~150-400 words, honest (used if no `markdown`). | |
| reproduce | No | The 'Reproduce this' contract body: prerequisites, inputs, ordered steps, verify. | |
| visibility | No | public (default) — anyone can read and reproduce it; private — only the author can, and it appears in no feed, search, badge or link. Ask the human which they want if the draft contains anything they may not want public. |
Output Schema
| Name | Required | Description |
|---|---|---|
| url | No | |
| slug | No | |
| similar | No | |
| capability | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only cover readOnly=false, openWorld=true, destructive=false. The description adds substantial beyond-annotation behavior: stories are public, human approval is mandatory, sanitization rules (no secrets/employer internals/client names/private URLs), and the return value (live URL and capability tier).
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?
Content is front-loaded with the approval gate, which is correct, but the body is dense with nested detail (frontmatter fields, section names, alternate field lists) crammed into one paragraph, making it harder to scan than necessary.
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?
Covers the mandatory approval flow, sanitization, the two input modes, and the return value. With an output schema present, it need not describe return structure further; nothing needed to call 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%, so baseline is 3. The description adds cross-field semantics the schema cannot: markdown and the structured fields are mutually exclusive alternatives, and markdown requires frontmatter plus the '# title' and '## Reproduce this' sections.
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 ('Publish a NEW worklore story') and adds critical scope ('as the signed-in account', 'NEW'). The SANITIZE and public/honest constraints further distinguish it from edit_story and get_story.
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?
Explicit when-to-use gating: must show a human the complete draft and get EXPLICIT approval; never publish on own initiative. Names the alternative path (get_story first to match format) and the markdown-vs-structured-fields choice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
report_checkAIdempotentInspect
Record the result of a story's read-only 'Check if this applies to you' section, run in the user's own project (attributed to the signed-in account). Run ONLY that check — change nothing, apply no fix. First decide whether it applies at all: if the project does not match the check's preconditions, do NOT call this — 'not applicable' is never recorded. Otherwise report 'has_problem' or 'no_problem', honestly. One counted result per person per story; a later report replaces the earlier one. Only stories whose get_story result has has_check: true can be checked.
| Name | Required | Description | Default |
|---|---|---|---|
| note | No | Optional short note: the evidence (max 300 chars). | |
| slug | Yes | The story slug whose check you ran. | |
| result | Yes | What the check found in the user's project. |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| checks | No | |
| result | No | |
| thanks | No | |
| counted | No | |
| credited | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare the write/read/idempotency profile (readOnlyHint=false, idempotentHint=true, destructiveHint=false), so the description needn't restate safety. It usefully adds that a later report replaces the earlier one (one counted result per person per story), the honesty requirement, and the 'apply no fix' constraint — behavioral context beyond the structured fields. It stops short of describing attribution or downstream effects of a recorded result.
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?
The core prohibition ('run ONLY that check — change nothing') is front-loaded and the precondition follows immediately. Sentences are dense but each carries a distinct rule; nothing is redundant filler.
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 annotations covering the safety/idempotency profile and an output schema handling return values, the description supplies the remaining essentials: preconditions, replacement semantics, and the no-fix constraint. The only notable gap is lack of explicit contrast with report_reproduction.
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 slug, result, and note are already documented in the schema, which sets the baseline at 3. The description reinforces the meaning of result (has_problem/no_problem) but adds no format or syntax 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?
The description states a specific verb and resource: record the result of a story's read-only check run in the user's project. It ties the operation to a concrete precondition (get_story's has_check: true), which helps separate it from unrelated siblings. It does not, however, explicitly contrast with report_reproduction, the most confusable sibling, so differentiation is only partial.
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?
Explicit when and when-not guidance: run ONLY that check, change nothing, and do NOT call when the project fails the check's preconditions since 'not applicable' is never recorded. It also gates on has_check: true and specifies honest reporting of has_problem/no_problem. This is close to a full routing rule.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
report_reproductionAIdempotentInspect
Call this right after you apply a worklore story's steps to the user's own task, to record the reproduction (attributed to the signed-in account). Use an honest result: 'worked', 'partial' (you produced the output but it isn't verified yet), or 'failed' — all are useful. One counted report per person per story; repeats are acknowledged, not doubled. Never report a story you did not apply.
| Name | Required | Description | Default |
|---|---|---|---|
| note | No | Optional short note (max 500 chars). | |
| slug | Yes | The story slug you reproduced. | |
| result | Yes | How it honestly went. |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| thanks | No | |
| counted | No | |
| credited | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations: it discloses that reports are attributed to the signed-in account, that only one report per person per story is counted with repeats acknowledged rather than doubled, and that unverified output should be filed as 'partial'. These are real behavioral rules that idempotentHint=true alone does 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the call trigger, then the result semantics, the counting rule, and the prohibition, in a compact four-sentence block. Dense but each sentence carries a distinct rule; only the parenthetical definition slightly stretches it.
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, and the description covers trigger, honesty, attribution, and dedup counting. It omits failure handling (e.g. unknown slug) and any note-field guidance, which are minor gaps for this complexity level.
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 baseline is 3, but the description adds genuine meaning by defining the 'partial' result ('you produced the output but it isn't verified yet') and framing the honest-result requirement across all three enum values. The slug and note parameters are left entirely to 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 and resource ('record the reproduction' of a worklore story) and ties it to a concrete trigger point (right after applying a story's steps). It is clearly distinguishable from siblings like report_check, get_story, and publish_story, which deal with different objects.
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 explicit timing ('call this right after you apply a worklore story's steps') and an explicit prohibition ('Never report a story you did not apply'), which is strong when/when-not guidance. It does not name an alternative tool (e.g. report_check) for adjacent reporting needs, so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_storiesBRead-onlyInspect
Search worklore stories by keyword across title, summary, tags and stack. Returns matches with their capability tier.
| Name | Required | Description | Default |
|---|---|---|---|
| query | No | Keywords (space-separated; all must match). |
Output Schema
| Name | Required | Description |
|---|---|---|
| count | No | |
| query | No | |
| stories | Yes | |
| about_tiers | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, destructiveHint:false and openWorldHint:false, so the safety profile is covered and the bar is lower. The description adds only that matches come back with their capability tier; it says nothing about ordering, result caps, case sensitivity, or behavior with an empty query, so it adds only modest 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?
Two short sentences, no filler, with the core action and scope front-loaded before the return-value note. Every clause carries information.
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 capability-tier mention is redundant but harmless, and return values need not be explained. However, query is optional (0 required parameters) and the description never says what a queryless call returns, nor how many matches come back — a meaningful gap for a search 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 coverage is 100% on the single query parameter, so the baseline would be 3, but the description adds real meaning: it specifies which fields (title, summary, tags, stack) the keywords are matched against, information the schema does not carry. It does not explain why the parameter is optional or what the default search is.
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 ("Search worklore stories") and even enumerates the fields searched (title, summary, tags, stack), which is a concrete scope statement. It never names a sibling, so the distinction from get_story (ID lookup) or suggest_for_project must be inferred from the verb, but the search semantics are unambiguous.
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 when-to-use guidance, no condition distinguishing this from get_story or suggest_for_project, and no statement about what happens when the optional query is omitted. The agent must infer that keyword search is appropriate simply because the tool is named search_stories.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
suggest_for_projectARead-onlyInspect
Given a short description of the current project (stack, what you're building, recent problems), suggest up to 3 worklore stories worth reproducing here, with why each fits and its tier.
| Name | Required | Description | Default |
|---|---|---|---|
| context | Yes | Project context: stack, goal, recent TODOs/problems. |
Output Schema
| Name | Required | Description |
|---|---|---|
| note | No | |
| suggested | Yes | |
| about_tiers | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=false, so the safety profile is covered. The description adds useful shape information (bounded to 3 results, each with a fit rationale and tier), but says nothing about determinism, ranking basis, or behavior when no story fits.
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?
One sentence, zero filler, with the input condition front-loaded ahead of the output contract. Nothing is repeated or padded.
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 a 100%-covered single parameter, an output schema carrying return structure, and annotations covering the safety profile, the description supplies what is still needed: the result count cap and that each suggestion includes a fit rationale and tier. Only minor gaps remain around ranking or empty-result behavior.
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 there is only one parameter, whose schema text already spells out 'stack, goal, recent TODOs/problems'. The description's 'stack, what you're building, recent problems' is a near-verbatim restatement rather than added semantics, 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?
Specific verb (suggest) plus resource (worklore stories) and a clear scope qualifier (up to 3, based on a project description, with rationale and tier). It reads distinctly from siblings like search_stories or get_story, but never names an alternative to anchor the distinction.
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?
The trigger condition is implied clearly ('given a short description of the current project'), so an agent can infer when this fits. However, there is no explicit when-not guidance and no named alternative such as search_stories for agents who already know what they want.
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.
7 tool updates
- Changed
check_capability15 fields changed- added
Output schema / properties / behavioral / items / properties / evidence / maxLengthAdded value: +200 - changed
Output schema / properties / behavioral / items / properties / line / anyOfPrevious value: -[ - { - "type": "integer" - }, - { - "type": "null" - } -]New value: +[ + { + "minimum": 0, + "type": "integer" + }, + { + "type": "null" + } +] - added
Output schema / properties / behavioral / maxItemsAdded value: +12 - added
Output schema / properties / findings / items / properties / evidence / maxLengthAdded value: +200 - changed
Output schema / properties / findings / items / properties / line / anyOfPrevious value: -[ - { - "type": "integer" - }, - { - "type": "null" - } -]New value: +[ + { + "minimum": 0, + "type": "integer" + }, + { + "type": "null" + } +] - added
Output schema / properties / findings / items / properties / severity / enumAdded value: +[ + "elevated", + "info", + "local", + "network", + "opaque" +] - added
Output schema / properties / findings / maxItemsAdded value: +12 - added
Output schema / properties / received / properties / bytes / minimumAdded value: +0 - added
Output schema / properties / received / properties / lines / minimumAdded value: +0 - added
Output schema / properties / received / properties / matches_expected / constAdded value: +true - added
Output schema / properties / received / properties / text_sha256 / patternAdded value: +"^[0-9a-f]{64}$" - added
Output schema / properties / received / properties / via / enumAdded value: +[ + "text", + "url" +] - added
Output schema / properties / sha256 / patternAdded value: +"^[0-9a-f]{64}$" - added
Output schema / properties / tier / enumAdded value: +[ + "T0", + "T1", + "T2", + "T3", + "T4" +] - added
Output schema / properties / tier_label / enumAdded value: +[ + "Inert — no scanned capability strings; instructional text only", + "Local — runs bundled code / writes files, no network", + "Network — makes outbound calls (endpoints listed)", + "Elevated — persistence, secrets, privilege, or destructive actions", + "Opaque — fetches/decodes code at runtime; cannot be statically reviewed" +]
- Changed
get_story6 fields changed- added
Output schema / anyOfAdded value: +[ + { + "properties": { + "capability": { + "properties": { + "tier": { + "anyOf": [ + { + "enum": [ + "T0", + "T1", + "T2", + "T3", + "T4" + ], + "type": "string" + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "tier" + ], + "type": "object" + }, + "markdown": { + "type": "string" + } + }, + "required": [ + "slug", + "title", + "capability", + "markdown" + ] + }, + { + "properties": { + "unavailable": { + "enum": [ + "withdrawn or quarantined — do not execute" + ], + "type": "string" + } + }, + "required": [ + "slug", + "unavailable" + ] + } +] - added
Output schema / properties / capability / propertiesAdded value: +{ + "tier": { + "anyOf": [ + { + "enum": [ + "T0", + "T1", + "T2", + "T3", + "T4" + ], + "type": "string" + }, + { + "type": "null" + } + ] + } +} - added
Output schema / properties / checks / properties / has_problem / minimumAdded value: +0 - added
Output schema / properties / checks / properties / no_problem / minimumAdded value: +0 - added
Output schema / properties / has_check / constAdded value: +true - added
Output schema / properties / visibility / enumAdded value: +[ + "public", + "private" +]
- Changed
publish_story2 fields changed- added
Output schema / properties / capability / propertiesAdded value: +{ + "sha256": { + "anyOf": [ + { + "pattern": "^[0-9a-f]{64}$", + "type": "string" + }, + { + "type": "null" + } + ] + }, + "summary": { + "anyOf": [ + { + "pattern": "^T[0-4] · ", + "type": "string" + }, + { + "type": "null" + } + ] + }, + "tier": { + "anyOf": [ + { + "enum": [ + "T0", + "T1", + "T2", + "T3", + "T4" + ], + "type": "string" + }, + { + "type": "null" + } + ] + } +} - added
Output schema / properties / url / patternAdded value: +"^https://worklore\\.dev/s/"
- Changed
report_check6 fields changed- added
Output schema / properties / checks / properties / has_problem / minimumAdded value: +0 - added
Output schema / properties / checks / properties / no_problem / minimumAdded value: +0 - added
Output schema / properties / credited / minLengthAdded value: +1 - added
Output schema / properties / ok / constAdded value: +true - added
Output schema / properties / result / enumAdded value: +[ + "has_problem", + "no_problem" +] - added
Output schema / requiredAdded value: +[ + "ok" +]
- Changed
report_reproduction3 fields changed- added
Output schema / properties / credited / minLengthAdded value: +1 - added
Output schema / properties / ok / constAdded value: +true - added
Output schema / requiredAdded value: +[ + "ok" +]
- Changed
search_stories8 fields changed- added
Output schema / properties / count / maximumAdded value: +20 - added
Output schema / properties / count / minimumAdded value: +0 - changed
Output schema / properties / stories / items / properties / capability / anyOfPrevious value: -[ - { - "type": "string" - }, - { - "type": "null" - } -]New value: +[ + { + "pattern": "^T[0-4] · ", + "type": "string" + }, + { + "type": "null" + } +] - changed
Output schema / properties / stories / items / properties / tier / anyOfPrevious value: -[ - { - "type": "string" - }, - { - "type": "null" - } -]New value: +[ + { + "enum": [ + "T0", + "T1", + "T2", + "T3", + "T4" + ], + "type": "string" + }, + { + "type": "null" + } +] - removed
Output schema / properties / stories / items / properties / visibility / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / stories / items / properties / visibility / enumAdded value: +[ + "public", + "private" +] - added
Output schema / properties / stories / items / properties / visibility / typeAdded value: +"string" - added
Output schema / properties / stories / maxItemsAdded value: +20
- Changed
suggest_for_project5 fields changed- changed
Output schema / properties / suggested / items / properties / capability / anyOfPrevious value: -[ - { - "type": "string" - }, - { - "type": "null" - } -]New value: +[ + { + "pattern": "^T[0-4] · ", + "type": "string" + }, + { + "type": "null" + } +] - changed
Output schema / properties / suggested / items / properties / tier / anyOfPrevious value: -[ - { - "type": "string" - }, - { - "type": "null" - } -]New value: +[ + { + "enum": [ + "T0", + "T1", + "T2", + "T3", + "T4" + ], + "type": "string" + }, + { + "type": "null" + } +] - added
Output schema / properties / suggested / items / properties / visibilityAdded value: +{ + "enum": [ + "public", + "private" + ], + "type": "string" +} - added
Output schema / properties / suggested / items / properties / why / minLengthAdded value: +1 - added
Output schema / properties / suggested / maxItemsAdded value: +3
1 tool update
- Changed
check_capability3 fields changed- added
Input schema / properties / expected_sha256Added value: +{ + "description": "sha256 (hex) of the file you mean, when you paste `text`. A mismatch is an error, not a scan.", + "type": "string" +} - changed
Input schema / properties / url / descriptionPrevious value: -"A URL to fetch and scan."New value: +"A URL to fetch and scan. GitHub URLs need no sign-in; a github.com/…/blob/… link works." - added
Output schema / properties / receivedAdded value: +{ + "properties": { + "bytes": { + "type": "integer" + }, + "lines": { + "type": "integer" + }, + "matches_expected": { + "type": "boolean" + }, + "text_sha256": { + "type": "string" + }, + "via": { + "type": "string" + } + }, + "type": "object" +}
8 tool updates
- First observed
check_capability - First observed
edit_story - First observed
get_story - First observed
publish_story - First observed
report_check - First observed
report_reproduction - First observed
search_stories - First observed
suggest_for_project
Related MCP Connectors
The governed runtime for agent skills. Search the catalog and inspect a skill before running it.
Search public AI capabilities and coordinate approved work through Darwin's Search to Act interface.
Search a registry of agent skills and MCP servers, then run them for real. No install, traced.
Accountable AI workforce workflows with jobs, skills, rules, evidence, and mentoring.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceSearches official public job APIs such as Remotive and Adzuna, returning normalized job postings and optionally scoring them against your capability keywords.MIT
- AlicenseBqualityCmaintenanceEnables read-only access to a local-first catalog of portable agent skills, exposing tools to discover ranked matches, inspect stored artifacts, traverse declared relationships, and view configuration.5MIT

Kujolang.ai MCP Serverofficial
AlicenseNot gradedqualityBmaintenanceEnables agents to discover Kujo projects, primitives, tooling, showcases, agent skills, workflows, and WebOps capabilities, retrieve exact source-backed records with install text and version notes, and get small deterministic stack recommendations. All seven tools are read-only, deterministic, and idempotent, with no write, fetch, filesystem, shell, install, or deployment capability.MIT- AlicenseNot gradedqualityBmaintenanceEnables agents to search a catalog of SKILL.md procedures, fetch individual skill instructions and supporting resources, and obtain advisory multi-step routes through read-only tools such as search_skills, route_request, get_skill, and get_skill_resource. It returns metadata and suggestions only, never executing skills, running shell commands, or granting authority.MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.