Skip to main content
macOS hands the URL to TablePro, which parses it, confirms anything that could do damage, and opens something on screen. Nothing comes back over the scheme: to read rows, use MCP. Call it from a shell with open, from another app with NSWorkspace.shared.open(url:), or from a Raycast extension with open() from @raycast/api.

Connection IDs are UUIDs

Connection paths take the connection’s UUID, not its display name.
No UI action copies a connect link. To find a UUID, call the MCP list_connections tool or read the tablepro://connections resource. The welcome window’s Copy TablePro Link context menu item copies a tablepro://import?… link for sharing a connection definition, which is a different thing.

Open a connection

Opens the saved connection, or brings its window to front when it is already open. A UUID that matches no saved connection shows an error sheet. A connection with a pre-connect script shows the script text in a confirmation dialog first, and cancelling that dialog cancels the whole link. This applies to every connect/… form.

Open a table

The first form uses the connection’s current database and schema. The second switches database first. The third switches both, database before schema, which is the Postgres shape. On an engine with schemas and no database to switch between, such as Oracle, a lone database segment names the schema. A segment naming a dimension the engine does not have is dropped rather than applied to the other one. Percent-encode table and schema names that contain spaces or reserved characters.

Run a query

A dialog titled Open Query from Link appears first, previewing the first 300 characters of the SQL; Open Query opens the tab. Nothing executes, the user runs it from the editor. A tab already holding exactly this SQL comes to front instead of a second one opening. sql is required and caps at 51,200 UTF-16 units. Longer than that and the link is dropped.
To run SQL from a script and read rows back, use the MCP execute_query tool. This link hands SQL to the GUI and stops there.

Start pairing

Opens the approval sheet. The user picks scope, connections and expiry, and TablePro returns a one-time code to redirect. scopes and connection-ids are a request, not a grant: the sheet lets the user raise or lower both.
Pairing has the exchange step and the error codes.

Lazy-start the MCP server

Starts the MCP server if it is not running, then returns. MCP does not have to be enabled in Settings first. The bundled tablepro-mcp CLI uses this to bootstrap on a cold launch. The server takes the configured port (23508 by default) and falls back to a kernel-assigned free port when that one is busy. The Status row in Settings > MCP shows the port it bound. A launch whose only reason is this URL stays in the background: no Dock icon, no app switcher entry, until it has a window to show.

Import a connection

Shows a review sheet with the parsed connection, then saves it on Add Connection. name, host and type are required; the rest of the connection form maps to query parameters listed in Connection Import. Passwords are never accepted in a link.

Open a settings pane

The bare link opens Settings on the last-used pane, the same as Cmd+,. With a pane id it opens that pane. The link only navigates and never changes a setting. Ids are lowercase and matched exactly, and they stay the same when a pane is renamed. An unknown id opens the last-used pane with no error, so a link to a pane added in a later version still opens Settings on an older one. Path segments and query items after the id are ignored.

On iPhone and iPad

The iOS app answers two of these paths: connect/<uuid> opens the connection, and connect/<uuid>/table/<table-name> opens it on that table. Any other path under a connection, such as database/… or query, opens the connection alone. import, integrations and settings links do nothing.

Errors

A URL that fails to parse is dropped with no UI at all: an invalid UUID, an unknown path, a missing required parameter, over-limit SQL. The reason goes to the system log under subsystem com.TablePro, so check Console.app when a link does nothing. A URL that parses and then fails shows an error sheet. A valid UUID with no matching connection gives No saved connection with ID "…". under the title Connection Failed.