Skip to main content
Glama

Server Details

Search worklore stories and x-ray any skill or story capability tier (T0-T4) before you run it.

If you are the author of this connector, you can claim ownership by verifying the domain or GitHub account it belongs to. Claimed connector authors can inspect health checks, view analytics, and manage their listing.
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

A4.1/5.0

Scored across 8 tools

Disambiguation4/5

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.

Naming Consistency5/5

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.

Tool Count5/5

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.

Completeness4/5

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 tools
check_capabilityA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlNoA URL to fetch and scan. GitHub URLs need no sign-in; a github.com/…/blob/… link works.
textNoThe skill/story text to scan.
expected_sha256Nosha256 (hex) of the file you mean, when you paste `text`. A mismatch is an error, not a scan.

Output Schema

ParametersJSON Schema
NameRequiredDescription
tierYes
sha256Yes
findingsNo
receivedNo
endpointsNo
behavioralNo
disclaimerNo
tier_labelNo
behavioral_noteNo
scanner_versionNo

TDQS

A4.6/5.0
Behavior5/5

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.

Conciseness4/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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_storyA
Destructive
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
kindNorephrase (default) — same claims, reworded; addition — new detail, nothing was wrong; correction — something was wrong (requires `note`, notifies reproducers).rephrase
noteNoOne line on what changed (max 500 chars). Required for a correction: what was wrong.
slugYesThe slug of the story to revise (one the signed-in account wrote).
sourceNoOptional https URL crediting what prompted the revision (a comment, an issue, an article).
markdownYesThe complete revised story markdown, frontmatter included, with the original `date` unchanged.

Output Schema

ParametersJSON Schema
NameRequiredDescription
urlYes
slugYes
notifiedYes
revisionYes
visibilityNo

TDQS

A4.6/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness5/5

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.

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3; the description 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.

Purpose5/5

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.

Usage Guidelines5/5

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_storyA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
slugYesThe story slug (from search_stories / a worklore URL).

Output Schema

ParametersJSON Schema
NameRequiredDescription
slugYes
titleNo
checksNo
markdownNo
has_checkNo
capabilityNo
visibilityNo
unavailableNo
to_check_onlyNo
visibility_noteNo
after_you_apply_thisNo

TDQS

A4.3/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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

