MCP

Model Context Protocol

Every tool this instance serves, with its parameters and a playground to run it. The inbox comes with them — recall_list, recall_conversation and recall_search read what arrived here, so a client on the other end sees the conversations as well as the capabilities.

Endpoint: POST /mcp — calls carry Authorization: Bearer.

Or no token: a priced tool answers an unauthenticated call with 402 and an x402 challenge. Pay it in USDC on Base and the same request succeeds. No signup. Pricing.

Not connected yet? Connect your agent → · Auth and protocol detail · What calls cost

Not building an agent? The HTTP API serves the same methods as plain GET and POST.

Playground

Pick a tool, fill in parameters, and run it.

Response
Raw JSON-RPC
15 creditsapps_build

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

Draws 15 credits from your balance per call.

ParamTypeDescription
prompt *stringDescription of the app to build, e.g. 'an expense tracker', 'a packing checklist', 'a water intake counter'
{"id":1,"jsonrpc":"2.0","method":"tools/call","params":{"arguments":{"prompt":"prompt"},"name":"apps_build"}}
apps_create

Create an app — a small, self-contained HTML tool hosted here. Takes the HTML; apps_build writes it for you from a description

ParamTypeDescription
name *stringApp name, e.g. "Pomodoro Timer"
html *stringThe app's HTML, inline CSS and JavaScript included, up to 256KB
slugstringURL-friendly id, e.g. pomodoro-timer. Derived from the name if omitted
descriptionstringWhat the app does. Defaults to the name
tagsstringComma-separated tags
iconstringAn SVG icon
pricenumberCredits charged per use, 0 for free, up to 1000
{"id":1,"jsonrpc":"2.0","method":"tools/call","params":{"arguments":{"html":"html","name":"name"},"name":"apps_create"}}
8 creditsapps_edit

Edit an app you own — its name, description, tags, icon, HTML or price. Fields left out keep their value

Draws 8 credits from your balance per call.

ParamTypeDescription
slug *stringThe app's URL slug, e.g. pomodoro-timer
namestringNew name. Left alone if omitted
descriptionstringNew description. Left alone if omitted
tagsstringNew comma-separated tags. Left alone if omitted
htmlstringNew HTML, up to 256KB. Left alone if omitted
iconstringNew SVG icon. Left alone if omitted
pricenumberCredits charged per use, 0 for free, up to 1000
{"id":1,"jsonrpc":"2.0","method":"tools/call","params":{"arguments":{"slug":"slug"},"name":"apps_edit"}}
apps_fork

Fork an app into your own account, to change independently of the original

ParamTypeDescription
slug *stringSlug of the app to fork
new_slugstringSlug for the copy. Generated from the original if omitted
{"id":1,"jsonrpc":"2.0","method":"tools/call","params":{"arguments":{"slug":"slug"},"name":"apps_fork"}}
apps_read

Read the details of one app by its slug

ParamTypeDescription
slug *stringThe app's URL slug, e.g. pomodoro-timer
{"id":1,"jsonrpc":"2.0","method":"tools/call","params":{"arguments":{"slug":"slug"},"name":"apps_read"}}
apps_run

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

ParamTypeDescription
code *stringJavaScript to run in the page. It runs as a module, in a sandbox, with no access to the caller's account
{"id":1,"jsonrpc":"2.0","method":"tools/call","params":{"arguments":{"code":"code"},"name":"apps_run"}}
apps_test

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

ParamTypeDescription
slug *stringThe app's URL slug
{"id":1,"jsonrpc":"2.0","method":"tools/call","params":{"arguments":{"slug":"slug"},"name":"apps_test"}}
archive_list

With a kind, the most recent entries of it. Without one, what kinds are archived and how much of each

ParamTypeDescription
kindstringOne kind: news, video, market, blog, prayer. Omit for a summary of what is here
limitnumberMax entries (default 20, max 100)
{"id":1,"jsonrpc":"2.0","method":"tools/call","params":{"arguments":{},"name":"archive_list"}}
blog_create

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

ParamTypeDescription
content *stringThe post body, at least 50 characters
titlestringPost title. One is generated from the body if omitted
tagsstringComma-separated tags
privatebooleanTrue to keep it to yourself
{"id":1,"jsonrpc":"2.0","method":"tools/call","params":{"arguments":{"content":"content"},"name":"blog_create"}}
blog_delete

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

ParamTypeDescription
idstringThe post's id, as given by blog_list
titlestringThe post's title, or enough of it to be unambiguous. An ambiguous title is refused rather than guessed — deleting the wrong post is not recoverable
{"id":1,"jsonrpc":"2.0","method":"tools/call","params":{"arguments":{},"name":"blog_delete"}}
blog_list

