List the project's own database tables
Returns the tables your bot uses for its own data.
Paige platform tables are never listed — contacts, conversations, messages, execution_logs and broadcast_recipients are absent entirely, not flagged. Read those through their dedicated endpoints (/v1/contacts/{id}/messages, /v1/conversations, /v1/broadcasts/{id}/recipients), which carry their own scopes.
Defaults to the public (production) schema — the one the live bot reads. Pass schema=preview for the dev sandbox.
Required scope: tables:read
Authorizations
Project API key issued in Settings → API keys. Send it as Authorization: Bearer pk_live_….
Headers
Target project id, for an MCP OAuth bearer (mcp_at_…) attached to more than one project — get ids from GET /v1/projects. Matched case-insensitively.
Omit it and a READ falls back to the connection's default project; a mutation (any non-GET) on a connection with 2+ projects is rejected with 400 project_required — a write is never defaulted to a guessed project. A connection with exactly one project never needs the header.
Scopes are checked against the SELECTED project only, never a union across the connection.
For a pk_ API key the header selects nothing — one key is one project's context — but it IS validated: omit it and the key's own project is used, send it and it must name that project, otherwise the call is rejected with 403 project_not_attached (a blank value is 400 invalid_project_header, as above).
Query Parameters
Which database schema to target: "public" (production, the default) or "preview" (dev sandbox).
public, preview 