Good Timing · Schema
Goodtiming Ai Baton Events
CompanyMCPProduct AnalyticsAI AgentsObservabilitySDK
JSON Schema
{
"$defs": {
"AnnotationEvent": {
"additionalProperties": false,
"properties": {
"event_id": {
"format": "uuid",
"title": "Event Id",
"type": "string"
},
"tenant_id": {
"title": "Tenant Id",
"type": "string"
},
"vendor_id": {
"title": "Vendor Id",
"type": "string"
},
"session_id": {
"title": "Session Id",
"type": "string"
},
"sequence_number": {
"minimum": 0,
"title": "Sequence Number",
"type": "integer"
},
"captured_at": {
"format": "date-time",
"title": "Captured At",
"type": "string"
},
"consent_token": {
"title": "Consent Token",
"type": "string"
},
"sdk_version": {
"default": "1.0.0",
"title": "Sdk Version",
"type": "string"
},
"agent_runtime": {
"default": "unknown",
"title": "Agent Runtime",
"type": "string"
},
"client_observed": {
"anyOf": [
{
"$ref": "#/$defs/ClientObserved"
},
{
"type": "null"
}
],
"default": null
},
"principal": {
"anyOf": [
{
"$ref": "#/$defs/PrincipalWire"
},
{
"type": "null"
}
],
"default": null
},
"organization": {
"anyOf": [
{
"$ref": "#/$defs/OrganizationWire"
},
{
"type": "null"
}
],
"default": null
},
"labels": {
"anyOf": [
{
"items": {
"maxLength": 64,
"minLength": 1,
"type": "string"
},
"maxItems": 20,
"minItems": 1,
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"title": "Labels"
},
"capture": {
"anyOf": [
{
"$ref": "#/$defs/CaptureObserved"
},
{
"type": "null"
}
],
"default": null
},
"call_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Call Id"
},
"transport_observed": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Transport Observed"
},
"session_id_origin": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Session Id Origin"
},
"runtime_meta": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"title": "Runtime Meta"
},
"event_type": {
"const": "annotation",
"default": "annotation",
"title": "Event Type",
"type": "string"
},
"payload": {
"$ref": "#/$defs/AnnotationPayload"
}
},
"required": [
"tenant_id",
"vendor_id",
"session_id",
"sequence_number",
"captured_at",
"consent_token",
"payload"
],
"title": "AnnotationEvent",
"type": "object"
},
"AnnotationPayload": {
"additionalProperties": false,
"description": "Agent-supplied context. All fields nullable per SPEC \u00a75.1.1. A filled\n``what_happened`` makes the annotation a report (SPEC \u00a711.4); without it\nthe annotation is a note carrying ``intent``. ``expected_outcome`` and\n``workflow`` come only from the library API and older producers.",
"properties": {
"intent": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Intent"
},
"expected_outcome": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Expected Outcome"
},
"what_happened": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "What Happened"
},
"signal_type": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Signal Type"
},
"workflow": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Workflow"
},
"suggested_improvement": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Suggested Improvement"
},
"context": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"title": "Context"
},
"tool_name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Tool Name"
}
},
"title": "AnnotationPayload",
"type": "object"
},
"CaptureObserved": {
"additionalProperties": false,
"description": "Which collector settings a call ran under (SPEC \u00a711.4, \u00a72.6).",
"properties": {
"settings_version": {
"anyOf": [
{
"minimum": 1,
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "Settings Version"
},
"audience": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Audience"
},
"overlay": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Overlay"
}
},
"title": "CaptureObserved",
"type": "object"
},
"ClientInfoObserved": {
"additionalProperties": false,
"description": "A client's ``clientInfo`` as it declared it.",
"properties": {
"name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Name"
},
"version": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Version"
}
},
"title": "ClientInfoObserved",
"type": "object"
},
"ClientObserved": {
"additionalProperties": false,
"description": "What the client said about itself, uninterpreted (SPEC \u00a711.4).",
"properties": {
"info": {
"anyOf": [
{
"$ref": "#/$defs/ClientInfoObserved"
},
{
"type": "null"
}
],
"default": null
},
"headers": {
"anyOf": [
{
"additionalProperties": {
"type": "string"
},
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"title": "Headers"
}
},
"title": "ClientObserved",
"type": "object"
},
"ClientReportEvent": {
"additionalProperties": false,
"properties": {
"event_id": {
"format": "uuid",
"title": "Event Id",
"type": "string"
},
"tenant_id": {
"title": "Tenant Id",
"type": "string"
},
"vendor_id": {
"title": "Vendor Id",
"type": "string"
},
"session_id": {
"title": "Session Id",
"type": "string"
},
"sequence_number": {
"minimum": 0,
"title": "Sequence Number",
"type": "integer"
},
"captured_at": {
"format": "date-time",
"title": "Captured At",
"type": "string"
},
"consent_token": {
"title": "Consent Token",
"type": "string"
},
"sdk_version": {
"default": "1.0.0",
"title": "Sdk Version",
"type": "string"
},
"agent_runtime": {
"default": "unknown",
"title": "Agent Runtime",
"type": "string"
},
"client_observed": {
"anyOf": [
{
"$ref": "#/$defs/ClientObserved"
},
{
"type": "null"
}
],
"default": null
},
"principal": {
"anyOf": [
{
"$ref": "#/$defs/PrincipalWire"
},
{
"type": "null"
}
],
"default": null
},
"organization": {
"anyOf": [
{
"$ref": "#/$defs/OrganizationWire"
},
{
"type": "null"
}
],
"default": null
},
"labels": {
"anyOf": [
{
"items": {
"maxLength": 64,
"minLength": 1,
"type": "string"
},
"maxItems": 20,
"minItems": 1,
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"title": "Labels"
},
"capture": {
"anyOf": [
{
"$ref": "#/$defs/CaptureObserved"
},
{
"type": "null"
}
],
"default": null
},
"call_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Call Id"
},
"transport_observed": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Transport Observed"
},
"session_id_origin": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Session Id Origin"
},
"runtime_meta": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"title": "Runtime Meta"
},
"event_type": {
"const": "client_report",
"default": "client_report",
"title": "Event Type",
"type": "string"
},
"payload": {
"$ref": "#/$defs/ClientReportPayload"
}
},
"required": [
"tenant_id",
"vendor_id",
"session_id",
"sequence_number",
"captured_at",
"consent_token",
"payload"
],
"title": "ClientReportEvent",
"type": "object"
},
"ClientReportPayload": {
"additionalProperties": false,
"description": "This process's lost-event counts by reason, as running totals (SPEC \u00a711.4.7).",
"properties": {
"instance_id": {
"format": "uuid",
"title": "Instance Id",
"type": "string"
},
"dropped": {
"additionalProperties": {
"minimum": 0,
"type": "integer"
},
"title": "Dropped",
"type": "object"
}
},
"required": [
"instance_id",
"dropped"
],
"title": "ClientReportPayload",
"type": "object"
},
"OrganizationWire": {
"additionalProperties": false,
"description": "The organization AS EMITTED (SPEC \u00a711.4): the company the caller\nbelongs to, with ``principal``'s members and rules and its own ``form``.",
"properties": {
"id": {
"title": "Id",
"type": "string"
},
"source": {
"title": "Source",
"type": "string"
},
"form": {
"title": "Form",
"type": "string"
},
"display_name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Display Name"
}
},
"required": [
"id",
"source",
"form"
],
"title": "OrganizationWire",
"type": "object"
},
"PrincipalWire": {
"additionalProperties": false,
"description": "The principal AS EMITTED \u2014 the finished envelope value (SPEC \u00a711.4).\n\n\u26a0 **Not ``baton.Principal``, and the two are easy to confuse.** That one is\nwhat a vendor's ``resolve_principal`` hook HANDS US. This one is what we\nPUT ON THE WIRE: the same value, with ``source`` added.\n\n**The first three members are REQUIRED, and that is the guarantee the\nobject exists to give.** A producer emits all three or omits\n``principal`` entirely (``display_name`` rides only on a complete object); a partial object is malformed, not a degraded reading. So there\nis no conformant event carrying an ``id`` whose ``form`` a consumer has to\nguess, and none carrying a ``source`` for an identity nobody resolved. That\nbinding is structural here precisely because its predecessor \u2014 a scheme\nprefix plus a paragraph of prose \u2014 was not.",
"properties": {
"id": {
"title": "Id",
"type": "string"
},
"source": {
"title": "Source",
"type": "string"
},
"form": {
"title": "Form",
"type": "string"
},
"display_name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Display Name"
}
},
"required": [
"id",
"source",
"form"
],
"title": "PrincipalWire",
"type": "object"
},
"PromptGetEndEvent": {
"additionalProperties": false,
"properties": {
"event_id": {
"format": "uuid",
"title": "Event Id",
"type": "string"
},
"tenant_id": {
"title": "Tenant Id",
"type": "string"
},
"vendor_id": {
"title": "Vendor Id",
"type": "string"
},
"session_id": {
"title": "Session Id",
"type": "string"
},
"sequence_number": {
"minimum": 0,
"title": "Sequence Number",
"type": "integer"
},
"captured_at": {
"format": "date-time",
"title": "Captured At",
"type": "string"
},
"consent_token": {
"title": "Consent Token",
"type": "string"
},
"sdk_version": {
"default": "1.0.0",
"title": "Sdk Version",
"type": "string"
},
"agent_runtime": {
"default": "unknown",
"title": "Agent Runtime",
"type": "string"
},
"client_observed": {
"anyOf": [
{
"$ref": "#/$defs/ClientObserved"
},
{
"type": "null"
}
],
"default": null
},
"principal": {
"anyOf": [
{
"$ref": "#/$defs/PrincipalWire"
},
{
"type": "null"
}
],
"default": null
},
"organization": {
"anyOf": [
{
"$ref": "#/$defs/OrganizationWire"
},
{
"type": "null"
}
],
"default": null
},
"labels": {
"anyOf": [
{
"items": {
"maxLength": 64,
"minLength": 1,
"type": "string"
},
"maxItems": 20,
"minItems": 1,
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"title": "Labels"
},
"capture": {
"anyOf": [
{
"$ref": "#/$defs/CaptureObserved"
},
{
"type": "null"
}
],
"default": null
},
"call_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Call Id"
},
"transport_observed": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Transport Observed"
},
"session_id_origin": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Session Id Origin"
},
"runtime_meta": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"title": "Runtime Meta"
},
"event_type": {
"const": "prompt_get_end",
"default": "prompt_get_end",
"title": "Event Type",
"type": "string"
},
"payload": {
"$ref": "#/$defs/PromptGetEndPayload"
}
},
"required": [
"tenant_id",
"vendor_id",
"session_id",
"sequence_number",
"captured_at",
"consent_token",
"payload"
],
"title": "PromptGetEndEvent",
"type": "object"
},
"PromptGetEndPayload": {
"additionalProperties": false,
"description": "Emitted after ``prompts/get`` returns.\n\n\u26a0 **No rendered messages**, for the reason ``ResourceReadEndPayload``\ngives. A prompt's rendered text is authored by the SERVER rather than\nfetched by a tool, so whether it is customer content at all is a decision\nnobody has taken \u2014 and the standing answer, from the only producer, is that\nit does not egress.",
"properties": {
"name": {
"title": "Name",
"type": "string"
},
"duration_ms": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "Duration Ms"
}
},
"required": [
"name"
],
"title": "PromptGetEndPayload",
"type": "object"
},
"PromptGetErrorEvent": {
"additionalProperties": false,
"properties": {
"event_id": {
"format": "uuid",
"title": "Event Id",
"type": "string"
},
"tenant_id": {
"title": "Tenant Id",
"type": "string"
},
"vendor_id": {
"title": "Vendor Id",
"type": "string"
},
"session_id": {
"title": "Session Id",
"type": "string"
},
"sequence_number": {
"minimum": 0,
"title": "Sequence Number",
"type": "integer"
},
"captured_at": {
"format": "date-time",
"title": "Captured At",
"type": "string"
},
"consent_token": {
"title": "Consent Token",
"type": "string"
},
"sdk_version": {
"default": "1.0.0",
"title": "Sdk Version",
"type": "string"
},
"agent_runtime": {
"default": "unknown",
"title": "Agent Runtime",
"type": "string"
},
"client_observed": {
"anyOf": [
{
"$ref": "#/$defs/ClientObserved"
},
{
"type": "null"
}
],
"default": null
},
"principal": {
"anyOf": [
{
"$ref": "#/$defs/PrincipalWire"
},
{
"type": "null"
}
],
"default": null
},
"organization": {
"anyOf": [
{
"$ref": "#/$defs/OrganizationWire"
},
{
"type": "null"
}
],
"default": null
},
"labels": {
"anyOf": [
{
"items": {
"maxLength": 64,
"minLength": 1,
"type": "string"
},
"maxItems": 20,
"minItems": 1,
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"title": "Labels"
},
"capture": {
"anyOf": [
{
"$ref": "#/$defs/CaptureObserved"
},
{
"type": "null"
}
],
"default": null
},
"call_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Call Id"
},
"transport_observed": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Transport Observed"
},
"session_id_origin": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Session Id Origin"
},
"runtime_meta": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"title": "Runtime Meta"
},
"event_type": {
"const": "prompt_get_error",
"default": "prompt_get_error",
"title": "Event Type",
"type": "string"
},
"payload": {
"$ref": "#/$defs/PromptGetErrorPayload"
}
},
"required": [
"tenant_id",
"vendor_id",
"session_id",
"sequence_number",
"captured_at",
"consent_token",
"payload"
],
"title": "PromptGetErrorEvent",
"type": "object"
},
"PromptGetErrorPayload": {
"additionalProperties": false,
"description": "Emitted when ``prompts/get`` failed. See ``ResourceReadErrorPayload``\nfor how ``error_type`` is spelled and why ``error_body`` is kept.",
"properties": {
"name": {
"title": "Name",
"type": "string"
},
"error_type": {
"title": "Error Type",
"type": "string"
},
"error_body": {
"title": "Error Body",
"type": "string"
},
"duration_ms": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "Duration Ms"
}
},
"required": [
"name",
"error_type",
"error_body"
],
"title": "PromptGetErrorPayload",
"type": "object"
},
"PromptGetStartEvent": {
"additionalProperties": false,
"properties": {
"event_id": {
"format": "uuid",
"title": "Event Id",
"type": "string"
},
"tenant_id": {
"title": "Tenant Id",
"type": "string"
},
"vendor_id": {
"title": "Vendor Id",
"type": "string"
},
"session_id": {
"title": "Session Id",
"type": "string"
},
"sequence_number": {
"minimum": 0,
"title": "Sequence Number",
"type": "integer"
},
"captured_at": {
"format": "date-time",
"title": "Captured At",
"type": "string"
},
"consent_token": {
"title": "Consent Token",
"type": "string"
},
"sdk_version": {
"default": "1.0.0",
"title": "Sdk Version",
"type": "string"
},
"agent_runtime": {
"default": "unknown",
"title": "Agent Runtime",
"type": "string"
},
"client_observed": {
"anyOf": [
{
"$ref": "#/$defs/ClientObserved"
},
{
"type": "null"
}
],
"default": null
},
"principal": {
"anyOf": [
{
"$ref": "#/$defs/PrincipalWire"
},
{
"type": "null"
}
],
"default": null
},
"organization": {
"anyOf": [
{
"$ref": "#/$defs/OrganizationWire"
},
{
"type": "null"
}
],
"default": null
},
"labels": {
"anyOf": [
{
"items": {
"maxLength": 64,
"minLength": 1,
"type": "string"
},
"maxItems": 20,
"minItems": 1,
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"title": "Labels"
},
"capture": {
"anyOf": [
{
"$ref": "#/$defs/CaptureObserved"
},
{
"type": "null"
}
],
"default": null
},
"call_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Call Id"
},
"transport_observed": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Transport Observed"
},
"session_id_origin": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Session Id Origin"
},
"runtime_meta": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"title": "Runtime Meta"
},
"event_type": {
"const": "prompt_get_start",
"default": "prompt_get_start",
"title": "Event Type",
"type": "string"
},
"payload": {
"$ref": "#/$defs/PromptGetStartPayload"
}
},
"required": [
"tenant_id",
"vendor_id",
"session_id",
"sequence_number",
"captured_at",
"consent_token",
"payload"
],
"title": "PromptGetStartEvent",
"type": "object"
},
"PromptGetStartPayload": {
"additionalProperties": false,
"description": "Emitted before a ``prompts/get`` reaches the upstream server.\n\n\u26a0 ``params`` is the request's ``arguments`` member alone, NOT the whole\nparams bag \u2014 which is the opposite of ``ResourceReadStartPayload``'s\nchoice, measured in ``proxy.py`` (``params=params.get(\"arguments\")``\nagainst the resource path's dict comprehension). The two are inconsistent\nin the only producer that exists; the inconsistency is recorded here so a\nsecond producer copies the shape rather than guessing at a rule, and so a\nconsumer does not expect ``name`` inside ``params`` the way ``uri`` does\nappear there.",
"properties": {
"name": {
"title": "Name",
"type": "string"
},
"params": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"title": "Params"
}
},
"required": [
"name"
],
"title": "PromptGetStartPayload",
"type": "object"
},
"PromptListEndEvent": {
"additionalProperties": false,
"properties": {
"event_id": {
"format": "uuid",
"title": "Event Id",
"type": "string"
},
"tenant_id": {
"title": "Tenant Id",
"type": "string"
},
"vendor_id": {
"title": "Vendor Id",
"type": "string"
},
"session_id": {
"title": "Session Id",
"type": "string"
},
"sequence_number": {
"minimum": 0,
"title": "Sequence Number",
"type": "integer"
},
"captured_at": {
"format": "date-time",
"title": "Captured At",
"type": "string"
},
"consent_token": {
"title": "Consent Token",
"type": "string"
},
"sdk_version": {
"default": "1.0.0",
"title": "Sdk Version",
"type": "string"
},
"agent_runtime": {
"default": "unknown",
"title": "Agent Runtime",
"type": "string"
},
"client_observed": {
"anyOf": [
{
"$ref": "#/$defs/ClientObserved"
},
{
"type": "null"
}
],
"default": null
},
"principal": {
"anyOf": [
# --- truncated at 32 KB (114 KB total) ---
# Full source: https://artifacts.apis.io/goodtiming-ai/json-schema/goodtiming-ai-baton-events-schema.json
Work with this as data
Every JSON Schema here is available over the APIs.io API and to AI agents over MCP.
MCP server
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
Tools for schemas
4 MCP tools reach this
find_json_schemasBrowse and filter every JSON Schema in the catalog.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.
Call it yourself
curl for this page
This JSON Schema
curl "https://apis.io/api/v1/json-schemas/goodtiming-ai-baton-events"
All schemas
curl "https://apis.io/api/v1/json-schemas?limit=25"
Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.
Get an API key
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.