paperclipai/paperclip · error
Spreadsheet is not in the configured allowlist.
Error message
Spreadsheet ${spreadsheetId} is not in the configured allowlist. What it means
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.
Solutions
- Add the spreadsheet ID to the server allowlist configuration, or use a spreadsheet that is already allowed.
Defensive patterns
Strategy: validation
When it happens
Trigger: Thrown at packages/google-sheets-mcp-server/src/tools.ts:136 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of paperclipai/paperclip@a7e689b3c3 (2026-08-18).
Data as JSON: /api/errors/18900a5a09ff5006.
Report an issue: GitHub.
Appendix: source
Thrown at packages/google-sheets-mcp-server/src/tools.ts:136
return {
name,
description,
schema,
annotations: annotationsFor(description, risk),
execute: async (input) => {
try {
const parsed = schema.parse(input);
return formatTextResponse(await execute(parsed));
} catch (error) {
return formatErrorResponse(error, options.secretRedactions ?? []);
}
},
};
}
function assertAllowed(allowedSpreadsheetIds: Set<string>, spreadsheetId: string) {
if (!allowedSpreadsheetIds.has(spreadsheetId)) {
throw new Error(`Spreadsheet ${spreadsheetId} is not in the configured allowlist.`);
}
}
export function createToolDefinitions(options: GoogleSheetsToolOptions): GoogleSheetsToolDefinition[] {
const allowedSpreadsheetIds = Array.from(new Set(options.allowedSpreadsheetIds.map((id) => id.trim()).filter(Boolean)));
const allowedSpreadsheetIdSet = new Set(allowedSpreadsheetIds);
if (allowedSpreadsheetIds.length === 0) {
throw new Error("At least one allowed spreadsheet ID is required.");
}
return [
makeTool(
options,
"list_spreadsheets",
"List the Google Sheets spreadsheets configured in this connection allowlist.",
"read",
z.object({}),
async () => options.client.listSpreadsheets(allowedSpreadsheetIds),View on GitHub (pinned to a7e689b3c3)