Skip to content

GraphQL connection with failed introspection looks healthy but exposes zero tools #1473

Description

@davidwrossiter

Setup: self-hosted Cloudflare host (apps/host-cloudflare), GraphQL integration for https://api.linear.app/graphql, org-owned API-key connection.

What happened: the integration's auth template had a typo in the header name (Authorisation), so introspection at connection-create ran effectively unauthenticated and the upstream rejected it. resolveTools returned incomplete: true with "GraphQL introspection could not be loaded." — but that reason is swallowed: the connection card in the web UI looked perfectly healthy while holding zero tools, coreTools.connections.refresh returned a bare {"tools":[]}, and the only evidence was a WARN executor tool sync preserved catalog line found via wrangler tail.

Why it hurts: an agent (or human) pointing at the catalog concludes the integration simply has no tools. Debugging required reading resolveTools in packages/plugins/graphql/src/sdk/plugin.ts and tailing the worker.

Suggestion: surface incompleteReason wherever the connection is rendered or returned —

  • connection card: "0 tools — introspection failed: <reason / upstream status>"
  • connections.refresh / connections.list responses: include incomplete + incompleteReason
  • ideally include the upstream HTTP status from the failed introspection attempt (the introspect non-200 path already builds a redacted upstream message; it just never reaches the surface).

Happy to PR this if you point me at the preferred surface.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions