Tool Reference
Overview
Temporal Cortex provides 18 tools organized in 5 layers. 15 core tools are always available; 3 additional tools are available in Platform Mode.
All data tools return TOON format by default. Pass format: "json" for standard JSON output.
Layer 0: Discovery
search_contacts
Search the user’s contacts by name across Google People API and Microsoft Graph.
| Parameter | Type | Required | Description |
|---|---|---|---|
query | string | Yes | Name to search for |
limit | number | No | Max results (default: 10) |
resolve_contact
Resolve a contact to their scheduling capabilities — discovers whether they have an Agent Card (A2A), Temporal Link (browser booking), or only email.
| Parameter | Type | Required | Description |
|---|---|---|---|
email | string | Yes | Contact’s email address |
resolve_identity (Platform Mode)
Full identity resolution with Open Scheduling discovery. Returns Agent Card URL, Temporal Link, and scheduling preferences.
| Parameter | Type | Required | Description |
|---|---|---|---|
identifier | string | Yes | Email, phone, or URL |
Layer 1: Temporal Context
get_temporal_context
Returns the agent’s current temporal context. No parameters required. Call this first to ground all time reasoning.
Returns: current_time, timezone, utc_offset, day_of_week, week_start, week_end, month_start, month_end
resolve_datetime
Converts natural language to an exact ISO 8601 timestamp. Deterministic — same input always produces same output.
| Parameter | Type | Required | Description |
|---|---|---|---|
expression | string | Yes | Natural language time expression |
timezone | string | No | Override timezone |
convert_timezone
Converts a timestamp between timezones. Handles DST transitions correctly.
| Parameter | Type | Required | Description |
|---|---|---|---|
timestamp | string | Yes | ISO 8601 timestamp |
from_timezone | string | Yes | Source timezone |
to_timezone | string | Yes | Target timezone |
compute_duration
Calculates the duration between two timestamps.
| Parameter | Type | Required | Description |
|---|---|---|---|
start | string | Yes | Start timestamp |
end | string | Yes | End timestamp |
adjust_timestamp
Adds or subtracts a time period from a timestamp.
| Parameter | Type | Required | Description |
|---|---|---|---|
timestamp | string | Yes | Base timestamp |
adjustment | string | Yes | ISO 8601 duration (e.g., “PT2H30M”) |
direction | string | No | ”forward” or “backward” (default: “forward”) |
Layer 2: Calendar Operations
list_calendars
Lists all connected calendars with their IDs, names, and provider types.
| Parameter | Type | Required | Description |
|---|---|---|---|
format | string | No | ”toon” (default) or “json” |
list_events
Lists calendar events for a date range.
| Parameter | Type | Required | Description |
|---|---|---|---|
calendar_id | string | No | Calendar ID (default: all) |
start_date | string | Yes | Start date (YYYY-MM-DD) |
end_date | string | No | End date (default: start_date) |
format | string | No | ”toon” (default) or “json” |
find_free_slots
Finds available time slots across all connected calendars.
| Parameter | Type | Required | Description |
|---|---|---|---|
date | string | Yes | Date to check (YYYY-MM-DD) |
duration_minutes | number | Yes | Required slot duration |
start_hour | number | No | Earliest hour (default: 9) |
end_hour | number | No | Latest hour (default: 17) |
format | string | No | ”toon” (default) or “json” |
check_availability
Checks if a specific time slot is available across connected calendars.
| Parameter | Type | Required | Description |
|---|---|---|---|
start | string | Yes | Slot start (ISO 8601) |
end | string | Yes | Slot end (ISO 8601) |
expand_rrule
Deterministic RFC 5545 RRULE expansion via Truth Engine. Handles DST, BYSETPOS, EXDATE, leap years.
| Parameter | Type | Required | Description |
|---|---|---|---|
rrule | string | Yes | RFC 5545 RRULE string |
dtstart | string | Yes | Recurrence start date |
count | number | No | Max occurrences to return |
until | string | No | End date for expansion |
format | string | No | ”toon” (default) or “json” |
Layer 3: Availability
get_availability
Merges free/busy data across all connected calendars into a unified view.
| Parameter | Type | Required | Description |
|---|---|---|---|
date | string | Yes | Date to check (YYYY-MM-DD) |
calendars | string[] | No | Calendar IDs (default: all) |
format | string | No | ”toon” (default) or “json” |
query_public_availability (Platform Mode)
Queries another person’s publicly shared availability via their Open Scheduling endpoint.
| Parameter | Type | Required | Description |
|---|---|---|---|
identifier | string | Yes | Email or Temporal Link URL |
date | string | Yes | Date to check |
Layer 4: Booking
book_slot
Atomic booking with Two-Phase Commit: lock → verify → write → release. If any step fails, everything rolls back.
| Parameter | Type | Required | Description |
|---|---|---|---|
calendar_id | string | Yes | Target calendar |
title | string | Yes | Event title |
start | string | Yes | Start time (ISO 8601) |
end | string | Yes | End time (ISO 8601) |
description | string | No | Event description |
attendees | string[] | No | Attendee email addresses |
request_booking (Platform Mode)
Sends a booking request to another user’s Open Scheduling endpoint.
| Parameter | Type | Required | Description |
|---|---|---|---|
recipient | string | Yes | Recipient email or URL |
proposed_slots | object[] | Yes | Array of proposed time slots |
title | string | Yes | Meeting title |
message | string | No | Optional message |
compose_proposal
Composes a scheduling proposal message for email/SMS delivery. Pure formatting — does not send the message. Used for backward compatibility when the other person doesn’t have an agent.
| Parameter | Type | Required | Description |
|---|---|---|---|
recipient_name | string | Yes | Recipient’s name |
recipient_email | string | Yes | Recipient’s email |
proposed_slots | object[] | Yes | Array of proposed time slots |
title | string | Yes | Meeting title |
message | string | No | Additional context |
format | string | No | ”email” (default), “slack”, or “sms” |