{"record":{"id":"f2ca4b402d2caa5d","repo":"paperclipai/paperclip","slug":"paperclip-api-url-is-required-to-deliver-managed-r","errorCode":null,"errorMessage":"PAPERCLIP_API_URL is required to deliver managed runtime MCP servers","messagePattern":"PAPERCLIP_API_URL is required to deliver managed runtime MCP servers","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"server/src/services/heartbeat.ts","lineNumber":3433,"sourceCode":"   * additional project. The array is empty unless the multi-project workspace-sync flag is on\n   * ({@link isMultiProjectWorkspaceSyncEnabled}); with the flag off the run resolves the anchor\n   * workspace only, exactly as before.\n   */\n  additionalWorkspaces: ResolvedAdditionalWorkspace[];\n  /**\n   * Structured record of every referenced project that the run dropped or failed, paired with the\n   * layer that dropped it. Run preparation reads this to emit the requested-vs-synced observability\n   * log. The human-readable form of each drop already rides {@link ResolvedWorkspaceForRun.warnings}.\n   */\n  referencedProjectFailures: ReferencedProjectFailure[];\n};\n\n/** The anchor workspace shape, before the additional referenced workspaces are attached. */\ntype ResolvedAnchorWorkspaceForRun = Omit<\n  ResolvedWorkspaceForRun,\n  \"additionalWorkspaces\" | \"referencedProjectFailures\"\n>;\n\n/**\n * Assemble the run warnings for the agent-home fallback when a project has workspaces but none\n * produced a usable cwd. Materialization failures (for example a failed managed clone) take\n * priority over the generic \"no local cwd configured\" note, which previously masked them.\n */\nexport function buildAnchorFallbackWorkspaceNotes(input: {\n  fallbackCwd: string;\n  preferredWorkspaceWarning: string | null;\n  materializationFailures: WorkspaceMaterializationFailure[];\n  missingProjectCwds: string[];\n  hasConfiguredProjectCwd: boolean;\n}): string[] {\n  const warnings: string[] = [];\n  if (input.preferredWorkspaceWarning) {\n    warnings.push(input.preferredWorkspaceWarning);\n  }\n  if (input.materializationFailures.length > 0) {\n    const first = input.materializationFailures[0];","sourceCodeStart":3415,"sourceCodeEnd":3451,"githubUrl":"https://github.com/paperclipai/paperclip/blob/01ad8584922b5d85292b1723cae71fa0d9b07a19/server/src/services/heartbeat.ts#L3415-L3451","documentation":"paperclipApiBaseUrl() needs the base URL of this Paperclip API instance to build managed runtime MCP gateway endpoints, and PAPERCLIP_API_URL is unset or empty. Managed MCP delivery cannot construct gateway URLs without it, so it throws immediately.","triggerScenarios":"Thrown at server/src/services/heartbeat.ts:3264 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Set PAPERCLIP_API_URL to this instance's reachable API URL so managed runtime MCP servers can be delivered."],"exampleFix":null,"handlingStrategy":"validation","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"01ad8584922b5d85292b1723cae71fa0d9b07a19","analyzedAt":"2026-08-18T22:49:45.177Z","contentChangedAt":"2026-08-18T22:49:45.177Z","schemaVersion":2},"datasetVersion":"2026-09-14T00:17:10.932Z"}