{"openapi":"3.1.0","info":{"title":"Tines (BYOK) API","version":"0.1.0","description":"Tines (BYOK) lets an AI assistant read your own Tines data through the Tines API with a key you supply (Tines API key (personal, team or service key)). Read-only: 9 tools (list_stories, list_story_runs, list_actions, list_folders, list_teams, list_tags, list_apps, list_record_types, list_audit_logs). The BYOK key travels with each request, is used for that one call only and is never stored,...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-tines.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-tines/docs"},"termsOfService":"https://connectorbay.com/byok-tines/terms"},"servers":[{"url":"https://byok-tines.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-tines/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_stories":{"post":{"operationId":"list_stories","summary":"List the live stories of the tenant with name, description, team, folder, tags, disabled, locked and priority flags and ","description":"List the live stories of the tenant with name, description, team, folder, tags, disabled, locked and priority flags and edit time. Use for \"Which Tines stories are disabled\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"tenant":{"description":"Your Tines tenant name: the part before .tines.com, for example 'acme-corp'.","maxLength":200,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"Tenant","type":"string"},"team_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"description":"Only items of the team with this id.","title":"Team Id"},"folder_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"description":"Only stories in the folder with this id.","title":"Folder Id"},"search":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Text to search in story names.","title":"Search"},"filter":{"anyOf":[{"enum":["ENABLED","DISABLED","LOCKED","HIGH_PRIORITY","FAVORITE","API_ENABLED","SEND_TO_STORY_ENABLED","CHANGE_CONTROL_ENABLED","CHANGE_CONTROL_DISABLED"],"type":"string"},{"type":"null"}],"default":null,"description":"Filter by one of: ENABLED, DISABLED, LOCKED, HIGH_PRIORITY, FAVORITE, API_ENABLED, SEND_TO_STORY_ENABLED, CHANGE_CONTROL_ENABLED, CHANGE_CONTROL_DISABLED.","title":"Filter"},"order":{"anyOf":[{"enum":["NAME","NAME_DESC","RECENTLY_EDITED","LEAST_RECENTLY_EDITED"],"type":"string"},{"type":"null"}],"default":null,"description":"Order by NAME, NAME_DESC, RECENTLY_EDITED or LEAST_RECENTLY_EDITED.","title":"Order"},"per_page":{"anyOf":[{"maximum":500,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"How many results per page (1 to 500); defaults to 20.","title":"Per Page"},"page":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"}},"required":["tenant"],"title":"list_storiesArguments","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_story_runs":{"post":{"operationId":"list_story_runs","summary":"List runs of one story with start and end time, duration, number of actions and events and mode. Use for \"How did the re","description":"List runs of one story with start and end time, duration, number of actions and events and mode. Use for \"How did the recent runs of Tines story 7981 go\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"tenant":{"description":"Your Tines tenant name: the part before .tines.com, for example 'acme-corp'.","maxLength":200,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"Tenant","type":"string"},"story_id":{"description":"Story id (a number), for example 7981.","title":"Story Id","type":"integer"},"since":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only runs started after this ISO 8601 time.","title":"Since"},"until":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only runs started before this ISO 8601 time.","title":"Until"},"per_page":{"anyOf":[{"maximum":500,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"How many results per page (1 to 500); defaults to 20.","title":"Per Page"},"page":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"}},"required":["tenant","story_id"],"title":"list_story_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_actions":{"post":{"operationId":"list_actions","summary":"List actions (the steps of stories) with name, type, story, team, disabled flag and last event and error times. Action o","description":"List actions (the steps of stories) with name, type, story, team, disabled flag and last event and error times. Action options are not returned. Use for \"Which Tines actions recently had errors\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"tenant":{"description":"Your Tines tenant name: the part before .tines.com, for example 'acme-corp'.","maxLength":200,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"Tenant","type":"string"},"story_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"description":"Only actions of the story with this id.","title":"Story Id"},"team_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"description":"Only items of the team with this id.","title":"Team Id"},"per_page":{"anyOf":[{"maximum":500,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"How many results per page (1 to 500); defaults to 20.","title":"Per Page"},"page":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"}},"required":["tenant"],"title":"list_actionsArguments","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_folders":{"post":{"operationId":"list_folders","summary":"List folders with name, content type (story, credential or resource), team, parent folder and item count. Use for \"Which","description":"List folders with name, content type (story, credential or resource), team, parent folder and item count. Use for \"Which folders exist in my Tines tenant\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"tenant":{"description":"Your Tines tenant name: the part before .tines.com, for example 'acme-corp'.","maxLength":200,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"Tenant","type":"string"},"team_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"description":"Only items of the team with this id.","title":"Team Id"},"content_type":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only folders for this content type, for example STORY, CREDENTIAL or RESOURCE.","title":"Content Type"},"per_page":{"anyOf":[{"maximum":500,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"How many results per page (1 to 500); defaults to 20.","title":"Per Page"},"page":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"}},"required":["tenant"],"title":"list_foldersArguments","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_teams":{"post":{"operationId":"list_teams","summary":"List teams with id, name and groups. Use for \"Which teams does my Tines tenant have\".","description":"List teams with id, name and groups. Use for \"Which teams does my Tines tenant have\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"tenant":{"description":"Your Tines tenant name: the part before .tines.com, for example 'acme-corp'.","maxLength":200,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"Tenant","type":"string"},"scope":{"anyOf":[{"enum":["all","standard","personal_only"],"type":"string"},{"type":"null"}],"default":null,"description":"Which teams: all, standard or personal_only (default standard).","title":"Scope"},"per_page":{"anyOf":[{"maximum":500,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"How many results per page (1 to 500); defaults to 20.","title":"Per Page"},"page":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"}},"required":["tenant"],"title":"list_teamsArguments","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_tags":{"post":{"operationId":"list_tags","summary":"List tags with name, colour, teams and dates. Use for \"Which tags are defined in Tines\".","description":"List tags with name, colour, teams and dates. Use for \"Which tags are defined in Tines\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"tenant":{"description":"Your Tines tenant name: the part before .tines.com, for example 'acme-corp'.","maxLength":200,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"Tenant","type":"string"},"team_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"description":"Only items of the team with this id.","title":"Team Id"},"per_page":{"anyOf":[{"maximum":500,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"How many results per page (1 to 500); defaults to 20.","title":"Per Page"},"page":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"}},"required":["tenant"],"title":"list_tagsArguments","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_apps":{"post":{"operationId":"list_apps","summary":"List Tines apps with name, description, team and whether a version is published. Use for \"Which Tines apps exist\".","description":"List Tines apps with name, description, team and whether a version is published. Use for \"Which Tines apps exist\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"tenant":{"description":"Your Tines tenant name: the part before .tines.com, for example 'acme-corp'.","maxLength":200,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"Tenant","type":"string"},"per_page":{"anyOf":[{"maximum":500,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"How many results per page (1 to 500); defaults to 20.","title":"Per Page"},"page":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"}},"required":["tenant"],"title":"list_appsArguments","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_record_types":{"post":{"operationId":"list_record_types","summary":"List record types with name, slug, description, retention settings, record limit and field definitions. Use for \"Which r","description":"List record types with name, slug, description, retention settings, record limit and field definitions. Use for \"Which record types are defined in Tines\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"tenant":{"description":"Your Tines tenant name: the part before .tines.com, for example 'acme-corp'.","maxLength":200,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"Tenant","type":"string"},"team_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"description":"Only items of the team with this id.","title":"Team Id"},"order":{"anyOf":[{"enum":["NAME","CREATED_AT","UPDATED_AT"],"type":"string"},{"type":"null"}],"default":null,"description":"Sort by NAME, CREATED_AT or UPDATED_AT (default NAME).","title":"Order"},"direction":{"anyOf":[{"enum":["ASC","DESC"],"type":"string"},{"type":"null"}],"default":null,"description":"ASC or DESC (default ASC).","title":"Direction"},"limit":{"anyOf":[{"maximum":500,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"Page size (1 to 500); defaults to 20.","title":"Limit"},"after":{"anyOf":[{"maxLength":500,"type":"string"},{"type":"null"}],"default":null,"description":"Cursor from page.next_page_token of the previous answer.","title":"After"}},"required":["tenant"],"title":"list_record_typesArguments","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_audit_logs":{"post":{"operationId":"list_audit_logs","summary":"List audit log operations (what was done, when, from which surface and on which story). User names, emails and IP addres","description":"List audit log operations (what was done, when, from which surface and on which story). User names, emails and IP addresses are not returned. Needs a key with audit log access. Use for \"What operations happened in my Tines tenant today\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"tenant":{"description":"Your Tines tenant name: the part before .tines.com, for example 'acme-corp'.","maxLength":200,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"Tenant","type":"string"},"after":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only logs created after this ISO 8601 time.","title":"After"},"before":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only logs created before this ISO 8601 time.","title":"Before"},"operation_name":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only logs of this operation name, for example StoryItemsMovement.","title":"Operation Name"},"per_page":{"anyOf":[{"maximum":500,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"How many results per page (1 to 500); defaults to 20.","title":"Per Page"},"page":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"}},"required":["tenant"],"title":"list_audit_logsArguments","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}}}}