GData Notes — REST API access via stunnel

When the Claude.ai MCP OAuth token has expired and re-authorisation is not immediately possible, the notes store REST API is directly accessible via the stunnel tunnels on kelp. This bypasses OAuth entirely — the stunnel client certificate provides transport-layer authentication.

Ports

StoreLocal portStunnel tunnel
Public notes8021gravlax-notes → gravlax.critchley.biz:18021
Private notes8121gravlax-notes-private → gravlax.critchley.biz:18121
Public MCP8024gravlax-notes-mcp → gravlax.critchley.biz:18023
Private MCP8124gravlax-notes-mcp-private → gravlax.critchley.biz:18123

REST API operations

GET a note:

curl --silent 'http://127.0.0.1:8121/<key>' -o /path/to/file.json

PUT (replace) a note:

curl --silent -X PUT 'http://127.0.0.1:8121/<key>' \
    -H 'Content-Type: application/json' \
    -d @/path/to/file.json

PATCH (block-level edit) a note — POST with a patch op body:

curl --silent -X POST 'http://127.0.0.1:8121/<key>' \
    -H 'Content-Type: application/json' \
    -d '{"op": "append_block", "block": {"para": ["new content"]}}'

Recommended workflow

Creating a note:

  1. Write the JSON to $PWD/tmp/<key>.json using the Write tool.
  2. curl --silent -X PUT 'http://127.0.0.1:8121/<key>' -H 'Content-Type: application/json' -d @$PWD/tmp/<key>.json
  3. Delete the scratch file.

Modifying a note:

  1. curl --silent 'http://127.0.0.1:8121/<key>' -o $PWD/tmp/<key>.json
  2. Read then Edit the file using file tools (not inline Python scripts).
  3. curl --silent -X PUT 'http://127.0.0.1:8121/<key>' -H 'Content-Type: application/json' -d @$PWD/tmp/<key>.json
  4. Delete the scratch file.

Notes

See also: GData Server overview | MCP note editing guide

tags gdata, notes, stunnel, rest-api, fallback