API

API

The same services as the MCP server, over plain HTTP. Every tool is callable via POST /mcp; some also have a dedicated REST path. Metered tools show their per-call price below.

Authentication: Authorization: Bearer YOUR_TOKENGet a token, or pay per call with x402.

Playground

Try the dedicated REST endpoints below. Every tool (see the full reference underneath) is also callable via the MCP playground.

$0.01 / callGET /session

Get the current authenticated user's identity, account ID, and admin status

curl -H 'Authorization: Bearer $TOKEN' -X GET /session
$0.05 / callPOST /chat

Chat with AI assistant

ParamTypeDescription
prompt *stringThe message to send to the AI
curl -H 'Authorization: Bearer $TOKEN' -X POST /chat
$0.01 / callGET /news

Read the latest news feed

curl -H 'Authorization: Bearer $TOKEN' -X GET /news
$0.01 / callGET /blog/post

Read a specific blog post by ID

ParamTypeDescription
id *stringThe blog post ID
curl -H 'Authorization: Bearer $TOKEN' -X GET /blog/post
$0.01 / callPOST /blog/post

Create a new blog post

ParamTypeDescription
titlestringPost title
content *stringPost content (minimum 50 characters)
curl -H 'Authorization: Bearer $TOKEN' -X POST /blog/post
$0.01 / callPATCH /blog/post

Update an existing blog post (author only)

ParamTypeDescription
id *stringThe blog post ID to update
titlestringNew post title
contentstringNew post content (minimum 50 characters)
curl -H 'Authorization: Bearer $TOKEN' -X PATCH /blog/post
$0.01 / callDELETE /blog/post

Delete a blog post (author only)

ParamTypeDescription
id *stringThe blog post ID to delete
curl -H 'Authorization: Bearer $TOKEN' -X DELETE /blog/post
$0.01 / callGET /mail

Read mail inbox

curl -H 'Authorization: Bearer $TOKEN' -X GET /mail
$0.04 / callPOST /mail

Send a mail message

ParamTypeDescription
to *stringRecipient username or email
subject *stringMessage subject
body *stringMessage body
curl -H 'Authorization: Bearer $TOKEN' -X POST /mail
$0.01 / callGET /wallet

Get wallet credit balance

ParamTypeDescription
balancestringSet to 1 to get balance
curl -H 'Authorization: Bearer $TOKEN' -X GET /wallet
$0.01 / callPOST /wallet/transfer

Transfer credits to another user by username

ParamTypeDescription
to *stringRecipient username
amount *numberNumber of credits to transfer
curl -H 'Authorization: Bearer $TOKEN' -X POST /wallet/transfer
$0.01 / callGET /wallet/topup

Get available wallet topup payment methods with crypto deposit address and card payment tiers

curl -H 'Authorization: Bearer $TOKEN' -X GET /wallet/topup
$0.01 / callGET /stream

Read the platform event stream — user messages, agent responses, system events (markets, news, reminders)

curl -H 'Authorization: Bearer $TOKEN' -X GET /stream
$0.01 / callPOST /stream

Post a message to the stream. Mention @micro to get an AI response. Costs 1 credit.

ParamTypeDescription
content *stringMessage text (max 1024 chars). Use @micro to invoke the AI agent.
curl -H 'Authorization: Bearer $TOKEN' -X POST /stream
$0.01 / callPOST /app/flag

Flag content for moderation

ParamTypeDescription
type *stringContent type (e.g. post, work, app)
id *stringContent ID
curl -H 'Authorization: Bearer $TOKEN' -X POST /app/flag
$0.01 / callPOST /app/save

Bookmark content for later

ParamTypeDescription
type *stringContent type (e.g. post, work, app)
id *stringContent ID
curl -H 'Authorization: Bearer $TOKEN' -X POST /app/save
$0.01 / callPOST /app/unsave

Remove a saved bookmark

ParamTypeDescription
type *stringContent type
id *stringContent ID
curl -H 'Authorization: Bearer $TOKEN' -X POST /app/unsave
$0.01 / callPOST /app/dismiss

Hide content from your view

ParamTypeDescription
type *stringContent type
id *stringContent ID
curl -H 'Authorization: Bearer $TOKEN' -X POST /app/dismiss
$0.01 / callPOST /app/block

