Skip to main content
A semantic type is what the model sees where the API wants an encoding. Pair one with a Format marker and the field is an EmailContent in llm_schema() and a base64url RFC822 string on the wire. All four are Pydantic models, so they validate with the rest of the schema and appear in to_json_schema() with their field descriptions.

EmailContent

An email message. Transformed by rfc822_base64 for Gmail, or email_json for APIs that accept JSON.
str | List[str]
required
Recipient address, or addresses.
str
required
Subject line.
str
required
Body content — plain text, or HTML when mimeType says so.
Optional[str]
"text/plain" (the default behaviour) or "text/html".
Optional[str]
HTML version of the body. Supplied alongside body, the message goes out as multipart/alternative with both parts.
Optional[str | List[str]]
Carbon copy recipients.
Optional[str | List[str]]
Blind carbon copy recipients.
Optional[str]
Sender address. Aliased to from on the wire, and populate_by_name is on, so both spellings validate. Defaults to the authenticated user.
Optional[str]
Reply-to address.
Optional[str]
Message-ID of the message being replied to. Required to keep a thread together.
Optional[str]
Space-separated Message-IDs tracing the thread, most recent first.
The field is typed str — the wire type — and the model is offered an EmailContent, because Format swaps in the transform’s semantic type when the LLM schema is derived.

CalendarEvent

An event, for calendar APIs.
str
required
Event title.
datetime
required
Start time.
datetime
required
End time.
Optional[str]
Detailed description.
Optional[str]
Location.
Optional[List[str]]
Attendee email addresses.
No transform is registered against CalendarEvent: Google Calendar takes a JSON body whose shape the schema declares directly. Use it where an API wants an event as one value, and register a transform for that API’s encoding.

DocumentContent

A document. Transformed by document_json.
str
required
Document title.
str
required
Document content. Markdown is accepted.
Optional[Dict[str, Any]]
Additional metadata.

FileContent

A file, as text. Transformed by file_base64.
str
required
Name of the file.
str
required
File content as text. Binary payloads are out of scope — a model produces text.
Optional[str]
MIME type.
  • Transforms — how a semantic type reaches the wire
  • Format — the marker that pairs the two