Catalogue API
The connector catalogue is public. It is the same list the console’s app library shows to anyone.
GET https://api.flowplane.eu/public/connectorsNo sign-in needed.
Response
Section titled “Response”An array, in the console’s order:
[ { "id": "gmail", "name": "Gmail", "summary": "Read, search and send Gmail, and sort it, as the person signed in.", "kind": "communication", "kind_label": "Messages and email", "maker": null, "logo": "gmail", "logo_url": "https://console.flowplane.eu/logos/gmail.svg", "own_address": false }]| Field | |
|---|---|
id |
Stable id. Use it as a key, or in a link to the console: https://console.flowplane.eu/connectors/new?pick=<id>. |
name, summary |
As in the console. |
kind |
communication, productivity, development, sales, finance, ai, home or generic. |
kind_label |
The kind as the console names it, for example “Messages and email”. |
maker |
Self-hosted (an app on your own server), Bring your own (any MCP server, or a connector you build), or null for Flowplane’s own connectors. |
logo, logo_url |
The logo id and its address. Both null when there is no logo. |
own_address |
true when you add it at an address you give, reached over the internet or through a tunnel. |
Fair use
Section titled “Fair use”The list is cached for a few minutes, so there is no need to poll it. Fetch it on a server or at build time, not from every visitor’s browser. Too many requests get a 429 with Retry-After.
Example
Section titled “Example”Fetch it once at build time, so your page still builds when the API is down:
type Connector = { id: string; name: string; summary: string; kind: string; kind_label: string; maker: string | null; logo: string | null; logo_url: string | null; own_address: boolean;};
let connectors: Connector[] = [];try { const r = await fetch('https://api.flowplane.eu/public/connectors', { headers: { accept: 'application/json' } }); if (r.ok) connectors = await r.json();} catch { // keep the list empty}