Read recent blog posts — titles, snippets and ids

ParamTypeDescription
limitnumberOptional max number of posts (default all recent)
{"id":1,"jsonrpc":"2.0","method":"tools/call","params":{"arguments":{},"name":"blog_list"}}
blog_read

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

ParamTypeDescription
idstringThe post's id, as given by blog_list
titlestringThe post's title, or enough of it to be unambiguous — use this when you have a name rather than an id
{"id":1,"jsonrpc":"2.0","method":"tools/call","params":{"arguments":{},"name":"blog_read"}}
blog_update

Edit one of the caller's own posts. Fields left out keep their current value

ParamTypeDescription
id *stringThe post's id, as given by blog_list
titlestringNew title. Left alone if omitted
contentstringNew body, at least 50 characters. Left alone if omitted
tagsstringNew comma-separated tags. Left alone if omitted
{"id":1,"jsonrpc":"2.0","method":"tools/call","params":{"arguments":{"id":"id"},"name":"blog_update"}}
chat_messages

Read the recent conversation in a discussion room

ParamTypeDescription
roomstringRoom id, as returned by Rooms
{"id":1,"jsonrpc":"2.0","method":"tools/call","params":{"arguments":{},"name":"chat_messages"}}
chat_rooms

List discussion rooms that currently have activity

ParamTypeDescription
limitnumberHow many rooms to return (default 20)
{"id":1,"jsonrpc":"2.0","method":"tools/call","params":{"arguments":{},"name":"chat_rooms"}}
chat_send

Say something in a discussion room, as the caller. Use chat_rooms to find the room id

ParamTypeDescription
room *stringRoom id, as returned by chat_rooms
content *stringWhat to say
{"id":1,"jsonrpc":"2.0","method":"tools/call","params":{"arguments":{"content":"content","room":"room"},"name":"chat_send"}}
contacts_add

Save someone to the address book. Adding a name already there updates it rather than making a second card

ParamTypeDescription
name *stringThe person's name, e.g. "Sarah Chen"
emailstringTheir email address
phonestringTheir phone number
notestringAnything worth remembering about them
{"id":1,"jsonrpc":"2.0","method":"tools/call","params":{"arguments":{"name":"name"},"name":"contacts_add"}}
contacts_delete

Remove someone from the address book

ParamTypeDescription
id *stringThe contact's id, from contacts_find or contacts_list
{"id":1,"jsonrpc":"2.0","method":"tools/call","params":{"arguments":{"id":"id"},"name":"contacts_delete"}}
contacts_find

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

ParamTypeDescription
query *stringA name, part of a name, or an address
{"id":1,"jsonrpc":"2.0","method":"tools/call","params":{"arguments":{"query":"query"},"name":"contacts_find"}}
contacts_list

List everyone in the caller's address book

{"id":1,"jsonrpc":"2.0","method":"tools/call","params":{"arguments":{},"name":"contacts_list"}}
docs_delete

Delete one of your documents, by id

ParamTypeDescription
id *stringDocument id, from docs_list
{"id":1,"jsonrpc":"2.0","method":"tools/call","params":{"arguments":{"id":"id"},"name":"docs_delete"}}
docs_list

List your documents, most recently changed first, with an optional search over titles and bodies. Use this to find an id

ParamTypeDescription
querystringOptional text to match against titles and bodies
limitnumberMaximum documents to return (default 50)
{"id":1,"jsonrpc":"2.0","method":"tools/call","params":{"arguments":{},"name":"docs_list"}}
docs_read

Read one of your documents in full, by id or by exact title

ParamTypeDescription
idstringDocument id, from docs_list
titlestringExact title, if you do not have the id
{"id":1,"jsonrpc":"2.0","method":"tools/call","params":{"arguments":{},"name":"docs_read"}}
docs_write

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

ParamTypeDescription
title *stringThe document's title
content *stringThe document's body, as markdown
idstringExisting document id to replace. Omit to create a new one
publicbooleanReadable by anyone when true. Private by default
{"id":1,"jsonrpc":"2.0","method":"tools/call","params":{"arguments":{"content":"content","title":"title"},"name":"docs_write"}}
events_create

Schedule a reminder or event at a given time; optionally repeating, and optionally running a prompt through the agent when it fires

ParamTypeDescription
title *stringWhat to be reminded about, e.g. 'Call the dentist'
when *stringWhen to fire, RFC3339 with timezone offset, e.g. 2026-07-22T15:00:00+01:00
notestringOptional extra detail
minutesnumberHow long it lasts in minutes (default 30)
repeatstringHow often it recurs: hourly, daily, weekly or monthly. Omit for once
promptstringOptional instruction to run through the agent when it fires, e.g. "brief me on today's news". The answer is mailed to you
{"id":1,"jsonrpc":"2.0","method":"tools/call","params":{"arguments":{"title":"title","when":"when"},"name":"events_create"}}
events_delete

