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

  1. 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)