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_TOKEN — Get 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.
/sessionGet the current authenticated user's identity, account ID, and admin status
curl -H 'Authorization: Bearer $TOKEN' -X GET /session
/chatChat with AI assistant
| Param | Type | Description |
|---|---|---|
| prompt * | string | The message to send to the AI |
curl -H 'Authorization: Bearer $TOKEN' -X POST /chat
/newsRead the latest news feed
curl -H 'Authorization: Bearer $TOKEN' -X GET /news
/newsSearch for news articles
| Param | Type | Description |
|---|---|---|
| query * | string | News search query |
curl -H 'Authorization: Bearer $TOKEN' -X POST /news
/blog/postRead a specific blog post by ID
| Param | Type | Description |
|---|---|---|
| id * | string | The blog post ID |
curl -H 'Authorization: Bearer $TOKEN' -X GET /blog/post
/blog/postCreate a new blog post
| Param | Type | Description |
|---|---|---|
| title | string | Post title |
| content * | string | Post content (minimum 50 characters) |
curl -H 'Authorization: Bearer $TOKEN' -X POST /blog/post
/blog/postUpdate an existing blog post (author only)
| Param | Type | Description |
|---|---|---|
| id * | string | The blog post ID to update |
| title | string | New post title |
| content | string | New post content (minimum 50 characters) |
curl -H 'Authorization: Bearer $TOKEN' -X PATCH /blog/post
/blog/postDelete a blog post (author only)
| Param | Type | Description |
|---|---|---|
| id * | string | The blog post ID to delete |
curl -H 'Authorization: Bearer $TOKEN' -X DELETE /blog/post
/socialSearch social media posts
| Param | Type | Description |
|---|---|---|
| query * | string | Search query for social posts |
curl -H 'Authorization: Bearer $TOKEN' -X POST /social
/videoSearch for videos
| Param | Type | Description |
|---|---|---|
| query * | string | Video search query |
curl -H 'Authorization: Bearer $TOKEN' -X POST /video
/mailRead mail inbox
curl -H 'Authorization: Bearer $TOKEN' -X GET /mail
/mailSend a mail message
| Param | Type | Description |
|---|---|---|
| to * | string | Recipient username or email |
| subject * | string | Message subject |
| body * | string | Message body |
curl -H 'Authorization: Bearer $TOKEN' -X POST /mail
/searchSearch across all indexed content (posts, news, videos)
| Param | Type | Description |
|---|---|---|
| q * | string | Search query |
curl -H 'Authorization: Bearer $TOKEN' -X GET /search
/walletGet wallet credit balance
| Param | Type | Description |
|---|---|---|
| balance | string | Set to 1 to get balance |
curl -H 'Authorization: Bearer $TOKEN' -X GET /wallet
/wallet/transferTransfer credits to another user by username
| Param | Type | Description |
|---|---|---|
| to * | string | Recipient username |
| amount * | number | Number of credits to transfer |
curl -H 'Authorization: Bearer $TOKEN' -X POST /wallet/transfer
/wallet/topupGet available wallet topup payment methods with crypto deposit address and card payment tiers
curl -H 'Authorization: Bearer $TOKEN' -X GET /wallet/topup
/streamRead the platform event stream — user messages, agent responses, system events (markets, news, reminders)
curl -H 'Authorization: Bearer $TOKEN' -X GET /stream
/streamPost a message to the stream. Mention @micro to get an AI response. Costs 1 credit.
| Param | Type | Description |
|---|---|---|
| content * | string | Message text (max 1024 chars). Use @micro to invoke the AI agent. |
curl -H 'Authorization: Bearer $TOKEN' -X POST /stream
/app/flagFlag content for moderation
| Param | Type | Description |
|---|---|---|
| type * | string | Content type (e.g. post, work, app) |
| id * | string | Content ID |
curl -H 'Authorization: Bearer $TOKEN' -X POST /app/flag
/app/saveBookmark content for later
| Param | Type | Description |
|---|---|---|
| type * | string | Content type (e.g. post, work, app) |
| id * | string | Content ID |
curl -H 'Authorization: Bearer $TOKEN' -X POST /app/save
/app/unsaveRemove a saved bookmark
| Param | Type | Description |
|---|---|---|
| type * | string | Content type |
| id * | string | Content ID |
curl -H 'Authorization: Bearer $TOKEN' -X POST /app/unsave
/app/dismissHide content from your view
| Param | Type | Description |
|---|---|---|
| type * | string | Content type |
| id * | string | Content ID |
curl -H 'Authorization: Bearer $TOKEN' -X POST /app/dismiss
/app/blockBlock a user — hides all their content from your view
| Param | Type | Description |
|---|---|---|
| user * | string | User ID to block |
curl -H 'Authorization: Bearer $TOKEN' -X POST /app/block
/app/unblockUnblock a previously blocked user
| Param | Type | Description |
|---|---|---|
| user * | string | User ID to unblock |
curl -H 'Authorization: Bearer $TOKEN' -X POST /app/unblock
/places/searchSearch for places by name or category, optionally near a location
| Param | Type | Description |
|---|---|---|
| q * | string | Search query (e.g. cafe, pharmacy, Boots) |
| near | string | Location name or address to search near |
| near_lat | number | Latitude of the search location |
| near_lon | number | Longitude of the search location |
| radius | number | Search radius in metres, 100–5000 (default 1000) |
curl -H 'Authorization: Bearer $TOKEN' -X POST /places/search
/places/nearbyFind all places of interest near a given location
| Param | Type | Description |
|---|---|---|
| address | string | Address or postcode to search near |
| lat | number | Latitude of the search location |
| lon | number | Longitude of the search location |
| radius | number | Search radius in metres, 100–5000 (default 500) |
curl -H 'Authorization: Bearer $TOKEN' -X POST /places/nearby
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"}}'Look up a Quran chapter or verse. Pass chapter number (1-114) and optionally a verse number.
| Param | Type | Description |
|---|---|---|
| chapter * | number | Chapter number (1-114) |
| verse | number | Verse 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"}}'Look up hadith from Sahih Al Bukhari. Pass a book number to get hadiths from that book.
| Param | Type | Description |
|---|---|---|
| book | number | Book number |
curl -X POST /mcp -H 'Content-Type: application/json' \
-d '{"id":1,"jsonrpc":"2.0","method":"tools/call","params":{"arguments":{},"name":"hadith"}}'Search the Quran, Hadith, and names of Allah using semantic search. Ask a question in natural language.
| Param | Type | Description |
|---|---|---|
| q * | string | Question or search query |
curl -X POST /mcp -H 'Content-Type: application/json' \
-d '{"id":1,"jsonrpc":"2.0","method":"tools/call","params":{"arguments":{"q":"q"},"name":"quran_search"}}'Create a new account and return a session token. When invite-only mode is enabled, a valid invite code is required.
| Param | Type | Description |
|---|---|---|
| id * | string | Username (4-24 chars, lowercase, starts with letter) |
| secret * | string | Password (minimum 6 characters) |
| name | string | Display name (optional, defaults to username) |
| invite | string | Invite 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"}}'Log in and return a session token for use in Authorization header
| Param | Type | Description |
|---|---|---|
| id * | string | Username |
| secret * | string | Password |
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"}}'Search the web for current information and news
| Param | Type | Description |
|---|---|---|
| q * | string | Search query |
curl -X POST /mcp -H 'Content-Type: application/json' \
-d '{"id":1,"jsonrpc":"2.0","method":"tools/call","params":{"arguments":{"q":"q"},"name":"web_search"}}'/web/fetchFetch a web page and return its cleaned readable content (strips ads, popups, navigation)
| Param | Type | Description |
|---|---|---|
| url * | string | The URL to fetch |
curl -H 'Authorization: Bearer $TOKEN' -X GET /web/fetch
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.
| Param | Type | Description |
|---|---|---|
| topic | string | Optional topic/category filter (e.g. tech, world, business) |
| limit | string | Optional 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"}}'Read one news article in full (title, source, summary and body) by its id from news_headlines, or by article URL.
| Param | Type | Description |
|---|---|---|
| id * | string | Article 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"}}'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.
| Param | Type | Description |
|---|---|---|
| query * | string | What to look for |
| limit | string | Optional 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"}}'/dbStore 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.
| Param | Type | Description |
|---|---|---|
| collection * | string | Collection name (e.g. notes, tasks) |
| data * | object | The record's fields as a JSON object |
| public | boolean | Share the record publicly (default false) |
| id | string | Existing record id to update (optional) |
curl -H 'Authorization: Bearer $TOKEN' -X POST /db
Get one record by id from a collection (must be yours, or public).
| Param | Type | Description |
|---|---|---|
| collection * | string | Collection name |
| id * | string | Record 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"}}'List records in a collection. scope: 'mine' (default), 'public', or 'all' (mine + public). Optional where filter, sort field and limit.
| Param | Type | Description |
|---|---|---|
| collection * | string | Collection name |
| scope | string | mine | public | all (default mine) |
| where | object | Filter on data fields, e.g. {"done":false,"priority":{"gte":2}} |
| sort | string | Data field to sort by |
| order | string | asc | desc (default desc) |
| limit | number | Max 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"}}'Delete a record you own by id.
| Param | Type | Description |
|---|---|---|
| collection * | string | Collection name |
| id * | string | Record 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"}}'Get live market prices for cryptocurrencies, futures, commodities and currencies.
| Param | Type | Description |
|---|---|---|
| category | string | crypto, 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"}}'Get the weather forecast for a location (current conditions plus the next few days).
| Param | Type | Description |
|---|---|---|
| lat * | number | Latitude of the location |
| lon * | number | Longitude 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"}}'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"}}'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"}}'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"}}'/appsSearch the apps directory for small, useful tools
| Param | Type | Description |
|---|---|---|
| q | string | Search query (name, description, or tag) |
| tag | string | Filter by tag |
curl -H 'Authorization: Bearer $TOKEN' -X GET /apps
/appsRead details of a specific app by its slug
| Param | Type | Description |
|---|---|---|
| slug * | string | The app's URL slug (e.g. pomodoro-timer) |
curl -H 'Authorization: Bearer $TOKEN' -X GET /apps
/apps/newCreate a new app — a small, self-contained HTML tool hosted on Mu
| Param | Type | Description |
|---|---|---|
| name * | string | App name (e.g. Pomodoro Timer) |
| slug * | string | URL-friendly ID (e.g. pomodoro-timer) |
| description * | string | Short description of what the app does |
| tags | string | Comma-separated tags (optional) |
| html * | string | The app's HTML content (can include inline CSS and JavaScript, max 256KB) |
| price | number | Credits charged per use (0 = free, max 1000) |
curl -H 'Authorization: Bearer $TOKEN' -X POST /apps/new
Edit an existing app you own — update its name, description, tags, icon, HTML code, or price
| Param | Type | Description |
|---|---|---|
| slug * | string | The app's URL slug (e.g. pomodoro-timer) |
| name | string | New app name |
| description | string | New description |
| tags | string | New comma-separated tags |
| html | string | New HTML content (max 256KB) |
| icon | string | New SVG icon |
| price | number | Credits 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"}}'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.
| Param | Type | Description |
|---|---|---|
| prompt * | string | Description 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"}}'Fork an existing app — creates a copy under your account that you can modify independently
| Param | Type | Description |
|---|---|---|
| slug * | string | Slug of the app to fork |
| new_slug | string | Slug 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"}}'Run JavaScript code in a sandboxed environment and return the result. Use for calculations, data processing, or any computation the user needs.
| Param | Type | Description |
|---|---|---|
| code * | string | JavaScript 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"}}'Test an app by checking its HTML structure and executing its mu.api calls server-side. Returns which API calls work and which fail.
| Param | Type | Description |
|---|---|---|
| slug * | string | The 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"}}'/agent/runAsk the AI agent a question. The agent can search news, markets, web, video, weather, places, and more to answer your question.
| Param | Type | Description |
|---|---|---|
| prompt * | string | Your question or request |
curl -H 'Authorization: Bearer $TOKEN' -X POST /agent/run
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"}}'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.
| Param | Type | Description |
|---|---|---|
| tool * | string | Name of the tool to call |
| server | string | Server name from the registry, or a base URL (default: self) |
| arguments | object | Arguments 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"}}'