Block a user — hides all their content from your view

ParamTypeDescription
user *stringUser ID to block
curl -H 'Authorization: Bearer $TOKEN' -X POST /app/block
$0.01 / callPOST /app/unblock

Unblock a previously blocked user

ParamTypeDescription
user *stringUser ID to unblock
curl -H 'Authorization: Bearer $TOKEN' -X POST /app/unblock
$0.02 / callPOST /places/nearby

Find all places of interest near a given location

ParamTypeDescription
addressstringAddress or postcode to search near
latnumberLatitude of the search location
lonnumberLongitude of the search location
radiusnumberSearch radius in metres, 100–5000 (default 500)
curl -H 'Authorization: Bearer $TOKEN' -X POST /places/nearby
$0.01 / callreminder

Get today's daily Islamic reminder with verse, hadith, and name of Allah

curl -X POST /mcp -H 'Content-Type: application/json' \
  -d '{"id":1,"jsonrpc":"2.0","method":"tools/call","params":{"arguments":{},"name":"reminder"}}'
$0.01 / callquran

Look up a Quran chapter or verse. Pass chapter number (1-114) and optionally a verse number.

ParamTypeDescription
chapter *numberChapter number (1-114)
versenumberVerse number (optional, returns full chapter if omitted)
curl -X POST /mcp -H 'Content-Type: application/json' \
  -d '{"id":1,"jsonrpc":"2.0","method":"tools/call","params":{"arguments":{"chapter":1},"name":"quran"}}'
$0.01 / callhadith

Look up hadith from Sahih Al Bukhari. Pass a book number to get hadiths from that book.

ParamTypeDescription
booknumberBook number
curl -X POST /mcp -H 'Content-Type: application/json' \
  -d '{"id":1,"jsonrpc":"2.0","method":"tools/call","params":{"arguments":{},"name":"hadith"}}'
$0.01 / callsignup

Create a new account and return a session token. When invite-only mode is enabled, a valid invite code is required.

ParamTypeDescription
id *stringUsername (4-24 chars, lowercase, starts with letter)
secret *stringPassword (minimum 6 characters)
namestringDisplay name (optional, defaults to username)
invitestringInvite code (required when instance is invite-only)
curl -X POST /mcp -H 'Content-Type: application/json' \
  -d '{"id":1,"jsonrpc":"2.0","method":"tools/call","params":{"arguments":{"id":"id","secret":"secret"},"name":"signup"}}'
$0.01 / calllogin

Log in and return a session token for use in Authorization header

ParamTypeDescription
id *stringUsername
secret *stringPassword
curl -X POST /mcp -H 'Content-Type: application/json' \
  -d '{"id":1,"jsonrpc":"2.0","method":"tools/call","params":{"arguments":{"id":"id","secret":"secret"},"name":"login"}}'
$0.03 / callGET /web/fetch

Fetch a web page and return its cleaned readable content (strips ads, popups, navigation)

ParamTypeDescription
url *stringThe URL to fetch
curl -H 'Authorization: Bearer $TOKEN' -X GET /web/fetch
$0.01 / callnews_headlines

Get recent news headlines with short summaries balanced across all topics (not dominated by one topic like crypto). Use for general news and briefing requests, then news_read for any article worth expanding.

ParamTypeDescription
topicstringOptional topic/category filter (e.g. tech, world, business)
limitstringOptional max number of headlines (default 30)
curl -X POST /mcp -H 'Content-Type: application/json' \
  -d '{"id":1,"jsonrpc":"2.0","method":"tools/call","params":{"arguments":{},"name":"news_headlines"}}'
$0.01 / callnews_read

Read one news article in full (title, source, summary and body) by its id from news_headlines, or by article URL.

ParamTypeDescription
id *stringArticle id (from news_headlines) or article URL
curl -X POST /mcp -H 'Content-Type: application/json' \
  -d '{"id":1,"jsonrpc":"2.0","method":"tools/call","params":{"arguments":{"id":"id"},"name":"news_read"}}'
$0.01 / callrecall

Search across everything mu knows — indexed news, blog, social and video, plus the user's own mail — and return the most relevant items with ids. Use for 'do you remember', 'what did I get about X', 'search my stuff' and cross-source lookups.

