mcp server
mu
News, web search, mail, markets, weather, places, files, calendar, contacts. 67 tools, one endpoint.
Description as published by the maintainer. Source
- version 1.0.0
- active
- retrieval
active — Registry entry last updated 2026-08-03. Dashed tags are derived by ZBS Index from the published description, not stated by the maintainer.
What this server can do
112 functions, named and described by the server itself. Parameter names are shown because they say more about what a function does than its name usually does.
apps_build(prompt)- Build a small app from a description, save it, and return its details and URL. An app is a single page — a tracker, a checklist, a counter — that keeps its own store and runs in the browser Required: prompt.
apps_create(html, icon, name, slug, tags, price, description)- Create an app — a small, self-contained HTML tool hosted here. Takes the HTML; apps_build writes it for you from a description Required: name, html.
apps_edit(html, icon, name, slug, tags, price, description)- Edit an app you own — its name, description, tags, icon, HTML or price. Fields left out keep their value Required: slug.
apps_fork(slug, new_slug)- Fork an app into your own account, to change independently of the original Required: slug.
apps_read(slug)- Read the details of one app by its slug Required: slug.
apps_run(code)- Publish a snippet of JavaScript and get back a URL that runs it in a browser. It returns a link rather than output — the code runs in a sandbox when somebody opens it, not here Required: code.
apps_search(tag, query)- Search the apps directory for small, useful tools, by name, description or tag
apps_test(slug)- Test an app by checking its HTML and running its mu.api calls server-side, so an author finds out what is broken without opening it Required: slug.
blog_create(tags, title, content, private)- 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 Required: content.
blog_delete(id, title)- Delete one of the caller's own blog posts, by id or title. Refuses posts written by anyone else, and refuses an ambiguous title rather than guessing. Irreversible, so confirm with the user first
blog_list(limit)- Read recent blog posts — titles, snippets and ids
blog_read(id, title)- Read one blog post in full, by id or by title. Use after blog_list has found a candidate and the summary is not enough
blog_update(id, tags, title, content)- Edit one of the caller's own posts. Fields left out keep their current value Required: id.
chat_messages(room)- Read the recent conversation in a discussion room
chat_rooms(limit)- List discussion rooms that currently have activity
chat_send(room, content)- Say something in a discussion room, as the caller. Use chat_rooms to find the room id Required: room, content.
contacts_add(name, note, email, phone)- Save someone to the address book. Adding a name already there updates it rather than making a second card Required: name.
contacts_delete(id)- Remove someone from the address book Required: id.
contacts_find(query)- Look someone up in the address book by name, part of a name, or address. Use this before sending mail to a person named rather than addressed Required: query.
contacts_list- List everyone in the caller's address book
docs_delete(id)- Delete one of your documents, by id Required: id.
docs_list(limit, query)- List your documents, most recently changed first, with an optional search over titles and bodies. Use this to find an id
docs_read(id, title)- Read one of your documents in full, by id or by exact title
docs_write(id, title, public, content)- 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 Required: title, content.
email_history(limit)- The emails this account has sent, newest first, and what became of each one — delivered, undelivered, failed, or still going. Asks the carrier about anything still in flight, so it is current when read
email_send(to, body, subject)- Send a real email to an outside address, from this instance's authenticated sending domain. Takes an address, a subject and a body; resolve a name with contacts_find first. It really is delivered — there is no draft state to undo from. To send as your own address on this instance, so a reply comes back to your inbox, use mail_email; for somebody on this instance use mail_send Required: to, subject, body.
email_sender- The address email is sent from, where replies to it go, which addresses this account has proved are its own, and how many messages are left today
email_verify(app, code, mine, address)- Check that somebody can read an email address — the verification a signup form runs. Call it with an address to have a six-digit code emailed there, then again with the code the person typed back: the answer says approved or why not, so a wrong code is an answer rather than an error. Pass app to put your product's name in the message rather than this instance's. Costs one send and counts against the daily email allowance. Pass mine when the address is your own and you want mail from it recognised here Required: address.
events_create(note, when, title, prompt, repeat, minutes)- Schedule a reminder or event at a given time; optionally repeating, and optionally running a prompt through the agent when it fires Required: title, when.
events_delete(id)- Cancel an event by id Required: id.
events_free(to, from, day_end, minutes, day_start)- Find when the caller has nothing booked — open slots of a given length, within working hours
events_list- List the caller's upcoming events and reminders, each with its id
files_delete(id)- Delete a file you own Required: id.
files_get(id)- Read a stored file back by its id Required: id.
files_list- List the caller's stored files, newest first
files_put(name, type, content, encoding)- Store a file and get a URL for it — a report, a CSV, a transcript Required: name, content.
files_share(id, public)- Make a file readable by anyone with its URL, or private again Required: id, public.
flights_airport(code)- Report what is happening at an airport right now: what is on the ground, what is on approach and what is climbing out. Live positions, not the timetable, so it says nothing about scheduled or delayed departures Required: code.
flights_overhead(lat, lon, near, radius)- List the aircraft flying near a location right now, nearest first, with altitude, speed, heading and distance. Live positions broadcast by the aircraft themselves, not a schedule
flights_track(flight)- Find where an aircraft is right now by flight number ('BA117'), radio callsign ('BAW117') or registration ('G-ZBKL'). Only sees aeroplanes that are airborne and in range of a receiver — not finding one does not mean the flight was cancelled Required: flight.
food_hygiene(lat, lon, name, limit, where)- Food hygiene ratings for UK businesses, from the Food Standards Agency inspections. Takes a business name, a town or postcode, or a lat/lon to look around
food_product(barcode)- Look up a packaged food by its barcode — name, brand, ingredients, allergens, nutrition per 100g, Nutri-Score and how processed it is Required: barcode.
food_search(limit, query)- Find packaged foods by name or brand, with the barcode of each so one can then be looked up in full Required: query.
hazards_alerts(lat, lon, level, within_km)- Current disasters worldwide from GDACS — cyclones, floods, volcanoes, wildfires and earthquakes — with an alert level of green, orange or red. Pass lat/lon to ask about somewhere in particular
hazards_quakes(lat, lon, min, period, within_km)- Recent earthquakes worldwide from the USGS, with magnitude, place and how long ago. Pass lat/lon to ask about somewhere in particular, min for a magnitude floor, and period for hour, day, week or month
images_generate(prompt)- Generate an image from a text prompt and return its URL Required: prompt.
images_search(limit, query)- Search the public image library by description and get URLs to reuse. Cheaper than generating: look here first Required: query.
mail_inbox(limit)- List the account's most recent messages — read my mail, check my inbox
mail_info(tag)- 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)
mail_search(limit, query)- Search the account's mail and return matching messages
mail_send(to, body, subject)- Write to somebody, as you. A username reaches them on this instance and is free; a full email address leaves over SMTP under this instance's domain, so a reply comes back to your inbox, and is charged. Resolve a name with contacts_find first. Mail that leaves needs a mail domain configured — without one use email_send, which sends from this instance's own sending domain and expects no reply Required: to, subject, body.
markets_convert(to, date, from, amount)- 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 Required: from, to.
markets_list(category)- Get live prices for cryptocurrencies, stocks, commodities (oil, gold, silver, copper and crops), futures and currencies
news_list(limit, topic)- Read recent news headlines with short summaries, balanced across topics
news_read(id)- Read one news article in full by its id or URL Required: id.
news_search(query)- Search indexed and live news for a topic Required: query.
notes_add(text, title)- Write a note under a title, so it is there next conversation. Writing a title that exists rewrites that note Required: title, text.
notes_delete(title)- Delete one note by title Required: title.
notes_get(title)- Read one note by title. Use it when you know the title; notes_list when you do not Required: title.
notes_list- List every note the caller has written, with its text
places_address(lat, lon)- Name the place at a latitude and longitude — the reverse of places_geocode. Use it whenever you have coordinates and need to say where that is Required: lat, lon.
places_elevation(lat, lon, place)- How high a place is above sea level, in metres and feet. Sampled from a 90-metre global elevation model, so a summit reads a little under its surveyed height
places_geocode(address)- Resolve a place name or address to coordinates
places_nearby(lat, lon, near, query, radius)- List points of interest near a location
places_search(lat, lon, near, query, radius)- Find places by name or category, optionally near a location Required: query.
prayer_qibla(lat, lon)- Get the qibla — the compass bearing to face for Islamic prayer from a location Required: lat, lon.
prayer_reflection- Get today's Islamic reflection — a verse of the Quran with its surah, a saying of the Prophet, and a name of Allah
prayer_saying(book)- Look up a hadith from Sahih al-Bukhari, optionally from a given book
prayer_search(query)- Search the Quran, the hadith and the names of Allah by meaning — ask a question in plain language rather than naming a reference Required: query.
prayer_times(tz, lat, lon, method)- Get today's Islamic prayer times (salah) for a location, and which prayer is next Required: lat, lon.
prayer_verse(verse, chapter)- Look up a chapter of the Quran, or one verse within it, by number. Use prayer_search to ask a question instead of naming a reference Required: chapter.
routes_directions(to, from, mode, to_lat, to_lon, from_lat, from_lon, arrive_by, depart_at)- The turn-by-turn route between two places, with the distance for each instruction. Use ETA instead when only the travel time is wanted — this asks the provider for more and costs more
routes_eta(to, from, mode, to_lat, to_lon, from_lat, from_lon, arrive_by, depart_at)- How long it takes to travel between two places, by road rather than as the crow flies. Can be asked about a future departure, or told when you need to arrive and answer when to leave
routes_nearest(to, from, mode, from_lat, from_lon)- Given a starting point and several destinations, say which is quickest to reach and put them in order. Each destination is a separate routing lookup, so ask about the places you are actually choosing between rather than a long list Required: to.
sms_history(limit)- Read the texts this account has sent and received, newest first. Both directions, which is why it is not called an inbox
sms_number- The number texts are sent from, which numbers are verified as yours, and how many messages are left today
sms_send(to, text)- Text somebody, from this instance's number. Charged per 160-character segment, capped per day, and the recipient can stop it with STOP Required: to, text.
sms_verify(code, number)- Claim a number as your own, so texts arriving from it reach this account. Call it with just the number to have a code texted there, then again with the code Required: number.
social_list(limit)- Read the latest social posts from the network
social_search(limit, query)- Search public posts on this instance by keyword. This is the instance's own feed, not the wider internet — use web_search for that Required: query.
stream_list(limit)- Read recent events from the console timeline
stream_post(content)- Post an entry to the console timeline Required: content.
tasks_create(due, title, detail, assignee)- Add a task. Assign it to the agent and it can pick the task up itself Required: title.
tasks_delete(id)- Remove a task Required: id.
tasks_list(status)- List the caller's tasks, open ones first; optionally filtered by state
tasks_next- The next task assigned to the agent — what to work on now
tasks_update(id, title, detail, result, status)- Change a task: its state, or the result of doing it Required: id.
text_classify(text, labels)- Sort text into one of the labels you give, with a confidence. For routing, triage and moderation. Capped at 30,000 characters Required: text, labels.
text_extract(text, schema)- Turn text into JSON matching a schema you give. Pass the fields you want as a JSON schema or a plain description; returns JSON only. Capped at 30,000 characters Required: text, schema.
text_summarise(text, lines, style)- Summarise text into a few sentences. Pass style=bullets for a list, or a sentence count. Capped at 30,000 characters Required: text.
text_translate(to, text)- Translate text into another language, preserving formatting. Capped at 30,000 characters Required: text, to.
transit_arrivals(stop)- What is due at a stop and when. Takes a stop name or an id. In London this is live from TfL — buses, tube, DLR, Overground and Elizabeth line. Elsewhere it is the published timetable, and says so Required: stop.
transit_nearby(lat, lon, radius)- Bus stops and stations near a point, nearest first, with the id each one is called by. London live from TfL; elsewhere from whichever published timetables this instance has loaded Required: lat, lon.
transit_status(modes)- Which lines are delayed, part-suspended or closed right now, and why. London only
user_block(user)- Block another account, hiding all of their content from the caller's view Required: user.
user_flag- Report a post, comment or message for a human moderator to look at. Does not remove anything itself — use user_hide to hide something from your own view
user_hide- Hide an item so the caller stops seeing it. Affects only this account's view; use user_flag to report something to a moderator instead
user_save- Save an item to the caller's bookmarks so it can be found again. Private to the caller, and reversible with user_unsave
user_saved(limit)- List the items the caller has saved for later, with their links
user_unblock(user)- Stop blocking another account, so their posts and messages reach the caller again. Reverses user_block Required: user.
user_unsave- Remove an item from the caller's bookmarks. Leaves the item itself untouched — this only forgets that it was saved
video_list(limit)- Read the latest videos from curated channels
video_search(query)- Search videos from the channels this instance curates. A curated set rather than all of YouTube, so a miss means it is not followed here, not that it does not exist Required: query.
weather_air(lat, lon)- Air quality at a location right now — AQI, PM2.5, PM10, ozone, nitrogen dioxide, UV index, and pollen where it is counted Required: lat, lon.
weather_forecast(lat, lon)- Get the weather forecast for a location — current conditions and the days ahead Required: lat, lon.
weather_history(end, lat, lon, start)- What the weather actually was at a location between two dates — average high and low, total rainfall and the extremes. Records run a few days behind today Required: lat, lon, start, end.
weather_marine(lat, lon, days)- Sea state at a coastal or offshore point — wave height, period and direction now and for the days ahead, with sea temperature Required: lat, lon.
web_fetch(url)- Fetch a web page by URL and return its cleaned readable content, stripping ads, popups and navigation. Needs an account Required: url.
web_search(limit, query)- Search the web for current information and news Required: query.
whatsapp_history(limit)- Read the WhatsApp messages this account has sent and received, newest first
whatsapp_open(number)- List who can be written to on WhatsApp right now and until when. Check this before promising to follow up later
whatsapp_send(to, text)- Send a WhatsApp message. Only to somebody who has written to this instance in the last 24 hours — WhatsApp's own rule, not this one, and there is no way around it without templates approved in advance Required: to, text.
Last successful function declaration observed on . Source: https://micro.mu/mcp. We list what the server declared; we do not call any of these functions.
Endpoint status observed on . Source: https://micro.mu/mcp.
Signals
These are separate measurements of different things. They are deliberately not combined into one score, because a popularity number that mixes website traffic with saves and stars cannot be checked or acted on.
| Signal | Value | What it measures | Window | Observed | Source |
|---|---|---|---|---|---|
| Latest published version | 1.0.0 | Latest version string the maintainer published to the registry. | as of fetch | Model Context Protocol | |
| Registry record last updated | 2026-08-03 | When the registry record was last updated by its maintainer. | point in time | Model Context Protocol | |
| First listed in the MCP Registry | 2026-08-03 | Date this server was first published to the official MCP Registry. Not a usage or quality measure. | point in time | Model Context Protocol | |
| mcp tools declared | 112 tools | Number of functions the server itself declared when asked to list them. This is what the server offers an agent, not a measure of how well any of them work. | as of probe | micro.mu | |
| mcp endpoint status | ok | The server listed 112 functions when asked. | as of probe | micro.mu |
Where to get it
This record as data
Every field on this page, with its source and observation date, is in the catalog JSON. Fetch the whole kind at once instead of parsing this HTML.
GET /api/v1/entries/mcp_server.json