Files
zeekay 82120531a1 fix(debrand): read the TypeScript import graph before dropping a product
drop_closure exists to refuse a drop that is really a refactor: if code we
keep still imports a product, deleting it is a ModuleNotFoundError waiting
for the next boot. It only ever read Python, so half the dependency graph was
invisible to it and five products whose TypeScript the core still imports were
dropped anyway — 21 files left importing 25 specifiers that resolve to
nothing, including lib/api.ts, which 760 files import, and seven lazy scene
imports in productScenes.tsx.

Django booted past it and the bundle did not, which is why the Python-only
rule looked like it was working.

The closure now reads both module systems through one table of
(extensions, pattern) pairs, so a third one is a row rather than a branch. The
TypeScript pattern is anchored on the import keyword rather than on the path,
because jest's testPathIgnorePatterns and oxlint's ignore list quote a product
path precisely because it is NOT built; matching those would hold desktop, the
4,797-file product the drop is mostly for.

integrations, wizard, platform_features, visual_review and ai_gateway come
back with their Django apps and workspace entries, since the closure now
spares them. desktop, field_notes, ingestion and support stay dropped.
2026-08-01 22:17:05 -07:00

222 lines
9.4 KiB
YAML

# MCP tool definition — tool entries are scaffolded from the OpenAPI schema.
# The tool list and operation IDs are kept in sync automatically:
# pnpm --filter=@hanzo/mcp run scaffold-yaml -- --sync-all
#
# To enable a tool, set enabled: true and add required scopes + annotations.
# All other fields (title, description, enrich_url, etc.) are yours to configure.
category: Integrations
feature: integrations
url_prefix: /settings/environment-integrations
ui_apps: {}
tools:
integration-delete:
operation: integrations_destroy
enabled: true
scopes:
- integration:write
annotations:
readOnly: false
destructive: true
idempotent: true
title: Delete integration
description: >
Permanently delete an integration by ID. This removes the connection to the third-party service. Any
features relying on this integration (alerts, workflow destinations, etc.) will stop working.
integration-get:
operation: integrations_retrieve
enabled: true
scopes:
- integration:read
annotations:
readOnly: true
destructive: false
idempotent: true
title: Get integration
description: >
Get a specific integration by ID. Returns full integration details including kind, display name, error
status, and creation metadata. Does not expose sensitive credentials or raw configuration.
response:
include:
- id
- kind
- display_name
- errors
- created_at
- created_by
integrations-anthropic-managed-agent-envs-retrieve:
operation: integrations_anthropic_managed_agent_envs_retrieve
enabled: false
integrations-anthropic-managed-agent-vaults-retrieve:
operation: integrations_anthropic_managed_agent_vaults_retrieve
enabled: false
integrations-anthropic-managed-agents-retrieve:
operation: integrations_anthropic_managed_agents_retrieve
enabled: false
integrations-authorize-retrieve:
operation: integrations_authorize_retrieve
enabled: false
integrations-channels-retrieve:
operation: integrations_channels_retrieve
enabled: true
scopes:
- integration:read
annotations:
readOnly: true
destructive: false
idempotent: true
title: List integration channels
description: >
List the Slack channels available for a Slack integration. Slack-only — non-Slack integration ids return an
error (400 if the integration is otherwise visible, 404 if it isn't). Returns each channel's id, name,
is_private, is_member, is_ext_shared, and is_private_without_access flags; use is_member to avoid picking
channels the bot can't post to. Results are cached for 1 hour (no force-refresh exposed via MCP). Use this
to find a channel_id when wiring up Slack delivery for an alert — pass the channel id into the
cdp-functions-create inputs.channel.value field. Requires the Slack integration's id; use integrations-list
(filter by kind=slack) to find it.
integrations-clickup-lists-retrieve:
operation: integrations_clickup_lists_retrieve
enabled: false
integrations-clickup-spaces-retrieve:
operation: integrations_clickup_spaces_retrieve
enabled: false
integrations-clickup-workspaces-retrieve:
operation: integrations_clickup_workspaces_retrieve
enabled: false
integrations-create:
operation: integrations_create
enabled: false
integrations-domain-connect-apply-url-create:
operation: integrations_domain_connect_apply_url_create
enabled: false
integrations-domain-connect-check-retrieve:
operation: integrations_domain_connect_check_retrieve
enabled: false
integrations-email-partial-update:
operation: integrations_email_partial_update
enabled: false
integrations-email-verify-create:
operation: integrations_email_verify_create
enabled: false
integrations-environment-mapping-partial-update:
operation: integrations_environment_mapping_partial_update
enabled: false
integrations-github-available-installations-retrieve:
operation: integrations_github_available_installations_retrieve
enabled: false
integrations-github-branches-retrieve:
operation: integrations_github_branches_retrieve
enabled: false
integrations-github-link-existing-create:
operation: integrations_github_link_existing_create
enabled: false
integrations-github-oauth-authorize-create:
operation: integrations_github_oauth_authorize_create
enabled: false
integrations-github-prepare-callback-create:
operation: integrations_github_prepare_callback_create
enabled: false
integrations-github-repos-refresh-create:
operation: integrations_github_repos_refresh_create
enabled: false
integrations-github-repos-retrieve:
operation: integrations_github_repos_retrieve
enabled: true
scopes:
- integration:read
annotations:
readOnly: true
destructive: false
idempotent: true
title: List GitHub integration repositories
description: >
List the repositories accessible to a GitHub integration (by integration ID). Serves the cached repository
list from the GitHub App installation. Supports `search` (case-insensitive name match), `limit` (default
100, max 500), and `offset` query parameters. Returns repository id, name, and full_name (owner/repo) plus a
has_more flag. Use this to validate that a repository is accessible to the integration before referencing it
(e.g. when creating a GitHub data warehouse source).
integrations-github-teams-retrieve:
operation: integrations_github_teams_retrieve
enabled: false
integrations-google-accessible-accounts-retrieve:
operation: integrations_google_accessible_accounts_retrieve
enabled: false
integrations-google-conversion-actions-retrieve:
operation: integrations_google_conversion_actions_retrieve
enabled: false
integrations-jira-projects-retrieve:
operation: integrations_jira_projects_retrieve
enabled: true
scopes:
- integration:read
annotations:
readOnly: true
destructive: false
idempotent: true
title: List Jira projects
description: >
List Jira projects available through a connected Jira integration. Use integrations-list with kind=jira
first to find the integration id, then pass a returned project key as `config.project_key` when creating an
error tracking external reference.
integrations-linear-teams-retrieve:
operation: integrations_linear_teams_retrieve
enabled: true
scopes:
- integration:read
annotations:
readOnly: true
destructive: false
idempotent: true
title: List Linear teams
description: >
List Linear teams available through a connected Linear integration. Use integrations-list with kind=linear
first to find the integration id, then pass a returned team id as `config.team_id` when creating an error
tracking external reference.
integrations-linkedin-ads-accounts-retrieve:
operation: integrations_linkedin_ads_accounts_retrieve
enabled: false
integrations-linkedin-ads-conversion-rules-retrieve:
operation: integrations_linkedin_ads_conversion_rules_retrieve
enabled: false
integrations-list:
operation: integrations_list
enabled: true
scopes:
- integration:read
annotations:
readOnly: true
destructive: false
idempotent: true
list: true
title: List integrations
description: >
List all third-party integrations configured in the current project. Returns each integration's type (kind),
display name, non-sensitive configuration, error status, and creation metadata. Common kinds include slack,
github, hubspot, salesforce, and various ad platforms. Sensitive credentials (access tokens, secrets) are
never serialized.
response:
include:
- id
- kind
- display_name
- errors
- created_at
- created_by
integrations-request-access-create:
operation: integrations_request_access_create
enabled: false
integrations-twilio-phone-numbers-retrieve:
operation: integrations_twilio_phone_numbers_retrieve
enabled: false
role-external-references-create:
operation: role_external_references_create
enabled: false
role-external-references-destroy:
operation: role_external_references_destroy
enabled: false
role-external-references-list:
operation: role_external_references_list
enabled: false
role-external-references-lookup-retrieve:
operation: role_external_references_lookup_retrieve
enabled: false