Read-only tools over slopped.site: AI-made art, lore, games, sites, the curriculum.
Maintain this server? Claim 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.
Run a Slop Curriculum lab’s exact checks on a draft, before handing it in on learn.slopped.site: a tiny game spec, a sound recipe or pack (rendered and measured), a motion shot (rendered frame by frame), a SKILL.md, a tool definition, a verb or juice table, or a plan. The same code the lab judge runs; no model, nothing stored. Use when a learner wants to know whether their JSON or file passes before they submit. Returns each exact row (met or not, with a note) and lists the rows only the lab’s judge marks.
The draft exactly as it would be pasted into the lab: JSON, a SKILL.md, or text.
The module whose lab this draft is for (see list_curriculum), e.g. "ship-a-tiny-game", "a-sound-is-a-recipe", "camera-moves", "skills".
Earlier labs’ answers in the same pathway, by format, for the rows that compare with them (e.g. a sound must be for an event on your brief).
Pick your client. Values in capitals, like YOUR_TOKEN, are yours to fill in.
Run in a terminal
claude mcp add --transport http world https://mcp.slopped.site/mcp
Run a Slop Curriculum lab’s exact checks on a draft, before handing it in on learn.slopped.site: a tiny game spec, a sound recipe or pack (rendered and measured), a motion shot (rendered frame by frame), a SKILL.md, a tool definition, a verb or juice table, or a plan. The same code the lab judge runs; no model, nothing stored. Use when a learner wants to know whether their JSON or file passes before they submit. Returns each exact row (met or not, with a note) and lists the rows only the lab’s judge marks.
| Argument | Type | Description |
|---|---|---|
| draft* | string | The draft exactly as it would be pasted into the lab: JSON, a SKILL.md, or text. |
| prior | object | Earlier labs’ answers in the same pathway, by format, for the rows that compare with them (e.g. a sound must be for an event on your brief). |
| module* | string | The module whose lab this draft is for (see list_curriculum), e.g. "ship-a-tiny-game", "a-sound-is-a-recipe", "camera-moves", "skills". |
{
"type": "object",
"required": [
"module",
"draft"
],
"properties": {
"draft": {
"type": "string",
"maxLength": 20000,
"minLength": 1,
"description": "The draft exactly as it would be pasted into the lab: JSON, a SKILL.md, or text."
},
"prior": {
"type": "object",
"properties": {
"cut": {
"type": "string",
"maxLength": 20000,
"description": "Your passing answer to the earlier “cut” lab."
},
"mix": {
"type": "string",
"maxLength": 20000,
"description": "Your passing answer to the earlier “mix” lab."
},
"keys": {
"type": "string",
"maxLength": 20000,
"description": "Your passing answer to the earlier “keys” lab."
},
"loop": {
"type": "string",
"maxLength": 20000,
"description": "Your passing answer to the earlier “loop” lab."
},
"pack": {
"type": "string",
"maxLength": 20000,
"description": "Your passing answer to the earlier “pack” lab."
},
"shot": {
"type": "string",
"maxLength": 20000,
"description": "Your passing answer to the earlier “shot” lab."
},
"brief": {
"type": "string",
"maxLength": 20000,
"description": "Your passing answer to the earlier “brief” lab."
},
"music": {
"type": "string",
"maxLength": 20000,
"description": "Your passing answer to the earlier “music” lab."
},
"sound": {
"type": "string",
"maxLength": 20000,
"description": "Your passing answer to the earlier “sound” lab."
},
"access": {
"type": "string",
"maxLength": 20000,
"description": "Your passing answer to the earlier “access” lab."
},
"camera": {
"type": "string",
"maxLength": 20000,
"description": "Your passing answer to the earlier “camera” lab."
},
"timing": {
"type": "string",
"maxLength": 20000,
"description": "Your passing answer to the earlier “timing” lab."
},
"palette": {
"type": "string",
"maxLength": 20000,
"description": "Your passing answer to the earlier “palette” lab."
},
"critique": {
"type": "string",
"maxLength": 20000,
"description": "Your passing answer to the earlier “critique” lab."
},
"shotbrief": {
"type": "string",
"maxLength": 20000,
"description": "Your passing answer to the earlier “shotbrief” lab."
}
},
"description": "Earlier labs’ answers in the same pathway, by format, for the rows that compare with them (e.g. a sound must be for an event on your brief).",
"additionalProperties": false
},
"module": {
"enum": [
"skills",
"design-a-tool",
"the-pipeline",
"one-verb",
"juice",
"rails",
"tests-that-play",
"levels-without-tears",
"the-game-loop",
"ship-a-tiny-game",
"generic-sound-slop",
"a-sound-is-a-recipe",
"one-event-one-sound",
"a-house-style-for-the-ears",
"music-from-rules",
"mix-it-measure-it",
"quiet-please",
"ship-a-sound-pack",
"generic-motion-slop",
"subject-and-camera",
"camera-moves",
"keys-and-inbetweens",
"timing-and-spacing",
"loops-that-dont-pop",
"continuity",
"check-the-frames",
"ship-a-shot"
],
"type": "string",
"description": "The module whose lab this draft is for (see list_curriculum), e.g. \"ship-a-tiny-game\", \"a-sound-is-a-recipe\", \"camera-moves\", \"skills\"."
}
},
"additionalProperties": false
}For the Slop Curriculum’s “Tools, not vibes” lab only: returns a receipt proving the learner connected an MCP client to this server. Use when a learner asks for their lab receipt and gives their learner code (shown in the lab). Returns a receipt to paste back into the lab.
| Argument | Type | Description |
|---|---|---|
| learner_code* | string | The learner code shown in the lab on learn.slopped.site. |
{
"type": "object",
"required": [
"learner_code"
],
"properties": {
"learner_code": {
"type": "string",
"pattern": "^[0-9a-f-]{36}$",
"description": "The learner code shown in the lab on learn.slopped.site."
}
},
"additionalProperties": false
}Build a link that opens fractals.slopped.site on one exact view: a family (Mandelbrot, Julia, Burning Ship, ferns, L-system plants, the Mandelbulb and 20 more), its parameters, a palette, and where to look. Use when someone wants to see or share a particular fractal. Numbers out of range are clamped to the family’s limits. Returns the link and what it shows. Centre and zoom: x and y are the point in the middle, zoom is half the screen’s shorter side in the fractal’s units (smaller is deeper); for the 3D families x is the yaw, y the pitch and zoom the camera distance.
| Argument | Type | Description |
|---|---|---|
| x | number | Centre, real part (or yaw for 3D). |
| y | number | Centre, imaginary part (or pitch for 3D). |
| zoom | number | Half the shorter side of the screen in the fractal’s units; smaller is deeper. |
| family* | string | The fractal family. |
| params | object | The family’s own parameters (e.g. it for detail, cr and ci for a Julia set’s c); anything left out keeps its default. |
| palette | string | A house palette. |
{
"type": "object",
"required": [
"family"
],
"properties": {
"x": {
"type": "number",
"description": "Centre, real part (or yaw for 3D)."
},
"y": {
"type": "number",
"description": "Centre, imaginary part (or pitch for 3D)."
},
"zoom": {
"type": "number",
"description": "Half the shorter side of the screen in the fractal’s units; smaller is deeper.",
"exclusiveMinimum": 0
},
"family": {
"enum": [
"mandelbrot",
"julia",
"burning-ship",
"tricorn",
"multibrot",
"newton",
"phoenix",
"nova",
"magnet",
"lyapunov",
"fern",
"sierpinski",
"carpet",
"dragon",
"levy",
"koch",
"hilbert",
"gosper",
"plant",
"tree",
"apollonian",
"kleinian",
"flame",
"mandelbulb",
"mandelbox",
"warp"
],
"type": "string",
"description": "The fractal family."
},
"params": {
"type": "object",
"properties": {
"a": {
"type": "number",
"description": "Step (a) (0.5 to 1.5; the family's range wins)"
},
"d": {
"type": "number",
"description": "Roots (n) (3 to 7; the family's range wins)"
},
"k": {
"type": "number",
"description": "Scale (-2.6 to -1.6; the family's range wins)"
},
"n": {
"type": "number",
"description": "Power (2 to 12; the family's range wins)"
},
"p": {
"type": "number",
"description": "p (0.3 to 0.7; the family's range wins)"
},
"q": {
"type": "number",
"description": "q (-0.8 to 0; the family's range wins)"
},
"w": {
"type": "number",
"description": "Warp (0 to 8; the family's range wins)"
},
"ci": {
"type": "number",
"description": "c, imaginary part (-1.1 to 1.1; the family's range wins)"
},
"cr": {
"type": "number",
"description": "c, real part (-1.6 to 0.6; the family's range wins)"
},
"it": {
"type": "number",
"description": "Detail (iterations) (50 to 800; the family's range wins)"
},
"seq": {
"enum": [
"AB",
"AABAB",
"BBBBBBAAAAAA",
"ABBBA"
],
"type": "string",
"description": "Sequence"
},
"seed": {
"type": "number",
"description": "Seed (1 to 999; the family's range wins)"
},
"ratio": {
"type": "number",
"description": "Branch length (0.55 to 0.78; the family's range wins)"
},
"speed": {
"type": "number",
"description": "Drift (0 to 1; the family's range wins)"
},
"preset": {
"enum": [
"spiral",
"dragon",
"gasket",
"cusp",
"rings"
],
"type": "string",
"description": "Group"
},
"spread": {
"type": "number",
"description": "Branch angle (0.15 to 1.2; the family's range wins)"
}
},
"description": "The family’s own parameters (e.g. it for detail, cr and ci for a Julia set’s c); anything left out keeps its default.",
"additionalProperties": false
},
"palette": {
"enum": [
"acid",
"newsprint",
"highlighter",
"inkwash"
],
"type": "string",
"default": "acid",
"description": "A house palette."
}
},
"additionalProperties": false
}Get one Fresh slop piece by id: title, category, subtitle, description, and links to its page, image, widescreen wallpaper (if any) and the infinite-zoom Scroll. Set include_image to also return the picture itself. Use after search_artwork or of_the_day.
| Argument | Type | Description |
|---|---|---|
| id* | string | The artwork id, e.g. "cutlery-at-low-tide". |
| include_image | boolean | Also return the image (a WebP of about 600 × 800). |
{
"type": "object",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"pattern": "^[a-z0-9-]{1,80}$",
"description": "The artwork id, e.g. \"cutlery-at-low-tide\"."
},
"include_image": {
"type": "boolean",
"default": false,
"description": "Also return the image (a WebP of about 600 × 800)."
}
},
"additionalProperties": false
}Get one codex entry by id: name, aliases, kind, world, summary, the games it appears in, and its page on codex.slopped.site. Use after search_codex; the slopped://codex/{id} resource has the entry’s full text.
| Argument | Type | Description |
|---|---|---|
| id* | string | The entry id, e.g. "slopwright". |
{
"type": "object",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"pattern": "^[a-z0-9-]{1,80}$",
"description": "The entry id, e.g. \"slopwright\"."
}
},
"additionalProperties": false
}Get one Slop Curriculum module: the knowledge, skills and abilities it builds, the lesson text, the quiz questions (without answers: learners take the quiz on the site), and the lab brief and checklist. Use to explain a topic from the course or to help someone prepare. Returns markdown.
| Argument | Type | Description |
|---|---|---|
| id* | string | The module id (see list_curriculum). |
{
"type": "object",
"required": [
"id"
],
"properties": {
"id": {
"enum": [
"generic-slop",
"say-what-you-mean",
"where-is-the-camera",
"light-it",
"medium-rare",
"one-thing-at-a-time",
"is-it-any-good",
"the-commission",
"house-style",
"skills",
"tools-not-vibes",
"design-a-tool",
"who-made-this",
"the-pipeline",
"generic-game-slop",
"one-verb",
"juice",
"rails",
"tests-that-play",
"levels-without-tears",
"the-game-loop",
"ship-a-tiny-game",
"generic-sound-slop",
"a-sound-is-a-recipe",
"one-event-one-sound",
"a-house-style-for-the-ears",
"music-from-rules",
"mix-it-measure-it",
"quiet-please",
"ship-a-sound-pack",
"generic-motion-slop",
"subject-and-camera",
"camera-moves",
"keys-and-inbetweens",
"timing-and-spacing",
"loops-that-dont-pop",
"continuity",
"check-the-frames",
"ship-a-shot"
],
"type": "string",
"description": "The module id (see list_curriculum)."
}
},
"additionalProperties": false
}List the Slop Curriculum on learn.slopped.site: its pathways in order (and the ones planned), each pathway's modules (number, id, title, one-line summary, link) and the abilities its badge certifies. Use to recommend what to learn next or to find a module id for get_module.
No arguments.
{
"type": "object",
"properties": {},
"additionalProperties": false
}List every slopped.site site (the main gallery and its subdomains: Scroll, Games, Learn, the Slopwright, Backrooms, the codex, Meinong’s jungle, GeoCities and any added later) with a one-line description and link. Use when someone asks what is on slopped.site or where to find something.
No arguments.
{
"type": "object",
"properties": {},
"additionalProperties": false
}Pick the slopped.site thing of the day: an artwork, a game, a codex entry, a clock or a song, the day’s SK8 2026 skate level, or the day’s twelve ideas (machine-made prompts for new slop from ideas.slopped.site, to make or vote on). The same pick for everyone on a given date (UTC); seasonal pieces only in their season. Use when someone wants one recommendation or a daily pick. Returns its id, name, link and a line about it.
| Argument | Type | Description |
|---|---|---|
| date | string | YYYY-MM-DD; defaults to today (UTC). |
| kind | string | What kind of thing to pick. sk8 is the skate game’s daily level (a seed and a link); idea is all twelve of the day’s ideas, each a prompt with its id and link. |
{
"type": "object",
"properties": {
"date": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "YYYY-MM-DD; defaults to today (UTC)."
},
"kind": {
"enum": [
"art",
"game",
"codex",
"clock",
"song",
"sk8",
"idea"
],
"type": "string",
"default": "art",
"description": "What kind of thing to pick. sk8 is the skate game’s daily level (a seed and a link); idea is all twelve of the day’s ideas, each a prompt with its id and link."
}
},
"additionalProperties": false
}Search the slopped.site art collection by words in the title, subtitle or description, optionally within one category. Use to find pieces about a subject or mood. Returns up to `limit` matches with ids, titles, page links and image links; follow up with get_artwork for one piece. With no query, returns the newest pieces.
| Argument | Type | Description |
|---|---|---|
| limit | integer | |
| query | string | Words to look for, e.g. "moon", "teapot", "fish". Leave out to list the newest. |
| category | string | Only this category. |
{
"type": "object",
"properties": {
"limit": {
"type": "integer",
"default": 8,
"maximum": 25,
"minimum": 1
},
"query": {
"type": "string",
"maxLength": 100,
"description": "Words to look for, e.g. \"moon\", \"teapot\", \"fish\". Leave out to list the newest."
},
"category": {
"enum": [
"Surreal",
"Spaces",
"Objects"
],
"type": "string",
"description": "Only this category."
}
},
"additionalProperties": false
}Search the codex (codex.slopped.site), the encyclopedia of the slopped.site world: its people, creatures, places, objects, events, groups and concepts, from the Slopwright to the bosses in the games. Matches names, aliases and summaries. Use when someone asks who or what something in the slopped.site world is. Returns ids, kinds, one-line summaries and links; follow up with get_codex_entry or the slopped://codex/{id} resource.
| Argument | Type | Description |
|---|---|---|
| kind | string | Only this kind. |
| limit | integer | |
| query | string | Words to look for, e.g. "lamp", "lighthouse", "apprentice". Leave out to list everything (up to limit). |
{
"type": "object",
"properties": {
"kind": {
"enum": [
"Person",
"Creature",
"Place",
"Object",
"Event",
"Group",
"Concept"
],
"type": "string",
"description": "Only this kind."
},
"limit": {
"type": "integer",
"default": 8,
"maximum": 25,
"minimum": 1
},
"query": {
"type": "string",
"maxLength": 100,
"description": "Words to look for, e.g. \"lamp\", \"lighthouse\", \"apprentice\". Leave out to list everything (up to limit)."
}
},
"additionalProperties": false
}Search everything in the slopped.site world by words: artworks, games, codex entries, sites, jungle specimens, curriculum modules, GeoCities homepages, clocks, songs, fractal families, history chapters and more, matching names, old names and one-line descriptions. Use first when you don’t know what kind of thing something is. Returns ids (use them with world_graph or the slopped:// resources), names, types, links and descriptions, a page at a time.
| Argument | Type | Description |
|---|---|---|
| limit | integer | |
| query* | string | Words to look for, e.g. "lighthouse", "sardine tin", "stapler". |
| types | array | Only these kinds of thing. |
| cursor | string | From next_cursor of the previous page. |
{
"type": "object",
"required": [
"query"
],
"properties": {
"limit": {
"type": "integer",
"default": 10,
"maximum": 25,
"minimum": 1
},
"query": {
"type": "string",
"maxLength": 100,
"minLength": 1,
"description": "Words to look for, e.g. \"lighthouse\", \"sardine tin\", \"stapler\"."
},
"types": {
"type": "array",
"items": {
"enum": [
"art",
"belief",
"cartridge",
"chapter",
"claim",
"clock",
"codex",
"creature-kind",
"decision",
"era",
"exhibit",
"faction",
"flow",
"food",
"fractal",
"game",
"government",
"homepage",
"hood",
"idea",
"institution",
"item",
"lesson",
"library",
"market",
"material",
"module",
"occasion",
"pathway",
"poster",
"question",
"recipe",
"resource",
"ring",
"rite",
"season",
"secret",
"site",
"skin",
"song",
"source",
"specimen",
"taxon",
"tech",
"tree",
"world"
],
"type": "string"
},
"maxItems": 8,
"minItems": 1,
"description": "Only these kinds of thing."
},
"cursor": {
"type": "string",
"pattern": "^\\d{1,5}$",
"description": "From next_cursor of the previous page."
}
},
"additionalProperties": false
}The slopped.site sites hide secrets. Give the first, vaguest rung of one secret’s hint ladder, never the answer or the later hints: the rest is for the visitor to find (the codex’s secrets ledger reveals the next rungs one at a time). With no id, lists every secret’s title and site. Use when someone is hunting and wants a nudge.
| Argument | Type | Description |
|---|---|---|
| id | string | The secret’s two-letter id (leave out to list them). |
{
"type": "object",
"properties": {
"id": {
"enum": [
"fa",
"cl",
"sp",
"ko",
"nm",
"rq",
"hd",
"rg",
"nd",
"nr",
"an",
"ob",
"li",
"lp",
"dw",
"ck",
"sk",
"fw",
"fp",
"lo",
"wk",
"us",
"lg",
"ra",
"ao",
"lh",
"lt"
],
"type": "string",
"description": "The secret’s two-letter id (leave out to list them)."
}
},
"additionalProperties": false
}Read top.slopped.site: the curated picks (the best of each section with a one-line reason, and this week’s pick) or the most-saved board (what visitors saved most this week or ever, counted anonymously). Use for “what’s good here” or “what do people like”. Returns names, ids, links and reasons or counts.
| Argument | Type | Description |
|---|---|---|
| list | string | The curated picks, or the counted most-saved board. |
| limit | integer | |
| window | string | most_saved only: the last 7 days, or all time. |
| section | string | Only one kind: art, game, homepage, exhibit, codex, fractal, tree or specimen. |
{
"type": "object",
"properties": {
"list": {
"enum": [
"picks",
"most_saved"
],
"type": "string",
"default": "picks",
"description": "The curated picks, or the counted most-saved board."
},
"limit": {
"type": "integer",
"default": 10,
"maximum": 30,
"minimum": 1
},
"window": {
"enum": [
"week",
"all"
],
"type": "string",
"default": "week",
"description": "most_saved only: the last 7 days, or all time."
},
"section": {
"enum": [
"art",
"game",
"homepage",
"exhibit",
"codex",
"fractal",
"tree",
"specimen"
],
"type": "string",
"description": "Only one kind: art, game, homepage, exhibit, codex, fractal, tree or specimen."
}
},
"additionalProperties": false
}Check a Slopbox cartridge (a whole game as one text file, the format of cart.slopped.site: meta lines, then [palette] [sprite] [map] [sound] [music] [shader] [text] [game] sections) with the same validator the Slopbox Game Builder and the console run. Use when writing or fixing a cartridge before playing it. Returns whether it is valid, every problem with its line and section, and what it contains; nothing is stored or played. The full spec: https://cart.slopped.site/spec.md (for people: https://cart.slopped.site/docs/). How to write a good one: https://cart.slopped.site/skills/writing-cartridges/SKILL.md
| Argument | Type | Description |
|---|---|---|
| text* | string | The cartridge, exactly as the file: it starts with the line "cart 1". |
{
"type": "object",
"required": [
"text"
],
"properties": {
"text": {
"type": "string",
"maxLength": 65536,
"minLength": 1,
"description": "The cartridge, exactly as the file: it starts with the line \"cart 1\"."
}
},
"additionalProperties": false
}Check an Open Badge issued by learn.slopped.site, a Slop Curriculum badge or a Slopbox game badge (cart-*): pass the compact JWS (from a baked badge), a credential URL, or a verify link. Checks what the verify page checks (the RS256 signature against the published key, the issuer fields, the dates) and returns who earned what, when, the evidence, and for a game badge how the run was checked. Use when someone shares a badge. Only verifies learn.slopped.site badges.
| Argument | Type | Description |
|---|---|---|
| credential* | string | A compact JWS (eyJ…), https://learn.slopped.site/credentials/<uuid>, or https://learn.slopped.site/#/verify/<uuid>. |
{
"type": "object",
"required": [
"credential"
],
"properties": {
"credential": {
"type": "string",
"maxLength": 32000,
"minLength": 10,
"description": "A compact JWS (eyJ…), https://learn.slopped.site/credentials/<uuid>, or https://learn.slopped.site/#/verify/<uuid>."
}
},
"additionalProperties": false
}Look up any thing in the slopped.site world by id or name and see how it connects. Covers sites, games, codex entries (characters, creatures, places, objects), Fresh slop artworks, jungle specimens and taxa, secrets (titles only), curriculum pathways and modules, GeoCities homepages, neighbourhoods and rings, history chapters, Bad UI exhibits, Lineage trees, fractal families, clocks and songs. Ids look like "game:spider", "codex:slopwright", "art:detour", "site:jungle", "homepage:lumen". Returns the thing, its link, and every neighbour with the edge type and direction (appears-in, describes, pictures, classifies, owns-homepage, member-of-ring, teaches, unlocks, mentions…). Use for "where does X appear", "what is connected to Y" or "what is the page for Z". Give `to` as well to get the shortest chain of connections between two things.
| Argument | Type | Description |
|---|---|---|
| to | string | Optional second id or name: also return the shortest path between the two. |
| type | string | Only match things of this type. |
| limit | integer | How many neighbours to list. |
| edge_type | string | Only list neighbours joined by this edge type. |
| id_or_name* | string | A node id ("codex:wren") or a name or old name ("Wren", "Last Card"). |
{
"type": "object",
"required": [
"id_or_name"
],
"properties": {
"to": {
"type": "string",
"maxLength": 120,
"description": "Optional second id or name: also return the shortest path between the two."
},
"type": {
"enum": [
"art",
"belief",
"cartridge",
"chapter",
"claim",
"clock",
"codex",
"creature-kind",
"decision",
"era",
"exhibit",
"faction",
"flow",
"food",
"fractal",
"game",
"government",
"homepage",
"hood",
"idea",
"institution",
"item",
"lesson",
"library",
"market",
"material",
"module",
"occasion",
"pathway",
"poster",
"question",
"recipe",
"resource",
"ring",
"rite",
"season",
"secret",
"site",
"skin",
"song",
"source",
"specimen",
"taxon",
"tech",
"tree",
"world"
],
"type": "string",
"description": "Only match things of this type."
},
"limit": {
"type": "integer",
"default": 40,
"maximum": 100,
"minimum": 1,
"description": "How many neighbours to list."
},
"edge_type": {
"enum": [
"about",
"appears-in",
"applies",
"borrows",
"breaks",
"carried-by",
"carries",
"classed-as",
"classifies",
"comes-from",
"concerns",
"connects",
"contradicts",
"counts-as",
"decides-for",
"describes",
"draws-on",
"eats",
"filed-in",
"found-on",
"goes-to",
"governs",
"handles",
"held-at",
"holds",
"in-era",
"in-season",
"is-skin",
"keeps",
"kept-by",
"knows",
"leads-into",
"links-to",
"located-in",
"made-from",
"made-into",
"makes",
"member-of",
"member-of-ring",
"mentions",
"observes",
"owns-homepage",
"part-of",
"pictured-by",
"pictures",
"plays",
"plays-in",
"port-of",
"related",
"requires",
"serves",
"set-in",
"shows",
"sold-at",
"stance",
"stirs-as",
"styled-after",
"supplies",
"supports",
"taboo",
"teaches",
"unlocks",
"used-on",
"uses",
"worn-on"
],
"type": "string",
"description": "Only list neighbours joined by this edge type."
},
"id_or_name": {
"type": "string",
"maxLength": 120,
"minLength": 1,
"description": "A node id (\"codex:wren\") or a name or old name (\"Wren\", \"Last Card\")."
}
},
"additionalProperties": false
}We read every tool's name, description and inputs the way the model will, looking for instructions hidden from you. A clean result means no warning signs, not a guarantee. Scanned Nov 7, 2026.
Takes a password, API key or token as an argument, so the secret passes through the model's context and chat logs.
Fix: Read credentials from the server's own configuration (environment, OAuth) instead of a tool argument.