ParamTypeDescription
query *stringWhat to look for
limitstringOptional max results (default 12)
curl -X POST /mcp -H 'Content-Type: application/json' \
  -d '{"id":1,"jsonrpc":"2.0","method":"tools/call","params":{"arguments":{"query":"query"},"name":"recall"}}'
$0.01 / callPOST /db

Store a record in your database (a named collection). Private by default; set public=true to share it. Pass an id to update a record you own.

ParamTypeDescription
collection *stringCollection name (e.g. notes, tasks)
data *objectThe record's fields as a JSON object
publicbooleanShare the record publicly (default false)
idstringExisting record id to update (optional)
curl -H 'Authorization: Bearer $TOKEN' -X POST /db
$0.01 / calldb_get

Get one record by id from a collection (must be yours, or public).

ParamTypeDescription
collection *stringCollection name
id *stringRecord id
curl -X POST /mcp -H 'Content-Type: application/json' \
  -d '{"id":1,"jsonrpc":"2.0","method":"tools/call","params":{"arguments":{"collection":"collection","id":"id"},"name":"db_get"}}'
$0.01 / calldb_list

List records in a collection. scope: 'mine' (default), 'public', or 'all' (mine + public). Optional where filter, sort field and limit.

ParamTypeDescription
collection *stringCollection name
scopestringmine | public | all (default mine)
whereobjectFilter on data fields, e.g. {"done":false,"priority":{"gte":2}}
sortstringData field to sort by
orderstringasc | desc (default desc)
limitnumberMax records (default 50, max 200)
curl -X POST /mcp -H 'Content-Type: application/json' \
  -d '{"id":1,"jsonrpc":"2.0","method":"tools/call","params":{"arguments":{"collection":"collection"},"name":"db_list"}}'
$0.01 / calldb_del

Delete a record you own by id.

ParamTypeDescription
collection *stringCollection name
id *stringRecord id
curl -X POST /mcp -H 'Content-Type: application/json' \
  -d '{"id":1,"jsonrpc":"2.0","method":"tools/call","params":{"arguments":{"collection":"collection","id":"id"},"name":"db_del"}}'
$0.01 / callmarkets

Get live market prices for cryptocurrencies, futures, commodities and currencies.

ParamTypeDescription
categorystringcrypto, futures, commodities or currencies (default crypto)
curl -X POST /mcp -H 'Content-Type: application/json' \
  -d '{"id":1,"jsonrpc":"2.0","method":"tools/call","params":{"arguments":{},"name":"markets"}}'
$0.01 / callweather_forecast

Get the weather forecast for a location (current conditions plus the next few days).

ParamTypeDescription
lat *numberLatitude of the location
lon *numberLongitude of the location
curl -X POST /mcp -H 'Content-Type: application/json' \
  -d '{"id":1,"jsonrpc":"2.0","method":"tools/call","params":{"arguments":{"lat":1,"lon":1},"name":"weather_forecast"}}'
$0.01 / callsocial

Get the latest social posts from the network.

curl -X POST /mcp -H 'Content-Type: application/json' \
  -d '{"id":1,"jsonrpc":"2.0","method":"tools/call","params":{"arguments":{},"name":"social"}}'
$0.01 / callvideo

Get the latest videos from curated channels.

curl -X POST /mcp -H 'Content-Type: application/json' \
  -d '{"id":1,"jsonrpc":"2.0","method":"tools/call","params":{"arguments":{},"name":"video"}}'
$0.01 / callblog_list

Get recent blog posts (titles, snippets and ids; use blog_read for one in full).

curl -X POST /mcp -H 'Content-Type: application/json' \
  -d '{"id":1,"jsonrpc":"2.0","method":"tools/call","params":{"arguments":{},"name":"blog_list"}}'
$0.01 / callGET /apps

Read details of a specific app by its slug

ParamTypeDescription
slug *stringThe app's URL slug (e.g. pomodoro-timer)
curl -H 'Authorization: Bearer $TOKEN' -X GET /apps
$0.01 / callPOST /apps/new

Create a new app — a small, self-contained HTML tool hosted on Mu