Cancel an event by id

ParamTypeDescription
id *stringThe event's id, as given by events_list
{"id":1,"jsonrpc":"2.0","method":"tools/call","params":{"arguments":{"id":"id"},"name":"events_delete"}}
events_free

Find when the caller has nothing booked — open slots of a given length, within working hours

ParamTypeDescription
fromstringStart of the window to search, RFC3339, e.g. 2026-08-03T00:00:00+01:00. Defaults to now
tostringEnd of the window, RFC3339. Defaults to a week after from
minutesnumberHow long a slot you need, in minutes (default 30)
day_startnumberEarliest hour of the day to offer, 0-23 (default 9)
day_endnumberLatest hour of the day to offer, 0-23 (default 18)
{"id":1,"jsonrpc":"2.0","method":"tools/call","params":{"arguments":{},"name":"events_free"}}
events_list

List the caller's upcoming events and reminders, each with its id

{"id":1,"jsonrpc":"2.0","method":"tools/call","params":{"arguments":{},"name":"events_list"}}
files_delete

Delete a file you own

ParamTypeDescription
id *stringThe file's id
{"id":1,"jsonrpc":"2.0","method":"tools/call","params":{"arguments":{"id":"id"},"name":"files_delete"}}
files_get

Read a stored file back by its id

ParamTypeDescription
id *stringThe file's id, as returned by files_put or files_list
{"id":1,"jsonrpc":"2.0","method":"tools/call","params":{"arguments":{"id":"id"},"name":"files_get"}}
files_list

List the caller's stored files, newest first

{"id":1,"jsonrpc":"2.0","method":"tools/call","params":{"arguments":{},"name":"files_list"}}
files_put

Store a file and get a URL for it — a report, a CSV, a transcript

ParamTypeDescription
name *stringFile name including its extension, e.g. "report.csv"
content *stringThe file's contents — plain text, or base64 when encoding is "base64"
encodingstring"base64" for binary files; omit for text
typestringOptional content type, e.g. "text/csv". Guessed from the name when omitted
{"id":1,"jsonrpc":"2.0","method":"tools/call","params":{"arguments":{"content":"content","name":"name"},"name":"files_put"}}
files_share

Make a file readable by anyone with its URL, or private again

ParamTypeDescription
id *stringThe file's id
public *booleanTrue to let anyone with the URL read it, false to make it private again
{"id":1,"jsonrpc":"2.0","method":"tools/call","params":{"arguments":{"id":"id","public":"public"},"name":"files_share"}}
flights_airport

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

ParamTypeDescription
code *stringAn airport code or name, e.g. 'LHR', 'EGLL' or 'Heathrow'
{"id":1,"jsonrpc":"2.0","method":"tools/call","params":{"arguments":{"code":"code"},"name":"flights_airport"}}
flights_overhead

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

ParamTypeDescription
nearstringWhere to look: a place name, or an airport name or code, e.g. 'Camden, London' or 'LHR'
latnumberOptional latitude, if the location is already known
lonnumberOptional longitude, if the location is already known
radiusnumberOptional radius in nautical miles (default 30, maximum 250)
{"id":1,"jsonrpc":"2.0","method":"tools/call","params":{"arguments":{},"name":"flights_overhead"}}
flights_track

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

ParamTypeDescription
flight *stringA flight number ('BA117'), a radio callsign ('BAW117'), or an aircraft registration ('G-ZBKL')
{"id":1,"jsonrpc":"2.0","method":"tools/call","params":{"arguments":{"flight":"flight"},"name":"flights_track"}}
food_hygiene

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

ParamTypeDescription
namestringBusiness name, e.g. 'Nandos'
wherestringTown, street or postcode to narrow it to
latnumberOptional: look around this point instead
lonnumberOptional: look around this point instead
limitnumberHow many to return, default 10, max 30
{"id":1,"jsonrpc":"2.0","method":"tools/call","params":{"arguments":{},"name":"food_hygiene"}}
food_product

Look up a packaged food by its barcode — name, brand, ingredients, allergens, nutrition per 100g, Nutri-Score and how processed it is

ParamTypeDescription
barcode *stringThe barcode, 6 to 14 digits, e.g. 5000168034928
{"id":1,"jsonrpc":"2.0","method":"tools/call","params":{"arguments":{"barcode":"barcode"},"name":"food_product"}}
hazards_alerts

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

