The whole world, for your assistant. It can look. It can’t touch.

This is a Model Context Protocol server (MCP, an open standard for connecting AI applications to outside systems) for everything on slopped.site: the Fresh slop, the codex, the games, the jungle, GeoCities, the clocks, the songs and the Slop Curriculum. Point an AI client at it and it can search, look things up, follow connections and check a lab draft. It is read-only: nothing it does changes anything, and it needs no account.

https://mcp.slopped.site/mcp

The same server also answers at https://learn.slopped.site/mcp, where it started. Both answer directly, without a redirect.

Tools
18
Resources
1,332
Prompts
11
Writes
0

Connect

It speaks Streamable HTTP and keeps no session: every request is one POST with one JSON answer. Any client that can add a remote MCP server by URL can use it. Clients differ in where that goes; these are the general shapes.

A client that takes a URL

Add a server, choose HTTP (sometimes called Streamable HTTP or remote), and paste the address above. Name it anything; slopped is short.

A client with a JSON config

Many keep servers in a JSON file shaped roughly like this. The file’s name and the exact keys depend on the client, so check its documentation.

{
  "mcpServers": {
    "slopped": {
      "type": "http",
      "url": "https://mcp.slopped.site/mcp"
    }
  }
}

A command line

Claude Code adds remote servers with claude mcp add --transport http <name> <url> :

claude mcp add --transport http slopped https://mcp.slopped.site/mcp

Just looking

The MCP Inspector is the reference tool for trying a server by hand: npx @modelcontextprotocol/inspector, then the URL. Or skip the client entirely:

curl -s https://mcp.slopped.site/mcp \
  -H 'content-type: application/json' \
  -H 'accept: application/json, text/event-stream' \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"of_the_day","arguments":{"kind":"art"}}}'

Tools 18

Things the assistant can call. Every one is marked read-only, and every argument is checked against its schema before anything runs. slop_of_the_day and sk8_daily_level are older names kept for clients that already use them. Listed here from the server’s own tools/list when this page was built.

search_world Search the whole world

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.

ArgumentTypeWhat it takes
query requiredstringWords to look for, e.g. "lighthouse", "sardine tin", "stapler". Up to 100 characters.
typeslist of one of theseOnly these kinds of thing. Any of: art, chapter, clock, codex, decision, exhibit, faction, fractal, game, homepage, hood, lesson, module, pathway, question, ring, season, secret, site, skin, song, source, specimen, taxon, tree, world.
limitinteger1 to 25. Default 10.
cursorstringFrom next_cursor of the previous page.

world_graph Look something up in the world graph

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.

ArgumentTypeWhat it takes
id_or_name requiredstringA node id ("codex:wren") or a name or old name ("Wren", "Last Card"). Up to 120 characters.
tostringOptional second id or name: also return the shortest path between the two. Up to 120 characters.
typestringOnly match things of this type. One of: art, chapter, clock, codex, decision, exhibit, faction, fractal, game, homepage, hood, lesson, module, pathway and 12 more.
edge_typestringOnly list neighbours joined by this edge type. One of: appears-in, applies, borrows, breaks, classed-as, classifies, comes-from, concerns, connects, describes, filed-in, found-on, governs, in-season and 21 more.
limitintegerHow many neighbours to list. 1 to 100. Default 40.

search_artwork Search Fresh slop

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.

ArgumentTypeWhat it takes
querystringWords to look for, e.g. "moon", "teapot", "fish". Leave out to list the newest. Up to 100 characters.
categorystringOnly this category. One of: Surreal, Spaces, Objects.
limitinteger1 to 25. Default 8.

get_artwork Get one artwork

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.

ArgumentTypeWhat it takes
id requiredstringThe artwork id, e.g. "cutlery-at-low-tide".
include_imagebooleanAlso return the image (a WebP of about 600 × 800). Default false.

of_the_day Of the day

Pick the slopped.site thing of the day: an artwork, a game, a codex entry, a clock or a song, or the day’s SK8 2026 skate level. 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.

ArgumentTypeWhat it takes
kindstringWhat kind of thing to pick. sk8 is the skate game’s daily level (a seed and a link). One of: art, game, codex, clock, song, sk8. Default "art".
datestringYYYY-MM-DD; defaults to today (UTC).

slop_of_the_day Slop of the day

Same as of_the_day with kind "art" (kept for older clients): the artwork of the day, the same for everyone on a date (UTC), never out of season.

ArgumentTypeWhat it takes
datestringYYYY-MM-DD; defaults to today (UTC).

sk8_daily_level Today’s SK8 level

Same as of_the_day with kind "sk8" (kept for older clients): the daily level of SK8 2026, the slopped.site skate game, as a seed and a link that opens it.

ArgumentTypeWhat it takes
datestringYYYY-MM-DD in the player’s local date; defaults to today (UTC).

search_codex Search the codex

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.

ArgumentTypeWhat it takes
querystringWords to look for, e.g. "lamp", "lighthouse", "apprentice". Leave out to list everything (up to limit). Up to 100 characters.
kindstringOnly this kind. One of: Person, Creature, Place, Object, Event, Group, Concept.
limitinteger1 to 25. Default 8.

get_codex_entry Get one codex entry

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.

ArgumentTypeWhat it takes
id requiredstringThe entry id, e.g. "slopwright".

list_sites List slopped.site sites

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.

list_curriculum List the Slop Curriculum

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.

get_module Get a curriculum module

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.

ArgumentTypeWhat it takes
id requiredstringThe module id (see list_curriculum). One of: 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 and 25 more.

check_spec Check a draft against a lab

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.

ArgumentTypeWhat it takes
module requiredstringThe module whose lab this draft is for (see list_curriculum), e.g. "ship-a-tiny-game", "a-sound-is-a-recipe", "camera-moves", "skills". One of: 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 and 13 more.
draft requiredstringThe draft exactly as it would be pasted into the lab: JSON, a SKILL.md, or text. Up to 20,000 characters.
priorobjectEarlier 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). Keys: brief, sound, pack, palette, music, mix, access, shotbrief, shot, camera, keys, timing, loop, cut, critique.

top_list The best, picked, and the most saved

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.

ArgumentTypeWhat it takes
liststringThe curated picks, or the counted most-saved board. One of: picks, most_saved. Default "picks".
sectionstringOnly one kind: art, game, homepage, exhibit, codex, fractal, tree or specimen. One of: art, game, homepage, exhibit, codex, fractal, tree, specimen.
windowstringmost_saved only: the last 7 days, or all time. One of: week, all. Default "week".
limitinteger1 to 30. Default 10.

secret_hint A first hint for a secret

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.

ArgumentTypeWhat it takes
idstringThe secret’s two-letter id (leave out to list them). One of: fa, cl, sp, ko, nm, rq, hd, rg, nd, nr, an, ob, lp, dw and 12 more.

verify_badge Verify a Slop Curriculum badge

Check an Open Badge issued by learn.slopped.site: pass the compact JWS (from a baked badge), a credential URL, or a verify link. Checks the RS256 signature against the published key and returns who earned what, when, and the evidence. Use when someone shares a badge. Only verifies learn.slopped.site badges.

ArgumentTypeWhat it takes
credential requiredstringA compact JWS (eyJ…), https://learn.slopped.site/credentials/<uuid>, or https://learn.slopped.site/#/verify/<uuid>. Up to 32,000 characters.

claim_lab_receipt Claim a lab receipt

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.

ArgumentTypeWhat it takes
learner_code requiredstringThe learner code shown in the lab on learn.slopped.site.

Resources 1,332

Things the assistant (or you) can read, by address. Each is markdown with links; pictures are linked, not sent. resources/list pages through every one, 100 at a time; the templates say how the addresses are made.

