Install
openclaw skills install milaCreate, read, update, and delete documents, spreadsheets, and slide presentations in Mila via the REST API or MCP tools. Use when the user wants to manage collaborative documents with rich HTML content, workbooks with tabs and cells in A1 notation, or slide decks with free-form HTML on a 960x540 canvas. Supports pagination, server-based organization, real-time collaboration, formulas, cell formatting, speaker notes, and themes.
openclaw skills install milaMila is a collaborative platform for documents, spreadsheets, and slide presentations. This skill teaches you how to interact with Mila's REST API and MCP tools to manage content programmatically.
Get started at https://mila.gg -- create an account, generate an API key, and start building.
All requests require a Mila API key. Keys use the format mila_sk_*.
API keys have scopes that control access (e.g. documents:read, documents:write, sheets:read, sheets:write, slides:read, slides:write).
Include the API key as a Bearer token:
Authorization: Bearer mila_sk_your_key_here
Base URL: https://api.mila.gg/v1
The MCP server uses the same API keys. Include the key in the Authorization header when connecting to the MCP endpoint.
MCP endpoint: https://mcp.mila.gg
If the user wants to connect Mila to an AI client via MCP, use these configurations:
Claude Desktop (claude_desktop_config.json):
{
"mcpServers": {
"mila": {
"url": "https://mcp.mila.gg",
"headers": {
"Authorization": "Bearer mila_sk_your_key_here"
}
}
}
}
Cursor (.cursor/mcp.json):
{
"mcpServers": {
"mila": {
"url": "https://mcp.mila.gg",
"headers": {
"Authorization": "Bearer mila_sk_your_key_here"
}
}
}
}
VS Code Copilot (.vscode/mcp.json):
{
"servers": {
"mila": {
"type": "http",
"url": "https://mcp.mila.gg",
"headers": {
"Authorization": "Bearer mila_sk_your_key_here"
}
}
}
}
curl -X POST https://api.mila.gg/v1/documents \
-H "Authorization: Bearer mila_sk_your_key_here" \
-H "Content-Type: application/json" \
-d '{"title": "Meeting Notes", "content": "<h1>Meeting Notes</h1><p>Discussed roadmap.</p>"}'
MCP tool: create_document with title and content (HTML string).
curl -X POST https://api.mila.gg/v1/sheets \
-H "Authorization: Bearer mila_sk_your_key_here" \
-H "Content-Type: application/json" \
-d '{"title": "Budget", "cells": {"A1": {"value": "Item"}, "B1": {"value": "Cost"}, "A2": {"value": "Hosting"}, "B2": {"value": 99}}}'
MCP tool: create_sheet with title and cells (A1 notation object).
curl -X POST https://api.mila.gg/v1/slides \
-H "Authorization: Bearer mila_sk_your_key_here" \
-H "Content-Type: application/json" \
-d '{"title": "Demo", "data": [{"html": "<div style=\"display:flex;align-items:center;justify-content:center;height:100%\"><h1 style=\"font-size:48px\">Hello</h1></div>", "background": "#ffffff", "notes": "Title slide"}]}'
MCP tool: create_slide_presentation with title and data (array of slide objects).
All resource IDs are opaque strings (e.g. "xK9mP2wQ"). Use them as-is in URLs and parameters.
List endpoints accept limit (1-100, default 50) and offset (default 0). Responses include a pagination object:
{
"data": [...],
"pagination": { "total": 42, "limit": 50, "offset": 0 }
}
List endpoints accept sort (created_at, updated_at, last_edited_at, title) and order (asc, desc).
Content can belong to a server (workspace) or to personal files.
server_id: returns all contentserver_id=personal: returns only personal filesserver_id=<id>: returns content in that serverPass server_id in the request body when creating content to place it in a server. Omit for personal files.
All responses use this structure:
{
"success": true,
"data": { ... }
}
Errors return:
{
"success": false,
"error": { "message": "Description of the error" }
}
<script> tags are stripped.{"A1": {"value": "Name"}, "B1": {"value": 42}}). Formulas start with =.html, background, and notes fields.For complete endpoint documentation with all parameters, response shapes, and examples:
| Tool | Description |
|---|---|
list_servers | List all servers (workspaces) |
list_documents | List documents with pagination and filtering |
get_document | Get a document with full content |
create_document | Create a document with HTML content |
update_document | Update title and/or content |
delete_document | Delete a document |
append_to_document | Append HTML to a document |
list_sheets | List workbooks with tab metadata |
get_sheet | Get a workbook with all tabs and cells |
create_sheet | Create a workbook with an initial tab |
update_sheet | Update workbook title |
delete_sheet | Delete a workbook and all tabs |
get_sheet_tab | Get a single tab with cell data |
create_sheet_tab | Add a tab to a workbook |
update_sheet_tab | Update cells, name, color, or grid size |
delete_sheet_tab | Remove a tab from a workbook |
append_rows | Append rows of data to a tab |
list_slides | List presentations |
get_slide_presentation | Get a presentation with all slides |
create_slide_presentation | Create a presentation |
update_slide_presentation | Update title, slides, theme, or aspect ratio |
delete_slide_presentation | Delete a presentation |
append_slides | Add slides to a presentation |