ParamTypeDescription
levelstringLowest level to include: green, orange or red — default green (everything)
latnumberOptional: only alerts near this point
lonnumberOptional: only alerts near this point
within_kmnumberOptional: how near, in kilometres, default 1000 when lat/lon given
{"id":1,"jsonrpc":"2.0","method":"tools/call","params":{"arguments":{},"name":"hazards_alerts"}}
hazards_floods

Flood warnings and alerts in force in England, most severe first, from the Environment Agency. The one hazard here that is a forecast rather than a record — a warning says flooding is expected, which is something you can act on. Optionally near a point. England only, and the answer says so

ParamTypeDescription
latnumberOptional: only warnings near this point
lonnumberOptional: only warnings near this point
within_kmnumberOptional: how near, in kilometres, default 30 when a point is given
severebooleanOnly warnings and severe warnings — leave out the be-prepared alerts
{"id":1,"jsonrpc":"2.0","method":"tools/call","params":{"arguments":{},"name":"hazards_floods"}}
hazards_quakes

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

ParamTypeDescription
minnumberSmallest magnitude to include, default 2.5
periodstringhour, day, week or month — default day
latnumberOptional: only events near this point
lonnumberOptional: only events near this point
within_kmnumberOptional: how near, in kilometres, default 500 when lat/lon given
{"id":1,"jsonrpc":"2.0","method":"tools/call","params":{"arguments":{},"name":"hazards_quakes"}}
15 creditsimages_generate

Generate an image from a text prompt and return its URL

Draws 15 credits from your balance per call.

ParamTypeDescription
prompt *stringWhat the image should depict
{"id":1,"jsonrpc":"2.0","method":"tools/call","params":{"arguments":{"prompt":"prompt"},"name":"images_generate"}}
mail_inbox

List the account's most recent messages — read my mail, check my inbox

ParamTypeDescription
limitnumberMax messages (default 10)
{"id":1,"jsonrpc":"2.0","method":"tools/call","params":{"arguments":{},"name":"mail_inbox"}}
mail_info

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)

ParamTypeDescription
tagstringA label for this handle, e.g. "research" or "receipts". Omit for the plain one
{"id":1,"jsonrpc":"2.0","method":"tools/call","params":{"arguments":{},"name":"mail_info"}}
mail_send

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 MAIL_DOMAIN configured on the instance

ParamTypeDescription
to *stringRecipient: a username on this instance, or a full email address. Resolve a name with contacts_find first
subject *stringMessage subject
body *stringMessage body, plain text
{"id":1,"jsonrpc":"2.0","method":"tools/call","params":{"arguments":{"body":"body","subject":"subject","to":"to"},"name":"mail_send"}}
markets_convert

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

ParamTypeDescription
amountnumberHow much to convert. Default 1
from *stringCurrency or asset to convert from, as a code: GBP, USD, EUR, BTC…
to *stringCurrency or asset to convert to, as a code: JPY, USD, ETH…
datestringOptional: the rate on a past day, as 2020-01-03. Currencies only, back to 1999
{"id":1,"jsonrpc":"2.0","method":"tools/call","params":{"arguments":{"from":"from","to":"to"},"name":"markets_convert"}}
markets_list

Get live prices for cryptocurrencies, stocks, commodities (oil, gold, silver, copper and crops), futures and currencies

ParamTypeDescription
categorystringcrypto (BTC, ETH, SOL…), stocks, commodities (OIL, GOLD, SILVER, COPPER, COFFEE, WHEAT, CORN, SOYBEANS, OATS), futures (the metals and oil alone) or currencies (EUR, GBP, JPY…). Default crypto
{"id":1,"jsonrpc":"2.0","method":"tools/call","params":{"arguments":{},"name":"markets_list"}}
news_list

Read recent news headlines with short summaries, balanced across topics

ParamTypeDescription
topicstringOptional topic/category filter (e.g. tech, world, business)
limitnumberOptional max number of headlines (default 30)
{"id":1,"jsonrpc":"2.0","method":"tools/call","params":{"arguments":{},"name":"news_list"}}
news_read

Read one news article in full by its id or URL

ParamTypeDescription
id *stringArticle id (from Headlines) or article URL
{"id":1,"jsonrpc":"2.0","method":"tools/call","params":{"arguments":{"id":"id"},"name":"news_read"}}
notes_add

Write a note under a title, so it is there next conversation. Writing a title that exists rewrites that note

ParamTypeDescription
title *stringWhat the note is called, e.g. "location" or "project brief". Writing a title that exists rewrites that note
text *stringWhat the note says
{"id":1,"jsonrpc":"2.0","method":"tools/call","params":{"arguments":{"text":"text","title":"title"},"name":"notes_add"}}
notes_delete

