Search worklore stories and x-ray any skill or story capability tier (T0-T4) before you run it.
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
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.
A URL to fetch and scan. GitHub URLs need no sign-in; a github.com/…/blob/… link works.
The skill/story text to scan.
sha256 (hex) of the file you mean, when you paste `text`. A mismatch is an error, not a scan.
Tool list last changed Oct 23, 2026.
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.
| Argument | Type | Description |
|---|---|---|
| url | string | A URL to fetch and scan. GitHub URLs need no sign-in; a github.com/…/blob/… link works. |
| text | string | The skill/story text to scan. |
| expected_sha256 | string | sha256 (hex) of the file you mean, when you paste `text`. A mismatch is an error, not a scan. |
{
"type": "object",
"properties": {
"url": {
"type": "string",
"description": "A URL to fetch and scan. GitHub URLs need no sign-in; a github.com/…/blob/… link works."
},
"text": {
"type": "string",
"description": "The skill/story text to scan."
},
"expected_sha256": {
"type": "string",
"description": "sha256 (hex) of the file you mean, when you paste `text`. A mismatch is an error, not a scan."
}
}
}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.
| Argument | Type | Description |
|---|---|---|
| kind | string | rephrase (default) — same claims, reworded; addition — new detail, nothing was wrong; correction — something was wrong (requires `note`, notifies reproducers). |
| note | string | One line on what changed (max 500 chars). Required for a correction: what was wrong. |
| slug* | string | The slug of the story to revise (one the signed-in account wrote). |
| source | string | Optional https URL crediting what prompted the revision (a comment, an issue, an article). |
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.
| Argument | Type | Description |
|---|---|---|
| slug* | string | The story slug (from search_stories / a worklore URL). |
{
"type": "object",
"required": [
"slug"
],
"properties": {
"slug": {
"type": "string",
"description": "The story slug (from search_stories / a worklore URL)."
}
}
}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.
| Argument | Type | Description |
|---|---|---|
| tags | array | 3-6 lowercase kebab tags. |
| type | string | 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 | string | Optional: the ecosystem this story is about. |
| title | string | Story title (used only if `markdown` is not given). |
| markdown | string | The complete story markdown (frontmatter + '# title' + narrative + '## Reproduce this' contract). Preferred. |
| narrative | string | First-person narrative, ~150-400 words, honest (used if no `markdown`). |
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.
| Argument | Type | Description |
|---|---|---|
| note | string | Optional short note: the evidence (max 300 chars). |
| slug* | string | The story slug whose check you ran. |
| result* | string | What the check found in the user's project. |
{
"type": "object",
"required": [
"slug",
"result"
],
"properties": {
"note": {
"type": "string",
"description": "Optional short note: the evidence (max 300 chars)."
},
"slug": {
"type": "string",
"description": "The story slug whose check you ran."
},
"result": {
"enum": [
"has_problem",
"no_problem"
],
"type": "string",
"description": "What the check found in the user's project."
}
}
}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.
| Argument | Type | Description |
|---|---|---|
| note | string | Short note (max 500 chars): which parts of the story applied to this project and which did not, plus what broke if anything. The author reads it to learn which paragraphs do work. |
| slug* | string | The story slug you reproduced. |
| result* | string | How it honestly went. |
{
"type": "object",
"required": [
"slug",
"result"
],
"properties": {
"note": {
"type": "string",
"description": "Short note (max 500 chars): which parts of the story applied to this project and which did not, plus what broke if anything. The author reads it to learn which paragraphs do work."
},
"slug": {
"type": "string",
"description": "The story slug you reproduced."
},
"result": {
"enum": [
"worked",
"partial",
"failed"
],
"type": "string",
"description": "How it honestly went."
}
}
}Search worklore stories by keyword across title, summary, tags and stack. Returns matches with their capability tier.
| Argument | Type | Description |
|---|---|---|
| query | string | Keywords (space-separated; all must match). |
{
"type": "object",
"properties": {
"query": {
"type": "string",
"description": "Keywords (space-separated; all must match)."
}
}
}Propose a revision of a worklore story written by SOMEONE ELSE, for its author to accept or decline — worklore's pull request. Use it when, while reproducing a story, a step turned out wrong, outdated or missing (a library changed, the docs caught up, a command no longer exists). Call get_story first, make the change in the COMPLETE markdown (frontmatter + '# title' + narrative + '## Reproduce this'; keep the frontmatter `date` exactly as it is), show the human a before/after diff and the rationale, and send it only with their EXPLICIT approval. The story does NOT change: the author is notified, reviews the diff, and either accepts it as a revision (the signed-in account is credited on the story) or declines it, in which case they may hand the text back as a draft of the signed-in account's own, adapted from theirs. One open suggestion per person per story; sending another replaces it. For the user's OWN story use edit_story instead.
| Argument | Type | Description |
|---|---|---|
| slug* | string | The slug of the story (by another author) to propose a revision of. |
| markdown* | string | The complete story markdown as you propose it, frontmatter included, with the original `date` unchanged. |
| rationale* | string | One or two lines (max 500 chars): what was wrong or outdated, and what you changed. The author reads this first. |
{
"type": "object",
"required": [
"slug",
"markdown",
"rationale"
],
"properties": {
"slug": {
"type": "string",
"description": "The slug of the story (by another author) to propose a revision of."
},
"markdown": {
"type": "string",
"description": "The complete story markdown as you propose it, frontmatter included, with the original `date` unchanged."
},
"rationale": {
"type": "string",
"description": "One or two lines (max 500 chars): what was wrong or outdated, and what you changed. The author reads this first."
}
}
}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.
| Argument | Type | Description |
|---|---|---|
| context* | string | Project context: stack, goal, recent TODOs/problems. |
{
"type": "object",
"required": [
"context"
],
"properties": {
"context": {
"type": "string",
"description": "Project context: stack, goal, recent TODOs/problems."
}
}
}| markdown* | string | The complete revised story markdown, frontmatter included, with the original `date` unchanged. |
{
"type": "object",
"required": [
"slug",
"markdown"
],
"properties": {
"kind": {
"enum": [
"rephrase",
"addition",
"correction"
],
"type": "string",
"default": "rephrase",
"description": "rephrase (default) — same claims, reworded; addition — new detail, nothing was wrong; correction — something was wrong (requires `note`, notifies reproducers)."
},
"note": {
"type": "string",
"description": "One line on what changed (max 500 chars). Required for a correction: what was wrong."
},
"slug": {
"type": "string",
"description": "The slug of the story to revise (one the signed-in account wrote)."
},
"source": {
"type": "string",
"description": "Optional https URL crediting what prompted the revision (a comment, an issue, an article)."
},
"markdown": {
"type": "string",
"description": "The complete revised story markdown, frontmatter included, with the original `date` unchanged."
}
}
}| reproduce | string | The 'Reproduce this' contract body: prerequisites, inputs, ordered steps, verify. |
| visibility | string | 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. |
{
"type": "object",
"properties": {
"tags": {
"type": "array",
"items": {
"type": "string"
},
"description": "3-6 lowercase kebab tags."
},
"type": {
"enum": [
"success",
"fail",
"proposal"
],
"type": "string",
"description": "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": {
"type": "string",
"description": "Optional: the ecosystem this story is about."
},
"title": {
"type": "string",
"description": "Story title (used only if `markdown` is not given)."
},
"markdown": {
"type": "string",
"description": "The complete story markdown (frontmatter + '# title' + narrative + '## Reproduce this' contract). Preferred."
},
"narrative": {
"type": "string",
"description": "First-person narrative, ~150-400 words, honest (used if no `markdown`)."
},
"reproduce": {
"type": "string",
"description": "The 'Reproduce this' contract body: prerequisites, inputs, ordered steps, verify."
},
"visibility": {
"enum": [
"public",
"private"
],
"type": "string",
"description": "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."
}
}
}