paperclipai/paperclip · error · ToolGatewayHttpError

mcp_remote_status

mcp_remote_status

Error message

Remote MCP server returned an HTTP error

What it means

Remote MCP forwarding: the upstream server answered tools/call with a non-2xx HTTP status. The connection health is marked error and a 502 mcp_remote_status wraps the upstream status, request id, and execution details — the failure originates in the remote server, not the gateway or the agent's request shape.

Solutions

  1. The remote MCP server returned an HTTP error. Check the server URL, credentials, and remote server health, then retry.
Defensive patterns

Strategy: try-catch

When it happens

Trigger: Thrown at server/src/services/tool-gateway.ts:3106 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of paperclipai/paperclip@3f1d897a7c (2026-08-18). Data as JSON: /api/errors/405a34a5e2d5db12. Report an issue: GitHub.

Appendix: source

Thrown at server/src/services/tool-gateway.ts:4138

        "missing_secret",
        "A configured credential secret could not be resolved.",
      );
      if (input.requireResolved) {
        throw new ToolGatewayHttpError(
          422,
          "A configured credential secret could not be resolved.",
          "mcp_remote_missing_secret",
          { connectionId: connection.id, credential: input.configPath },
        );
      }
      return {
        refHash: input.refHash,
        versionSelector: String(versionSelector),
        resolvedVersion: -1,
      };
    }
  }

  async function connectedCredentialVersionSnapshots(
    connection: typeof toolConnections.$inferSelect,
    grant: typeof connectionGrants.$inferSelect,
    options: { requireResolved: boolean },
  ): Promise<{
    headerCredentialVersions: ConnectedCredentialVersionSnapshot[];
    credentialSecretVersions: ConnectedCredentialVersionSnapshot[];
  }> {
    const headerCredentialVersions: ConnectedCredentialVersionSnapshot[] = [];
    const credentialSecretVersions: ConnectedCredentialVersionSnapshot[] = [];

    for (const ref of connection.credentialRefs ?? []) {
      if (ref.placement !== "header" && ref.placement !== "url") continue;
      const typedRef = ref as McpConnectionCredentialRef;
      const grantRef = grantRefForCredential(grant, typedRef);
      if (!grantRef) continue;
      const configPath =
        typedRef.placement === "url"

View on GitHub (pinned to 3f1d897a7c)