Delete one note by title

ParamTypeDescription
title *stringThe note to delete, as returned by notes_list
{"id":1,"jsonrpc":"2.0","method":"tools/call","params":{"arguments":{"title":"title"},"name":"notes_delete"}}
notes_get

Read one note by title. Use it when you know the title; notes_list when you do not

ParamTypeDescription
title *stringThe note's title, as given to notes_add
{"id":1,"jsonrpc":"2.0","method":"tools/call","params":{"arguments":{"title":"title"},"name":"notes_get"}}
notes_list

List every note the caller has written, with its text

{"id":1,"jsonrpc":"2.0","method":"tools/call","params":{"arguments":{},"name":"notes_list"}}
places_address

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

ParamTypeDescription
lat *numberLatitude, e.g. 51.5308
lon *numberLongitude, e.g. -0.1238
{"id":1,"jsonrpc":"2.0","method":"tools/call","params":{"arguments":{"lat":1,"lon":1},"name":"places_address"}}
places_elevation

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

ParamTypeDescription
placestringA place name or address, e.g. 'Denver' or 'Ben Nevis'
latnumberOptional latitude, if the location is already known
lonnumberOptional longitude, if the location is already known
{"id":1,"jsonrpc":"2.0","method":"tools/call","params":{"arguments":{},"name":"places_elevation"}}
places_geocode

Resolve a place name or address to coordinates

ParamTypeDescription
addressstringA place name or address to locate
{"id":1,"jsonrpc":"2.0","method":"tools/call","params":{"arguments":{},"name":"places_geocode"}}
4 creditsplaces_nearby

List points of interest near a location

Draws 4 credits from your balance per call.

ParamTypeDescription
nearstringPlace to look around, e.g. 'Camden, London' (or give lat/lon)
latnumberOptional latitude
lonnumberOptional longitude
querystringOptional keyword to filter by, e.g. 'cafe'
radiusnumberOptional radius in metres (default 1000)
{"id":1,"jsonrpc":"2.0","method":"tools/call","params":{"arguments":{},"name":"places_nearby"}}
prayer_qibla

Get the qibla — the compass bearing to face for Islamic prayer from a location

ParamTypeDescription
lat *numberLatitude of the location
lon *numberLongitude of the location
{"id":1,"jsonrpc":"2.0","method":"tools/call","params":{"arguments":{"lat":1,"lon":1},"name":"prayer_qibla"}}
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

{"id":1,"jsonrpc":"2.0","method":"tools/call","params":{"arguments":{},"name":"prayer_reflection"}}
prayer_saying

Look up a hadith from Sahih al-Bukhari, optionally from a given book

ParamTypeDescription
booknumberBook number within Sahih al-Bukhari. Omit for a saying from any book
{"id":1,"jsonrpc":"2.0","method":"tools/call","params":{"arguments":{},"name":"prayer_saying"}}
prayer_times

Get today's Islamic prayer times (salah) for a location, and which prayer is next

ParamTypeDescription
lat *numberLatitude of the location
lon *numberLongitude of the location
tzstringIANA timezone of the location, e.g. Europe/London (defaults to UTC)
methodstringCalculation convention: isna, mwl, egypt, karachi, gulf, diyanet, muis or jakim (defaults to isna)
{"id":1,"jsonrpc":"2.0","method":"tools/call","params":{"arguments":{"lat":1,"lon":1},"name":"prayer_times"}}
prayer_verse

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

ParamTypeDescription
chapter *numberChapter (surah) number, 1-114
versenumberVerse number within the chapter. Omit for the whole chapter
{"id":1,"jsonrpc":"2.0","method":"tools/call","params":{"arguments":{"chapter":1},"name":"prayer_verse"}}
recall_conversation

Read one whole conversation back by id, as recall_search and recall_list report it

ParamTypeDescription
id *stringThe conversation's id, as recall_search reports it
limitnumberMax messages, most recent kept (default 50)
{"id":1,"jsonrpc":"2.0","method":"tools/call","params":{"arguments":{"id":"id"},"name":"recall_conversation"}}
recall_list

List the caller's conversations, most recently active first, with what each is about and where it happened

ParamTypeDescription
clientstringOnly conversations on one client: web, mail, cli
limitnumberMax conversations (default 20)
{"id":1,"jsonrpc":"2.0","method":"tools/call","params":{"arguments":{},"name":"recall_list"}}
3 creditsroutes_directions

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

Draws 3 credits from your balance per call.

