Skip to content

docs: align the README with the code - #12

Merged
abcsnowwolf merged 1 commit into
mainfrom
docs/readme-accuracy
Aug 16, 2026
Merged

abcsnowwolf merged 1 commit into
mainfrom
docs/readme-accuracy

Conversation

@abcsnowwolf

Copy link
Copy Markdown
Contributor
  • drop the claims the code does not back: resources are not served, tools/list schemas are advertised but never validated against, and Arduino IDE is not usable without a library.properties
  • document the call(JsonDocument, bool&) overload, the isError result flag, the -32603 an escaping exception becomes, Tool::outputSchema, and the rvalue RegisterTool overload
  • replace the "never stalls the async TCP task" promise with the two cases that do occupy it, in a new "Where a tool call actually runs" section: the bounded fast-path wait, and the inline fallback when the worker cannot start
  • complete the request-handling table with the -32700, -32600, 404, 505, and 500 paths, and state that protocol failures after a valid envelope are HTTP 200 carrying a JSON-RPC error
  • qualify the 505: it precedes the fast path whenever a worker exists, so only a missing worker lets an HTTP/1.0 tools/call through
  • scope the MCP-Protocol-Version header to JSON-RPC responses; the 405 and 202 replies carry only what ESPAsyncWebServer emits, plus Allow: POST on the 405
  • spell out the DNS-rebinding guard, which also requires Host, an http:// origin and Origin == Host, and the mDNS slug rules behind .local
  • fix the WiFi snippet to match the example, and add detect_leaks=0 to the ASan invocation so the documented command matches CI and does not fail on Linux
  • list the native-omit-text and native-cov environments

* drop the claims the code does not back: resources are not served, tools/list
  schemas are advertised but never validated against, and Arduino IDE is not
  usable without a library.properties
* document the call(JsonDocument, bool&) overload, the isError result flag, the
  -32603 an escaping exception becomes, Tool::outputSchema, and the rvalue
  RegisterTool overload
* replace the "never stalls the async TCP task" promise with the two cases that
  do occupy it, in a new "Where a tool call actually runs" section: the bounded
  fast-path wait, and the inline fallback when the worker cannot start
* complete the request-handling table with the -32700, -32600, 404, 505, and
  500 paths, and state that protocol failures after a valid envelope are HTTP
  200 carrying a JSON-RPC error
* qualify the 505: it precedes the fast path whenever a worker exists, so only
  a missing worker lets an HTTP/1.0 tools/call through
* scope the MCP-Protocol-Version header to JSON-RPC responses; the 405 and 202
  replies carry only what ESPAsyncWebServer emits, plus Allow: POST on the 405
* spell out the DNS-rebinding guard, which also requires Host, an http:// origin
  and Origin == Host, and the mDNS slug rules behind <name>.local
* fix the WiFi snippet to match the example, and add detect_leaks=0 to the ASan
  invocation so the documented command matches CI and does not fail on Linux
* list the native-omit-text and native-cov environments
@abcsnowwolf
abcsnowwolf merged commit 801433f into main Aug 16, 2026
8 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant