paperclipai/paperclip · error
At least one allowed spreadsheet ID is required.
Error message
At least one allowed spreadsheet ID is required.
What it means
Configuration guard in createToolDefinitions: the Google Sheets MCP server was constructed with an empty/absent allowedSpreadsheetIds list. The allowlist is the server's security boundary (assertAllowed rejects any spreadsheet outside it), so with zero IDs no tool could ever execute safely; the constructor fails fast instead of producing tools that can never pass the allowlist check.
Solutions
- Configure at least one spreadsheet ID in the allowed-spreadsheets list before calling tools.
Defensive patterns
Strategy: validation
When it happens
Trigger: Thrown at packages/google-sheets-mcp-server/src/tools.ts:144 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/e3ad551f44979efe.
Report an issue: GitHub.
Appendix: source
Thrown at packages/google-sheets-mcp-server/src/tools.ts:144
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),
),
makeTool(
options,
"get_spreadsheet_info",
"Get spreadsheet metadata and sheet tab information for an allowlisted spreadsheet.",
"read",
spreadsheetToolSchema,
async ({ spreadsheetId }) => {View on GitHub (pinned to a7e689b3c3)