MCP

Model Context Protocol

Connect AI clients (e.g. Claude Desktop) to this MCP server.

Endpoint: /mcpAPI Docs

Authentication

Two ways to call, the same as the REST API:

  1. Pay per call (x402) — no login. Call a metered tool with no auth and you get an HTTP 402 with the price and pay-to address; your x402 wallet pays in USDC and retries. Your first calls per wallet are free.
  2. Token & credits — log in and pass a token; metered calls draw from your credit balance:
    Authorization: Bearer YOUR_TOKEN
    Create a Personal Access Token, or call the signup / login tool to get one programmatically.

Non-metered tools are free to call. A few tools that touch your account (wallet, mail, editing your apps) always need a logged-in session.

Playground

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

Raw JSON-RPC

Payments

Metered tools are pay-per-call. Two ways to pay:

  • x402 — agents pay per call in USDC on Base. Call a metered tool with no auth and you get an HTTP 402 whose body lists the price and pay-to address; pay and retry. No account needed.
  • Creditslog in with a token and calls draw from your credit balance instead.

Prices are shown per tool below.

me

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

{"id":1,"jsonrpc":"2.0","method":"tools/call","params":{"arguments":{},"name":"me"}}
$0.05 / callchat

Chat with AI assistant

Pay per call with x402, or use credits when logged in.

ParamTypeDescription
prompt *stringThe message to send to the AI
{"id":1,"jsonrpc":"2.0","method":"tools/call","params":{"arguments":{"prompt":"prompt"},"name":"chat"}}
news

Read the latest news feed

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

Read a specific blog post by ID

ParamTypeDescription
id *stringThe blog post ID
{"id":1,"jsonrpc":"2.0","method":"tools/call","params":{"arguments":{"id":"id"},"name":"blog_read"}}
$0.01 / callblog_create

Create a new blog post

Pay per call with x402, or use credits when logged in.

ParamTypeDescription
titlestringPost title
content *stringPost content (minimum 50 characters)
{"id":1,"jsonrpc":"2.0","method":"tools/call","params":{"arguments":{"content":"content"},"name":"blog_create"}}
blog_update

Update an existing blog post (author only)

ParamTypeDescription
id *stringThe blog post ID to update
titlestringNew post title
contentstringNew post content (minimum 50 characters)
{"id":1,"jsonrpc":"2.0","method":"tools/call","params":{"arguments":{"id":"id"},"name":"blog_update"}}
blog_delete

Delete a blog post (author only)

ParamTypeDescription
id *stringThe blog post ID to delete
{"id":1,"jsonrpc":"2.0","method":"tools/call","params":{"arguments":{"id":"id"},"name":"blog_delete"}}
mail_read

Read mail inbox

{"id":1,"jsonrpc":"2.0","method":"tools/call","params":{"arguments":{},"name":"mail_read"}}
$0.04 / callmail_send

Send a mail message

Pay per call with x402, or use credits when logged in.

ParamTypeDescription
to *stringRecipient username or email
subject *stringMessage subject
body *stringMessage body
{"id":1,"jsonrpc":"2.0","method":"tools/call","params":{"arguments":{"body":"body","subject":"subject","to":"to"},"name":"mail_send"}}
wallet_balance

Get wallet credit balance

ParamTypeDescription
balancestringSet to 1 to get balance
{"id":1,"jsonrpc":"2.0","method":"tools/call","params":{"arguments":{},"name":"wallet_balance"}}
wallet_transfer

Transfer credits to another user by username

ParamTypeDescription
to *stringRecipient username
amount *numberNumber of credits to transfer
{"id":1,"jsonrpc":"2.0","method":"tools/call","params":{"arguments":{"amount":1,"to":"to"},"name":"wallet_transfer"}}
wallet_topup

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

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

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

{"id":1,"jsonrpc":"2.0","method":"tools/call","params":{"arguments":{},"name":"stream"}}
$0.01 / callstream_post

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

Pay per call with x402, or use credits when logged in.

ParamTypeDescription
content *stringMessage text (max 1024 chars). Use @micro to invoke the AI agent.
{"id":1,"jsonrpc":"2.0","method":"tools/call","params":{"arguments":{"content":"content"},"name":"stream_post"}}
flag

Flag content for moderation

ParamTypeDescription
type *stringContent type (e.g. post, work, app)
id *stringContent ID
{"id":1,"jsonrpc":"2.0","method":"tools/call","params":{"arguments":{"id":"id","type":"type"},"name":"flag"}}
save

Bookmark content for later

ParamTypeDescription
type *stringContent type (e.g. post, work, app)
id *stringContent ID
{"id":1,"jsonrpc":"2.0","method":"tools/call","params":{"arguments":{"id":"id","type":"type"},"name":"save"}}
unsave

Remove a saved bookmark