ParamTypeDescription
fromstringWhere the journey starts, e.g. 'King's Cross, London' (or give from_lat/from_lon)
tostringWhere the journey ends, e.g. 'Heathrow Airport'
from_latnumberOptional start latitude, if already known
from_lonnumberOptional start longitude, if already known
to_latnumberOptional end latitude, if already known
to_lonnumberOptional end longitude, if already known
modestringHow to travel: drive (default), walk, cycle or transit
depart_atstringWhen the journey starts, as RFC3339. Defaults to now
arrive_bystringBe there by this time, as RFC3339. Cannot be combined with depart_at
{"id":1,"jsonrpc":"2.0","method":"tools/call","params":{"arguments":{},"name":"routes_directions"}}
2 creditsroutes_eta

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

Draws 2 credits from your balance per call.

ParamTypeDescription
fromstringWhere the journey starts, e.g. 'King's Cross, London' (or give from_lat/from_lon)
tostringWhere the journey ends, e.g. 'Heathrow Airport'
from_latnumberOptional start latitude, if already known
from_lonnumberOptional start longitude, if already known
to_latnumberOptional end latitude, if already known
to_lonnumberOptional end longitude, if already known
modestringHow to travel: drive (default), walk, cycle or transit
depart_atstringWhen the journey starts, as RFC3339 (e.g. 2026-08-13T08:00:00Z). Defaults to now. Traffic and timetables are read for this time
arrive_bystringBe there by this time, as RFC3339. Answers when to leave. Cannot be combined with depart_at
{"id":1,"jsonrpc":"2.0","method":"tools/call","params":{"arguments":{},"name":"routes_eta"}}
2 creditsroutes_nearest

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

Draws 2 credits from your balance per call.

ParamTypeDescription
fromstringWhere you are starting from, e.g. 'Shoreditch, London' (or give from_lat/from_lon)
from_latnumberOptional start latitude, if already known
from_lonnumberOptional start longitude, if already known
to *arrayThe places to compare, e.g. ['Heathrow', 'Gatwick', 'Stansted']
modestringHow to travel: drive (default), walk, cycle or transit
{"id":1,"jsonrpc":"2.0","method":"tools/call","params":{"arguments":{"to":"to"},"name":"routes_nearest"}}
sms_history

Read the texts this account has sent and received, newest first. Both directions, which is why it is not called an inbox

ParamTypeDescription
limitnumberHow many messages to return, newest first (default 50, max 200)
{"id":1,"jsonrpc":"2.0","method":"tools/call","params":{"arguments":{},"name":"sms_history"}}
sms_number

The number texts are sent from, which numbers are verified as yours, and how many messages are left today

{"id":1,"jsonrpc":"2.0","method":"tools/call","params":{"arguments":{},"name":"sms_number"}}
sms_send

Text somebody, from this instance's number. Charged per 160-character segment, capped per day, and the recipient can stop it with STOP

ParamTypeDescription
to *stringThe number to text, in international format, e.g. +447700900123. Use contacts_find to turn a name into one
text *stringWhat to say. Charged per 160-character segment, so brevity is not only good manners
{"id":1,"jsonrpc":"2.0","method":"tools/call","params":{"arguments":{"text":"text","to":"to"},"name":"sms_send"}}
sms_verify

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

ParamTypeDescription
number *stringYour own number, in international format
codestringThe code that was texted to that number. Omit to have one sent
{"id":1,"jsonrpc":"2.0","method":"tools/call","params":{"arguments":{"number":"number"},"name":"sms_verify"}}
social_list

Read the latest social posts from the network

ParamTypeDescription
limitnumberOptional max number of posts (default all recent)
{"id":1,"jsonrpc":"2.0","method":"tools/call","params":{"arguments":{},"name":"social_list"}}
stream_list

Read what has happened here recently

ParamTypeDescription
limitnumberHow many entries to return (default 20, max 100)
{"id":1,"jsonrpc":"2.0","method":"tools/call","params":{"arguments":{},"name":"stream_list"}}
tasks_create

Add a task. Assign it to the agent and it can pick the task up itself

ParamTypeDescription
title *stringWhat is to be done
detailstringAnything the doer needs to know: context, links, constraints
assigneestringme (default) or agent — assign to the agent and it can pick the task up
duestringOptional deadline, RFC3339 or 2006-01-02 15:04
{"id":1,"jsonrpc":"2.0","method":"tools/call","params":{"arguments":{"title":"title"},"name":"tasks_create"}}
tasks_delete

Remove a task

ParamTypeDescription
id *stringThe task's id
{"id":1,"jsonrpc":"2.0","method":"tools/call","params":{"arguments":{"id":"id"},"name":"tasks_delete"}}
tasks_list

