add_field
ChatGPTAdds a new field to a section in a tracker's layout, up to the per-section field limit. Call describe_schema first to see existing sections and fields. Set type to one of: text, number, boolean, date, time, choice, or reference. For a choice field, pass the allowed values in 'choices'. For a reference field (a link/relationship to another section), pass the target section id in 'references_section'. Optional units, dateFormat (date fields only), and up to five type-matching examples clarify what to enter; stored dates remain ISO. Only the account owner can change a tracker's layout. This does not delete any existing data.
add_section
ChatGPTAdds a new section (table) to a tracker's layout, up to the account's plan limit. Provide a short, human-friendly name (for example "Clients" or "Payments"); it is turned into a section id automatically. The new section starts with a single starter "name" text field; use add_field to add more fields. Only the account owner can change a tracker's layout. This does not delete any existing data.
create_record
ChatGPTCreates one record in the API-key scoped tracker. Call get_sync_context first and use only the exact field names it returns. Map field types as follows: text → string, number → number, boolean → true/false, date → ISO 8601 date string (YYYY-MM-DD), time → 24-hour time string (HH:MM), choice → one of the allowed strings listed in the field's choices array. Omit optional fields rather than passing null.
create_tracker
ChatGPTCreates a new tracker on this account so the user can keep more than one kind of list from the same connection. Provide a short, human-friendly name (for example: "Garden Log" or "Client Invoices"). The new tracker starts with a simple starter layout you can refine later, and the account's plan limit on the number of trackers is enforced. After creating it, use the other tools with tracker set to the new tracker's name to add records. Only the account owner can create trackers.
delete_record
ChatGPTDeletes one record from the API-key scoped tracker by ID.
describe_schema
ChatGPTReturns the full editable layout of a tracker: every section (table), its fields with their type (text | number | boolean | date | time | choice | reference), whether each field is required, the allowed values for choice fields, and which section a reference field links to. Also returns the plan limits and how many sections and fields are currently used. Call this before add_section or add_field so you know the current layout and remaining capacity.
get_attachment_link
ChatGPTCreates a single-use private download URL for one attachment after rechecking tracker, record, and attachment access. Use only when the user wants to open or analyze a specific listed file. The URL expires after five minutes if unused and must not be stored as a permanent reference.
get_record
ChatGPTReads one record from the API-key scoped tracker by ID.
get_sync_context
ChatGPTReturns the tracker name, default table, available tables, and field definitions scoped to the supplied API key. Call this once before any read or write operation. The returned tables[].fields array defines every valid field name, its type (text | number | boolean | date | time | choice), whether it is required, and—for choice fields—the allowed values. Use these definitions as the authoritative schema for all subsequent create_record and update_record calls.
list_attachments
ChatGPTLists private document, spreadsheet, text, and image attachments for one record. Use this before get_attachment_link when the user asks what files are attached. Returns metadata only and never exposes storage paths or provider file IDs.
list_changes
ChatGPTReads ordered record and layout changes within this connection's section/field scope. kind:'schema' uses operation:'schema_update' and an authorized schema snapshot; record events use kind:'record'. Keep the old checkpoint while nextCursor is non-null; adopt the returned checkpoint only after exhausting the window. Hidden events still advance scanning. Concurrent writes are included in the next window; missing journal events fail explicitly instead of skipping.
list_record_versions
ChatGPTReads every retained version of one record using bounded cursor pages. Field and section scopes apply. Follow nextCursor until null; no history is silently truncated.
list_records
ChatGPTPreferred structured retrieval tool after get_sync_context. Use exact table and field names from the returned schema whenever you can.
list_trackers
ChatGPTLists every tracker connected to this account, with each tracker's name, description, and ID. Use this to discover which trackers are available before reading or writing to one other than the connected default. Pass the returned name or id as the 'tracker' argument on the other tools to work across multiple trackers from a single connection.
recover_record
ChatGPTRecovers a record and its retained private file associations within 30 days. expectedRevision is the deletion's revision. Current read/create field permissions, schema, quota and revision are rechecked. Suggest-only connections return pending_approval and saved:false.
restore_record
ChatGPTReplaces an active record with a retained version after current schema, policy, revision and quota checks. Confirm the target and replacement first. Suggest-only connections return pending_approval with saved:false, never saved success.
search_records
ChatGPTFallback retrieval tool for broad natural-language requests when you cannot confidently map the request to exact table fields from get_sync_context.
summarize_records
ChatGPTPreferred summary tool after get_sync_context when you can map the request to exact field filters. Legacy plain-language intent mode remains available as a fallback.
update_record
ChatGPTUpdates one record in the API-key scoped tracker by ID using a partial field patch. Call get_sync_context first to confirm exact field names and their types before writing. Only the fields included in data are changed; all other fields are left as-is.
update_records
ChatGPTUpdates many records in one call, overwriting the supplied fields' existing values without automatic undo. Confirm the target records and replacement values with the user before calling. Call get_sync_context first, then pass an updates array of { id, record_json, expectedRevision } objects. Each record_json is a JSON object string containing only the exact fields to change. Each item succeeds or fails independently; a partial batch is not rolled back. Up to 50 records per call. Send an Idempotency-Key header to replay a retried batch.
upload_attachment
ChatGPTAdds one user-provided document, spreadsheet, text file, or image to an existing authorized record without overwriting existing files or record fields. Use only when the user explicitly asks to save that file with the target record. Accepts the ChatGPT-provided file parameter, not an arbitrary URL; downloads are restricted to authorized ChatGPT file hosts. The file is copied into private tracker storage, is not published or sent to another recipient, and counts toward the tracker owner's storage allowance. Maximum file size is 10 MiB. Repeating a successful call creates another attachment; check list_attachments before retrying an uncertain result.