{"openapi":"3.1.0","info":{"title":"Tinybird (BYOK) API","version":"0.1.0","description":"Tinybird (BYOK) lets an AI assistant read your own Tinybird data through the Tinybird API with a key you supply (Tinybird token (a read token or admin token of the workspace)). Read-only: 6 tools (list_datasources, get_datasource, list_pipes, get_pipe, list_jobs, get_job). The BYOK key travels with each request, is used for that one call only and is never stored, logged or cached; it is only ever...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-tinybird.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-tinybird/docs"},"termsOfService":"https://connectorbay.com/byok-tinybird/terms"},"servers":[{"url":"https://byok-tinybird.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-tinybird/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_datasources":{"post":{"operationId":"list_datasources","summary":"List the data sources (tables) of the workspace that the token can read, with type, engine, size and row estimates, pipe","description":"List the data sources (tables) of the workspace that the token can read, with type, engine, size and row estimates, pipes that use each one, and timestamps. Use for \"Which data sources are in my Tinybird workspace and how large are they\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"attrs":{"anyOf":[{"maxLength":300,"type":"string"},{"type":"null"}],"default":"id,name,description,type,created_at,updated_at,engine,statistics,used_by,quarantine_rows","description":"Comma-separated data source attributes to return; leave the default for a compact answer.","title":"Attrs"}},"title":"list_datasourcesArguments","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_datasource":{"post":{"operationId":"get_datasource","summary":"Get one data source by name or id: type, columns with their types, engine, size and row estimates, pipes using it, quara","description":"Get one data source by name or id: type, columns with their types, engine, size and row estimates, pipes using it, quarantine rows and timestamps. Use for \"What columns does the Tinybird data source events have\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"name":{"description":"Name or id of the data source, for example events.","maxLength":200,"title":"Name","type":"string"},"attrs":{"anyOf":[{"maxLength":300,"type":"string"},{"type":"null"}],"default":null,"description":"Comma-separated attributes to return, for example name,columns,statistics; empty returns the full answer.","title":"Attrs"}},"required":["name"],"title":"get_datasourceArguments","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_pipes":{"post":{"operationId":"list_pipes","summary":"List the pipes (SQL transformations and API endpoints) of the workspace with description, endpoint node id and timestamp","description":"List the pipes (SQL transformations and API endpoints) of the workspace with description, endpoint node id and timestamps. SQL of the nodes is not included here. Use for \"Which pipes and API endpoints exist in my Tinybird workspace\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"attrs":{"anyOf":[{"maxLength":300,"type":"string"},{"type":"null"}],"default":"id,name,description,endpoint,created_at,updated_at,type","description":"Comma-separated pipe attributes to return; leave the default for a compact answer.","title":"Attrs"},"node_attrs":{"anyOf":[{"maxLength":300,"type":"string"},{"type":"null"}],"default":null,"description":"Comma-separated node attributes to return when nodes are requested in attrs, for example id,name.","title":"Node Attrs"}},"title":"list_pipesArguments","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_pipe":{"post":{"operationId":"get_pipe","summary":"Get one pipe by name or id with its nodes (name, SQL and whether a node materializes). Use for \"What SQL does the Tinybi","description":"Get one pipe by name or id with its nodes (name, SQL and whether a node materializes). Use for \"What SQL does the Tinybird pipe top_events run\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"name":{"description":"Name or id of the pipe, for example top_events.","maxLength":200,"title":"Name","type":"string"}},"required":["name"],"title":"get_pipeArguments","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_jobs":{"post":{"operationId":"list_jobs","summary":"List background jobs (imports, populates, copies) of the last 48 hours, up to 100, filterable by kind, status, pipe and ","description":"List background jobs (imports, populates, copies) of the last 48 hours, up to 100, filterable by kind, status, pipe and time. Use for \"Which Tinybird jobs failed in the last two days\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"kind":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only jobs of this kind, for example import, populateview or copy.","title":"Kind"},"status":{"anyOf":[{"enum":["waiting","working","done","error"],"type":"string"},{"type":"null"}],"default":null,"description":"Only jobs with this status.","title":"Status"},"pipe_name":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only jobs of this pipe name.","title":"Pipe Name"},"created_after":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only jobs created after this ISO 8601 time.","title":"Created After"},"created_before":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only jobs created before this ISO 8601 time.","title":"Created Before"}},"title":"list_jobsArguments","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_job":{"post":{"operationId":"get_job","summary":"Get one background job by id (available for 48 hours): kind, status, timing, target data source, statistics, quarantined","description":"Get one background job by id (available for 48 hours): kind, status, timing, target data source, statistics, quarantined and invalid rows and pipe name for pipe-related jobs. Use for \"What happened to Tinybird job d5b869ed-3a74-45f9-af54-57350aae4cef\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"job_id":{"description":"Job id (UUID).","maxLength":200,"title":"Job Id","type":"string"}},"required":["job_id"],"title":"get_jobArguments","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}}}}