Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@

MCP server for Google Workspace integration (Drive, Sheets, Forms, Docs, Gmail, Calendar). Version 3.3.0.

**Linear:** Team "Google Drive" (ID: `9fd7c68d-cf3f-4ac0-a0d7-42605c079da1`) — issues prefixed `GDRIVE-`

- 6 operation-based tools with 47 total operations
- Redis caching (optional, graceful fallback)
- Token encryption with key rotation
Expand Down
6 changes: 3 additions & 3 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

17 changes: 12 additions & 5 deletions src/sdk/spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -297,14 +297,21 @@ export const SDK_SPEC: SDKSpec = {
returns: "{ formId, title, description, questions: Question[], responderUri, editUri }",
},
addQuestion: {
signature: "addQuestion(options: { formId: string, question: QuestionSpec }): Promise<{ formId, questionId, title, type }>",
signature: "addQuestion(options: { formId: string, title: string, type: QuestionType, required?: boolean, options?: string[], scaleMin?: number, scaleMax?: number, scaleMinLabel?: string, scaleMaxLabel?: string }): Promise<{ formId, title, type, message }>",
description: "Add a question to an existing form.",
example: "await sdk.forms.addQuestion({\n formId: '1FAIpQLSf...',\n question: {\n title: 'Rate your experience',\n type: 'SCALE',\n required: true,\n scaleMin: 1, scaleMax: 5\n }\n});",
example: "await sdk.forms.addQuestion({\n formId: '1FAIpQLSf...',\n title: 'Rate your experience',\n type: 'LINEAR_SCALE',\n required: true,\n scaleMin: 1,\n scaleMax: 5,\n scaleMinLabel: 'Poor',\n scaleMaxLabel: 'Excellent'\n});",
params: {
formId: "string (required)",
"question": "QuestionSpec — { title: string, type: 'SHORT_ANSWER' | 'PARAGRAPH' | 'MULTIPLE_CHOICE' | 'CHECKBOX' | 'DROPDOWN' | 'SCALE' | 'DATE' | 'TIME', required?: boolean, options?: string[], scaleMin?: number, scaleMax?: number }",
},
returns: "{ formId, questionId, title, type }",
title: "string (required) — question title/text",
type: "QuestionType — 'TEXT' | 'PARAGRAPH_TEXT' | 'MULTIPLE_CHOICE' | 'CHECKBOX' | 'DROPDOWN' | 'LINEAR_SCALE' | 'DATE' | 'TIME'",
required: "boolean (optional, default false) — whether answer is required",
options: "string[] (optional) — choices for MULTIPLE_CHOICE, CHECKBOX, DROPDOWN",
scaleMin: "number (optional, default 1) — minimum for LINEAR_SCALE",
scaleMax: "number (optional, default 5) — maximum for LINEAR_SCALE",
scaleMinLabel: "string (optional) — label for minimum scale value",
scaleMaxLabel: "string (optional) — label for maximum scale value",
},
returns: "{ formId, title, type, message }",
},
listResponses: {
signature: "listResponses(options: { formId: string, pageSize?: number, pageToken?: string }): Promise<{ formId, totalResponses, responses: FormResponse[] }>",
Expand Down
8 changes: 4 additions & 4 deletions src/tools/listTools.ts
Original file line number Diff line number Diff line change
Expand Up @@ -139,9 +139,9 @@ export async function generateToolStructure(): Promise<ModuleStructure> {
},
{
name: 'addQuestion',
signature: 'addQuestion({ formId: string, title: string, questionType: string, ... })',
description: 'Add a question to a form',
example: 'forms.addQuestion({ formId: "abc123", title: "Your rating", questionType: "SCALE" })',
signature: 'addQuestion({ formId: string, title: string, type: QuestionType, required?: boolean, options?: string[], scaleMin?: number, scaleMax?: number, scaleMinLabel?: string, scaleMaxLabel?: string })',
description: 'Add a question to a form. QuestionType: TEXT | PARAGRAPH_TEXT | MULTIPLE_CHOICE | CHECKBOX | DROPDOWN | LINEAR_SCALE | DATE | TIME',
example: 'forms.addQuestion({ formId: "abc123", title: "Your rating", type: "LINEAR_SCALE", scaleMin: 1, scaleMax: 5 })',
},
{
name: 'listResponses',
Expand Down Expand Up @@ -368,4 +368,4 @@ export async function getToolDefinition(
): Promise<ToolDefinition | undefined> {
const moduleTools = await getModuleTools(moduleName);
return moduleTools.find(tool => tool.name === toolName);
}
}
5 changes: 3 additions & 2 deletions tsconfig.json
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,8 @@
"noImplicitReturns": true,
"noFallthroughCasesInSwitch": true,
"noUncheckedIndexedAccess": true,
"exactOptionalPropertyTypes": true
"exactOptionalPropertyTypes": true,
"ignoreDeprecations": "5.0"
},
"include": [
"./**/*.ts"
Expand All @@ -33,4 +34,4 @@
"**/*.test.ts",
"**/*.spec.ts"
]
}
}