List the caller's tasks, open ones first; optionally filtered by state

ParamTypeDescription
statusstringOptional filter: todo, doing or done
{"id":1,"jsonrpc":"2.0","method":"tools/call","params":{"arguments":{},"name":"tasks_list"}}
tasks_next

The next task assigned to the agent — what to work on now

{"id":1,"jsonrpc":"2.0","method":"tools/call","params":{"arguments":{},"name":"tasks_next"}}
tasks_update

Change a task: its state, or the result of doing it

ParamTypeDescription
id *stringThe task's id
titlestringNew title
detailstringNew detail
statusstringtodo, doing or done
resultstringWhat came of it — the answer, the outcome, what was found
{"id":1,"jsonrpc":"2.0","method":"tools/call","params":{"arguments":{"id":"id"},"name":"tasks_update"}}
1 credittext_classify

Sort text into one of the labels you give, with a confidence. For routing, triage and moderation. Capped at 30,000 characters

Draws 1 credit from your balance per call.

ParamTypeDescription
text *stringThe text to sort
labels *stringComma-separated labels to choose between
{"id":1,"jsonrpc":"2.0","method":"tools/call","params":{"arguments":{"labels":"labels","text":"text"},"name":"text_classify"}}
5 creditstext_extract

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

Draws 5 credits from your balance per call.

ParamTypeDescription
text *stringThe text to read
schema *stringA JSON schema, or a plain description of the fields wanted
{"id":1,"jsonrpc":"2.0","method":"tools/call","params":{"arguments":{"schema":"schema","text":"text"},"name":"text_extract"}}
2 creditstext_summarise

Summarise text into a few sentences. Pass style=bullets for a list, or a sentence count. Capped at 30,000 characters

Draws 2 credits from your balance per call.

ParamTypeDescription
text *stringThe text to summarise
stylestringOptional: 'bullets' for a list, otherwise prose
linesnumberOptional: roughly how many sentences or bullets
{"id":1,"jsonrpc":"2.0","method":"tools/call","params":{"arguments":{"text":"text"},"name":"text_summarise"}}
3 creditstext_translate

Translate text into another language, preserving formatting. Capped at 30,000 characters

Draws 3 credits from your balance per call.

ParamTypeDescription
text *stringThe text to translate
to *stringTarget language, e.g. 'French' or 'ar'
{"id":1,"jsonrpc":"2.0","method":"tools/call","params":{"arguments":{"text":"text","to":"to"},"name":"text_translate"}}
tiles_area

Every tile covering a bounding box at a zoom level, as URLs, row by row from the north-west, and how many are already held. What to ask for when you want the map around a place rather than one numbered tile

ParamTypeDescription
northnumberNorthern edge, in degrees latitude
southnumberSouthern edge
eastnumberEastern edge, in degrees longitude
westnumberWestern edge
zoomnumberZoom level, 0 to 20
stylestringroad, outdoor or light
{"id":1,"jsonrpc":"2.0","method":"tools/call","params":{"arguments":{},"name":"tiles_area"}}
tiles_tile

The URL for one map tile, by zoom, column and row. Styles: road, outdoor (rights of way and contours), light (a quiet basemap to draw on). Free. Britain only

ParamTypeDescription
znumberZoom level, 0 to 20
xnumberTile column at that zoom
ynumberTile row at that zoom
stylestringroad, outdoor or light — outdoor has rights of way and contours
{"id":1,"jsonrpc":"2.0","method":"tools/call","params":{"arguments":{},"name":"tiles_tile"}}
transit_arrivals

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

ParamTypeDescription
stop *stringStop name or id, e.g. 'Oxford Circus' or 940GZZLUOXC
{"id":1,"jsonrpc":"2.0","method":"tools/call","params":{"arguments":{"stop":"stop"},"name":"transit_arrivals"}}
transit_buses

Where the buses actually are near a point right now — line, where each is heading and how far away, nearest first. England, from the Bus Open Data Service. This is position rather than prediction: it says what is moving, not when it reaches you

ParamTypeDescription
latnumberLatitude of the point to look around
lonnumberLongitude of the point
within_kmnumberHow far to look, in kilometres — default 2, most 25
limitnumberHow many to list, default 10
{"id":1,"jsonrpc":"2.0","method":"tools/call","params":{"arguments":{},"name":"transit_buses"}}
transit_feeds

Which published timetables this instance carries, and which others it could — with the size of each, so an operator can see what switching one on costs. Also names the feeds that look right but whose timetables have run out

ParamTypeDescription
countrystringOptional two-letter code to narrow the list: GB, US, ES…
{"id":1,"jsonrpc":"2.0","method":"tools/call","params":{"arguments":{},"name":"transit_feeds"}}
transit_nearby

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

