Your browser would not let the page write to the clipboard. Copy this instead:
to, subject and body either way. With Charter, Format("rfc822_base64") builds the RFC 2822 document and encodes it base64url, Body(envelop=True) puts it under the raw key Gmail expects, and the factory attaches the token. None of that is written, because the schema already says what the request is.
The schema is all you need
Zero boilerplate. Zero plumbing. Zero extra libraries in the middle. Zero learning curve. Writing an API tool becomes trivial, and every call is deterministic. Charter handles the rest. Across 536 runs against live APIs, that surface handed the model about 4× less response context than a raw HTTP tool, and completed the tasks whose wire format the model would otherwise have had to assemble by hand. The full record, including where the difference does and does not show up. Read Why Charter for the full story.Plugs into what you run
The framework you already use decides when to call a tool, and Charter makes the call.What you get
Open and direct
MIT. Your process calls the API. No proxy, no per-call price, no rate limit but the API’s own.
Egress control
A field the model must not see is absent from its schema, and the map is printable.
Deterministic wire
MIME, base64url, protobuf and casing are declared once and built by the runtime, never by the model.
Runs where you run it
No telemetry, no phone-home, no training on your traffic. The only network calls are the API calls you define.
Next
Quickstart
Declare a tool, print the boundary, call a pack, hand it to a framework.
Packs
Fifteen integrations, 549 tools, ready to configure and call.
Coding agents
The skill that teaches your agent to write packs, and these docs as a source.
MCP server
Compile a pack into a lean server that speaks the protocol.