AddressWhatHow many
slopped://art/{id}One fresh slop artwork as markdown, with links. Ids: resources/list, search_world or world_graph.418
slopped://codex/{id}One codex entry as markdown, with links. Ids: resources/list, search_world or world_graph.267
slopped://specimen/{id}One jungle specimen as markdown, with links. Ids: resources/list, search_world or world_graph.418
slopped://module/{id}One curriculum module as markdown, with links. Ids: resources/list, search_world or world_graph.39
slopped://homepage/{id}One geocities homepage as markdown, with links. Ids: resources/list, search_world or world_graph.120
slopped://clock/{id}One clock as markdown, with links. Ids: resources/list, search_world or world_graph.32
slopped://song/{id}One song as markdown, with links. Ids: resources/list, search_world or world_graph.22
slopped://faction/{id}One faction (proposed) as markdown (every faction is proposed until approved). Ids: resources/list, search_world or world_graph.9
slopped://skill/{id}One skill (skill.md) as markdown: the SKILL.md text, for the apply_skill prompt. Ids: resources/list, search_world or world_graph.5
slopped://graph/{node}Any knowledge-graph node (e.g. slopped://graph/codex:wren, slopped://graph/game:spider) and its connections, as markdown.every node
slopped://artworkEvery artwork on slopped.site: id, title, category, subtitle and links.1
slopped://curriculumPathways and modules on learn.slopped.site (titles, summaries, links).1

Factions come from a proposal that isn’t canon yet; each faction resource says so at the top.

Prompts 11

Ready-made instructions a client can offer you, usually as a menu or a slash command. Their rules aren’t retyped: each build reads them from the skills and the course this site is built with, so the prompts follow the same rules the sites do.

direct_this_idea Direct this idea

Turn a vague image idea into a directed prompt, the Slopwright’s way.

  • idea required: The idea, e.g. "a lonely lighthouse"

critique_this_image Critique this image

Critique an AI image against its brief, with the checklist from the Slop Curriculum.

  • brief: What the image was supposed to show

direct_tiny_game Direct a tiny game

Write a tiny-game spec (JSON) the Slop Curriculum’s engine can play, from an idea, by the capstone lab’s rules.

  • idea required: The game idea, e.g. "a toast escaping a toaster"
  • verb: jump, flap or dodge (optional)

write_jump_sound Write a jump sound

Write a sound recipe (JSON) for a game’s jump, by the sound pathway’s rules: no click, short, headroom, and a reason.

  • game required: The game and what jumping is in it, e.g. "a frog on lily pads"
  • feel: How it should feel, e.g. "springy, small"

animate_this Animate this

Turn a subject and an action into a short shot (JSON) the motion bench can render, with a named camera move, by the motion pathway’s rules.

  • subject required: What is in the shot, e.g. "a paper boat"
  • action required: What it does, e.g. "drifts across a puddle"

write_1998_homepage Write a 1998 homepage

Write a GeoCities-style personal homepage as someone from the slopped.site world would have built it in 1998: a neighbourhood, a layout and real content, honest that it’s AI-made.

  • owner required: Who keeps it, e.g. "a lighthouse keeper in a sardine tin"
  • topic: What the page is about

classify_for_jungle Classify for the jungle

Classify a thing in a picture for Meinong’s jungle: possible or impossible, what it breaks, and a filing note in the house voice.

  • thing required: What the picture shows, e.g. "a whole sea in a spoon"

write_skill_description Write a skill description

Write the description line of an Agent Skill (SKILL.md frontmatter): what it covers, the tools it ships, and “Use when …”, under 1024 characters.

  • what required: What the skill covers
  • when: The situations it should load in

slopwright_voice Write in the Slopwright’s voice

Write copy for slopped.site in the house voice: deadpan, two beats, honest that it’s AI-made, with the lore rules.

  • subject required: What to write about
  • form: e.g. a title and subtitle, a game-over line, a premise, an empty state

write_codex_entry Write a codex entry

