Wren MCP
JSON-RPC examples
Raw requests against the live server. Responses shown are real output; long ones are shortened with an ellipsis.
1. Initialize
curl -s https://mcp.wrenapp.ai/mcp \
-H 'content-type: application/json' \
-H 'accept: application/json, text/event-stream' \
-d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-06-18","capabilities":{},"clientInfo":{"name":"curl","version":"1"}}}'{
"result": {
"protocolVersion": "2025-06-18",
"capabilities": {
"tools": { "listChanged": true },
"resources": { "listChanged": true }
},
"serverInfo": { "name": "wren", "version": "0.1.0" }
},
"jsonrpc": "2.0",
"id": 1
}2. List tools
Returns every tool with its input schema, annotations and security schemes. To print just the names (needs jq):
curl -s https://mcp.wrenapp.ai/mcp \
-H 'content-type: application/json' \
-H 'accept: application/json, text/event-stream' \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}' \
| sed 's/^data: //' | grep '^{' \
| jq -r '.result.tools[].name'get_profile
connect_account
create_handwritten_note
render_note_preview
list_notes
get_note
add_page
edit_page
update_note
get_drawing_guide3. Read the drawing guide (no token)
curl -s https://mcp.wrenapp.ai/mcp \
-H 'content-type: application/json' \
-H 'accept: application/json, text/event-stream' \
-d '{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"get_drawing_guide","arguments":{}}}'# Wren drawing guide
Wren turns structured content into real handwriting (editable pen strokes) in the user's Wren notebook.
Use this guide to pick a kind and fill the arguments of create_handwritten_note, add_page or edit_page.
## Rules
- Wren DRAWS the content you specify — it never invents content. ...
- Graphs: figure.content.prompt holds the equation ("y = sin(x)", "y = x^2 - 4", "y = e^x"). ...
## Kinds (13)
### graph_2d
...4. Call a protected tool with no token
curl -s https://mcp.wrenapp.ai/mcp \
-H 'content-type: application/json' \
-H 'accept: application/json, text/event-stream' \
-d '{"jsonrpc":"2.0","id":3,"method":"tools/call","params":{"name":"get_profile","arguments":{}}}'HTTP/2 401
www-authenticate: Bearer resource_metadata="https://mcp.wrenapp.ai/.well-known/oauth-protected-resource/mcp", error="invalid_token", error_description="Link your Wren account", scope="notes.read notes.write profile.read"
{"jsonrpc":"2.0","error":{"code":-32001,"message":"Link your Wren account to continue."},"id":3}This is where OAuth starts. See Authentication.
5. Create a note (needs a token with notes.write)
Set WREN_ACCESS_TOKEN to an access token obtained through the OAuth flow, then:
curl -s https://mcp.wrenapp.ai/mcp \
-H 'content-type: application/json' \
-H 'accept: application/json, text/event-stream' \
-H "authorization: Bearer $WREN_ACCESS_TOKEN" \
-d '{"jsonrpc":"2.0","id":4,"method":"tools/call","params":{"name":"create_handwritten_note","arguments":{"title":"Quadratics","figure":{"kind":"graph_2d","content":{"prompt":"y = x^2 - 4"}}}}}'The result reports the note title and page number in its location, and the note appears in the user’s notebook and syncs to their iPad. Swap in any tool from the tool reference.
6. GET is not supported
The server is stateless and POST-only:
HTTP/2 405
{"jsonrpc":"2.0","error":{"code":-32000,"message":"Method not allowed (stateless MCP server)."},"id":null}