ParamTypeDescription
lat *numberLatitude
lon *numberLongitude
radiusnumberMetres to search, default 400, max 2000
{"id":1,"jsonrpc":"2.0","method":"tools/call","params":{"arguments":{"lat":1,"lon":1},"name":"transit_nearby"}}
transit_status

Which lines are delayed, part-suspended or closed right now, and why. London only

ParamTypeDescription
modesstringOptional: tube, dlr, overground, elizabeth-line, tram — comma separated
{"id":1,"jsonrpc":"2.0","method":"tools/call","params":{"arguments":{},"name":"transit_status"}}
transit_trains

The live departure or arrival board at a British station, by its three-letter code — KGX, MAN, EDB. Scheduled and expected time, platform, operator and where it is going, plus any disruption notice. From National Rail

ParamTypeDescription
stationstringThree-letter station code — KGX, MAN, EDB
rowsnumberHow many services, 1 to 20, default 10
arrivalsbooleanShow what is coming in rather than what is leaving
{"id":1,"jsonrpc":"2.0","method":"tools/call","params":{"arguments":{},"name":"transit_trains"}}
video_list

Read the latest videos from curated channels

ParamTypeDescription
limitnumberOptional max number of videos (default all recent)
{"id":1,"jsonrpc":"2.0","method":"tools/call","params":{"arguments":{},"name":"video_list"}}
wallet_address

Your own address on Base, to receive USDC. Created the first time you ask. Funds sent on any other chain land at the same address there and cannot be reached from here

{"id":1,"jsonrpc":"2.0","method":"tools/call","params":{"arguments":{},"name":"wallet_address"}}
wallet_balance

What your wallet holds in USDC on Base. Says so plainly when the chain could not be reached, because that is not the same as holding nothing

{"id":1,"jsonrpc":"2.0","method":"tools/call","params":{"arguments":{},"name":"wallet_balance"}}
wallet_list

Which priced servers this wallet is allowed to pay, by name. Pass one of these names to wallet_pay

{"id":1,"jsonrpc":"2.0","method":"tools/call","params":{"arguments":{},"name":"wallet_list"}}
wallet_pay

Call a tool on one of those servers and pay for it from your wallet if it asks. Nothing is spent when the tool is free. Every payment is capped per call and per day, so a server cannot name any price it likes

ParamTypeDescription
serverstringWhich server to call, by the name wallet_list gives. Defaults to this instance
tool *stringThe tool to call on that server, e.g. web_search
argsobjectArguments for that tool
{"id":1,"jsonrpc":"2.0","method":"tools/call","params":{"arguments":{"tool":"tool"},"name":"wallet_pay"}}
weather_air

Air quality at a location right now — AQI, PM2.5, PM10, ozone, nitrogen dioxide, UV index, and pollen where it is counted

ParamTypeDescription
lat *numberLatitude of the location
lon *numberLongitude of the location
{"id":1,"jsonrpc":"2.0","method":"tools/call","params":{"arguments":{"lat":1,"lon":1},"name":"weather_air"}}
1 creditweather_forecast

Get the weather forecast for a location — current conditions and the days ahead

Draws 1 credit from your balance per call.

ParamTypeDescription
lat *numberLatitude of the location
lon *numberLongitude of the location
{"id":1,"jsonrpc":"2.0","method":"tools/call","params":{"arguments":{"lat":1,"lon":1},"name":"weather_forecast"}}
weather_history

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

ParamTypeDescription
lat *numberLatitude of the location
lon *numberLongitude of the location
start *stringFirst day, as 2025-08-01
end *stringLast day, as 2025-08-31
{"id":1,"jsonrpc":"2.0","method":"tools/call","params":{"arguments":{"end":"end","lat":1,"lon":1,"start":"start"},"name":"weather_history"}}
weather_marine

Sea state at a coastal or offshore point — wave height, period and direction now and for the days ahead, with sea temperature

ParamTypeDescription
lat *numberLatitude of a coastal or offshore point
lon *numberLongitude of a coastal or offshore point
daysnumberHow many days ahead, 1 to 7 — default 3
{"id":1,"jsonrpc":"2.0","method":"tools/call","params":{"arguments":{"lat":1,"lon":1},"name":"weather_marine"}}
web_fetch

Fetch a web page by URL and return its cleaned readable content, stripping ads, popups and navigation. Needs an account

ParamTypeDescription
url *stringThe URL to fetch
{"id":1,"jsonrpc":"2.0","method":"tools/call","params":{"arguments":{"url":"url"},"name":"web_fetch"}}