Draft a codex entry for something in the slopped.site world, by the codex’s rules: never contradict a game, prefer silence, quote only real lines.

  • name required: What the entry is about
  • kind: person, creature, place, object, event, group or concept
  • notes: What is known about it, and where it appears

apply_skill Apply a skill

Apply one of the skills offered as resources (slopped://skill/{id}) to a task: the SKILL.md is embedded, then the task.

  • skill required: The skill id: slopwright-house-style, game-feel, game-writing, skill-authoring, game-design-brief
  • task required: What to do with it

Skills, over MCP

A fair question: can an MCP server hand out skills, or only prompts?

MCP servers offer three things : tools (functions to call), resources (things to read) and prompts (templates to fill in). There is no “skill” in the protocol. A skill, the kind made of a SKILL.md with a description that says when to use it, is just text plus the habit of reading it at the right moment.

So this server ships a skill as two parts. The SKILL.md is a resource at slopped://skill/{id}, and the apply_skill prompt embeds it ahead of your task. A client that keeps skills of its own can read the resource and save it as one.

On offer: slopwright-house-style (slopwright-house-style (an example from “Skills”)), game-feel (game-feel (an example from “Rails for the machine”)), game-writing (game-writing (this site’s own skill, excerpted)), skill-authoring (skill-authoring (this site’s own skill, excerpted)), game-design-brief (game-design-brief (this site’s own skill, excerpted)). The first two are the worked examples from the course; the others are this site’s own skills, with their commands and run logs left out. Nothing with keys, secrets or deploy steps is offered.

Examples

Real requests and the server’s real answers, captured when this page was built (long strings shortened). The dates are fixed so the examples stay put; ask the live server for today’s.

Search everything

Any word, any kind of thing. The ids it returns work with every other tool and resource.

Request

{
  "jsonrpc": "2.0",
  "id": 19,
  "method": "tools/call",
  "params": {
    "name": "search_world",
    "arguments": {
      "query": "sardine tin",
      "limit": 4
    }
  }
}

Response

{
  "jsonrpc": "2.0",
  "id": 19,
  "result": {
    "content": [
      {
        "type": "text",
        "text": "21 matches for “sardine tin” (1–4):\n- Sardine tin (codex:sardine-tin): A sardine tin that has decided to walk. Armoured. https://codex.slopped.site/e/sardine-tin/\n- Sardine tin (skin:st): A printed tin lid with a pink label. The display is the colour of the sea, roughly. https://desktop.slopped.site/\n- The sardine tin (codex:the-sardine-tin): A sealed sardine tin on the bench. The lid rolls back on a whole sea. https://codex.slopped.site/e/the-sardine-tin/\n- The sardine-tin sea (codex:sardine-tin-sea): The sea inside the sardine tin on the bench. It’s mostly oil. https://codex.slopped.site/e/s… [49 more characters]"
      }
    ],
    "structuredContent": {
      "total": 21,
      "results": [
        {
          "id": "codex:sardine-tin",
          "type": "codex",
          "name": "Sardine tin",
          "url": "https://codex.slopped.site/e/sardine-tin/",
          "description": "A sardine tin that has decided to walk. Armoured."
        },
        {
          "id": "skin:st",
          "type": "skin",
          "name": "Sardine tin",
          "url": "https://desktop.slopped.site/",
          "description": "A printed tin lid with a pink label. The display is the colour of the sea, roughly."
        },
        {
          "id": "codex:the-sardine-tin",
  
… [shortened here: 1,580 characters in all]

What the assistant reads

21 matches for “sardine tin” (1–4):
- Sardine tin (codex:sardine-tin): A sardine tin that has decided to walk. Armoured. https://codex.slopped.site/e/sardine-tin/
- Sardine tin (skin:st): A printed tin lid with a pink label. The display is the colour of the sea, roughly. https://desktop.slopped.site/
- The sardine tin (codex:the-sardine-tin): A sealed sardine tin on the bench. The lid rolls back on a whole sea. https://codex.slopped.site/e/the-sardine-tin/
- The sardine-tin sea (codex:sardine-tin-sea): The sea inside the sardine tin on the bench. It’s mostly oil. https://codex.slopped.site/e/sardine-tin-sea/
More: call again with cursor "4".

How two things connect

One thing, its neighbours, and the shortest chain to another.

Request

{
  "jsonrpc": "2.0",
  "id": 20,
  "method": "tools/call",
  "params": {
    "name": "world_graph",
    "arguments": {
      "id_or_name": "Wren",
      "to": "site:jungle",
      "limit": 4
    }
  }
}

Response

{
  "jsonrpc": "2.0",
  "id": 20,
  "result": {
    "content": [
      {
        "type": "text",
        "text": "**Wren** (codex:wren)\nhttps://codex.slopped.site/e/wren/\nThe Slopwright’s apprentice, as Overtime has it. Apron, ladle, a lot of enthusiasm.\n21 connections (first 4):\n- ← concerns Is Overtime’s Wren the same person as the unnamed apprentice in Always On and Benchwork? (question:wren-apprentice) https://codex.slopped.site/questions/#wren-apprentice\n- ← links-to The apprentice (codex:apprentice) https://codex.slopped.site/e/apprentice/\n- ← links-to Overtime (codex:overtime-game) https://codex.slopped.site/e/overtime-game/\n- ← links-to Slop (codex:slop) https://codex.slopped.site/e/slop/\nAlso mat… [422 more characters]"
      }
    ],
    "structuredContent": {
      "node": {
        "id": "codex:wren",
        "type": "codex",
        "name": "Wren",
        "url": "https://codex.slopped.site/e/wren/",
        "aka": [],
        "description": "The Slopwright’s apprentice, as Overtime has it. Apron, ladle, a lot of enthusiasm."
      },
      "neighbours": [
        {
          "direction": "in",
          "edge": "concerns",
          "label": null,
          "node": {
            "id": "question:wren-apprentice",
            "type": "question",
            "name": "Is Overtime’s Wren the same person as the unnamed apprentice in Always On and Benchwork?",
  
… [shortened here: 2,903 characters in all]

What the assistant reads

**Wren** (codex:wren)
https://codex.slopped.site/e/wren/
The Slopwright’s apprentice, as Overtime has it. Apron, ladle, a lot of enthusiasm.
21 connections (first 4):
- ← concerns Is Overtime’s Wren the same person as the unnamed apprentice in Always On and Benchwork? (question:wren-apprentice) https://codex.slopped.site/questions/#wren-apprentice
- ← links-to The apprentice (codex:apprentice) https://codex.slopped.site/e/apprentice/
- ← links-to Overtime (codex:overtime-game) https://codex.slopped.site/e/overtime-game/
- ← links-to Slop (codex:slop) https://codex.slopped.site/e/slop/
Also matches: WREN'S PAGE OF TIDYING (MOSTLY) (homepage:wren), Is Overtime’s Wren the same person as the unnamed apprentice in Always On and Benchwork? (question:wren-apprentice)
Path to Meinong’s jungle: codex:site-geocities -related→ codex:wren, codex:site-geocities -related→ codex:meinongs-jungle, codex:… [122 more characters]

A daily pick

The same for everyone on a date. Seasonal pieces only in season.

Request

{
  "jsonrpc": "2.0",
  "id": 21,
  "method": "tools/call",
  "params": {
    "name": "of_the_day",
    "arguments": {
      "kind": "clock",
      "date": "2026-10-31"
    }
  }
}

Response

{
  "jsonrpc": "2.0",
  "id": 21,
  "result": {
    "content": [
      {
        "type": "text",
        "text": "Clock of the day for 2026-10-31:\n**Paper wheels** (clock:paper-wheels): Three paper discs behind a window. No script turns them.\nhttps://clocks.slopped.site/c/paper-wheels/"
      }
    ],
    "structuredContent": {
      "kind": "clock",
      "date": "2026-10-31",
      "id": "clock:paper-wheels",
      "name": "Paper wheels",
      "url": "https://clocks.slopped.site/c/paper-wheels/",
      "description": "Three paper discs behind a window. No script turns them."
    }
  }
}

What the assistant reads

Clock of the day for 2026-10-31:
**Paper wheels** (clock:paper-wheels): Three paper discs behind a window. No script turns them.
https://clocks.slopped.site/c/paper-wheels/

Check a draft before handing it in

The sound lab’s exact checks: the recipe is rendered and measured, by the same code the lab runs.

Request

{
  "jsonrpc": "2.0",
  "id": 22,
  "method": "tools/call",
  "params": {
    "name": "check_spec",
    "arguments": {
      "module": "a-sound-is-a-recipe",
      "draft": "{\"wave\":\"triangle\",\"pitch\":260,\"slide\":620,\"attack\":0.004,\"decay\":0.1,\"sustain\":0,\"release\":0.03,\"volume\":-16,\"filter\":{\"type\":\"lowpass\",\"cutoff\":2200},\"event\":\"jump\",\"why\":\"It slides up because the frog goes up.\"}",
      "prior": {
        "brief": "Game: a frog on lily pads\nEvents: jump, land, splash, eat\nPalette: soft triangles, nothing harsh\nMusic: a slow pond loop\nNever: a buzz"
      }
    }
  }
}

Response

{
  "jsonrpc": "2.0",
  "id": 22,
  "result": {
    "content": [
      {
        "type": "text",
        "text": "Lab 24, A sound is a recipe: 5 of 5 exact checks met.\n✓ A recipe the synthesizer can play: A triangle sliding 260→620 Hz, 134 ms.\n✓ For an event from your brief: “jump”, from your brief.\n✓ No click: 3 ms in, 10 ms out: 4 ms in, a smooth fade out.\n✓ Half a second at most: 134 ms.\n✓ Peaks at −6 dBFS or below (measured): Peaks at -16.5 dBFS.\nJudged on the site, not here: The why ties the recipe to the moment.\nHand it in: https://learn.slopped.site/#/m/a-sound-is-a-recipe"
      }
    ],
    "structuredContent": {
      "module": "a-sound-is-a-recipe",
      "met": 5,
      "total": 5,
      "rows": [
        {
          "id": "sound_shape",
          "label": "A recipe the synthesizer can play",
          "met": true,
          "note": "A triangle sliding 260→620 Hz, 134 ms."
        },
        {
          "id": "from_brief",
          "label": "For an event from your brief",
          "met": true,
          "note": "“jump”, from your brief."
        },
        {
          "id": "no_click",
          "label": "No click: 3 ms in, 10 ms out",
          "met": true,
          "note": "4 ms in, a smooth fade out."
        },
        {
          "id": "short",
          "label": "Half a second at most",
          "met": true,
          "note": "134 ms."
        },
  
… [shortened here: 1,265 characters in all]

What the assistant reads

Lab 24, A sound is a recipe: 5 of 5 exact checks met.
✓ A recipe the synthesizer can play: A triangle sliding 260→620 Hz, 134 ms.
✓ For an event from your brief: “jump”, from your brief.
✓ No click: 3 ms in, 10 ms out: 4 ms in, a smooth fade out.
✓ Half a second at most: 134 ms.
✓ Peaks at −6 dBFS or below (measured): Peaks at -16.5 dBFS.
Judged on the site, not here: The why ties the recipe to the moment.
Hand it in: https://learn.slopped.site/#/m/a-sound-is-a-recipe

A link to one exact fractal

Out-of-range numbers are clamped and the response says so.

Request

{
  "jsonrpc": "2.0",
  "id": 23,
  "method": "tools/call",
  "params": {
    "name": "fractal_link",
    "arguments": {
      "family": "julia",
      "params": {
        "cr": -0.8,
        "ci": 0.156
      },
      "palette": "newsprint",
      "zoom": 0.9
    }
  }
}

Response

{
  "jsonrpc": "2.0",
  "id": 23,
  "result": {
    "content": [
      {
        "type": "text",
        "text": "**Julia set** (Escape-time), Newsprint palette\nhttps://fractals.slopped.site/#julia/cr=-0.8,ci=0.156,it=300,pal=newsprint,ph=0,den=1/x=0,y=0,s=0.9\nRule: z → z² + c, starting from z = the pixel; c is fixed\nFractals render in the browser (WebGL); the page has a photosensitivity setting."
      }
    ],
    "structuredContent": {
      "family": "julia",
      "name": "Julia set",
      "params": {
        "cr": -0.8,
        "ci": 0.156,
        "it": 300
      },
      "palette": "newsprint",
      "view": {
        "x": 0,
        "y": 0,
        "s": 0.9
      },
      "url": "https://fractals.slopped.site/#julia/cr=-0.8,ci=0.156,it=300,pal=newsprint,ph=0,den=1/x=0,y=0,s=0.9",
      "adjusted": []
    }
  }
}

What the assistant reads

**Julia set** (Escape-time), Newsprint palette
https://fractals.slopped.site/#julia/cr=-0.8,ci=0.156,it=300,pal=newsprint,ph=0,den=1/x=0,y=0,s=0.9
Rule: z → z² + c, starting from z = the pixel; c is fixed
Fractals render in the browser (WebGL); the page has a photosensitivity setting.

A nudge, not an answer

Only the first rung of the hint ladder. The rest is on the codex’s ledger.

Request

{
  "jsonrpc": "2.0",
  "id": 24,
  "method": "tools/call",
  "params": {
    "name": "secret_hint",
    "arguments": {
      "id": "ko"
    }
  }
}

Response

{
  "jsonrpc": "2.0",
  "id": 24,
  "result": {
    "content": [
      {
        "type": "text",
        "text": "**Thirty lives** (slopped.site)\nFirst hint: The front page remembers an old code. Up, up...\nThe next hints are on the codex’s ledger, one at a time: https://codex.slopped.site/secrets/"
      }
    ],
    "structuredContent": {
      "id": "ko",
      "title": "Thirty lives",
      "site": "main",
      "hint": "The front page remembers an old code. Up, up...",
      "rung": 1,
      "planned": false,
      "ledger": "https://codex.slopped.site/secrets/"
    }
  }
}

What the assistant reads

**Thirty lives** (slopped.site)
First hint: The front page remembers an old code. Up, up...
The next hints are on the codex’s ledger, one at a time: https://codex.slopped.site/secrets/

A strict schema says no

Unknown arguments, wrong types and values outside an enum are refused before anything runs.

Request

{
  "jsonrpc": "2.0",
  "id": 25,
  "method": "tools/call",
  "params": {
    "name": "of_the_day",
    "arguments": {
      "kind": "weather"
    }
  }
}

Response

{
  "jsonrpc": "2.0",
  "id": 25,
  "result": {
    "content": [
      {
        "type": "text",
        "text": "Invalid arguments for of_the_day: “kind” must be one of art, game, codex, clock, song, sk8"
      }
    ],
    "isError": true
  }
}

What the assistant reads

Invalid arguments for of_the_day: “kind” must be one of art, game, codex, clock, song, sk8

Read a resource

Markdown, with the picture as a link rather than a blob.

Request

{
  "jsonrpc": "2.0",
  "id": 26,
  "method": "resources/read",
  "params": {
    "uri": "slopped://specimen/the-teabag-lighthouse"
  }
}

Response

{
  "jsonrpc": "2.0",
  "id": 26,
  "result": {
    "contents": [
      {
        "uri": "slopped://specimen/the-teabag-lighthouse",
        "mimeType": "text/markdown",
        "text": "# The teabag lighthouse, as a specimen\n![The teabag lighthouse](https://jungle.slopped.site/art/the-teabag-lighthouse.webp)\n\n**Kind:** Possible: Nothing contradictory. It just isn’t.\n**Breaks:** Scale (The wrong size, or holding something the wrong size.); Category (One kind of thing being, or doing the job of, another.)\n**Note:** Lighthouses stand on rocks and glow; teabags only stand in cups. The steeping is the problem.\n**Where it doesn’t exist:** A dark sea, off a black rock, all night.\n**Nearest existing relative:** A teabag, and a lighthouse.\n\nSpecimen page: https://jungle.slopped.site/s… [180 more characters]"
      }
    ]
  }
}

What the assistant reads

# The teabag lighthouse, as a specimen
![The teabag lighthouse](https://jungle.slopped.site/art/the-teabag-lighthouse.webp)

**Kind:** Possible: Nothing contradictory. It just isn’t.
**Breaks:** Scale (The wrong size, or holding something the wrong size.); Category (One kind of thing being, or doing the job of, another.)
**Note:** Lighthouses stand on rocks and glow; teabags only stand in cups. The steeping is the problem.
**Where it doesn’t exist:** A dark sea, off a black rock, all night.
**Nearest existing relative:** A teabag, and a lighthouse.

Specimen page: https://jungle.slopped.site/s/the-teabag-lighthouse/
The artwork: https://slopped.site/a/the-teabag-lighthouse

Meinong’s jungle files things that don’t exist: a picture that exists, of an object that doesn’t.

A skill, applied

The prompt embeds the skill (a resource) and then the task.

Request

{
  "jsonrpc": "2.0",
  "id": 27,
  "method": "prompts/get",
  "params": {
    "name": "apply_skill",
    "arguments": {
      "skill": "slopwright-house-style",
      "task": "Direct a photo of a teapot for the site."
    }
  }
}

Response

{
  "jsonrpc": "2.0",
  "id": 27,
  "result": {
    "description": "Apply one of the skills offered as resources (slopped://skill/{id}) to a task: the SKILL.md is embedded, then the task.",
    "messages": [
      {
        "role": "user",
        "content": {
          "type": "resource",
          "resource": {
            "uri": "slopped://skill/slopwright-house-style",
            "mimeType": "text/markdown",
            "text": "---\nname: slopwright-house-style\ndescription: The slopped.site photo style for product and object shots. Use when generating or reviewing images of a single everyday object for slopped.site.\n---\n\n# Slopwright house style\n\n1. Subject: one ordinary object, specific (material, condition).\n2. Camera: eye-level close-up, subject off-centre, empty space.\n3. Light: one hard light from the left; deep shadows.\n4. Palette: only teal and rust.\n5. Medium: 35mm film photograph, visible grain.\nNever: people, text, hype words, living artists' names.\n\nExample: \"a chipped enamel jug on a windowsill, eye-level … [76 more characters]"
          }
        }
      },
      {
        "role": "user",
        "content": {
          "type": "text",
          "text": "Follow the skill above (slopwright-house-style) to do this: Direct a photo of a teapot for the site.\nWork through its rules in order, and finish with its checks, if it has any."
        }
     
… [shortened here: 1,251 characters in all]

What the assistant reads

[embedded resource slopped://skill/slopwright-house-style]

Follow the skill above (slopwright-house-style) to do this: Direct a photo of a teapot for the site.
Work through its rules in order, and finish with its checks, if it has any.

What it won’t do

Small on purpose. It runs on Cloudflare’s free plan alongside every other site here.

  • Write anything. No tool stores, saves or counts. The one that makes something, claim_lab_receipt, signs a receipt for the course’s MCP lab and keeps no copy.
  • Run a model. No tool calls an AI. The course’s labs use one to judge; check_spec runs only the checks that are plain code.
  • Give secrets away. secret_hint gives the first, vaguest hint and stops.
  • Go elsewhere. It reads its own bundled data, plus two of this site’s own pages when asked: the codex’s search index and top.slopped.site’s most-saved board, both cached.
  • Know who you are. No accounts, no sessions, no cookies. It sees the requests, not the person.