{"record":{"id":"518bed55072b402a","repo":"paperclipai/paperclip","slug":"missing-paperclip-api-url","errorCode":null,"errorMessage":"Missing PAPERCLIP_API_URL","messagePattern":"Missing PAPERCLIP_API_URL","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"packages/mcp-server/src/config.ts","lineNumber":25,"sourceCode":"}\n\nfunction nonEmpty(value: string | undefined): string | null {\n  return typeof value === \"string\" && value.trim().length > 0 ? value.trim() : null;\n}\n\nfunction stripTrailingSlash(value: string): string {\n  return value.replace(/\\/+$/, \"\");\n}\n\nexport function normalizeApiUrl(apiUrl: string): string {\n  const trimmed = stripTrailingSlash(apiUrl.trim());\n  return trimmed.endsWith(\"/api\") ? trimmed : `${trimmed}/api`;\n}\n\nexport function readConfigFromEnv(env: NodeJS.ProcessEnv = process.env): PaperclipMcpConfig {\n  const apiUrl = nonEmpty(env.PAPERCLIP_API_URL);\n  if (!apiUrl) {\n    throw new Error(\"Missing PAPERCLIP_API_URL\");\n  }\n  const apiKey = nonEmpty(env.PAPERCLIP_API_KEY);\n  if (!apiKey) {\n    throw new Error(\"Missing PAPERCLIP_API_KEY\");\n  }\n\n  return {\n    apiUrl: normalizeApiUrl(apiUrl),\n    apiKey,\n    companyId: nonEmpty(env.PAPERCLIP_COMPANY_ID),\n    agentId: nonEmpty(env.PAPERCLIP_AGENT_ID),\n    runId: nonEmpty(env.PAPERCLIP_RUN_ID),\n  };\n}\n","sourceCodeStart":7,"sourceCodeEnd":40,"githubUrl":"https://github.com/paperclipai/paperclip/blob/120ae5428fa29bee300bcf806491cd4d965fbb7c/packages/mcp-server/src/config.ts#L7-L40","documentation":"Error \"Missing PAPERCLIP_API_URL\" thrown in paperclipai/paperclip.","triggerScenarios":"Thrown at packages/mcp-server/src/config.ts:25 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Set PAPERCLIP_API_URL to the base URL of the Paperclip API server."],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"120ae5428fa29bee300bcf806491cd4d965fbb7c","analyzedAt":"2026-08-18T22:49:45.177Z","contentChangedAt":"2026-08-18T22:49:45.177Z","schemaVersion":2},"datasetVersion":"2026-09-23T08:17:48.524Z"}