{"openapi":"3.1.0","info":{"title":"Teable (BYOK) API","version":"0.1.0","description":"Teable (BYOK) lets an AI assistant read your own Teable data through the Teable API with a key you supply (Teable personal access token). Read-only: 10 tools (get_me, list_spaces, list_bases, list_tables, get_table, list_fields, list_views, list_records, get_record, get_row_count). The BYOK key travels with each request, is used for that one call only and is never stored, logged or cached; it is...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-teable.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-teable/docs"},"termsOfService":"https://connectorbay.com/byok-teable/terms"},"servers":[{"url":"https://byok-teable.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-teable/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/get_me":{"post":{"operationId":"get_me","summary":"Show the Teable user the token belongs to: id, name, email, language and admin flag. Use for \"Which Teable account is my","description":"Show the Teable user the token belongs to: id, name, email, language and admin flag. Use for \"Which Teable account is my token connected to\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"get_meArguments","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_spaces":{"post":{"operationId":"list_spaces","summary":"List the Teable spaces the user can access, with id, name and role. Use for \"Which Teable spaces do I have\".","description":"List the Teable spaces the user can access, with id, name and role. Use for \"Which Teable spaces do I have\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"list_spacesArguments","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_bases":{"post":{"operationId":"list_bases","summary":"List all bases the user can access across spaces, with space id, role and last modified time. Use for \"Which Teable base","description":"List all bases the user can access across spaces, with space id, role and last modified time. Use for \"Which Teable bases do I have\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"order_by":{"anyOf":[{"enum":["space","personal"],"type":"string"},{"type":"null"}],"default":null,"description":"Group order: space or personal.","title":"Order By"}},"title":"list_basesArguments","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_tables":{"post":{"operationId":"list_tables","summary":"List the tables of a base with id, name, description and default view. Use for \"What tables are in my Teable base\".","description":"List the tables of a base with id, name, description and default view. Use for \"What tables are in my Teable base\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"base_id":{"description":"Base id, starts with 'bse' (from list_bases).","maxLength":40,"title":"Base Id","type":"string"}},"required":["base_id"],"title":"list_tablesArguments","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_table":{"post":{"operationId":"get_table","summary":"Get one table of a base: name, description, icon, order and default view id. Use for \"Show Teable table tblXXXXXXXXXXXXX","description":"Get one table of a base: name, description, icon, order and default view id. Use for \"Show Teable table tblXXXXXXXXXXXXXXXX\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"base_id":{"description":"Base id, starts with 'bse' (from list_bases).","maxLength":40,"title":"Base Id","type":"string"},"table_id":{"description":"Table id, starts with 'tbl' (from list_tables).","maxLength":40,"title":"Table Id","type":"string"}},"required":["base_id","table_id"],"title":"get_tableArguments","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_fields":{"post":{"operationId":"list_fields","summary":"List the visible fields (columns) of a table with id, name, type, primary and computed flags. Use for \"What columns does","description":"List the visible fields (columns) of a table with id, name, type, primary and computed flags. Use for \"What columns does my Teable table have\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"table_id":{"description":"Table id, starts with 'tbl' (from list_tables).","maxLength":40,"title":"Table Id","type":"string"},"view_id":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Only fields as seen in this view (id starting with 'viw').","title":"View Id"}},"required":["table_id"],"title":"list_fieldsArguments","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_views":{"post":{"operationId":"list_views","summary":"List the views of a table with id, name, type and whether the view is locked. Use for \"Which views does my Teable table ","description":"List the views of a table with id, name, type and whether the view is locked. Use for \"Which views does my Teable table have\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"table_id":{"description":"Table id, starts with 'tbl' (from list_tables).","maxLength":40,"title":"Table Id","type":"string"}},"required":["table_id"],"title":"list_viewsArguments","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_records":{"post":{"operationId":"list_records","summary":"List records of a table (default 100, at most 1000 per call) with field values, optionally following a view's filter and","description":"List records of a table (default 100, at most 1000 per call) with field values, optionally following a view's filter and sort. Use for \"Show the first 20 records of my Teable table\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"table_id":{"description":"Table id, starts with 'tbl' (from list_tables).","maxLength":40,"title":"Table Id","type":"string"},"view_id":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Follow this view's filter and sort (id starting with 'viw').","title":"View Id"},"take":{"anyOf":[{"maximum":1000,"minimum":1,"type":"integer"},{"type":"null"}],"default":100,"description":"How many records to return (1 to 1000, default 100).","title":"Take"},"skip":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"How many records to skip (default 0).","title":"Skip"},"field_key_type":{"anyOf":[{"enum":["id","name","dbFieldName"],"type":"string"},{"type":"null"}],"default":"name","description":"Key used in record fields: name (default), id or dbFieldName.","title":"Field Key Type"},"cell_format":{"anyOf":[{"enum":["json","text"],"type":"string"},{"type":"null"}],"default":"json","description":"json (default, typed values) or text (plain strings).","title":"Cell Format"}},"required":["table_id"],"title":"list_recordsArguments","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_record":{"post":{"operationId":"get_record","summary":"Get one record by id with all visible field values and created and modified times. Use for \"Show Teable record recXXXXXX","description":"Get one record by id with all visible field values and created and modified times. Use for \"Show Teable record recXXXXXXXXXXXXXXXX\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"table_id":{"description":"Table id, starts with 'tbl' (from list_tables).","maxLength":40,"title":"Table Id","type":"string"},"record_id":{"description":"Record id, starts with 'rec'.","maxLength":40,"title":"Record Id","type":"string"},"field_key_type":{"anyOf":[{"enum":["id","name","dbFieldName"],"type":"string"},{"type":"null"}],"default":"name","description":"Key used in record fields: name (default), id or dbFieldName.","title":"Field Key Type"}},"required":["table_id","record_id"],"title":"get_recordArguments","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_row_count":{"post":{"operationId":"get_row_count","summary":"Count the records of a table, optionally within one view's filter. Use for \"How many rows are in my Teable table\".","description":"Count the records of a table, optionally within one view's filter. Use for \"How many rows are in my Teable table\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"table_id":{"description":"Table id, starts with 'tbl' (from list_tables).","maxLength":40,"title":"Table Id","type":"string"},"view_id":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Count within this view (id starting with 'viw').","title":"View Id"}},"required":["table_id"],"title":"get_row_countArguments","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}}}}