{"ok":true,"site":{"host":"humanmemory.dev","url":"https://humanmemory.dev/","type":"live","desc":"Hey agent, make your human smarter. Flashcards written by your AI agent, one prompt away.","tools":[{"name":"get_flashcard_format","kind":"answer","impl":"imperative","description":"Read this first. Short by default (about 3 KB): the workflow for writing a deck on this site, the rules the site enforces, and the house style. Ask for section \"examples\" (one card of each kind — choice, truefalse, order, and one with a picture) or \"schema\" (the deck JSON Schema) when you need them, or \"all\".","title":"Flashcard format and authoring guide","annotations":{"readOnlyHint":true,"untrustedContentHint":false},"inputSchema":{"type":"object","properties":{"section":{"type":"string","enum":["guide","examples","schema","all"],"description":"What to return. Default \"guide\"."}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"find_flashcard_images","kind":"answer","impl":"imperative","description":"Licensed pictures for a card, from Wikipedia and Wikimedia Commons. Give the exact English Wikipedia article title of the thing when you know it (\"Las Meninas\", \"Hario V60\") and a search query otherwise. Returns up to five candidates with a URL sized for the card, the source page, author and license, and a ready-made credit. Put the URL in image (shown while answering — \"what is this?\" cards) or revealImage (blurred until the answer — \"who made X?\" cards), describe it in imageAlt without naming the answer, and copy credit into imageCredit. Never invent image URLs.","title":"Find a picture for a card","annotations":{"readOnlyHint":true,"untrustedContentHint":false},"inputSchema":{"type":"object","properties":{"query":{"type":"string","description":"What to look for, e.g. \"Bayeux Tapestry\" or \"V60 pour-over dripper\"."},"title":{"type":"string","description":"Exact English Wikipedia article title, when known — its lead image comes first."},"limit":{"type":"integer","description":"At most this many candidates (1–10). Default 5."}},"required":["query"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"list_flashcard_decks","kind":"answer","impl":"imperative","description":"The decks on this page: the built-in one and the decks saved in this browser (with levels, card counts, and the visitor's best scores), plus any drafts still being written.","title":"List decks","annotations":{"readOnlyHint":true,"untrustedContentHint":false},"inputSchema":{"type":"object","properties":{}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"get_flashcard_deck","kind":"answer","impl":"imperative","description":"The full JSON of a deck or draft by slug: every level and card. Use it to review what was written, or as a starting point for a new deck.","title":"Read a deck","annotations":{"readOnlyHint":true,"untrustedContentHint":false},"inputSchema":{"type":"object","properties":{"slug":{"type":"string","description":"From list_flashcard_decks."}},"required":["slug"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"start_flashcard_deck","kind":"act","impl":"imperative","description":"Begin writing a deck: give its title, headline (phrased as a question, e.g. \"Are you a coffee nerd?\"), tagline, verdicts for four score bands, and its levels without cards (id, name, tagline; timed and hidden are optional). Returns the draft's slug. Then call add_flashcards for each level and publish_flashcard_deck when every level has its cards.","title":"Start a deck","inputSchema":{"type":"object","properties":{"title":{"type":"string","minLength":1},"headline":{"type":"string","minLength":1},"tagline":{"type":"string","minLength":1},"intro":{"default":[],"type":"array","items":{"type":"string","minLength":1}},"cta":{"default":"Test knowledge","type":"string","minLength":1},"author":{"type":"object","properties":{"name":{"type":"string","minLength":1},"url":{"type":"string","format":"uri"}},"required":["name"]},"passScore":{"default":7,"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"timerSeconds":{"default":20,"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"verdicts":{"type":"object","properties":{"low":{"type":"string","minLength":1},"mid":{"type":"string","minLength":1},"high":{"type":"string","minLength":1},"perfect":{"type":"string","minLength":1}},"required":["low","mid","high","perfect"]},"slug":{"description":"Optional; derived from the title if missing","type":"string","pattern":"^[a-z0-9]+(?:-[a-z0-9]+)*$"},"levels":{"minItems":1,"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"^[a-z0-9]+(?:-[a-z0-9]+)*$"},"name":{"type":"string","minLength":1,"description":"Shown as \"<name> level\""},"tagline":{"type":"string","minLength":1},"timed":{"default":false,"type":"boolean"},"timerSeconds":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"hidden":{"default":false,"type":"boolean"}},"required":["id","name","tagline"]},"description":"In play order; each level unlocks the next"}},"required":["title","headline","tagline","verdicts","levels"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"add_flashcards","kind":"act","impl":"imperative","description":"Append cards to one level of a draft started with start_flashcard_deck. Send any number per call (a whole level of ten, or a few at a time). Each card is a choice (options[0] correct), truefalse, or order card with a one-line fact; ids are assigned when omitted. For a card about something you can look at, add picture: { wikipediaTitle, slot, alt } — the site fetches that Wikipedia article's lead image and credits it, no URL needed. Returns the level's counts, which pictures were attached, and what the draft still needs.","title":"Add cards to a draft","inputSchema":{"type":"object","properties":{"slug":{"type":"string","minLength":1},"level":{"type":"string","minLength":1},"cards":{"minItems":1,"type":"array","items":{"oneOf":[{"type":"object","properties":{"kind":{"type":"string","const":"choice"},"id":{"description":"Optional; assigned if missing","type":"string","minLength":1},"fact":{"type":"string","minLength":1,"description":"One-line explanation shown on the reveal, whatever the answer"},"prompt":{"type":"string","minLength":1},"options":{"minItems":2,"maxItems":6,"type":"array","items":{"type":"string","minLength":1},"description":"The first option is the correct one"},"image":{"description":"Shown sharp while answering (\"which movement is this?\")","type":"string","minLength":1,"pattern":"^(?:\\/[^\\s]*|https:\\/\\/[^\\s]+)$"},"revealImage":{"description":"Shown blurred while answering, sharpened with the answer","type":"string","minLength":1,"pattern":"^(?:\\/[^\\s]*|https:\\/\\/[^\\s]+)$"},"imageAlt":{"description":"What the picture shows, without naming the answer","type":"string"},"imageCredit":{"type":"object","properties":{"title":{"type":"string","minLength":1,"description":"The work or subject, e.g. \"Las Meninas\""},"author":{"type":"string","minLength":1,"description":"Artist or photographer"},"license":{"type":"string","minLength":1,"description":"e.g. \"Public domain\", \"CC BY-SA 4.0\""},"source":{"type":"string","pattern":"^https?:\\/\\/","description":"Page the image came from"}}},"picture":{"description":"Name the Wikipedia article of the thing pictured; the site fetches and credits the image. Either this or image/revealImage, not both.","type":"object","properties":{"wikipediaTitle":{"type":"string","minLength":1,"description":"Exact English Wikipedia article title of the thing pictured"},"slot":{"default":"revealImage","description":"image: shown while answering (\"what is this?\" cards); revealImage: blurred until the answer (cards the picture would give away). Default revealImage.","type":"string","enum":["image","revealImage"]},"alt":{"type":"string","minLength":1,"description":"What the picture shows, without naming the answer"}},"required":["wikipediaTitle","alt"]}},"required":["kind","fact","prompt","options"]},{"type":"object","properties":{"kind":{"type":"string","const":"truefalse"},"id":{"description":"Optional; assigned if missing","type":"string","minLength":1},"fact":{"type":"string","minLength":1,"description":"One-line explanation shown on the reveal, whatever the answer"},"statement":{"type":"string","minLength":1},"answer":{"type":"boolean"},"revealImage":{"description":"Shown blurred while answering, sharpened on the reveal","type":"string","minLength":1,"pattern":"^(?:\\/[^\\s]*|https:\\/\\/[^\\s]+)$"},"imageAlt":{"description":"What the picture shows, without naming the answer","type":"string"},"imageCredit":{"type":"object","properties":{"title":{"type":"string","minLength":1,"description":"The work or subject, e.g. \"Las Meninas\""},"author":{"type":"string","minLength":1,"description":"Artist or photographer"},"license":{"type":"string","minLength":1,"description":"e.g. \"Public domain\", \"CC BY-SA 4.0\""},"source":{"type":"string","pattern":"^https?:\\/\\/","description":"Page the image came from"}}},"picture":{"description":"Name the Wikipedia article of the thing pictured; shown blurred until the answer. Either this or revealImage, not both.","type":"object","properties":{"wikipediaTitle":{"type":"string","minLength":1,"description":"Exact English Wikipedia article title of the thing pictured"},"alt":{"type":"string","minLength":1,"description":"What the picture shows, without naming the answer"}},"required":["wikipediaTitle","alt"]}},"required":["kind","fact","statement","answer"]},{"type":"object","properties":{"kind":{"type":"string","const":"order"},"id":{"description":"Optional; assigned if missing","type":"string","minLength":1},"fact":{"type":"string","minLength":1,"description":"One-line explanation shown on the reveal, whatever the answer"},"prompt":{"type":"string","minLength":1},"items":{"minItems":3,"maxItems":5,"type":"array","items":{"type":"object","properties":{"label":{"type":"string","minLength":1},"value":{"type":"number","description":"Sort key, ascending is correct (a year, a size, a rank…)"}},"required":["label","value"]}}},"required":["kind","fact","prompt","items"]}]}}},"required":["slug","level","cards"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"publish_flashcard_deck","kind":"act","impl":"imperative","description":"Validate a draft, save it as a playable deck in this browser, and open the quiz on it (open: false to just save). Errors name what is missing or wrong, by JSON path.","title":"Publish a draft","inputSchema":{"type":"object","properties":{"slug":{"type":"string","description":"The draft's slug from start_flashcard_deck."},"open":{"type":"boolean","description":"Open the quiz after saving. Default true."}},"required":["slug"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"import_flashcards","kind":"act","impl":"imperative","description":"Save a complete deck in one call (the JSON Schema from get_flashcard_format) and open it. If a saved deck already uses the slug, a new slug is chosen unless replace is true. For writing a deck in steps, use start_flashcard_deck instead.","title":"Import a complete deck","inputSchema":{"type":"object","properties":{"deck":{"type":"object","properties":{"slug":{"type":"string","pattern":"^[a-z0-9]+(?:-[a-z0-9]+)*$"},"title":{"type":"string","minLength":1},"headline":{"type":"string","minLength":1},"tagline":{"type":"string","minLength":1},"intro":{"default":[],"type":"array","items":{"type":"string","minLength":1}},"cta":{"default":"Test knowledge","type":"string","minLength":1},"author":{"type":"object","properties":{"name":{"type":"string","minLength":1},"url":{"type":"string","format":"uri"}},"required":["name"],"additionalProperties":false},"passScore":{"default":7,"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"timerSeconds":{"default":20,"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"verdicts":{"type":"object","properties":{"low":{"type":"string","minLength":1},"mid":{"type":"string","minLength":1},"high":{"type":"string","minLength":1},"perfect":{"type":"string","minLength":1}},"required":["low","mid","high","perfect"],"additionalProperties":false},"levels":{"minItems":1,"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"^[a-z0-9]+(?:-[a-z0-9]+)*$"},"name":{"type":"string","minLength":1,"description":"Shown as \"<name> level\""},"tagline":{"type":"string","minLength":1},"timed":{"default":false,"type":"boolean"},"timerSeconds":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"hidden":{"default":false,"type":"boolean"},"questions":{"minItems":1,"type":"array","items":{"oneOf":[{"type":"object","properties":{"kind":{"type":"string","const":"choice"},"id":{"type":"string","minLength":1,"description":"Unique across the whole deck, e.g. s1, s2"},"fact":{"type":"string","minLength":1,"description":"One-line explanation shown on the reveal, whatever the answer"},"prompt":{"type":"string","minLength":1},"options":{"minItems":2,"maxItems":6,"type":"array","items":{"type":"string","minLength":1},"description":"The first option is the correct one"},"image":{"description":"Shown sharp while answering (\"which movement is this?\")","type":"string","minLength":1,"pattern":"^(?:\\/[^\\s]*|https:\\/\\/[^\\s]+)$"},"revealImage":{"description":"Shown blurred while answering, sharpened with the answer","type":"string","minLength":1,"pattern":"^(?:\\/[^\\s]*|https:\\/\\/[^\\s]+)$"},"imageAlt":{"description":"What the picture shows, without naming the answer","type":"string"},"imageCredit":{"type":"object","properties":{"title":{"type":"string","minLength":1,"description":"The work or subject, e.g. \"Las Meninas\""},"author":{"type":"string","minLength":1,"description":"Artist or photographer"},"license":{"type":"string","minLength":1,"description":"e.g. \"Public domain\", \"CC BY-SA 4.0\""},"source":{"type":"string","pattern":"^https?:\\/\\/","description":"Page the image came from"}},"additionalProperties":false}},"required":["kind","id","fact","prompt","options"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","const":"truefalse"},"id":{"type":"string","minLength":1,"description":"Unique across the whole deck, e.g. s1, s2"},"fact":{"type":"string","minLength":1,"description":"One-line explanation shown on the reveal, whatever the answer"},"statement":{"type":"string","minLength":1},"answer":{"type":"boolean"},"revealImage":{"description":"Shown blurred while answering, sharpened on the reveal","type":"string","minLength":1,"pattern":"^(?:\\/[^\\s]*|https:\\/\\/[^\\s]+)$"},"imageAlt":{"description":"What the picture shows, without naming the answer","type":"string"},"imageCredit":{"type":"object","properties":{"title":{"type":"string","minLength":1,"description":"The work or subject, e.g. \"Las Meninas\""},"author":{"type":"string","minLength":1,"description":"Artist or photographer"},"license":{"type":"string","minLength":1,"description":"e.g. \"Public domain\", \"CC BY-SA 4.0\""},"source":{"type":"string","pattern":"^https?:\\/\\/","description":"Page the image came from"}},"additionalProperties":false}},"required":["kind","id","fact","statement","answer"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","const":"order"},"id":{"type":"string","minLength":1,"description":"Unique across the whole deck, e.g. s1, s2"},"fact":{"type":"string","minLength":1,"description":"One-line explanation shown on the reveal, whatever the answer"},"prompt":{"type":"string","minLength":1},"items":{"minItems":3,"maxItems":5,"type":"array","items":{"type":"object","properties":{"label":{"type":"string","minLength":1},"value":{"type":"number","description":"Sort key, ascending is correct (a year, a size, a rank…)"}},"required":["label","value"],"additionalProperties":false}}},"required":["kind","id","fact","prompt","items"],"additionalProperties":false}]}}},"required":["id","name","tagline","timed","hidden","questions"],"additionalProperties":false}}},"required":["slug","title","headline","tagline","intro","cta","passScore","timerSeconds","verdicts","levels"],"additionalProperties":false},"replace":{"type":"boolean","description":"Overwrite a saved deck with the same slug. Default false."}},"required":["deck"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"share_flashcard_deck","kind":"act","impl":"imperative","description":"A link anyone can open to play a deck saved in this browser: the deck is stored on the site under a short URL (/d/<id>) that unfurls with its headline and pictures. The site does this on its own while the visitor plays a deck the first time; call it to have the link sooner, or to hand it to the visitor. Needs the deployment to have a blob store — the error says so otherwise.","title":"Share a deck by link","inputSchema":{"type":"object","properties":{"slug":{"type":"string","description":"A saved deck's slug (list_flashcard_decks)."}},"required":["slug"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"generate_flashcards","kind":"act","impl":"imperative","description":"Ask the site's own AI (Claude, on the server) to plan and write a deck about a topic, then open it: the first level is ready in under a minute and the quiz opens on it; the rest are written in the background. Only works when the deployment has a key — if it doesn't, write the deck yourself with start_flashcard_deck, add_flashcards and publish_flashcard_deck.","title":"Have the site write a deck","inputSchema":{"type":"object","properties":{"topic":{"type":"string","description":"What the visitor wants to learn, e.g. \"The French Revolution\" or \"Coffee brewing\"."},"notes":{"type":"string","description":"Optional guidance: angle, difficulty, audience, images to use."}},"required":["topic"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"play_flashcards","kind":"act","impl":"imperative","description":"Open the quiz for a deck. Omit the slug for the built-in deck; list_flashcard_decks shows the others. The visitor then plays: levels unlock in order by reaching passScore.","title":"Play a deck","inputSchema":{"type":"object","properties":{"slug":{"type":"string","description":"A deck slug from list_flashcard_decks."}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"delete_flashcard_deck","kind":"transact","impl":"imperative","description":"Remove a saved deck or a draft from this browser. The built-in deck can't be deleted. Best scores for the deck are kept out of the way but not erased.","title":"Delete a deck or draft","inputSchema":{"type":"object","properties":{"slug":{"type":"string"}},"required":["slug"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]}],"category":"Health & Education","favicon":"/favicons/humanmemory.dev.png","apiSurface":"spec","toolCount":12}}