ParamTypeDescription
name *stringApp name (e.g. Pomodoro Timer)
slug *stringURL-friendly ID (e.g. pomodoro-timer)
description *stringShort description of what the app does
tagsstringComma-separated tags (optional)
html *stringThe app's HTML content (can include inline CSS and JavaScript, max 256KB)
pricenumberCredits charged per use (0 = free, max 1000)
curl -H 'Authorization: Bearer $TOKEN' -X POST /apps/new
$0.01 / callapps_edit

Edit an existing app you own — update its name, description, tags, icon, HTML code, or price

ParamTypeDescription
slug *stringThe app's URL slug (e.g. pomodoro-timer)
namestringNew app name
descriptionstringNew description
tagsstringNew comma-separated tags
htmlstringNew HTML content (max 256KB)
iconstringNew SVG icon
pricenumberCredits charged per use (0 = free, max 1000)
curl -X POST /mcp -H 'Content-Type: application/json' \
  -d '{"id":1,"jsonrpc":"2.0","method":"tools/call","params":{"arguments":{"slug":"slug"},"name":"apps_edit"}}'
$1.00 / callapps_build

Build a small app from a natural language description, save it, and return the app details with URL. Apps are one of: a tracker (a list you add entries to, optionally totalling a number), a checklist, or a counter.

ParamTypeDescription
prompt *stringDescription of the app to build (e.g. 'an expense tracker', 'a packing checklist', 'a water intake counter')
curl -X POST /mcp -H 'Content-Type: application/json' \
  -d '{"id":1,"jsonrpc":"2.0","method":"tools/call","params":{"arguments":{"prompt":"prompt"},"name":"apps_build"}}'
$0.01 / callapps_fork

Fork an existing app — creates a copy under your account that you can modify independently

ParamTypeDescription
slug *stringSlug of the app to fork
new_slugstringSlug for the forked copy (optional, auto-generated if empty)
curl -X POST /mcp -H 'Content-Type: application/json' \
  -d '{"id":1,"jsonrpc":"2.0","method":"tools/call","params":{"arguments":{"slug":"slug"},"name":"apps_fork"}}'
$0.03 / callapps_run

Run JavaScript code in a sandboxed environment and return the result. Use for calculations, data processing, or any computation the user needs.

ParamTypeDescription
code *stringJavaScript code to execute. The code runs as a function body — use 'return' to output a value. Has access to mu.ai(), mu.web.fetch(), mu.db and mu.store for platform features.
curl -X POST /mcp -H 'Content-Type: application/json' \
  -d '{"id":1,"jsonrpc":"2.0","method":"tools/call","params":{"arguments":{"code":"code"},"name":"apps_run"}}'
$0.01 / callapps_test

Test an app by checking its HTML structure and executing its mu.api calls server-side. Returns which API calls work and which fail.

ParamTypeDescription
slug *stringThe app's URL slug
curl -X POST /mcp -H 'Content-Type: application/json' \
  -d '{"id":1,"jsonrpc":"2.0","method":"tools/call","params":{"arguments":{"slug":"slug"},"name":"apps_test"}}'
$0.03 / callPOST /agent/run

Ask the AI agent a question. The agent can search news, markets, web, video, weather, places, and more to answer your question.

ParamTypeDescription
prompt *stringYour question or request
curl -H 'Authorization: Bearer $TOKEN' -X POST /agent/run
$0.01 / callwallet

Get your Base wallet address and USDC balance. This wallet pays for metered MCP tools via x402.

curl -X POST /mcp -H 'Content-Type: application/json' \
  -d '{"id":1,"jsonrpc":"2.0","method":"tools/call","params":{"arguments":{},"name":"wallet"}}'
$0.01 / callpay

Call a metered tool on an MCP server and pay for it from your Base wallet via x402. Works on this server and any other server in the registry.

ParamTypeDescription
tool *stringName of the tool to call
serverstringServer name from the registry, or a base URL (default: self)
argumentsobjectArguments to pass to the tool
curl -X POST /mcp -H 'Content-Type: application/json' \
  -d '{"id":1,"jsonrpc":"2.0","method":"tools/call","params":{"arguments":{"tool":"tool"},"name":"pay"}}'