ParamTypeDescription
type *stringContent type
id *stringContent ID
{"id":1,"jsonrpc":"2.0","method":"tools/call","params":{"arguments":{"id":"id","type":"type"},"name":"unsave"}}
dismiss

Hide content from your view

ParamTypeDescription
type *stringContent type
id *stringContent ID
{"id":1,"jsonrpc":"2.0","method":"tools/call","params":{"arguments":{"id":"id","type":"type"},"name":"dismiss"}}
block_user

Block a user — hides all their content from your view

ParamTypeDescription
user *stringUser ID to block
{"id":1,"jsonrpc":"2.0","method":"tools/call","params":{"arguments":{"user":"user"},"name":"block_user"}}
unblock_user

Unblock a previously blocked user

ParamTypeDescription
user *stringUser ID to unblock
{"id":1,"jsonrpc":"2.0","method":"tools/call","params":{"arguments":{"user":"user"},"name":"unblock_user"}}
$0.02 / callplaces_nearby

Find all places of interest near a given location

Pay per call with x402, or use credits when logged in.

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)
{"id":1,"jsonrpc":"2.0","method":"tools/call","params":{"arguments":{},"name":"places_nearby"}}
reminder

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

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

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)
{"id":1,"jsonrpc":"2.0","method":"tools/call","params":{"arguments":{"chapter":1},"name":"quran"}}
hadith

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

ParamTypeDescription
booknumberBook number
{"id":1,"jsonrpc":"2.0","method":"tools/call","params":{"arguments":{},"name":"hadith"}}
signup

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)
{"id":1,"jsonrpc":"2.0","method":"tools/call","params":{"arguments":{"id":"id","secret":"secret"},"name":"signup"}}
login

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

ParamTypeDescription
id *stringUsername
secret *stringPassword
{"id":1,"jsonrpc":"2.0","method":"tools/call","params":{"arguments":{"id":"id","secret":"secret"},"name":"login"}}
$0.03 / callweb_fetch

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

Pay per call with x402, or use credits when logged in.

ParamTypeDescription
url *stringThe URL to fetch
{"id":1,"jsonrpc":"2.0","method":"tools/call","params":{"arguments":{"url":"url"},"name":"web_fetch"}}
news_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)
{"id":1,"jsonrpc":"2.0","method":"tools/call","params":{"arguments":{},"name":"news_headlines"}}
news_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
{"id":1,"jsonrpc":"2.0","method":"tools/call","params":{"arguments":{"id":"id"},"name":"news_read"}}
recall

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)
{"id":1,"jsonrpc":"2.0","method":"tools/call","params":{"arguments":{"query":"query"},"name":"recall"}}
$0.01 / calldb_set

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.

Pay per call with x402, or use credits when logged in.

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)
{"id":1,"jsonrpc":"2.0","method":"tools/call","params":{"arguments":{"collection":"collection","data":"data"},"name":"db_set"}}
db_get

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

ParamTypeDescription
collection *stringCollection name
id *stringRecord id
{"id":1,"jsonrpc":"2.0","method":"tools/call","params":{"arguments":{"collection":"collection","id":"id"},"name":"db_get"}}
db_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)
{"id":1,"jsonrpc":"2.0","method":"tools/call","params":{"arguments":{"collection":"collection"},"name":"db_list"}}
db_del

Delete a record you own by id.

ParamTypeDescription
collection *stringCollection name
id *stringRecord id
{"id":1,"jsonrpc":"2.0","method":"tools/call","params":{"arguments":{"collection":"collection","id":"id"},"name":"db_del"}}
markets

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

ParamTypeDescription
categorystringcrypto, futures, commodities or currencies (default crypto)
{"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).

Pay per call with x402, or use credits when logged in.

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"}}
social

Get the latest social posts from the network.

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

Get the latest videos from curated channels.

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

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

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

Read details of a specific 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_create

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)
{"id":1,"jsonrpc":"2.0","method":"tools/call","params":{"arguments":{"description":"description","html":"html","name":"name","slug":"slug"},"name":"apps_create"}}
apps_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)
{"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.

Pay per call with x402, or use credits when logged in.

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_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)
{"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.

Pay per call with x402, or use credits when logged in.

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.
{"id":1,"jsonrpc":"2.0","method":"tools/call","params":{"arguments":{"code":"code"},"name":"apps_run"}}
apps_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
{"id":1,"jsonrpc":"2.0","method":"tools/call","params":{"arguments":{"slug":"slug"},"name":"apps_test"}}
$0.03 / callagent

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

Pay per call with x402, or use credits when logged in.

ParamTypeDescription
prompt *stringYour question or request
{"id":1,"jsonrpc":"2.0","method":"tools/call","params":{"arguments":{"prompt":"prompt"},"name":"agent"}}
wallet

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

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

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
{"id":1,"jsonrpc":"2.0","method":"tools/call","params":{"arguments":{"tool":"tool"},"name":"pay"}}