{"record":{"id":"18900a5a09ff5006","repo":"paperclipai/paperclip","slug":"spreadsheet-spreadsheetid-is-not-in-the-configu","errorCode":null,"errorMessage":"Spreadsheet ${spreadsheetId} is not in the configured allowlist.","messagePattern":"Spreadsheet (.+?) is not in the configured allowlist\\.","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"packages/google-sheets-mcp-server/src/tools.ts","lineNumber":136,"sourceCode":"  return {\n    name,\n    description,\n    schema,\n    annotations: annotationsFor(description, risk),\n    execute: async (input) => {\n      try {\n        const parsed = schema.parse(input);\n        return formatTextResponse(await execute(parsed));\n      } catch (error) {\n        return formatErrorResponse(error, options.secretRedactions ?? []);\n      }\n    },\n  };\n}\n\nfunction assertAllowed(allowedSpreadsheetIds: Set<string>, spreadsheetId: string) {\n  if (!allowedSpreadsheetIds.has(spreadsheetId)) {\n    throw new Error(`Spreadsheet ${spreadsheetId} is not in the configured allowlist.`);\n  }\n}\n\nexport function createToolDefinitions(options: GoogleSheetsToolOptions): GoogleSheetsToolDefinition[] {\n  const allowedSpreadsheetIds = Array.from(new Set(options.allowedSpreadsheetIds.map((id) => id.trim()).filter(Boolean)));\n  const allowedSpreadsheetIdSet = new Set(allowedSpreadsheetIds);\n  if (allowedSpreadsheetIds.length === 0) {\n    throw new Error(\"At least one allowed spreadsheet ID is required.\");\n  }\n\n  return [\n    makeTool(\n      options,\n      \"list_spreadsheets\",\n      \"List the Google Sheets spreadsheets configured in this connection allowlist.\",\n      \"read\",\n      z.object({}),\n      async () => options.client.listSpreadsheets(allowedSpreadsheetIds),","sourceCodeStart":118,"sourceCodeEnd":154,"githubUrl":"https://github.com/paperclipai/paperclip/blob/a7e689b3c35347b529cb9f54c9b9a8575a3dcab6/packages/google-sheets-mcp-server/src/tools.ts#L118-L154","documentation":"Allowlist enforcement in the Google Sheets MCP server: every tool call is checked so it can only touch spreadsheet ids explicitly listed in the server's configuration; the requested spreadsheetId is outside that set, so the tool refuses to operate on it.","triggerScenarios":"Thrown at packages/google-sheets-mcp-server/src/tools.ts:136 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Add the spreadsheet ID to the server allowlist configuration, or use a spreadsheet that is already allowed."],"exampleFix":null,"handlingStrategy":"validation","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"a7e689b3c35347b529cb9f54c9b9a8575a3dcab6","analyzedAt":"2026-08-18T22:49:45.177Z","contentChangedAt":"2026-08-18T22:49:45.177Z","schemaVersion":2},"datasetVersion":"2026-09-23T08:17:48.524Z"}