An output schema exists so return-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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
tagsNo3-6 lowercase kebab tags.
typeNosuccess (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.
stackNoOptional: the ecosystem this story is about.
titleNoStory title (used only if `markdown` is not given).
markdownNoThe complete story markdown (frontmatter + '# title' + narrative + '## Reproduce this' contract). Preferred.
narrativeNoFirst-person narrative, ~150-400 words, honest (used if no `markdown`).
reproduceNoThe 'Reproduce this' contract body: prerequisites, inputs, ordered steps, verify.
visibilityNopublic (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

ParametersJSON Schema
NameRequiredDescription
urlNo
slugNo
similarNo
capabilityNo

TDQS

A4.7/5.0
Behavior5/5

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.

Conciseness3/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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_checkA
Idempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
noteNoOptional short note: the evidence (max 300 chars).
slugYesThe story slug whose check you ran.
resultYesWhat the check found in the user's project.

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYes
checksNo
resultNo
thanksNo
countedNo
creditedNo

TDQS

A4.1/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: 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.

Usage Guidelines5/5

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_reproductionA
Idempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
noteNoOptional short note (max 500 chars).
slugYesThe story slug you reproduced.
resultYesHow it honestly went.

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYes
thanksNo
countedNo
creditedNo

TDQS

A4.5/5.0
Behavior5/5

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.

Conciseness4/5

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.

Completeness4/5

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

An output schema exists, so return values need 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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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_storiesB
Read-only
Inspect

Search worklore stories by keyword across title, summary, tags and stack. Returns matches with their capability tier.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryNoKeywords (space-separated; all must match).

Output Schema

ParametersJSON Schema
NameRequiredDescription
countNo
queryNo
storiesYes
about_tiersNo

TDQS

B3.4/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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_projectA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
contextYesProject context: stack, goal, recent TODOs/problems.

Output Schema

ParametersJSON Schema
NameRequiredDescription
noteNo
suggestedYes
about_tiersNo

TDQS

A3.6/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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.

  1. 7 tool updates
    • Changedcheck_capability15 fields changed
      • addedOutput schema / properties / behavioral / items / properties / evidence / maxLength
        Added value: +200
      • changedOutput schema / properties / behavioral / items / properties / line / anyOf
        Previous value: -[
        -  {
        -    "type": "integer"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "minimum": 0,
        +    "type": "integer"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • addedOutput schema / properties / behavioral / maxItems
        Added value: +12
      • addedOutput schema / properties / findings / items / properties / evidence / maxLength
        Added value: +200
      • changedOutput schema / properties / findings / items / properties / line / anyOf
        Previous value: -[
        -  {
        -    "type": "integer"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "minimum": 0,
        +    "type": "integer"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • addedOutput schema / properties / findings / items / properties / severity / enum
        Added value: +[
        +  "elevated",
        +  "info",
        +  "local",
        +  "network",
        +  "opaque"
        +]
      • addedOutput schema / properties / findings / maxItems
        Added value: +12
      • addedOutput schema / properties / received / properties / bytes / minimum
        Added value: +0
      • addedOutput schema / properties / received / properties / lines / minimum
        Added value: +0
      • addedOutput schema / properties / received / properties / matches_expected / const
        Added value: +true
      • addedOutput schema / properties / received / properties / text_sha256 / pattern
        Added value: +"^[0-9a-f]{64}$"
      • addedOutput schema / properties / received / properties / via / enum
        Added value: +[
        +  "text",
        +  "url"
        +]
      • addedOutput schema / properties / sha256 / pattern
        Added value: +"^[0-9a-f]{64}$"
      • addedOutput schema / properties / tier / enum
        Added value: +[
        +  "T0",
        +  "T1",
        +  "T2",
        +  "T3",
        +  "T4"
        +]
      • addedOutput schema / properties / tier_label / enum
        Added 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"
        +]
    • Changedget_story6 fields changed
      • addedOutput schema / anyOf
        Added 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"
        +    ]
        +  }
        +]
      • addedOutput schema / properties / capability / properties
        Added value: +{
        +  "tier": {
        +    "anyOf": [
        +      {
        +        "enum": [
        +          "T0",
        +          "T1",
        +          "T2",
        +          "T3",
        +          "T4"
        +        ],
        +        "type": "string"
        +      },
        +      {
        +        "type": "null"
        +      }
        +    ]
        +  }
        +}
      • addedOutput schema / properties / checks / properties / has_problem / minimum
        Added value: +0
      • addedOutput schema / properties / checks / properties / no_problem / minimum
        Added value: +0
      • addedOutput schema / properties / has_check / const
        Added value: +true
      • addedOutput schema / properties / visibility / enum
        Added value: +[
        +  "public",
        +  "private"
        +]
    • Changedpublish_story2 fields changed
      • addedOutput schema / properties / capability / properties
        Added 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"
        +      }
        +    ]
        +  }
        +}
      • addedOutput schema / properties / url / pattern
        Added value: +"^https://worklore\\.dev/s/"
    • Changedreport_check6 fields changed
      • addedOutput schema / properties / checks / properties / has_problem / minimum
        Added value: +0
      • addedOutput schema / properties / checks / properties / no_problem / minimum
        Added value: +0
      • addedOutput schema / properties / credited / minLength
        Added value: +1
      • addedOutput schema / properties / ok / const
        Added value: +true
      • addedOutput schema / properties / result / enum
        Added value: +[
        +  "has_problem",
        +  "no_problem"
        +]
      • addedOutput schema / required
        Added value: +[
        +  "ok"
        +]
    • Changedreport_reproduction3 fields changed
      • addedOutput schema / properties / credited / minLength
        Added value: +1
      • addedOutput schema / properties / ok / const
        Added value: +true
      • addedOutput schema / required
        Added value: +[
        +  "ok"
        +]
    • Changedsearch_stories8 fields changed
      • addedOutput schema / properties / count / maximum
        Added value: +20
      • addedOutput schema / properties / count / minimum
        Added value: +0
      • changedOutput schema / properties / stories / items / properties / capability / anyOf
        Previous value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "pattern": "^T[0-4] · ",
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • changedOutput schema / properties / stories / items / properties / tier / anyOf
        Previous value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "enum": [
        +      "T0",
        +      "T1",
        +      "T2",
        +      "T3",
        +      "T4"
        +    ],
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • removedOutput schema / properties / stories / items / properties / visibility / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / stories / items / properties / visibility / enum
        Added value: +[
        +  "public",
        +  "private"
        +]
      • addedOutput schema / properties / stories / items / properties / visibility / type
        Added value: +"string"
      • addedOutput schema / properties / stories / maxItems
        Added value: +20
    • Changedsuggest_for_project5 fields changed
      • changedOutput schema / properties / suggested / items / properties / capability / anyOf
        Previous value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "pattern": "^T[0-4] · ",
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • changedOutput schema / properties / suggested / items / properties / tier / anyOf
        Previous value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "enum": [
        +      "T0",
        +      "T1",
        +      "T2",
        +      "T3",
        +      "T4"
        +    ],
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • addedOutput schema / properties / suggested / items / properties / visibility
        Added value: +{
        +  "enum": [
        +    "public",
        +    "private"
        +  ],
        +  "type": "string"
        +}
      • addedOutput schema / properties / suggested / items / properties / why / minLength
        Added value: +1
      • addedOutput schema / properties / suggested / maxItems
        Added value: +3
  2. 1 tool update
    • Changedcheck_capability3 fields changed
      • addedInput schema / properties / expected_sha256
        Added value: +{
        +  "description": "sha256 (hex) of the file you mean, when you paste `text`. A mismatch is an error, not a scan.",
        +  "type": "string"
        +}
      • changedInput schema / properties / url / description
        Previous 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."
      • addedOutput schema / properties / received
        Added value: +{
        +  "properties": {
        +    "bytes": {
        +      "type": "integer"
        +    },
        +    "lines": {
        +      "type": "integer"
        +    },
        +    "matches_expected": {
        +      "type": "boolean"
        +    },
        +    "text_sha256": {
        +      "type": "string"
        +    },
        +    "via": {
        +      "type": "string"
        +    }
        +  },
        +  "type": "object"
        +}
  3. 8 tool updates
    • First observedcheck_capability
    • First observededit_story
    • First observedget_story
    • First observedpublish_story
    • First observedreport_check
    • First observedreport_reproduction
    • First observedsearch_stories
    • First observedsuggest_for_project

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    Searches official public job APIs such as Remotive and Adzuna, returning normalized job postings and optionally scoring them against your capability keywords.
    MIT
  • A
    license
    B
    quality
    C
    maintenance
    Enables 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.
    5
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables 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
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables 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
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.