{"serverId":"mcp-registry/mu.micro/mu","tools":[{"name":"apps_create","fixed":{"name":"apps_create","description":"Create an app — a small, self-contained HTML tool hosted here. Takes the HTML; apps_build writes it for you from a description Apps run in a sandbox. Use fetch('/api/v1/<service>/<method>') or mu.service(name, method, args); mu.api does not exist. Direct external fetch is blocked. Inspect real service schemas and data before coding; never invent fields, rankings or claim runtime verification from static checks.","inputSchema":{"type":"object","required":["name","html"],"properties":{"html":{"type":"string","description":"The app's HTML, inline CSS and JavaScript included, up to 256KB"},"icon":{"type":"string","description":"An SVG icon"},"name":{"type":"string","description":"App name, e.g. \"Pomodoro Timer\""},"slug":{"type":"string","description":"URL-friendly id, e.g. pomodoro-timer. Derived from the name if omitted"},"tags":{"type":"string","description":"Comma-separated tags"},"price":{"type":"number","description":"Credits charged per use, 0 for free, up to 1000"},"public":{"type":"boolean","description":"Publish only when explicitly requested by the owner. Personal apps are private by default."},"private":{"type":"boolean","description":"Keep this app private to its owner; use true for personal widgets"},"description":{"type":"string","description":"What the app does. Defaults to the name"}}},"annotations":{"title":"Create apps","readOnlyHint":false,"destructiveHint":false,"idempotentHint":false},"title":"Create apps"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":378,"tokensAfter":378},{"name":"blog_create","fixed":{"name":"blog_create","description":"Publish a post to the caller's blog. For anything meant to be read later by other people — notes, write-ups, announcements. For a private note to yourself, prefer files or memory","inputSchema":{"type":"object","required":["content"],"properties":{"tags":{"type":"string","description":"Comma-separated tags"},"title":{"type":"string","description":"Post title. One is generated from the body if omitted"},"content":{"type":"string","description":"The post body, at least 50 characters"},"private":{"type":"boolean","description":"True to keep it to yourself"}}},"annotations":{"title":"Create blog","readOnlyHint":false,"destructiveHint":false,"idempotentHint":false},"title":"Create blog"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":167,"tokensAfter":167},{"name":"blog_update","fixed":{"name":"blog_update","description":"Edit one of the caller's own posts. Fields left out keep their current value","inputSchema":{"type":"object","required":["id"],"properties":{"id":{"type":"string","description":"The post's id, as given by blog_list"},"tags":{"type":"string","description":"New comma-separated tags. Left alone if omitted"},"title":{"type":"string","description":"New title. Left alone if omitted"},"content":{"type":"string","description":"New body, at least 50 characters. Left alone if omitted"}}},"annotations":{"title":"Update blog","readOnlyHint":false,"destructiveHint":false,"idempotentHint":true},"title":"Update blog"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: true (inferred from the name).","verify":true}],"tokensBefore":145,"tokensAfter":145},{"name":"bookmarks_add","fixed":{"name":"bookmarks_add","description":"Save an article, video, blog post or link privately. Re-saving preserves its note","inputSchema":{"type":"object","properties":{"ref":{"type":"string","description":"Public archive item id for an article, video or blog post"},"url":{"type":"string","description":"Link to save when no archive id is available"},"note":{"type":"string","description":"Optional private note"},"title":{"type":"string","description":"Title for a link"}}},"annotations":{"title":"Add bookmarks","readOnlyHint":false,"destructiveHint":false,"idempotentHint":false},"title":"Add bookmarks"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":132,"tokensAfter":132},{"name":"bookmarks_annotate","fixed":{"name":"bookmarks_annotate","description":"Set or clear a private note on one saved item","inputSchema":{"type":"object","required":["id"],"properties":{"id":{"type":"string","description":""},"note":{"type":"string","description":"Private note, or empty to clear"}}},"annotations":{"title":"Annotate bookmarks","readOnlyHint":false,"destructiveHint":false,"idempotentHint":false},"title":"Annotate bookmarks"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":75,"tokensAfter":75},{"name":"browser_shot","fixed":{"name":"browser_shot","description":"Photograph a page and get back a URL for the picture. What it looks like, rather than what it says — a chart, a layout, a page whose content is an image. Ask for full to capture past the first screenful","inputSchema":{"type":"object","required":["url"],"properties":{"url":{"type":"string","description":"The page to photograph"},"full":{"type":"boolean","description":"Capture the whole page rather than one screenful"},"wait":{"type":"string","description":"Optional CSS selector to wait for before the shot"}}},"annotations":{"title":"Shot browser","readOnlyHint":true},"title":"Shot browser"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":154,"tokensAfter":154},{"name":"chat_send","fixed":{"name":"chat_send","description":"Say something in a discussion room, as the caller. Use chat_rooms to find the room id","inputSchema":{"type":"object","required":["room","message"],"properties":{"room":{"type":"string","description":"Room id, as returned by chat_rooms"},"message":{"type":"string","description":"What to say"}}},"annotations":{"title":"Send chat","readOnlyHint":false,"destructiveHint":false,"idempotentHint":false},"title":"Send chat"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":92,"tokensAfter":92},{"name":"contacts_add","fixed":{"name":"contacts_add","description":"Save someone to the address book. Adding a name already there updates it rather than making a second card","inputSchema":{"type":"object","required":["name"],"properties":{"name":{"type":"string","description":"The person's name, e.g. \"Sarah Chen\""},"note":{"type":"string","description":"Anything worth remembering about them"},"email":{"type":"string","description":"Their email address"},"phone":{"type":"string","description":"Their phone number"}}},"annotations":{"title":"Add contacts","readOnlyHint":false,"destructiveHint":false,"idempotentHint":false},"title":"Add contacts"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":138,"tokensAfter":138},{"name":"docs_write","fixed":{"name":"docs_write","description":"Write a document — a title and a markdown body. Pass an id to replace one you already have. Private unless you set public. For something long enough to re-read; for a short thing to remember, use notes","inputSchema":{"type":"object","required":["title","content"],"properties":{"id":{"type":"string","description":"Existing document id to replace. Omit to create a new one"},"title":{"type":"string","description":"The document's title"},"public":{"type":"boolean","description":"Readable by anyone when true. Private by default"},"content":{"type":"string","description":"The document's body, as markdown"}}},"annotations":{"title":"Write docs","readOnlyHint":false,"destructiveHint":false,"idempotentHint":false},"title":"Write docs"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":180,"tokensAfter":180},{"name":"events_create","fixed":{"name":"events_create","description":"Schedule a reminder or event at a given time; optionally repeating, and optionally running a prompt through the agent when it fires","inputSchema":{"type":"object","required":["title","when"],"properties":{"note":{"type":"string","description":"Optional extra detail"},"when":{"type":"string","description":"When to fire, RFC3339 with timezone offset, e.g. 2026-07-22T15:00:00+01:00"},"title":{"type":"string","description":"What to be reminded about, e.g. 'Call the dentist'"},"prompt":{"type":"string","description":"Optional instruction to run through the agent when it fires, e.g. \"brief me on today's news\". The answer is mailed to you"},"repeat":{"type":"string","description":"How often it recurs: hourly, daily, weekly or monthly. Omit for once"},"advance":{"type":"object","description":"Optional advance trigger: minutes before the event and recipient user or agent. Agent prepares a read-only report for delivery at when; actions that change records must use a normal scheduled prompt without advance"},"minutes":{"type":"number","description":"How long it lasts in minutes (default 30)"}}},"annotations":{"title":"Create events","readOnlyHint":false,"destructiveHint":false,"idempotentHint":false},"title":"Create events"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":318,"tokensAfter":318},{"name":"events_update","fixed":{"name":"events_update","description":"Update one of your scheduled events without changing its id. Omitted fields stay unchanged; empty notes, prompts or recurrence clear them","inputSchema":{"type":"object","required":["id"],"properties":{"id":{"type":"string","description":"Event id from events_list"},"note":{"type":"string","description":"New note; empty clears it"},"when":{"type":"string","description":"New future time as RFC3339 with timezone offset"},"title":{"type":"string","description":"New title; omitted keeps the existing title"},"prompt":{"type":"string","description":"New standing instruction; empty clears it"},"repeat":{"type":"string","description":"hourly, daily, weekly, monthly; empty makes it one-off"},"advance":{"type":"object","description":"Advance trigger with minutes and recipient user or agent; zero minutes and empty recipient clears it. Agent preparation is read-only"},"minutes":{"type":"number","description":"Duration in minutes, 1 to 10080"}}},"annotations":{"title":"Update events","readOnlyHint":false,"destructiveHint":false,"idempotentHint":true},"title":"Update events"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: true (inferred from the name).","verify":true}],"tokensBefore":274,"tokensAfter":274},{"name":"files_put","fixed":{"name":"files_put","description":"Store a file and get a URL for it — a report, a CSV, a transcript","inputSchema":{"type":"object","required":["name","content"],"properties":{"name":{"type":"string","description":"File name including its extension, e.g. \"report.csv\""},"type":{"type":"string","description":"Optional content type, e.g. \"text/csv\". Guessed from the name when omitted"},"content":{"type":"string","description":"The file's contents — plain text, or base64 when encoding is \"base64\""},"encoding":{"type":"string","description":"\"base64\" for binary files; omit for text"}}},"annotations":{"title":"Store files","readOnlyHint":false,"destructiveHint":false,"idempotentHint":true},"title":"Store files"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: true (inferred from the name).","verify":true}],"tokensBefore":166,"tokensAfter":166},{"name":"flights_status","fixed":{"name":"flights_status","description":"Scheduled, estimated and actual flight arrival/departure times from Aviationstack. Requires a configured provider.","inputSchema":{"type":"object","properties":{"flight":{"type":"string","description":"IATA flight number, e.g. BA117"},"airport":{"type":"string","description":"IATA airport code, e.g. LHR"},"direction":{"type":"string","description":"arrivals or departures (default arrivals)"}}},"annotations":{"title":"Status flights","readOnlyHint":true},"title":"Status flights"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":122,"tokensAfter":122},{"name":"forms_write","fixed":{"name":"forms_write","description":"Create or replace a form. Fields have a unique lowercase name, label, type (text, textarea, email), and required flag. Private by default. Set public to allow anonymous submissions; responses always remain private.","inputSchema":{"type":"object","required":["title","fields"],"properties":{"id":{"type":"string","description":""},"title":{"type":"string","description":""},"closed":{"type":"boolean","description":""},"fields":{"type":"array","description":""},"public":{"type":"boolean","description":""},"description":{"type":"string","description":""}}},"annotations":{"title":"Write forms","readOnlyHint":false,"destructiveHint":false,"idempotentHint":false},"title":"Write forms"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":166,"tokensAfter":166},{"name":"groups_create","fixed":{"name":"groups_create","description":"Create a private group","inputSchema":{"type":"object","required":["name"],"properties":{"name":{"type":"string","description":"Group name"},"encrypted":{"type":"boolean","description":"Require end-to-end encrypted XMPP clients; web chat cannot decrypt these messages"}}},"annotations":{"title":"Create groups","readOnlyHint":false,"destructiveHint":false,"idempotentHint":false},"title":"Create groups"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":87,"tokensAfter":87},{"name":"images_update","fixed":{"name":"images_update","description":"Edit metadata on an image you own","inputSchema":{"type":"object","required":["id"],"properties":{"id":{"type":"string","description":""},"tags":{"type":"array","description":""},"title":{"type":"string","description":""},"description":{"type":"string","description":""}}},"annotations":{"title":"Update images","readOnlyHint":false,"destructiveHint":false,"idempotentHint":true},"title":"Update images"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: true (inferred from the name).","verify":true}],"tokensBefore":87,"tokensAfter":87},{"name":"images_upload","fixed":{"name":"images_upload","description":"Upload a private raster image","inputSchema":{"type":"object","required":["data"],"properties":{"data":{"type":"string","description":"Base64 PNG, JPEG or GIF; at most 512 KB decoded and 8 megapixels; browser uploads support 8 MB"},"description":{"type":"string","description":"Image caption, at most 1000 characters"}}},"annotations":{"title":"Upload images","readOnlyHint":false,"destructiveHint":false,"idempotentHint":false},"title":"Upload images"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":100,"tokensAfter":100},{"name":"mail_info","fixed":{"name":"mail_info","description":"How to reach the caller here: the handle, the email address if this instance has a mail domain, and whether mail from outside can arrive at all. Pass a tag for a separate one (you+tag) — give that out, then read only its messages with mail_inbox(tag)","inputSchema":{"type":"object","properties":{"tag":{"type":"string","description":"A label for this handle, e.g. \"research\" or \"receipts\". Omit for the plain one"}}},"annotations":{"title":"Info mail","readOnlyHint":true},"title":"Info mail"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":127,"tokensAfter":127},{"name":"markets_convert","fixed":{"name":"markets_convert","description":"Convert an amount from one currency to another — 250 GBP in JPY. Uses European Central Bank reference rates, and takes a past date back to 1999. Crypto converts at the live price through the dollar","inputSchema":{"type":"object","required":["from","to"],"properties":{"to":{"type":"string","description":"Currency or asset to convert to, as a code: JPY, USD, ETH…"},"date":{"type":"string","description":"Optional: the rate on a past day, as 2020-01-03. Currencies only, back to 1999"},"from":{"type":"string","description":"Currency or asset to convert from, as a code: GBP, USD, EUR, BTC…"},"amount":{"type":"number","description":"How much to convert. Default 1"}}},"annotations":{"title":"Convert markets","readOnlyHint":true},"title":"Convert markets"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":198,"tokensAfter":198},{"name":"notes_add","fixed":{"name":"notes_add","description":"Write a note under a title, so it is there next conversation. Writing a title that exists rewrites that note","inputSchema":{"type":"object","required":["title","text"],"properties":{"text":{"type":"string","description":"What the note says"},"title":{"type":"string","description":"What the note is called, e.g. \"location\" or \"project brief\". Writing a title that exists rewrites that note"}}},"annotations":{"title":"Add notes","readOnlyHint":false,"destructiveHint":false,"idempotentHint":false},"title":"Add notes"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":121,"tokensAfter":121},{"name":"notify_send","fixed":{"name":"notify_send","description":"Interrupt yourself on your own devices — a phone, a laptop — with the page closed. For the thing that cannot wait until the next time somebody looks. An answer to a question belongs in the thread it was asked in, not here","inputSchema":{"type":"object","required":["title"],"properties":{"url":{"type":"string","description":"Where tapping it goes, e.g. /inbox. A notification you cannot act on trains someone to ignore the next one"},"body":{"type":"string","description":"A second line, up to about 300 characters. Optional"},"title":{"type":"string","description":"The line on the lock screen. Short — this is the whole message on a watch"}}},"annotations":{"title":"Send notify","readOnlyHint":false,"destructiveHint":false,"idempotentHint":false},"title":"Send notify"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":190,"tokensAfter":190},{"name":"shell_run","fixed":{"name":"shell_run","description":"Run a shell command in your account's container sandbox and get back what it wrote. A real shell in a container: pipes, redirection and && all work, the working directory is /work and files there persist between calls. Use it to build, test, run scripts and move files about. A non-zero exit code comes back in the response rather than as an error, so read the output — a failing build is an answer","inputSchema":{"type":"object","required":["command"],"properties":{"dir":{"type":"string","description":"Directory to run it in, under /work. Defaults to /work"},"command":{"type":"string","description":"A shell command to run, e.g. 'go test ./... 2>&1 | tail -40'"},"timeout":{"type":"number","description":"Seconds to allow, up to the instance's maximum. Defaults to 120"}}},"annotations":{"title":"Run shell","readOnlyHint":false,"destructiveHint":false,"idempotentHint":false},"title":"Run shell"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":226,"tokensAfter":226},{"name":"shell_write","fixed":{"name":"shell_write","description":"Put a file in your account's container sandbox, creating any missing directories. The only file operation that is not a shell command, because it is the one a shell is bad at: source is full of quotes and backticks and a heredoc will mangle it. The content arrives as a string and reaches the file without a shell seeing it. To read, list, search or change a file, use the shell — cat, ls, grep and sed are right there","inputSchema":{"type":"object","required":["path","content"],"properties":{"path":{"type":"string","description":"Where to put it, relative to /work — not to the directory your last command left you in. Missing directories are created"},"content":{"type":"string","description":"The whole file. This replaces what was there"}}},"annotations":{"title":"Write shell","readOnlyHint":false,"destructiveHint":false,"idempotentHint":false},"title":"Write shell"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":219,"tokensAfter":219},{"name":"tasks_create","fixed":{"name":"tasks_create","description":"Add a task. Assign it to the agent and it can pick the task up itself","inputSchema":{"type":"object","required":["title"],"properties":{"due":{"type":"string","description":"Optional deadline, RFC3339 or 2006-01-02 15:04"},"title":{"type":"string","description":"What is to be done"},"detail":{"type":"string","description":"Anything the doer needs to know: context, links, constraints"},"assignee":{"type":"string","description":"me (default) or agent — assign to the agent and it can pick the task up"}}},"annotations":{"title":"Create tasks","readOnlyHint":false,"destructiveHint":false,"idempotentHint":false},"title":"Create tasks"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":152,"tokensAfter":152},{"name":"tasks_update","fixed":{"name":"tasks_update","description":"Change a task: its state, or the result of doing it","inputSchema":{"type":"object","required":["id"],"properties":{"id":{"type":"string","description":"The task's id"},"title":{"type":"string","description":"New title"},"detail":{"type":"string","description":"New detail"},"result":{"type":"string","description":"What came of it — the answer, the outcome, what was found"},"status":{"type":"string","description":"todo, doing, done, failed or blocked"}}},"annotations":{"title":"Update tasks","readOnlyHint":false,"destructiveHint":false,"idempotentHint":true},"title":"Update tasks"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: true (inferred from the name).","verify":true}],"tokensBefore":138,"tokensAfter":138},{"name":"text_summarise","fixed":{"name":"text_summarise","description":"Summarise text into a few sentences. Pass style=bullets for a list, or a sentence count. Capped at 30,000 characters","inputSchema":{"type":"object","required":["text"],"properties":{"text":{"type":"string","description":"The text to summarise"},"lines":{"type":"number","description":"Optional: roughly how many sentences or bullets"},"style":{"type":"string","description":"Optional: 'bullets' for a list, otherwise prose"}}},"annotations":{"title":"Summarise text","readOnlyHint":true},"title":"Summarise text"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":130,"tokensAfter":130},{"name":"transit_status","fixed":{"name":"transit_status","description":"Which lines are delayed, part-suspended or closed right now, and why. London only","inputSchema":{"type":"object","properties":{"modes":{"type":"string","description":"Optional: tube, dlr, overground, elizabeth-line, tram — comma separated"}}},"annotations":{"title":"Status transit","readOnlyHint":true},"title":"Status transit"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":79,"tokensAfter":79},{"name":"weather_lookup","fixed":{"name":"weather_lookup","description":"Look up the weather by town or city name","inputSchema":{"type":"object","properties":{"day":{"type":"string","description":"today or tomorrow; empty returns the current multi-day forecast"},"focus":{"type":"string","description":"rain for a rain-focused answer, otherwise a general forecast"},"place":{"type":"string","description":"Town or city to look up"}}},"annotations":{"title":"Lookup weather","readOnlyHint":true},"title":"Lookup weather"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":112,"tokensAfter":112},{"name":"web_fetch","fixed":{"name":"web_fetch","description":"Fetch a web page by URL and return its cleaned readable content, stripping ads, popups and navigation. Needs an account","inputSchema":{"type":"object","required":["url"],"properties":{"url":{"type":"string","description":"The URL to fetch"}}},"annotations":{"title":"Fetch web","readOnlyHint":true},"title":"Fetch web"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":78,"tokensAfter":78}],"toolsChanged":29,"tokensSaved":0,"todo":[{"tool":"apps_buildstatus","params":["id"]},{"tool":"bookmarks_annotate","params":["id"]},{"tool":"chat_sources","params":["limit","offset"]},{"tool":"events_read","params":["id"]},{"tool":"forms_delete","params":["id"]},{"tool":"forms_list","params":["offset"]},{"tool":"forms_read","params":["id"]},{"tool":"forms_responses","params":["id","offset"]},{"tool":"forms_write","params":["id","title","closed","fields","public","description"]},{"tool":"groups_update","params":["id"]},{"tool":"images_delete","params":["id"]},{"tool":"images_get","params":["id"]},{"tool":"images_search","params":["cursor"]},{"tool":"images_share","params":["id"]},{"tool":"images_update","params":["id","tags","title","description"]},{"tool":"mail_sources","params":["limit","offset"]},{"tool":"markets_history","params":["offset"]},{"tool":"sms_sources","params":["limit","offset"]}],"note":"Deterministic fixes. Changes marked verify need a human look before shipping (renames, inferred annotations, inferred types, removed text). Parameter descriptions in `todo` need to be written by someone who knows the API."}