{"openapi":"3.1.0","info":{"title":"Hightouch (BYOK) API","version":"0.1.0","description":"Hightouch (BYOK) lets an AI assistant read your own Hightouch data through the Hightouch API with a key you supply (Hightouch API key). Read-only: 11 tools (list_sources, get_source, list_models, get_model, list_destinations, list_syncs, get_sync, list_sync_runs, list_sync_drafts, list_event_contracts, list_event_domains). The BYOK key travels with each request, is used for that one call only and...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-hightouch.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-hightouch/docs"},"termsOfService":"https://connectorbay.com/byok-hightouch/terms"},"servers":[{"url":"https://byok-hightouch.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-hightouch/docs"},"security":[{"upstreamKey":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer","description":"Optional. A Pro API key raises rate limits; no credentials are required."},"upstreamKey":{"type":"apiKey","in":"header","name":"X-Upstream-Key","description":"Your own key for the service this connector wraps (bring your own key). Used for that one call only; never stored, logged or cached."}},"schemas":{"Error":{"type":"object","properties":{"ok":{"const":false},"error":{"type":"object"}}}}},"paths":{"/v1/tools/list_sources":{"post":{"operationId":"list_sources","summary":"List the data sources (warehouses and databases) connected to Hightouch with name, slug, type and timestamps. Connection","description":"List the data sources (warehouses and databases) connected to Hightouch with name, slug, type and timestamps. Connection settings are not returned. Use for \"Which warehouse sources are connected in Hightouch\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"name":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only sources with this exact name.","title":"Name"},"slug":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only the source with this slug.","title":"Slug"},"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":25,"description":"How many records to return (default 100).","title":"Limit"},"offset":{"anyOf":[{"maximum":100000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"How many records to skip.","title":"Offset"},"order_by":{"anyOf":[{"enum":["id","name","slug","createdAt","updatedAt"],"type":"string"},{"type":"null"}],"default":null,"description":"Sort field.","title":"Order By"}},"title":"list_sourcesArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/get_source":{"post":{"operationId":"get_source","summary":"Get one Hightouch source by id: name, slug, type and timestamps. Connection settings are not returned. Use for \"Show Hig","description":"Get one Hightouch source by id: name, slug, type and timestamps. Connection settings are not returned. Use for \"Show Hightouch source 1\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"source_id":{"description":"Numeric id of the source.","maximum":999999999,"minimum":1,"title":"Source Id","type":"integer"}},"required":["source_id"],"title":"get_sourceArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_models":{"post":{"operationId":"list_models","summary":"List Hightouch models (the queries or tables that define the data to sync) with name, slug, source, query type, primary ","description":"List Hightouch models (the queries or tables that define the data to sync) with name, slug, source, query type, primary key and last run size. Use for \"Which models exist in Hightouch\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"name":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only models with this exact name.","title":"Name"},"slug":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only the model with this slug.","title":"Slug"},"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":25,"description":"How many records to return (default 100).","title":"Limit"},"offset":{"anyOf":[{"maximum":100000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"How many records to skip.","title":"Offset"},"order_by":{"anyOf":[{"enum":["id","name","slug","createdAt","updatedAt"],"type":"string"},{"type":"null"}],"default":null,"description":"Sort field.","title":"Order By"}},"title":"list_modelsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/get_model":{"post":{"operationId":"get_model","summary":"Get one Hightouch model by id: name, description, source, query type, primary key, linked sync ids and last run size. Us","description":"Get one Hightouch model by id: name, description, source, query type, primary key, linked sync ids and last run size. Use for \"Show details of Hightouch model 1\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"model_id":{"description":"Numeric id of the model.","maximum":999999999,"minimum":1,"title":"Model Id","type":"integer"}},"required":["model_id"],"title":"get_modelArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_destinations":{"post":{"operationId":"list_destinations","summary":"List the destinations (SaaS tools and databases data is synced to) with name, slug, type and timestamps. Destination set","description":"List the destinations (SaaS tools and databases data is synced to) with name, slug, type and timestamps. Destination settings are not returned. Use for \"Which destinations are set up in Hightouch\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"name":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only destinations with this exact name.","title":"Name"},"slug":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only the destination with this slug.","title":"Slug"},"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":25,"description":"How many records to return (default 100).","title":"Limit"},"offset":{"anyOf":[{"maximum":100000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"How many records to skip.","title":"Offset"},"order_by":{"anyOf":[{"enum":["id","name","slug","createdAt","updatedAt"],"type":"string"},{"type":"null"}],"default":null,"description":"Sort field.","title":"Order By"}},"title":"list_destinationsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_syncs":{"post":{"operationId":"list_syncs","summary":"List Hightouch syncs with model, destination, status, disabled flag, schedule type and last run time. Filter by model or","description":"List Hightouch syncs with model, destination, status, disabled flag, schedule type and last run time. Filter by model or destination. Use for \"Which Hightouch syncs are failing\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"model_id":{"anyOf":[{"maximum":999999999,"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"Only syncs of this model id.","title":"Model Id"},"destination_id":{"anyOf":[{"maximum":999999999,"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"Only syncs to this destination id.","title":"Destination Id"},"slug":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only the sync with this slug.","title":"Slug"},"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":25,"description":"How many records to return (default 100).","title":"Limit"},"offset":{"anyOf":[{"maximum":100000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"How many records to skip.","title":"Offset"},"order_by":{"anyOf":[{"enum":["id","name","slug","createdAt","updatedAt"],"type":"string"},{"type":"null"}],"default":null,"description":"Sort field.","title":"Order By"}},"title":"list_syncsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/get_sync":{"post":{"operationId":"get_sync","summary":"Get one Hightouch sync: model, destination, status, disabled flag, schedule, primary key, referenced columns and last ru","description":"Get one Hightouch sync: model, destination, status, disabled flag, schedule, primary key, referenced columns and last run time. Use for \"Show the status of Hightouch sync 1\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"sync_id":{"description":"Numeric id of the sync.","maximum":999999999,"minimum":1,"title":"Sync Id","type":"integer"}},"required":["sync_id"],"title":"get_syncArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_sync_runs":{"post":{"operationId":"list_sync_runs","summary":"List the runs of a Hightouch sync, newest first by default, with start and finish time, status, query size and planned, ","description":"List the runs of a Hightouch sync, newest first by default, with start and finish time, status, query size and planned, successful and failed row counts. Use for \"Did the last runs of Hightouch sync 1 succeed\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"sync_id":{"description":"Numeric id of the sync.","maximum":999999999,"minimum":1,"title":"Sync Id","type":"integer"},"within":{"anyOf":[{"maximum":525600,"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"Only runs from the last N minutes.","title":"Within"},"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":25,"description":"How many records to return (default 100).","title":"Limit"},"offset":{"anyOf":[{"maximum":100000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"How many records to skip.","title":"Offset"},"order_by":{"anyOf":[{"enum":["id","createdAt","startedAt","finishedAt"],"type":"string"},{"type":"null"}],"default":null,"description":"Sort field.","title":"Order By"}},"required":["sync_id"],"title":"list_sync_runsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_sync_drafts":{"post":{"operationId":"list_sync_drafts","summary":"List pending, approved, rejected or canceled change requests (drafts) of Hightouch syncs, for workspaces that use approv","description":"List pending, approved, rejected or canceled change requests (drafts) of Hightouch syncs, for workspaces that use approval flows. Cursor paginated. Use for \"Which Hightouch sync changes are waiting for approval\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"status":{"anyOf":[{"enum":["pending","approved","rejected","canceled"],"type":"string"},{"type":"null"}],"default":null,"description":"Draft status.","title":"Status"},"sync_id":{"anyOf":[{"maximum":999999999,"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"Only drafts of this sync id.","title":"Sync Id"},"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":25,"description":"How many drafts to return (1 to 100).","title":"Limit"},"cursor":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"The nextCursor value from the previous page.","title":"Cursor"}},"title":"list_sync_draftsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_event_contracts":{"post":{"operationId":"list_event_contracts","summary":"List event contracts (schemas that incoming tracking events must follow) with name, slug, description and linked event s","description":"List event contracts (schemas that incoming tracking events must follow) with name, slug, description and linked event sources. Use for \"What event contracts are defined in Hightouch\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"name":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only contracts with this exact name.","title":"Name"},"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":25,"description":"How many records to return (default 100).","title":"Limit"},"offset":{"anyOf":[{"maximum":100000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"How many records to skip.","title":"Offset"},"order_by":{"anyOf":[{"enum":["id","name","createdAt","updatedAt"],"type":"string"},{"type":"null"}],"default":null,"description":"Sort field.","title":"Order By"}},"title":"list_event_contractsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_event_domains":{"post":{"operationId":"list_event_domains","summary":"List event domains (groups of event definitions and reusable components) with name, slug, description and linked event s","description":"List event domains (groups of event definitions and reusable components) with name, slug, description and linked event sources. Use for \"Which event domains exist in Hightouch\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"name":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only domains with this exact name.","title":"Name"},"source":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only domains linked to this event source.","title":"Source"},"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":25,"description":"How many records to return (default 100).","title":"Limit"},"offset":{"anyOf":[{"maximum":100000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"How many records to skip.","title":"Offset"},"order_by":{"anyOf":[{"enum":["id","name","createdAt","updatedAt"],"type":"string"},{"type":"null"}],"default":null,"description":"Sort field.","title":"Order By"}},"title":"list_event_domainsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}}}}