{"openapi":"3.1.0","info":{"title":"Acryl Cloud (BYOK) API","version":"0.1.0","description":"Acryl Cloud (BYOK) lets an AI assistant read your own Acryl Cloud data through the Acryl Cloud API with a key you supply (DataHub personal access token). Read-only: 9 tools (search_entities, list_datasets, list_glossary_terms, list_dashboards, get_dataset, get_lineage, get_entity_counts, list_domains, list_ingestion_sources). The BYOK key travels with each request, is used for that one call only...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-acryl.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-acryl/docs"},"termsOfService":"https://connectorbay.com/byok-acryl/terms"},"servers":[{"url":"https://byok-acryl.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-acryl/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/search_entities":{"post":{"operationId":"search_entities","summary":"Full-text search across the catalog, optionally for one entity type, returning urn, type, name, platform and description","description":"Full-text search across the catalog, optionally for one entity type, returning urn, type, name, platform and description. Use for \"Find DataHub datasets about orders\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"tenant":{"description":"Your DataHub Cloud name: the first part of the address you sign in at (acme for acme.acryl.io).","maxLength":200,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"Tenant","type":"string"},"query":{"description":"Search text; use '*' to list everything.","maxLength":300,"title":"Query","type":"string"},"entity_type":{"anyOf":[{"enum":["DATASET","DASHBOARD","CHART","DATA_FLOW","DATA_JOB","CONTAINER","GLOSSARY_TERM","GLOSSARY_NODE","DOMAIN","DATA_PRODUCT","TAG","MLMODEL","NOTEBOOK"],"type":"string"},{"type":"null"}],"default":null,"description":"Only this entity type (omit to search all types).","title":"Entity Type"},"start":{"anyOf":[{"maximum":10000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"How many results to skip, for paging (default 0).","title":"Start"},"count":{"anyOf":[{"maximum":50,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"How many results to return (1 to 50).","title":"Count"}},"required":["tenant","query"],"title":"search_entitiesArguments","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_datasets":{"post":{"operationId":"list_datasets","summary":"List datasets (tables, views, topics) with name, platform and description, optionally filtered by search text. Use for \"","description":"List datasets (tables, views, topics) with name, platform and description, optionally filtered by search text. Use for \"Which datasets does DataHub know about\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"tenant":{"description":"Your DataHub Cloud name: the first part of the address you sign in at (acme for acme.acryl.io).","maxLength":200,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"Tenant","type":"string"},"query":{"anyOf":[{"maxLength":300,"type":"string"},{"type":"null"}],"default":"*","description":"Search text; '*' for everything.","title":"Query"},"start":{"anyOf":[{"maximum":10000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"How many results to skip, for paging (default 0).","title":"Start"},"count":{"anyOf":[{"maximum":50,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"How many results to return (1 to 50).","title":"Count"}},"required":["tenant"],"title":"list_datasetsArguments","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_glossary_terms":{"post":{"operationId":"list_glossary_terms","summary":"List business glossary terms with name and description, optionally filtered by search text. Use for \"What glossary terms","description":"List business glossary terms with name and description, optionally filtered by search text. Use for \"What glossary terms exist in DataHub\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"tenant":{"description":"Your DataHub Cloud name: the first part of the address you sign in at (acme for acme.acryl.io).","maxLength":200,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"Tenant","type":"string"},"query":{"anyOf":[{"maxLength":300,"type":"string"},{"type":"null"}],"default":"*","description":"Search text; '*' for everything.","title":"Query"},"start":{"anyOf":[{"maximum":10000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"How many results to skip, for paging (default 0).","title":"Start"},"count":{"anyOf":[{"maximum":50,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"How many results to return (1 to 50).","title":"Count"}},"required":["tenant"],"title":"list_glossary_termsArguments","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_dashboards":{"post":{"operationId":"list_dashboards","summary":"List dashboards with name, description and source tool, optionally filtered by search text. Use for \"Which dashboards ar","description":"List dashboards with name, description and source tool, optionally filtered by search text. Use for \"Which dashboards are in DataHub\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"tenant":{"description":"Your DataHub Cloud name: the first part of the address you sign in at (acme for acme.acryl.io).","maxLength":200,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"Tenant","type":"string"},"query":{"anyOf":[{"maxLength":300,"type":"string"},{"type":"null"}],"default":"*","description":"Search text; '*' for everything.","title":"Query"},"start":{"anyOf":[{"maximum":10000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"How many results to skip, for paging (default 0).","title":"Start"},"count":{"anyOf":[{"maximum":50,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"How many results to return (1 to 50).","title":"Count"}},"required":["tenant"],"title":"list_dashboardsArguments","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_dataset":{"post":{"operationId":"get_dataset","summary":"Get one dataset by URN: name, platform, description and its schema fields with type and description. Use for \"Show the s","description":"Get one dataset by URN: name, platform, description and its schema fields with type and description. Use for \"Show the schema of the DataHub dataset orders\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"tenant":{"description":"Your DataHub Cloud name: the first part of the address you sign in at (acme for acme.acryl.io).","maxLength":200,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"Tenant","type":"string"},"urn":{"description":"DataHub URN of the entity, for example 'urn:li:dataset:(urn:li:dataPlatform:snowflake,db.schema.orders,PROD)'.","maxLength":600,"title":"Urn","type":"string"}},"required":["tenant","urn"],"title":"get_datasetArguments","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_lineage":{"post":{"operationId":"get_lineage","summary":"List entities upstream or downstream of an entity (data lineage) with their degree of separation. Use for \"What feeds th","description":"List entities upstream or downstream of an entity (data lineage) with their degree of separation. Use for \"What feeds the DataHub dataset orders\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"tenant":{"description":"Your DataHub Cloud name: the first part of the address you sign in at (acme for acme.acryl.io).","maxLength":200,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"Tenant","type":"string"},"urn":{"description":"DataHub URN of the entity, for example 'urn:li:dataset:(urn:li:dataPlatform:snowflake,db.schema.orders,PROD)'.","maxLength":600,"title":"Urn","type":"string"},"direction":{"description":"UPSTREAM for sources, DOWNSTREAM for consumers.","enum":["UPSTREAM","DOWNSTREAM"],"title":"Direction","type":"string"},"start":{"anyOf":[{"maximum":10000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"How many results to skip, for paging (default 0).","title":"Start"},"count":{"anyOf":[{"maximum":50,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"How many results to return (1 to 50).","title":"Count"}},"required":["tenant","urn","direction"],"title":"get_lineageArguments","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_entity_counts":{"post":{"operationId":"get_entity_counts","summary":"Count catalog entities by type (datasets, dashboards, charts, domains and so on). Use for \"How many datasets and dashboa","description":"Count catalog entities by type (datasets, dashboards, charts, domains and so on). Use for \"How many datasets and dashboards does DataHub have\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"tenant":{"description":"Your DataHub Cloud name: the first part of the address you sign in at (acme for acme.acryl.io).","maxLength":200,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"Tenant","type":"string"}},"required":["tenant"],"title":"get_entity_countsArguments","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_domains":{"post":{"operationId":"list_domains","summary":"List data domains with name and description, with paging. Use for \"Which data domains exist in DataHub\".","description":"List data domains with name and description, with paging. Use for \"Which data domains exist in DataHub\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"tenant":{"description":"Your DataHub Cloud name: the first part of the address you sign in at (acme for acme.acryl.io).","maxLength":200,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"Tenant","type":"string"},"start":{"anyOf":[{"maximum":10000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"How many results to skip, for paging (default 0).","title":"Start"},"count":{"anyOf":[{"maximum":50,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"How many results to return (1 to 50).","title":"Count"}},"required":["tenant"],"title":"list_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}},"/v1/tools/list_ingestion_sources":{"post":{"operationId":"list_ingestion_sources","summary":"List managed ingestion sources with name, type, schedule interval and time zone. Source configuration is not requested. ","description":"List managed ingestion sources with name, type, schedule interval and time zone. Source configuration is not requested. Use for \"Which ingestion sources are set up in DataHub\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"tenant":{"description":"Your DataHub Cloud name: the first part of the address you sign in at (acme for acme.acryl.io).","maxLength":200,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"Tenant","type":"string"},"start":{"anyOf":[{"maximum":10000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"How many results to skip, for paging (default 0).","title":"Start"},"count":{"anyOf":[{"maximum":50,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"How many results to return (1 to 50).","title":"Count"}},"required":["tenant"],"title":"list_ingestion_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}}}}