Axis Mundi exposes its full workspace registry — Google Keep, Docs, Sheets, Gmail, and Calendar — plus a seven-state workflow lifecycle to any MCP-compatible agent. Remote agents can read content, query statuses, and drive items through the pipeline in real time.
Cloud Agent
│
▼ POST /mcp (JSON-RPC 2.0)
┌──────────────┐
│ MCP Server │──── Bearer Auth (MCP_API_KEY)
└──────┬───────┘
│
┌────┴────┐
▼ ▼
Workspace Status
Service Manager
│ │
▼ ▼
Google SQLite +
APIs SSE → TUI
Status changes propagate to all connected TUI clients via SSE in real time.
Quick start
Connect in three steps.
Set an optional API key in your environment:
MCP_API_KEY=your-secret-key
The endpoint starts automatically with Axis Mundi:
go run ./cmd/axis
Point your agent at the MCP endpoint:
POST http://localhost:8080/mcp
MCP Tools
Eleven tools across four domains.
List all Keep notes with titles and content snippets.
Retrieve the full content of a specific note by ID.
Search notes by keyword across titles and content.
Retrieve the plain text content of a Google Doc.
Read cell values from a Google Sheet with optional range.
Retrieve the full conversation content of a Gmail thread.
Retrieve the details and description of a Google Calendar event.
Unified registry across all item types. Returns ID, type, title, snippet, current status, and resource URI for every item.
Get the current workflow status of any workspace item.
Set an item's status. Broadcasts via SSE to all connected TUI clients.
List status of all tracked items and the allowed status values.
Workflow lifecycle
Seven states for every workspace item.
Not yet acted upon
Queued for execution
Currently in progress
Waiting on dependency
Ready for review
Done
Needs attention
Status changes made via MCP are persisted to SQLite, broadcast via SSE to all connected TUI clients, and reflected in the unified registry in real time. Agents and human operators share the same status state.
MCP Resources
Every workspace item is addressable by URI.
| Type | URI scheme |
|---|---|
| Keep | keep://notes/{id} |
| Docs | docs://documents/{id} |
| Sheets | sheets://spreadsheets/{id} |
| Gmail | gmail://threads/{id} |
| Calendar | calendar://events/{id} |
MCP Methods
Example calls
Copy-paste curl commands to test the endpoint.
initialize Handshake with the server ▶
curl -X POST http://localhost:8080/mcp \
-H "Content-Type: application/json" \
-H "Authorization: Bearer your-secret-key-here" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "initialize",
"params": {
"protocolVersion": "2025-03-26",
"clientInfo": { "name": "my-agent", "version": "1.0.0" }
}
}'
list_workspace Get all items with statuses ▶
curl -X POST http://localhost:8080/mcp \
-H "Content-Type: application/json" \
-H "Authorization: Bearer your-secret-key-here" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": { "name": "list_workspace", "arguments": {} }
}'
set_status Update a workflow status ▶
curl -X POST http://localhost:8080/mcp \
-H "Content-Type: application/json" \
-H "Authorization: Bearer your-secret-key-here" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "set_status",
"arguments": { "id": "doc456", "status": "Review" }
}
}'
get_note Read a Keep note by ID ▶
curl -X POST http://localhost:8080/mcp \
-H "Content-Type: application/json" \
-H "Authorization: Bearer your-secret-key-here" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "get_note",
"arguments": { "noteId": "abc123" }
}
}'
resources/read Read a resource by URI ▶
curl -X POST http://localhost:8080/mcp \
-H "Content-Type: application/json" \
-H "Authorization: Bearer your-secret-key-here" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "resources/read",
"params": { "uri": "docs://documents/doc456" }
}'
Agent configuration
Connect your agent in one config block.
{
"servers": {
"axis-mundi": {
"type": "http",
"url": "http://localhost:8080/mcp",
"headers": {
"Authorization": "Bearer YOUR_KEY"
}
}
}
}
Add to .vscode/mcp.json or user settings.
{
"mcpServers": {
"axis-mundi": {
"type": "streamableHttp",
"url": "http://localhost:8080/mcp",
"headers": {
"Authorization": "Bearer YOUR_KEY"
}
}
}
}
Add to claude_desktop_config.json.
Error codes
Standard JSON-RPC 2.0 error responses.
| Code | Meaning |
|---|---|
| -32700 | Parse error — malformed JSON |
| -32600 | Invalid request — bad JSON-RPC version |
| -32601 | Method not found |
| -32602 | Invalid parameters |
| -32603 | Internal error — API failure |
Start building
Clone the repo and connect your first agent.