Connector Tools
A project runs on connectors: the platforms it gates access on, messages through and takes payments from.
A project runs on connectors: the platforms it gates access on, messages through and takes payments from. These tools browse the directory, install and remove connectors on a project, verify an installation, read a bot's status and change an installation's settings.
Tools
disconnect_connectorDisconnect ConnectorREADget_connectorGet ConnectorREADget_connector_installationGet Connector InstallationREADget_connector_uninstall_previewGet Connector Uninstall PreviewREADget_deep_linkBuild Bot Deep LinkREADget_portal_urlBuild Subscriber Portal URLWRITEinstall_connectorInstall ConnectorREADlist_connector_installationsList Connector InstallationsREADlist_connectorsList ConnectorsWRITErestore_connector_accessRestore Connector AccessWRITErun_connector_doctorRun Connector DoctorDESTRUCTIVEuninstall_connectorUninstall ConnectorWRITEupdate_connector_installation_settingsUpdate Connector Installation SettingsWRITEverify_connector_installationVerify Connector Installationdisconnect_connector
DESTRUCTIVEDisconnect a project's installation of one connector — the connector withdraws it, the credentials are wiped, the row stays. Destructive.
Detaches a project's live installation of one connector. The connector withdraws the installation on its platform, the credentials are wiped and the installation turns disconnected. Members keep the access they hold; grants, resources, plans and identities are untouched; the creator can connect it again from the dashboard. An installation already disconnected is left alone. The REST twin is DELETE /v1/projects/{project}/connectors/{key}/installation.
Requires ability
The token behind the MCP session must hold it, or the call is refused with TOKEN_MISSING_ABILITY.
Runs the same action as
The REST endpoint and this tool share one action, so validation, permissions and events are identical.
Fires one event
Delivered to every endpoint subscribed to it once the change is made.
Annotations
A client that honours annotations asks a person before running it.
Arguments
project_id*stringUUID of the project.
connector*stringThe connector key, as `list_connectors` returns it.
What it returns
{ "data": { "installation_id": "3b8f0c6e-2d41-4a97-9e5f-1c7d6b2a8e40", "connector": "telegram", "project_id": "7f3d1c92-8b45-4e6a-9d21-5c8e0a4b6f13", "disconnected": true }, "meta": {}}How it fails
AUTHENTICATION_REQUIREDno authenticated user on the request.
TOKEN_MISSING_ABILITYtoken lacks project-connector:delete.
RESOURCE_NOT_FOUNDthe project is not visible to this token, or context.reason is unknown_connector.
CONNECTOR_NOT_INSTALLEDthe project has no installation of the connector.
get_connector
READRead one Connectors Marketplace card by key — its lane, badges and, for a connector that exists as a package, its manifest and the form that connects it.
Answer "what can this connector do?" or "what does connecting it ask the creator for?" for one connector. The card is the same list_connectors returns: status and installable, official and the badges, the category, tagline, overview and links, and for a registered connector the manifest with its resource_kinds, capabilities, messaging limits, pacing, management_commands and missing_commands, recovery facets and the declarative install_fields and settings_fields. A roadmap entry (coming_soon) answers too, with every manifest key null or empty. The REST twin is GET /v1/connectors/{key}.
Requires ability
The token behind the MCP session must hold it, or the call is refused with TOKEN_MISSING_ABILITY.
Runs the same action as
The REST endpoint and this tool share one action, so validation, permissions and events are identical.
Annotations
It reads and never changes anything.
Arguments
connector*stringThe connector key, as `list_connectors` returns it.
What it returns
{ "data": { "key": "telegram", "name": "Telegram", "vendor": "Subscriby", "version": "1.0.0", "status": "available", "status_label": "Available Now", "installable": true, "official": true, "badges": [{ "key": "official", "label": "Official" }], "category": "messaging", "tagline": "Sell access to Telegram channels, groups and supergroups through your own bot.", "links": { "documentation": "https://docs.subscriby.net/guide/connectors/telegram", "support": "mailto:[email protected]", "privacy": "https://telegram.org/privacy", "terms": "https://telegram.org/tos", "homepage": "https://telegram.org" }, "added_at": "2025-04-21", "install_mode": "paste_credential", "scopes": ["project", "platform"], "resource_kinds": [ { "kind": "channel", "label": "Channel", "portal_label": "Channel", "icon": "megaphone", "grant_mode": "bearer_link", "supports_early_admission_hold": true } ], "capabilities": [ "messaging", "access_control", "management_surface", "recovery_probes" ], "messaging": { "max_length": 4096, "buttons_per_row": 8, "max_buttons": 100, "callback_data_bytes": 64, "supports_underline": true, "supports_spoiler": true, "supports_files": true }, "pacing": { "min_interval_microseconds": 35000, "burst": 30, "per_recipient_interval_microseconds": 1000000 }, "management_commands": ["project_create", "plan_manage"], "missing_commands": ["creator_tasks"], "recovery": { "probes": true, "standby_installations": true, "resource_standby": false, "mirror": false, "identity_relink": false }, "install_fields": [ { "name": "token", "type": "secret", "label": "Bot token", "help": "Paste the token @BotFather gave you.", "required": true, "rules": ["string"], "options": [], "value": null, "steps": [], "links": {} } ], "settings_fields": [] }, "meta": {}}How it fails
AUTHENTICATION_REQUIREDno authenticated user on the request.
TOKEN_MISSING_ABILITYtoken lacks project-connector:view-any.
RESOURCE_NOT_FOUNDno connector is known by that key; context.connector echoes it.
Read a project's live installation of one connector — its state, health and the platform's own account for it — and learn why it is missing when it is.
Reads the project's live installation of one connector: the state (pending, connected, degraded, revoked, disconnected) with its reason and detail, whether the creator can fix it (creator_actionable), whether it can act right now (operational), the platform's own external_id, display_name, handle and avatar_url, and the timestamps of its life. The REST twin is GET /v1/projects/{project}/connectors/{key}/installation.
Requires ability
The token behind the MCP session must hold it, or the call is refused with TOKEN_MISSING_ABILITY.
Runs the same action as
The REST endpoint and this tool share one action, so validation, permissions and events are identical.
Annotations
It reads and never changes anything.
Arguments
project_id*stringUUID of the project.
connector*stringThe connector key, as `list_connectors` returns it.
What it returns
{ "data": { "id": "3b8f0c6e-2d41-4a97-9e5f-1c7d6b2a8e40", "connector": "telegram", "project_id": "7f3d1c92-8b45-4e6a-9d21-5c8e0a4b6f13", "scope": "project", "role": "live", "state": "degraded", "state_reason": "connector_api_unauthorized", "state_detail": "The token was revoked in @BotFather.", "creator_actionable": true, "operational": true, "external_id": "7123456789", "display_name": "Research Bot", "handle": "research_bot", "avatar_url": null, "health_checked_at": "2026-09-12T06:00:00Z", "connected_at": "2026-04-21T09:15:00Z", "verified_at": "2026-09-11T06:00:00Z", "revoked_at": null, "disconnected_at": null, "uninstalled_at": null, "created_at": "2026-04-21T09:15:00Z" }, "meta": {}}How it fails
AUTHENTICATION_REQUIREDno authenticated user on the request.
TOKEN_MISSING_ABILITYtoken lacks project-connector:view.
RESOURCE_NOT_FOUNDthe project is not visible to this token; or context.reason is unknown_connector (the key names no connector) or not_installed (the project has no live installation of it).
Show what uninstalling a connector from a project would touch, changing nothing — the dialog to confirm before uninstall_connector.
The impact preview the Connectors tab shows before an uninstall, for an agent to read back to the creator. Nothing changes: it lists the connector's resources (which would be deactivated as detached), counts the live_grants on them (which would be revoked and their members put outside), names the emptied_plans that would keep nothing to grant, counts the recurring_subscriptions on those plans (which the creator may have cancelled at period end) and the one_time_subscriptions (never cancelled), lists affected_subscription_ids, and counts the upcoming_windows of emptied pass plans, the open_support_threads on the connector and the member_identities that would lose their reach. options carries the two opt-ins with their defaults. The REST twin is GET /v1/projects/{project}/connectors/{key}/uninstall-preview.
Requires ability
The token behind the MCP session must hold it, or the call is refused with TOKEN_MISSING_ABILITY.
Runs the same action as
The REST endpoint and this tool share one action, so validation, permissions and events are identical.
Annotations
It reads and never changes anything.
Arguments
project_id*stringUUID of the project.
connector*stringThe connector key, as `list_connectors` returns it.
What it returns
{ "data": { "installation": { "id": "3b8f0c6e-2d41-4a97-9e5f-1c7d6b2a8e40", "connector": "discord", "state": "connected", "operational": true }, "connector": "discord", "resources": [ { "id": "b73c5f21-9d80-4a6e-8215-4f70ce13a9d6", "title": "Members Lounge", "type": null, "kind": "discord:role", "active": true } ], "live_grants": 41, "emptied_plans": [ { "id": "c4e82f16-93a7-4d5b-b81c-6e0f27a94d3b", "name": "Lounge Monthly", "active": true, "recurring": true } ], "recurring_subscriptions": 17, "one_time_subscriptions": 3, "affected_subscription_ids": ["5b7e2d40-1a86-4c39-97f2-e83d0b16c5a4"], "upcoming_windows": 0, "open_support_threads": 2, "member_identities": 44, "empties_plans": true, "options": { "unpublish_emptied_plans": true, "cancel_recurring_subscriptions": true } }, "meta": {}}How it fails
AUTHENTICATION_REQUIREDno authenticated user on the request.
TOKEN_MISSING_ABILITYtoken lacks project-connector:view.
RESOURCE_NOT_FOUNDthe project is not visible to this token, or context.reason is unknown_connector.
CONNECTOR_NOT_INSTALLEDthe project has no installation of the connector.
get_deep_link
READBuild a sharable deep link into a project's bot on its connector, for a project, plan, or access code.
Build a sharable deep link into a project's bot on its connector. The start payload depends on which optional input wins, in this precedence order:
| Input | Resulting payload | Use case |
|---|---|---|
access_code | the UUID verbatim | Hand out one-time redemption links. |
plan_id | the plan's bare UUID | Send a subscriber straight to a plan's checkout flow. |
custom | caller-supplied | Track ad campaigns or referral codes with your own payload. |
| (none) | project_<uuid> | Default — opens the bot on the project home flow. |
Requires ability
The token behind the MCP session must hold it, or the call is refused with TOKEN_MISSING_ABILITY.
Runs the same action as
The REST endpoint and this tool share one action, so validation, permissions and events are identical.
Annotations
It reads and never changes anything.
Arguments
project_id*stringUUID of the project whose bot URL to embed in the deep-link.
plan_idstringoptionalOptional plan UUID. When set, the payload is that UUID verbatim and the bot opens the plan checkout.
access_codestringoptionalOptional access-code UUID. When set, payload is the UUID verbatim for one-tap redemption.
customstringoptionalOptional caller-supplied payload. Useful for campaign / referral tracking.
What it returns
{ "data": { "project_id": "7f3d1c92-8b45-4e6a-9d21-5c8e0a4b6f13", "bot_url": "https://t.me/research_bot", "start_payload": "a1b2c3d4-5e6f-7a8b-9c0d-1e2f3a4b5c6d", "deep_link": "https://t.me/research_bot?start=a1b2c3d4-5e6f-7a8b-9c0d-1e2f3a4b5c6d" }}How it fails
RESOURCE_NOT_FOUNDproject_id is not a valid UUID or out of tenant scope; or plan_id doesn't belong to the project.
VALIDATION_FAILEDplan_id is malformed, or the project has no bot attached (reason: no_bot_attached).
TOKEN_MISSING_ABILITYtoken lacks distribution:read.
get_portal_url
READCompute the subscriber portal URL for a project — {frontend_url}/{handle}. Always reflects the current handle.
Compute the subscriber portal URL for a project — {frontend_url}/{handle}. Always reflects the current handle, so updating the handle invalidates old portal URLs automatically.
Requires ability
The token behind the MCP session must hold it, or the call is refused with TOKEN_MISSING_ABILITY.
Runs the same action as
The REST endpoint and this tool share one action, so validation, permissions and events are identical.
Annotations
It reads and never changes anything.
Arguments
project_id*stringUUID of the project whose portal URL to return.
What it returns
{ "data": { "project_id": "7f3d1c92-8b45-4e6a-9d21-5c8e0a4b6f13", "handle": "research-premium", "portal_url": "https://my.subscriby.net/research-premium" }}How it fails
RESOURCE_NOT_FOUNDproject_id is not a valid UUID, or the project belongs to a team outside the token's scope.
TOKEN_MISSING_ABILITYtoken lacks distribution:read.
install_connector
WRITEInstall a connector on a project — a pending installation with no credentials yet, which the creator connects from the dashboard.
Mark a project as running a connector. Installing opens a pending installation, the row the Connectors tab shows until the creator connects it; connecting needs a credential typed by a person, so no tool does it. Installing a connector that is already installed changes nothing and returns the existing installation. The REST twin is POST /v1/projects/{project}/connectors/{key}.
Requires ability
The token behind the MCP session must hold it, or the call is refused with TOKEN_MISSING_ABILITY.
Runs the same action as
The REST endpoint and this tool share one action, so validation, permissions and events are identical.
Fires one event
Delivered to every endpoint subscribed to it once the change is made.
Arguments
project_id*stringUUID of the project.
connector*stringThe connector key, as `list_connectors` returns it; only an `installable` card can be installed.
What it returns
{ "data": { "id": "3b8f0c6e-2d41-4a97-9e5f-1c7d6b2a8e40", "connector": "discord", "project_id": "7f3d1c92-8b45-4e6a-9d21-5c8e0a4b6f13", "scope": "project", "role": "live", "state": "pending", "state_reason": null, "state_detail": null, "creator_actionable": false, "operational": false, "external_id": null, "display_name": null, "handle": null, "avatar_url": null, "health_checked_at": null, "connected_at": null, "verified_at": null, "revoked_at": null, "disconnected_at": null, "uninstalled_at": null, "created_at": "2026-09-12T10:05:00+00:00" }, "meta": {}}How it fails
AUTHENTICATION_REQUIREDno authenticated user on the request.
TOKEN_MISSING_ABILITYtoken lacks project-connector:create.
RESOURCE_NOT_FOUNDthe project is not visible to this token.
CONNECTOR_UNAVAILABLEthe key names no connector creators may install today (its card is not installable).
CONNECTOR_TIER_REQUIREDa second distinct connector on the project, and the project owner's plan lacks multi_connector (Growth).
Events emitted
connector.installedwhen a row is opened (or an uninstalled one brought back).
List every connector installation a project holds — live and standby — with its state, health and the platform's own account for it.
Answer "which connectors does this project run, and are they healthy?". Every row the Connectors tab shows: the connector key, the scope (project, or platform for a shared presence Subscriby runs), the role (live for the one that acts, standby for the spare the Disaster Recovery Program keeps), the state (pending, connected, degraded, revoked, disconnected) with its state_reason and state_detail, whether the creator can fix it (creator_actionable), whether it can act right now (operational), the platform's own external_id, display_name, handle and avatar_url, and when it was connected, verified, revoked, disconnected or uninstalled. Credentials and settings never appear. The REST twin is GET /v1/projects/{project}/connectors.
Requires ability
The token behind the MCP session must hold it, or the call is refused with TOKEN_MISSING_ABILITY.
Runs the same action as
The REST endpoint and this tool share one action, so validation, permissions and events are identical.
Annotations
It reads and never changes anything.
Arguments
project_id*stringUUID of the project whose installations to list.
What it returns
{ "data": [ { "id": "3b8f0c6e-2d41-4a97-9e5f-1c7d6b2a8e40", "connector": "telegram", "project_id": "7f3d1c92-8b45-4e6a-9d21-5c8e0a4b6f13", "scope": "project", "role": "live", "state": "connected", "state_reason": null, "state_detail": null, "creator_actionable": false, "operational": true, "external_id": "7123456789", "display_name": "Research Bot", "handle": "research_bot", "avatar_url": null, "health_checked_at": "2026-09-12T06:00:00Z", "connected_at": "2026-04-21T09:15:00Z", "verified_at": "2026-09-12T06:00:00Z", "revoked_at": null, "disconnected_at": null, "uninstalled_at": null, "created_at": "2026-04-21T09:15:00Z" } ], "meta": { "total": 1 }}Rows come oldest first.
How it fails
AUTHENTICATION_REQUIREDno authenticated user on the request.
TOKEN_MISSING_ABILITYtoken lacks project-connector:view-any.
RESOURCE_NOT_FOUNDthe project is not visible to this token.
list_connectors
READList the Connectors Marketplace — every connector Subscriby knows, lane by lane, with its badges, manifest and the form that connects it.
Answer "which connectors exist, which can a creator install today, and what does each do?". Every card carries its lane (status: available, beta, paused, in_development, coming_soon), whether it is installable, whether it is official, its badges (official or community, new, trending), the category, tagline, overview and links, and, for a connector that exists as a package, the whole manifest: install_mode, scopes, the resource_kinds it gates with their grant mode, capabilities, messaging limits, pacing, the management_commands its in-chat surface renders and the missing_commands it does not, relay_modes, the recovery facets, and the declarative install_fields and settings_fields a client renders as the connect form. The payload is exactly what GET /v1/connectors returns; the same document is the subscriby://connectors/catalog resource.
Requires ability
The token behind the MCP session must hold it, or the call is refused with TOKEN_MISSING_ABILITY.
Runs the same action as
The REST endpoint and this tool share one action, so validation, permissions and events are identical.
Annotations
It reads and never changes anything.
Arguments
statusstringoptionalNarrow to one lane: `available`, `beta`, `paused`, `in_development` or `coming_soon`. Omit for every lane.
availablebetapausedin_developmentcoming_soonWhat it returns
{ "data": [ { "key": "telegram", "name": "Telegram", "vendor": "Subscriby", "version": "1.0.0", "status": "available", "status_label": "Available Now", "installable": true, "official": true, "badges": [{ "key": "official", "label": "Official" }], "category": "messaging", "tagline": "Sell access to Telegram channels, groups and supergroups through your own bot.", "install_mode": "paste_credential", "scopes": ["project", "platform"], "resource_kinds": [ { "kind": "channel", "label": "Channel", "portal_label": "Channel", "icon": "megaphone", "grant_mode": "bearer_link", "supports_early_admission_hold": true, "upgrades_from": null, "plan_kinds": ["one_time", "recurring", "pass", "pass_series"] } ], "capabilities": ["messaging", "access_control", "management_surface"], "install_fields": [ { "name": "token", "type": "secret", "label": "Bot token", "required": true, "rules": ["string"], "steps": [], "links": {} } ] }, { "key": "slack", "name": "Slack", "status": "coming_soon", "status_label": "Coming Soon", "installable": false, "badges": [], "eta": "Planned", "install_mode": null, "resource_kinds": [], "install_fields": [] } ], "meta": { "total": 5 }}Cards come installable lanes first, then by name. See the Connectors API for every lane, badge and manifest key.
How it fails
AUTHENTICATION_REQUIREDno authenticated user on the request.
TOKEN_MISSING_ABILITYtoken lacks project-connector:view-any.
VALIDATION_FAILEDstatus names no lane; context.accepted lists them.
Bring a project's detached places on a reinstalled connector back and hand every live purchase of a plan granting them fresh access.
The dashboard's Restore Access for agents. An uninstall leaves every place on the connector detached and revokes its grants; once the connector is installed and connected again, this asks the connector about every detached place, reactivates the ones it still controls, and hands every live purchase of a plan granting them fresh access — only the grants a purchase lacks are issued, which are exactly the ones the uninstall took away, and member.resource_added fires per grant. A place the connector no longer controls stays detached for run_connector_doctor to explain. Plans the uninstall took off sale stay off sale.
Requires ability
The token behind the MCP session must hold it, or the call is refused with TOKEN_MISSING_ABILITY.
Runs the same action as
The REST endpoint and this tool share one action, so validation, permissions and events are identical.
Fires one event
Delivered to every endpoint subscribed to it once the change is made.
Annotations
Sending the same arguments twice changes nothing the second time.
Arguments
project_id*stringUUID of the project.
connector*stringThe connector key, as `list_connectors` returns it.
What it returns
{ "data": { "installation": { "id": "3b8f0c6e-2d41-4a97-9e5f-1c7d6b2a8e40", "connector": "telegram", "state": "connected" }, "connector": "telegram", "resources": [ { "resource_id": "b73c5f21-9d80-4a6e-8215-4f70ce13a9d6", "title": "Premium Channel", "restored": true }, { "resource_id": "0d4a7e19-5c2b-4f83-9a61-2e8b7c3d5f10", "title": "Archive Group", "restored": false } ], "resources_reactivated": 1, "resources_still_detached": 1, "subscriptions_reissued": 14 }, "meta": {}}How it fails
AUTHENTICATION_REQUIREDno authenticated user on the request.
TOKEN_MISSING_ABILITYtoken lacks project-connector:update.
RESOURCE_NOT_FOUNDthe project is unknown or outside the token's reach.
CONNECTOR_NOT_INSTALLEDthe project has no installation of the connector.
CONNECTOR_NOT_CONNECTEDthe installation is pending or disconnected; connect it and verify it first.
run_connector_doctor
WRITEVerify a project's installation of a connector and ask the connector about every resource it gates — one report, a finding per check.
The dashboard's Run Doctor for agents. The installation is verified exactly as verify_connector_installation does it, then the connector is asked about every resource the installation gates, and the answer is one report: a finding for the installation, then one per resource, each with a severity (ok, warning, critical), the connector's own state word, a sentence in the creator's language, whether the creator can fix it and where. A resource the connector has no place for is a warning, never silence. The report is kept on the installation and raises connector.doctor_completed only when the findings differ from the previous run's. The REST twin is POST /v1/projects/{project}/connectors/{key}/installation/doctor.
Requires ability
The token behind the MCP session must hold it, or the call is refused with TOKEN_MISSING_ABILITY.
Runs the same action as
The REST endpoint and this tool share one action, so validation, permissions and events are identical.
Fires one event
Delivered to every endpoint subscribed to it once the change is made.
Annotations
Sending the same arguments twice changes nothing the second time.
Arguments
project_id*stringUUID of the project.
connector*stringThe connector key, as `list_connectors` returns it.
What it returns
{ "data": { "installation_id": "3b8f0c6e-2d41-4a97-9e5f-1c7d6b2a8e40", "connector": "telegram", "project_id": "7f3d1c92-8b45-4e6a-9d21-5c8e0a4b6f13", "ran_at": "2026-09-12T10:07:00Z", "healthy": false, "critical": 1, "warnings": 0, "findings": [ { "key": "installation", "kind": "installation", "severity": "ok", "severity_label": "OK", "subject": "Research Bot", "state": "connected", "message": "The connector still answers for this installation.", "creator_actionable": false, "fix_url": null, "resource_id": null }, { "key": "resource:b73c5f21-9d80-4a6e-8215-4f70ce13a9d6", "kind": "resource", "severity": "critical", "severity_label": "Critical", "subject": "Premium Channel", "state": "not_member", "message": "The bot was removed from this channel.", "creator_actionable": true, "fix_url": "https://app.subscriby.net/projects/7f3d1c92-8b45-4e6a-9d21-5c8e0a4b6f13/resources", "resource_id": "b73c5f21-9d80-4a6e-8215-4f70ce13a9d6" } ] }, "meta": {}}How it fails
AUTHENTICATION_REQUIREDno authenticated user on the request.
TOKEN_MISSING_ABILITYtoken lacks project-connector:update.
RESOURCE_NOT_FOUNDthe project is unknown or outside the token's reach.
CONNECTOR_NOT_INSTALLEDthe project has no installation of the connector.
uninstall_connector
DESTRUCTIVEUninstall a connector from a project — grants revoked, resources detached, the row kept — with two opt-ins for the plans it empties. Destructive.
Distinct from disconnecting and never a deletion. Every live grant on the connector's resources is revoked (members are put outside; member.resource_removed per grant), its resources are deactivated as detached with their external ids kept, the installation row stays with uninstalled_at, identities are never removed, and no money moves by itself. Two opt-ins, both on by default, act on the plans left with nothing to grant: unpublish_emptied_plans takes them off sale; cancel_recurring_subscriptions cancels their live recurring subscriptions at the end of the paid period and emails each member. One-time and lifetime purchases are never cancelled. Always read get_connector_uninstall_preview and confirm with the creator first. The REST twin is DELETE /v1/projects/{project}/connectors/{key}.
Requires ability
The token behind the MCP session must hold it, or the call is refused with TOKEN_MISSING_ABILITY.
Runs the same action as
The REST endpoint and this tool share one action, so validation, permissions and events are identical.
Delivered to every endpoint subscribed to it once the change is made.
Annotations
A client that honours annotations asks a person before running it.
Arguments
project_id*stringUUID of the project.
connector*stringThe connector key, as `list_connectors` returns it.
unpublish_emptied_plansbooleanoptionalTake the plans left with nothing to grant off sale. Default true.
cancel_recurring_subscriptionsbooleanoptionalCancel the live recurring subscriptions on those plans at the end of their paid period and email each member. Default true. One-time purchases are never cancelled.
What it returns
{ "data": { "installation": { "id": "3b8f0c6e-2d41-4a97-9e5f-1c7d6b2a8e40", "connector": "discord", "state": "disconnected", "operational": false, "uninstalled_at": "2026-09-12T11:30:00+00:00" }, "connector": "discord", "grants_revoked": 41, "resources_detached": 2, "plans_unpublished": 1, "subscriptions_cancelled": 17, "members_notified": 17 }, "meta": {}}How it fails
AUTHENTICATION_REQUIREDno authenticated user on the request.
TOKEN_MISSING_ABILITYtoken lacks project-connector:delete.
RESOURCE_NOT_FOUNDthe project is not visible to this token, or context.reason is unknown_connector.
CONNECTOR_NOT_INSTALLEDthe project has no installation of the connector.
Events emitted
connector.uninstalledwith the counts.member.resource_removedper revoked grant.plan.deactivatedper emptied plan taken off sale, andsubscription.cancelledper recurring subscription cancelled, when the opt-ins are on.
Change a project's connector installation settings, validated against the fields the connector declares.
Write the settings a connector declares for its installations. settings is an object keyed by the field names in the connector's settings_fields (read them with get_connector); every declared rule runs, a key the connector never declared is refused, and fields left out keep their value. The installation is returned without its settings, because a settings field may be a secret. The REST twin is PATCH /v1/projects/{project}/connectors/{key}/installation/settings.
Requires ability
The token behind the MCP session must hold it, or the call is refused with TOKEN_MISSING_ABILITY.
Runs the same action as
The REST endpoint and this tool share one action, so validation, permissions and events are identical.
Fires one event
Delivered to every endpoint subscribed to it once the change is made.
Annotations
Sending the same arguments twice changes nothing the second time.
Arguments
project_id*stringUUID of the project.
connector*stringThe connector key, as `list_connectors` returns it.
settingsobjectoptionalThe fields to change, keyed by the names the connector declares in `settings_fields`; fields left out keep their value. Optional when `capabilities` is given.
capabilitiesobjectoptionalCapability switches to change, keyed by capability value (`messaging`, `broadcasts`, `support_relay`, `native_payments`, `recovery_*`) to true or false; switches left out keep their value. Optional when `settings` is given.
What it returns
The installation, as get_connector_installation renders it, capabilities included: every capability the connector declares with enabled and toggleable. Settings are never serialised.
How it fails
AUTHENTICATION_REQUIREDno authenticated user on the request.
TOKEN_MISSING_ABILITYtoken lacks project-connector:update.
RESOURCE_NOT_FOUNDthe project is not visible to this token, or context.reason is unknown_connector.
CONNECTOR_NOT_INSTALLEDthe project has no installation of the connector.
VALIDATION_FAILEDa key the connector does not declare, a declared rule failed, a capability it does not declare or cannot switch off, a switch that is not true or false, or neither settings nor capabilities given; context names the field or the capability.
Events emitted
connector.settings_updatednaming the fields and the switches (capabilities.<key>) that changed, only when something did.
Ask the connector whether a project's installation still answers, and record the verdict on it.
A fresh probe rather than the hourly one. The connector is asked about the installation and the answer is recorded: state becomes connected, degraded (with state_reason, state_detail and whether the creator can fix it) or revoked, and health_checked_at is stamped. A pending installation has nothing to verify and is returned as it is. The REST twin is POST /v1/projects/{project}/connectors/{key}/installation/verify.
Requires ability
The token behind the MCP session must hold it, or the call is refused with TOKEN_MISSING_ABILITY.
Runs the same action as
The REST endpoint and this tool share one action, so validation, permissions and events are identical.
Fires one event
Delivered to every endpoint subscribed to it once the change is made.
Annotations
Sending the same arguments twice changes nothing the second time.
Arguments
project_id*stringUUID of the project.
connector*stringThe connector key, as `list_connectors` returns it.
What it returns
{ "data": { "id": "3b8f0c6e-2d41-4a97-9e5f-1c7d6b2a8e40", "connector": "telegram", "project_id": "7f3d1c92-8b45-4e6a-9d21-5c8e0a4b6f13", "scope": "project", "role": "live", "state": "degraded", "state_reason": "connector_api_unauthorized", "state_detail": "The token was revoked in @BotFather.", "creator_actionable": true, "operational": true, "external_id": "7123456789", "display_name": "Research Bot", "handle": "research_bot", "avatar_url": null, "health_checked_at": "2026-09-12T10:07:00+00:00", "connected_at": "2026-04-21T09:15:00+00:00", "verified_at": "2026-09-11T06:00:00+00:00", "revoked_at": null, "disconnected_at": null, "uninstalled_at": null, "created_at": "2026-04-21T09:15:00+00:00" }, "meta": {}}How it fails
AUTHENTICATION_REQUIREDno authenticated user on the request.
TOKEN_MISSING_ABILITYtoken lacks project-connector:update.
RESOURCE_NOT_FOUNDthe project is not visible to this token, or context.reason is unknown_connector.
CONNECTOR_NOT_INSTALLEDthe project has no installation of the connector.
Events emitted
connector.status_changedonly when the state moved.
How is this guide?
Analytics & Reports Tools
Every figure the creator dashboard renders is readable here, from revenue and churn to the transaction list, computed by the same service layer, so an agent and the dashboard never disagree.
Coupon Tools
A coupon is one code many buyers can redeem for money off at checkout, the multi-use counterpart of an access code.