@mcp-z/mcp-sheets 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +181 -0
- package/bin/server.js +5 -0
- package/dist/cjs/constants.d.cts +7 -0
- package/dist/cjs/constants.d.ts +7 -0
- package/dist/cjs/constants.js +18 -0
- package/dist/cjs/constants.js.map +1 -0
- package/dist/cjs/index.d.cts +8 -0
- package/dist/cjs/index.d.ts +8 -0
- package/dist/cjs/index.js +314 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/lib/create-store.d.cts +2 -0
- package/dist/cjs/lib/create-store.d.ts +2 -0
- package/dist/cjs/lib/create-store.js +166 -0
- package/dist/cjs/lib/create-store.js.map +1 -0
- package/dist/cjs/mcp/index.d.cts +3 -0
- package/dist/cjs/mcp/index.d.ts +3 -0
- package/dist/cjs/mcp/index.js +66 -0
- package/dist/cjs/mcp/index.js.map +1 -0
- package/dist/cjs/mcp/prompts/a1-notation.d.cts +19 -0
- package/dist/cjs/mcp/prompts/a1-notation.d.ts +19 -0
- package/dist/cjs/mcp/prompts/a1-notation.js +169 -0
- package/dist/cjs/mcp/prompts/a1-notation.js.map +1 -0
- package/dist/cjs/mcp/prompts/index.d.cts +1 -0
- package/dist/cjs/mcp/prompts/index.d.ts +1 -0
- package/dist/cjs/mcp/prompts/index.js +17 -0
- package/dist/cjs/mcp/prompts/index.js.map +1 -0
- package/dist/cjs/mcp/resources/index.d.cts +1 -0
- package/dist/cjs/mcp/resources/index.d.ts +1 -0
- package/dist/cjs/mcp/resources/index.js +17 -0
- package/dist/cjs/mcp/resources/index.js.map +1 -0
- package/dist/cjs/mcp/resources/spreadsheet.d.cts +2 -0
- package/dist/cjs/mcp/resources/spreadsheet.d.ts +2 -0
- package/dist/cjs/mcp/resources/spreadsheet.js +258 -0
- package/dist/cjs/mcp/resources/spreadsheet.js.map +1 -0
- package/dist/cjs/mcp/tools/cells-format.d.cts +144 -0
- package/dist/cjs/mcp/tools/cells-format.d.ts +144 -0
- package/dist/cjs/mcp/tools/cells-format.js +484 -0
- package/dist/cjs/mcp/tools/cells-format.js.map +1 -0
- package/dist/cjs/mcp/tools/chart-create.d.cts +94 -0
- package/dist/cjs/mcp/tools/chart-create.d.ts +94 -0
- package/dist/cjs/mcp/tools/chart-create.js +575 -0
- package/dist/cjs/mcp/tools/chart-create.js.map +1 -0
- package/dist/cjs/mcp/tools/columns-get.d.cts +55 -0
- package/dist/cjs/mcp/tools/columns-get.d.ts +55 -0
- package/dist/cjs/mcp/tools/columns-get.js +289 -0
- package/dist/cjs/mcp/tools/columns-get.js.map +1 -0
- package/dist/cjs/mcp/tools/columns-update.d.cts +86 -0
- package/dist/cjs/mcp/tools/columns-update.d.ts +86 -0
- package/dist/cjs/mcp/tools/columns-update.js +482 -0
- package/dist/cjs/mcp/tools/columns-update.js.map +1 -0
- package/dist/cjs/mcp/tools/csv-get-columns.d.cts +43 -0
- package/dist/cjs/mcp/tools/csv-get-columns.d.ts +43 -0
- package/dist/cjs/mcp/tools/csv-get-columns.js +386 -0
- package/dist/cjs/mcp/tools/csv-get-columns.js.map +1 -0
- package/dist/cjs/mcp/tools/dimensions-batch-update.d.cts +118 -0
- package/dist/cjs/mcp/tools/dimensions-batch-update.d.ts +118 -0
- package/dist/cjs/mcp/tools/dimensions-batch-update.js +504 -0
- package/dist/cjs/mcp/tools/dimensions-batch-update.js.map +1 -0
- package/dist/cjs/mcp/tools/dimensions-move.d.cts +86 -0
- package/dist/cjs/mcp/tools/dimensions-move.d.ts +86 -0
- package/dist/cjs/mcp/tools/dimensions-move.js +359 -0
- package/dist/cjs/mcp/tools/dimensions-move.js.map +1 -0
- package/dist/cjs/mcp/tools/index.d.cts +26 -0
- package/dist/cjs/mcp/tools/index.d.ts +26 -0
- package/dist/cjs/mcp/tools/index.js +122 -0
- package/dist/cjs/mcp/tools/index.js.map +1 -0
- package/dist/cjs/mcp/tools/lib/dimension-operations.d.cts +48 -0
- package/dist/cjs/mcp/tools/lib/dimension-operations.d.ts +48 -0
- package/dist/cjs/mcp/tools/lib/dimension-operations.js +177 -0
- package/dist/cjs/mcp/tools/lib/dimension-operations.js.map +1 -0
- package/dist/cjs/mcp/tools/rows-append.d.cts +58 -0
- package/dist/cjs/mcp/tools/rows-append.d.ts +58 -0
- package/dist/cjs/mcp/tools/rows-append.js +335 -0
- package/dist/cjs/mcp/tools/rows-append.js.map +1 -0
- package/dist/cjs/mcp/tools/rows-csv-append.d.cts +67 -0
- package/dist/cjs/mcp/tools/rows-csv-append.d.ts +67 -0
- package/dist/cjs/mcp/tools/rows-csv-append.js +859 -0
- package/dist/cjs/mcp/tools/rows-csv-append.js.map +1 -0
- package/dist/cjs/mcp/tools/rows-get.d.cts +56 -0
- package/dist/cjs/mcp/tools/rows-get.d.ts +56 -0
- package/dist/cjs/mcp/tools/rows-get.js +292 -0
- package/dist/cjs/mcp/tools/rows-get.js.map +1 -0
- package/dist/cjs/mcp/tools/sheet-copy-to.d.cts +68 -0
- package/dist/cjs/mcp/tools/sheet-copy-to.d.ts +68 -0
- package/dist/cjs/mcp/tools/sheet-copy-to.js +341 -0
- package/dist/cjs/mcp/tools/sheet-copy-to.js.map +1 -0
- package/dist/cjs/mcp/tools/sheet-copy.d.cts +80 -0
- package/dist/cjs/mcp/tools/sheet-copy.d.ts +80 -0
- package/dist/cjs/mcp/tools/sheet-copy.js +394 -0
- package/dist/cjs/mcp/tools/sheet-copy.js.map +1 -0
- package/dist/cjs/mcp/tools/sheet-create.d.cts +56 -0
- package/dist/cjs/mcp/tools/sheet-create.d.ts +56 -0
- package/dist/cjs/mcp/tools/sheet-create.js +283 -0
- package/dist/cjs/mcp/tools/sheet-create.js.map +1 -0
- package/dist/cjs/mcp/tools/sheet-delete.d.cts +62 -0
- package/dist/cjs/mcp/tools/sheet-delete.d.ts +62 -0
- package/dist/cjs/mcp/tools/sheet-delete.js +341 -0
- package/dist/cjs/mcp/tools/sheet-delete.js.map +1 -0
- package/dist/cjs/mcp/tools/sheet-find.d.cts +48 -0
- package/dist/cjs/mcp/tools/sheet-find.d.ts +48 -0
- package/dist/cjs/mcp/tools/sheet-find.js +261 -0
- package/dist/cjs/mcp/tools/sheet-find.js.map +1 -0
- package/dist/cjs/mcp/tools/sheet-rename.d.cts +60 -0
- package/dist/cjs/mcp/tools/sheet-rename.d.ts +60 -0
- package/dist/cjs/mcp/tools/sheet-rename.js +305 -0
- package/dist/cjs/mcp/tools/sheet-rename.js.map +1 -0
- package/dist/cjs/mcp/tools/spreadsheet-copy.d.cts +58 -0
- package/dist/cjs/mcp/tools/spreadsheet-copy.d.ts +58 -0
- package/dist/cjs/mcp/tools/spreadsheet-copy.js +319 -0
- package/dist/cjs/mcp/tools/spreadsheet-copy.js.map +1 -0
- package/dist/cjs/mcp/tools/spreadsheet-create.d.cts +52 -0
- package/dist/cjs/mcp/tools/spreadsheet-create.d.ts +52 -0
- package/dist/cjs/mcp/tools/spreadsheet-create.js +270 -0
- package/dist/cjs/mcp/tools/spreadsheet-create.js.map +1 -0
- package/dist/cjs/mcp/tools/spreadsheet-find.d.cts +58 -0
- package/dist/cjs/mcp/tools/spreadsheet-find.d.ts +58 -0
- package/dist/cjs/mcp/tools/spreadsheet-find.js +334 -0
- package/dist/cjs/mcp/tools/spreadsheet-find.js.map +1 -0
- package/dist/cjs/mcp/tools/spreadsheet-rename.d.cts +56 -0
- package/dist/cjs/mcp/tools/spreadsheet-rename.d.ts +56 -0
- package/dist/cjs/mcp/tools/spreadsheet-rename.js +289 -0
- package/dist/cjs/mcp/tools/spreadsheet-rename.js.map +1 -0
- package/dist/cjs/mcp/tools/validation-set.d.cts +144 -0
- package/dist/cjs/mcp/tools/validation-set.d.ts +144 -0
- package/dist/cjs/mcp/tools/validation-set.js +564 -0
- package/dist/cjs/mcp/tools/validation-set.js.map +1 -0
- package/dist/cjs/mcp/tools/values-batch-update.d.cts +102 -0
- package/dist/cjs/mcp/tools/values-batch-update.d.ts +102 -0
- package/dist/cjs/mcp/tools/values-batch-update.js +409 -0
- package/dist/cjs/mcp/tools/values-batch-update.js.map +1 -0
- package/dist/cjs/mcp/tools/values-clear.d.cts +56 -0
- package/dist/cjs/mcp/tools/values-clear.d.ts +56 -0
- package/dist/cjs/mcp/tools/values-clear.js +308 -0
- package/dist/cjs/mcp/tools/values-clear.js.map +1 -0
- package/dist/cjs/mcp/tools/values-csv-update.d.cts +75 -0
- package/dist/cjs/mcp/tools/values-csv-update.d.ts +75 -0
- package/dist/cjs/mcp/tools/values-csv-update.js +500 -0
- package/dist/cjs/mcp/tools/values-csv-update.js.map +1 -0
- package/dist/cjs/mcp/tools/values-replace.d.cts +68 -0
- package/dist/cjs/mcp/tools/values-replace.d.ts +68 -0
- package/dist/cjs/mcp/tools/values-replace.js +378 -0
- package/dist/cjs/mcp/tools/values-replace.js.map +1 -0
- package/dist/cjs/mcp/tools/values-search.d.cts +74 -0
- package/dist/cjs/mcp/tools/values-search.d.ts +74 -0
- package/dist/cjs/mcp/tools/values-search.js +470 -0
- package/dist/cjs/mcp/tools/values-search.js.map +1 -0
- package/dist/cjs/package.json +1 -0
- package/dist/cjs/schemas/index.d.cts +14 -0
- package/dist/cjs/schemas/index.d.ts +14 -0
- package/dist/cjs/schemas/index.js +64 -0
- package/dist/cjs/schemas/index.js.map +1 -0
- package/dist/cjs/setup/config.d.cts +44 -0
- package/dist/cjs/setup/config.d.ts +44 -0
- package/dist/cjs/setup/config.js +201 -0
- package/dist/cjs/setup/config.js.map +1 -0
- package/dist/cjs/setup/http.d.cts +8 -0
- package/dist/cjs/setup/http.d.ts +8 -0
- package/dist/cjs/setup/http.js +260 -0
- package/dist/cjs/setup/http.js.map +1 -0
- package/dist/cjs/setup/index.d.cts +5 -0
- package/dist/cjs/setup/index.d.ts +5 -0
- package/dist/cjs/setup/index.js +46 -0
- package/dist/cjs/setup/index.js.map +1 -0
- package/dist/cjs/setup/oauth-google.d.cts +54 -0
- package/dist/cjs/setup/oauth-google.d.ts +54 -0
- package/dist/cjs/setup/oauth-google.js +332 -0
- package/dist/cjs/setup/oauth-google.js.map +1 -0
- package/dist/cjs/setup/runtime.d.cts +10 -0
- package/dist/cjs/setup/runtime.d.ts +10 -0
- package/dist/cjs/setup/runtime.js +353 -0
- package/dist/cjs/setup/runtime.js.map +1 -0
- package/dist/cjs/setup/stdio.d.cts +7 -0
- package/dist/cjs/setup/stdio.d.ts +7 -0
- package/dist/cjs/setup/stdio.js +239 -0
- package/dist/cjs/setup/stdio.js.map +1 -0
- package/dist/cjs/spreadsheet/column-utilities.d.cts +1 -0
- package/dist/cjs/spreadsheet/column-utilities.d.ts +1 -0
- package/dist/cjs/spreadsheet/column-utilities.js +21 -0
- package/dist/cjs/spreadsheet/column-utilities.js.map +1 -0
- package/dist/cjs/spreadsheet/csv-streaming.d.cts +19 -0
- package/dist/cjs/spreadsheet/csv-streaming.d.ts +19 -0
- package/dist/cjs/spreadsheet/csv-streaming.js +188 -0
- package/dist/cjs/spreadsheet/csv-streaming.js.map +1 -0
- package/dist/cjs/spreadsheet/data-operations.d.cts +115 -0
- package/dist/cjs/spreadsheet/data-operations.d.ts +115 -0
- package/dist/cjs/spreadsheet/data-operations.js +1515 -0
- package/dist/cjs/spreadsheet/data-operations.js.map +1 -0
- package/dist/cjs/spreadsheet/deduplication-utils.d.cts +31 -0
- package/dist/cjs/spreadsheet/deduplication-utils.d.ts +31 -0
- package/dist/cjs/spreadsheet/deduplication-utils.js +65 -0
- package/dist/cjs/spreadsheet/deduplication-utils.js.map +1 -0
- package/dist/cjs/spreadsheet/range-operations.d.cts +184 -0
- package/dist/cjs/spreadsheet/range-operations.d.ts +184 -0
- package/dist/cjs/spreadsheet/range-operations.js +672 -0
- package/dist/cjs/spreadsheet/range-operations.js.map +1 -0
- package/dist/cjs/spreadsheet/sheet-operations.d.cts +30 -0
- package/dist/cjs/spreadsheet/sheet-operations.d.ts +30 -0
- package/dist/cjs/spreadsheet/sheet-operations.js +811 -0
- package/dist/cjs/spreadsheet/sheet-operations.js.map +1 -0
- package/dist/cjs/spreadsheet/spreadsheet-management.d.cts +21 -0
- package/dist/cjs/spreadsheet/spreadsheet-management.d.ts +21 -0
- package/dist/cjs/spreadsheet/spreadsheet-management.js +310 -0
- package/dist/cjs/spreadsheet/spreadsheet-management.js.map +1 -0
- package/dist/cjs/types.d.cts +53 -0
- package/dist/cjs/types.d.ts +53 -0
- package/dist/cjs/types.js +5 -0
- package/dist/cjs/types.js.map +1 -0
- package/dist/esm/constants.d.ts +7 -0
- package/dist/esm/constants.js +7 -0
- package/dist/esm/constants.js.map +1 -0
- package/dist/esm/index.d.ts +8 -0
- package/dist/esm/index.js +34 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/lib/create-store.d.ts +2 -0
- package/dist/esm/lib/create-store.js +6 -0
- package/dist/esm/lib/create-store.js.map +1 -0
- package/dist/esm/mcp/index.d.ts +3 -0
- package/dist/esm/mcp/index.js +6 -0
- package/dist/esm/mcp/index.js.map +1 -0
- package/dist/esm/mcp/prompts/a1-notation.d.ts +19 -0
- package/dist/esm/mcp/prompts/a1-notation.js +49 -0
- package/dist/esm/mcp/prompts/a1-notation.js.map +1 -0
- package/dist/esm/mcp/prompts/index.d.ts +1 -0
- package/dist/esm/mcp/prompts/index.js +1 -0
- package/dist/esm/mcp/prompts/index.js.map +1 -0
- package/dist/esm/mcp/resources/index.d.ts +1 -0
- package/dist/esm/mcp/resources/index.js +1 -0
- package/dist/esm/mcp/resources/index.js.map +1 -0
- package/dist/esm/mcp/resources/spreadsheet.d.ts +2 -0
- package/dist/esm/mcp/resources/spreadsheet.js +88 -0
- package/dist/esm/mcp/resources/spreadsheet.js.map +1 -0
- package/dist/esm/mcp/tools/cells-format.d.ts +144 -0
- package/dist/esm/mcp/tools/cells-format.js +288 -0
- package/dist/esm/mcp/tools/cells-format.js.map +1 -0
- package/dist/esm/mcp/tools/chart-create.d.ts +94 -0
- package/dist/esm/mcp/tools/chart-create.js +408 -0
- package/dist/esm/mcp/tools/chart-create.js.map +1 -0
- package/dist/esm/mcp/tools/columns-get.d.ts +55 -0
- package/dist/esm/mcp/tools/columns-get.js +113 -0
- package/dist/esm/mcp/tools/columns-get.js.map +1 -0
- package/dist/esm/mcp/tools/columns-update.d.ts +86 -0
- package/dist/esm/mcp/tools/columns-update.js +296 -0
- package/dist/esm/mcp/tools/columns-update.js.map +1 -0
- package/dist/esm/mcp/tools/csv-get-columns.d.ts +43 -0
- package/dist/esm/mcp/tools/csv-get-columns.js +95 -0
- package/dist/esm/mcp/tools/csv-get-columns.js.map +1 -0
- package/dist/esm/mcp/tools/dimensions-batch-update.d.ts +118 -0
- package/dist/esm/mcp/tools/dimensions-batch-update.js +321 -0
- package/dist/esm/mcp/tools/dimensions-batch-update.js.map +1 -0
- package/dist/esm/mcp/tools/dimensions-move.d.ts +86 -0
- package/dist/esm/mcp/tools/dimensions-move.js +183 -0
- package/dist/esm/mcp/tools/dimensions-move.js.map +1 -0
- package/dist/esm/mcp/tools/index.d.ts +26 -0
- package/dist/esm/mcp/tools/index.js +26 -0
- package/dist/esm/mcp/tools/index.js.map +1 -0
- package/dist/esm/mcp/tools/lib/dimension-operations.d.ts +48 -0
- package/dist/esm/mcp/tools/lib/dimension-operations.js +93 -0
- package/dist/esm/mcp/tools/lib/dimension-operations.js.map +1 -0
- package/dist/esm/mcp/tools/rows-append.d.ts +58 -0
- package/dist/esm/mcp/tools/rows-append.js +151 -0
- package/dist/esm/mcp/tools/rows-append.js.map +1 -0
- package/dist/esm/mcp/tools/rows-csv-append.d.ts +67 -0
- package/dist/esm/mcp/tools/rows-csv-append.js +342 -0
- package/dist/esm/mcp/tools/rows-csv-append.js.map +1 -0
- package/dist/esm/mcp/tools/rows-get.d.ts +56 -0
- package/dist/esm/mcp/tools/rows-get.js +116 -0
- package/dist/esm/mcp/tools/rows-get.js.map +1 -0
- package/dist/esm/mcp/tools/sheet-copy-to.d.ts +68 -0
- package/dist/esm/mcp/tools/sheet-copy-to.js +156 -0
- package/dist/esm/mcp/tools/sheet-copy-to.js.map +1 -0
- package/dist/esm/mcp/tools/sheet-copy.d.ts +80 -0
- package/dist/esm/mcp/tools/sheet-copy.js +177 -0
- package/dist/esm/mcp/tools/sheet-copy.js.map +1 -0
- package/dist/esm/mcp/tools/sheet-create.d.ts +56 -0
- package/dist/esm/mcp/tools/sheet-create.js +110 -0
- package/dist/esm/mcp/tools/sheet-create.js.map +1 -0
- package/dist/esm/mcp/tools/sheet-delete.d.ts +62 -0
- package/dist/esm/mcp/tools/sheet-delete.js +125 -0
- package/dist/esm/mcp/tools/sheet-delete.js.map +1 -0
- package/dist/esm/mcp/tools/sheet-find.d.ts +48 -0
- package/dist/esm/mcp/tools/sheet-find.js +90 -0
- package/dist/esm/mcp/tools/sheet-find.js.map +1 -0
- package/dist/esm/mcp/tools/sheet-rename.d.ts +60 -0
- package/dist/esm/mcp/tools/sheet-rename.js +128 -0
- package/dist/esm/mcp/tools/sheet-rename.js.map +1 -0
- package/dist/esm/mcp/tools/spreadsheet-copy.d.ts +58 -0
- package/dist/esm/mcp/tools/spreadsheet-copy.js +117 -0
- package/dist/esm/mcp/tools/spreadsheet-copy.js.map +1 -0
- package/dist/esm/mcp/tools/spreadsheet-create.d.ts +52 -0
- package/dist/esm/mcp/tools/spreadsheet-create.js +97 -0
- package/dist/esm/mcp/tools/spreadsheet-create.js.map +1 -0
- package/dist/esm/mcp/tools/spreadsheet-find.d.ts +58 -0
- package/dist/esm/mcp/tools/spreadsheet-find.js +113 -0
- package/dist/esm/mcp/tools/spreadsheet-find.js.map +1 -0
- package/dist/esm/mcp/tools/spreadsheet-rename.d.ts +56 -0
- package/dist/esm/mcp/tools/spreadsheet-rename.js +112 -0
- package/dist/esm/mcp/tools/spreadsheet-rename.js.map +1 -0
- package/dist/esm/mcp/tools/validation-set.d.ts +144 -0
- package/dist/esm/mcp/tools/validation-set.js +366 -0
- package/dist/esm/mcp/tools/validation-set.js.map +1 -0
- package/dist/esm/mcp/tools/values-batch-update.d.ts +102 -0
- package/dist/esm/mcp/tools/values-batch-update.js +224 -0
- package/dist/esm/mcp/tools/values-batch-update.js.map +1 -0
- package/dist/esm/mcp/tools/values-clear.d.ts +56 -0
- package/dist/esm/mcp/tools/values-clear.js +131 -0
- package/dist/esm/mcp/tools/values-clear.js.map +1 -0
- package/dist/esm/mcp/tools/values-csv-update.d.ts +75 -0
- package/dist/esm/mcp/tools/values-csv-update.js +202 -0
- package/dist/esm/mcp/tools/values-csv-update.js.map +1 -0
- package/dist/esm/mcp/tools/values-replace.d.ts +68 -0
- package/dist/esm/mcp/tools/values-replace.js +171 -0
- package/dist/esm/mcp/tools/values-replace.js.map +1 -0
- package/dist/esm/mcp/tools/values-search.d.ts +74 -0
- package/dist/esm/mcp/tools/values-search.js +229 -0
- package/dist/esm/mcp/tools/values-search.js.map +1 -0
- package/dist/esm/package.json +1 -0
- package/dist/esm/schemas/index.d.ts +14 -0
- package/dist/esm/schemas/index.js +35 -0
- package/dist/esm/schemas/index.js.map +1 -0
- package/dist/esm/setup/config.d.ts +44 -0
- package/dist/esm/setup/config.js +151 -0
- package/dist/esm/setup/config.js.map +1 -0
- package/dist/esm/setup/http.d.ts +8 -0
- package/dist/esm/setup/http.js +54 -0
- package/dist/esm/setup/http.js.map +1 -0
- package/dist/esm/setup/index.d.ts +5 -0
- package/dist/esm/setup/index.js +5 -0
- package/dist/esm/setup/index.js.map +1 -0
- package/dist/esm/setup/oauth-google.d.ts +54 -0
- package/dist/esm/setup/oauth-google.js +142 -0
- package/dist/esm/setup/oauth-google.js.map +1 -0
- package/dist/esm/setup/runtime.d.ts +10 -0
- package/dist/esm/setup/runtime.js +84 -0
- package/dist/esm/setup/runtime.js.map +1 -0
- package/dist/esm/setup/stdio.d.ts +7 -0
- package/dist/esm/setup/stdio.js +38 -0
- package/dist/esm/setup/stdio.js.map +1 -0
- package/dist/esm/spreadsheet/column-utilities.d.ts +1 -0
- package/dist/esm/spreadsheet/column-utilities.js +10 -0
- package/dist/esm/spreadsheet/column-utilities.js.map +1 -0
- package/dist/esm/spreadsheet/csv-streaming.d.ts +19 -0
- package/dist/esm/spreadsheet/csv-streaming.js +43 -0
- package/dist/esm/spreadsheet/csv-streaming.js.map +1 -0
- package/dist/esm/spreadsheet/data-operations.d.ts +115 -0
- package/dist/esm/spreadsheet/data-operations.js +712 -0
- package/dist/esm/spreadsheet/data-operations.js.map +1 -0
- package/dist/esm/spreadsheet/deduplication-utils.d.ts +31 -0
- package/dist/esm/spreadsheet/deduplication-utils.js +54 -0
- package/dist/esm/spreadsheet/deduplication-utils.js.map +1 -0
- package/dist/esm/spreadsheet/range-operations.d.ts +184 -0
- package/dist/esm/spreadsheet/range-operations.js +591 -0
- package/dist/esm/spreadsheet/range-operations.js.map +1 -0
- package/dist/esm/spreadsheet/sheet-operations.d.ts +30 -0
- package/dist/esm/spreadsheet/sheet-operations.js +359 -0
- package/dist/esm/spreadsheet/sheet-operations.js.map +1 -0
- package/dist/esm/spreadsheet/spreadsheet-management.d.ts +21 -0
- package/dist/esm/spreadsheet/spreadsheet-management.js +73 -0
- package/dist/esm/spreadsheet/spreadsheet-management.js.map +1 -0
- package/dist/esm/types.d.ts +53 -0
- package/dist/esm/types.js +1 -0
- package/dist/esm/types.js.map +1 -0
- package/package.json +108 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["/Users/kevin/Dev/Projects/ai/mcp-z/servers/mcp-sheets/src/mcp/tools/rows-csv-append.ts"],"sourcesContent":["/** Import CSV data to Google Sheets with database-style row append and deduplication */\n\nimport type { EnrichedExtra } from '@mcp-z/oauth-google';\nimport { schemas } from '@mcp-z/oauth-google';\n\nconst { AuthRequiredBranchSchema } = schemas;\n\nimport type { ToolModule } from '@mcp-z/server';\nimport type { CallToolResult } from '@modelcontextprotocol/sdk/types.js';\nimport { ErrorCode, McpError } from '@modelcontextprotocol/sdk/types.js';\nimport { parse } from 'csv-parse';\nimport { google } from 'googleapis';\nimport { z } from 'zod';\nimport { SheetGidOutput, SheetGidSchema, SpreadsheetIdOutput, SpreadsheetIdSchema } from '../../schemas/index.js';\nimport { getCsvReadStream } from '../../spreadsheet/csv-streaming.js';\nimport { buildDeduplicationKey } from '../../spreadsheet/deduplication-utils.js';\nimport { ensureTabAndHeaders } from '../../spreadsheet/sheet-operations.js';\n\n// Header mapping schema: source/target can be string (name) or number (0-based index)\nconst HeaderMapItemSchema = z.object({\n source: z.union([z.string(), z.number().int().min(0)]).describe('CSV column: header name (string) or 0-based index (number)'),\n target: z.union([z.string(), z.number().int().min(0)]).describe('Sheet column: header name (string) or 0-based index (number)'),\n});\n\nconst inputSchema = z.object({\n id: SpreadsheetIdSchema,\n gid: SheetGidSchema,\n sourceUri: z.string().trim().min(1).describe('CSV file URI (file://, http://, https://)'),\n sourceHasHeaders: z.boolean().default(true).describe('Source has header row for column name mapping. Set to false for data-only sources (numeric indices required).'),\n headerMap: z.array(HeaderMapItemSchema).describe('Column mappings from CSV to sheet'),\n deduplicateBy: z\n .array(z.union([z.string(), z.number().int().min(0)]))\n .optional()\n .describe('Sheet columns for deduplication (names or indices)'),\n});\n\nconst successBranchSchema = z.object({\n type: z.literal('success'),\n id: SpreadsheetIdOutput,\n gid: SheetGidOutput,\n sheetTitle: z.string().describe('Sheet tab name'),\n updatedRows: z.number().describe('Number of rows appended'),\n rowsSkipped: z.number().optional().describe('Number of duplicate rows skipped'),\n sheetUrl: z.string().optional().describe('URL to view the sheet'),\n});\n\nconst outputSchema = z.discriminatedUnion('type', [successBranchSchema, AuthRequiredBranchSchema]);\n\nconst config = {\n description: 'Import CSV to Google Sheets with column mapping and optional deduplication. Streams data for large files.',\n inputSchema,\n outputSchema: z.object({\n result: outputSchema,\n }),\n} as const;\n\nexport type Input = z.infer<typeof inputSchema>;\nexport type Output = z.infer<typeof outputSchema>;\n\n/** Batch size for Sheets API calls (1000 rows × 12 cols = 12K cells, well under 40K limit) */\nconst BATCH_SIZE = 1000;\n\n/**\n * Resolve column reference to numeric index\n * @param ref Column reference (string name or number index)\n * @param headers Header row (null when sourceHasHeaders=false)\n * @param sourceHasHeaders Whether headers are present\n * @returns 0-based column index\n */\nfunction resolveColumnReference(ref: string | number, headers: string[] | null, sourceHasHeaders: boolean, context: string): number {\n // If number, use directly as 0-based index\n if (typeof ref === 'number') {\n if (ref < 0) {\n throw new Error(`${context}: Column index must be >= 0, got ${ref}`);\n }\n return ref;\n }\n\n // If string, must be header name\n if (!sourceHasHeaders || !headers) {\n throw new Error(`${context}: String column reference \"${ref}\" requires sourceHasHeaders=true. Use numeric index when sourceHasHeaders=false.`);\n }\n\n const index = headers.indexOf(ref);\n if (index === -1) {\n throw new Error(`${context}: Header \"${ref}\" not found in [${headers.join(', ')}]`);\n }\n\n return index;\n}\n\nasync function handler({ id, gid, sourceUri, sourceHasHeaders, headerMap, deduplicateBy }: Input, extra: EnrichedExtra): Promise<CallToolResult> {\n const logger = extra.logger;\n logger.info('sheets.rows.csv-append called', { id, gid, sourceUri, sourceHasHeaders, headerMap, deduplicateBy });\n\n try {\n if (headerMap.length === 0) {\n throw new McpError(ErrorCode.InvalidParams, 'headerMap cannot be empty');\n }\n\n // Validate: if sourceHasHeaders=false, all references must be numeric\n if (!sourceHasHeaders) {\n for (const { source, target } of headerMap) {\n if (typeof source === 'string') {\n throw new McpError(ErrorCode.InvalidParams, `sourceHasHeaders=false requires numeric indices. Got string source: \"${source}\"`);\n }\n if (typeof target === 'string') {\n throw new McpError(ErrorCode.InvalidParams, `sourceHasHeaders=false requires numeric indices. Got string target: \"${target}\"`);\n }\n }\n if (deduplicateBy) {\n for (const colRef of deduplicateBy) {\n if (typeof colRef === 'string') {\n throw new McpError(ErrorCode.InvalidParams, `sourceHasHeaders=false requires numeric indices in deduplicateBy. Got string: \"${colRef}\"`);\n }\n }\n }\n }\n\n const sheets = google.sheets({ version: 'v4', auth: extra.authContext.auth });\n\n // Get sheet details using the gid\n const spreadsheetResponse = await sheets.spreadsheets.get({\n spreadsheetId: id,\n fields: 'sheets.properties.sheetId,sheets.properties.title',\n });\n\n const sheet = spreadsheetResponse.data.sheets?.find((s) => String(s.properties?.sheetId) === gid);\n\n if (!sheet) {\n throw new McpError(ErrorCode.InvalidParams, 'Sheet not found');\n }\n\n const sheetTitle = sheet?.properties?.title ?? '';\n\n // Determine target headers (for sourceHasHeaders=true) or column count (for sourceHasHeaders=false)\n let sheetHeaders: string[] | null = null;\n let existingKeySet: Set<string> = new Set();\n const keyColumns: (string | number)[] = deduplicateBy || [];\n\n if (sourceHasHeaders) {\n // Extract target header names from headerMap\n const targetHeaderNames = headerMap.map(({ target }) => target).filter((t) => typeof t === 'string') as string[];\n\n // Use ensureTabAndHeaders to setup headers and fetch existing keys\n const headerResult = await ensureTabAndHeaders(sheets, {\n spreadsheetId: id,\n sheetTitle,\n requiredHeader: targetHeaderNames.length > 0 ? targetHeaderNames : null,\n keyColumns: keyColumns.filter((k) => typeof k === 'string') as string[],\n logger,\n });\n\n sheetHeaders = headerResult.header;\n existingKeySet = headerResult.keySet;\n } else {\n // sourceHasHeaders=false: Read existing data for deduplication (if needed)\n if (deduplicateBy && deduplicateBy.length > 0) {\n // Read data in chunks for memory efficiency with large sheets\n const CHUNK_SIZE = 1000;\n let startRow = 1;\n let hasMore = true;\n\n while (hasMore) {\n const endRow = startRow + CHUNK_SIZE - 1;\n const chunkRange = `${sheetTitle}!A${startRow}:ZZZ${endRow}`;\n\n const response = await sheets.spreadsheets.values.get({\n spreadsheetId: id,\n range: chunkRange,\n });\n\n const rows = response.data.values || [];\n\n for (const row of rows) {\n const key = buildDeduplicationKey(row, keyColumns, null, false);\n if (key.replace(/::/g, '') !== '') {\n existingKeySet.add(key);\n }\n }\n\n // Check if there are more rows to read\n if (rows.length < CHUNK_SIZE) {\n hasMore = false;\n } else {\n startRow += CHUNK_SIZE;\n }\n }\n\n logger.info('sheets.rows.csv-append existing keys loaded', { keyCount: existingKeySet.size });\n }\n }\n\n // Streaming CSV processing state\n let sourceHeaders: string[] | null = null;\n let batch: (string | number | boolean | null)[][] = [];\n let totalRows = 0;\n let rowsSkipped = 0;\n\n // Get readable stream from CSV URI (no temp files!)\n const readStream = await getCsvReadStream(sourceUri);\n\n // Create CSV parser\n const parser = readStream.pipe(\n parse({\n columns: !!sourceHasHeaders, // Parse first row as column names if source has headers\n skip_empty_lines: true,\n trim: true,\n cast: true, // Auto-convert numbers/booleans\n relax_column_count: true,\n })\n );\n\n // Helper to append batch to Sheets\n const appendBatch = async (rows: (string | number | boolean | null)[][]): Promise<void> => {\n if (rows.length === 0) return;\n\n await sheets.spreadsheets.values.append({\n spreadsheetId: id,\n range: `${sheetTitle}!A:A`,\n valueInputOption: 'USER_ENTERED',\n requestBody: { values: rows, majorDimension: 'ROWS' },\n });\n\n logger.info('sheets.rows.csv-append batch appended', { batchSize: rows.length, totalRows });\n };\n\n // Resolve headerMap to numeric indices (do this after extracting CSV headers)\n let resolvedMap: Array<{ sourceIdx: number; targetIdx: number }> = [];\n\n // Stream and process records\n for await (const record of parser) {\n if (sourceHasHeaders) {\n // Extract source headers from first record\n if (sourceHeaders === null) {\n sourceHeaders = Object.keys(record as Record<string, unknown>);\n logger.info('sheets.rows.csv-append source headers', { sourceHeaders });\n\n // Resolve headerMap now that we have both source and sheet headers\n resolvedMap = headerMap.map(({ source, target }) => ({\n sourceIdx: resolveColumnReference(source, sourceHeaders, sourceHasHeaders, 'headerMap.source'),\n targetIdx: resolveColumnReference(target, sheetHeaders, sourceHasHeaders, 'headerMap.target'),\n }));\n }\n\n // Map source record to sheet row\n const sourceRow = sourceHeaders?.map((h) => (record as Record<string, unknown>)[h] ?? null);\n const maxTargetIdx = Math.max(...resolvedMap.map((m) => m.targetIdx));\n const sheetRow = new Array(maxTargetIdx + 1).fill(null);\n\n for (const { sourceIdx, targetIdx } of resolvedMap) {\n if (sourceRow) {\n sheetRow[targetIdx] = sourceRow[sourceIdx] ?? null;\n }\n }\n\n // Check deduplication\n if (deduplicateBy && deduplicateBy.length > 0) {\n const key = buildDeduplicationKey(sheetRow, keyColumns, sheetHeaders, sourceHasHeaders);\n if (existingKeySet.has(key)) {\n rowsSkipped++;\n continue; // Skip duplicate\n }\n existingKeySet.add(key); // Add to set for future deduplication\n }\n\n // Add to batch\n batch.push(sheetRow);\n totalRows++;\n } else {\n // sourceHasHeaders=false: record is an array (not an object)\n // Resolve map on first row\n if (resolvedMap.length === 0) {\n resolvedMap = headerMap.map(({ source, target }) => ({\n sourceIdx: resolveColumnReference(source, null, sourceHasHeaders, 'headerMap.source'),\n targetIdx: resolveColumnReference(target, null, sourceHasHeaders, 'headerMap.target'),\n }));\n }\n\n const sourceRow = record as unknown[];\n const maxTargetIdx = Math.max(...resolvedMap.map((m) => m.targetIdx));\n const sheetRow = new Array(maxTargetIdx + 1).fill(null);\n\n for (const { sourceIdx, targetIdx } of resolvedMap) {\n if (sourceIdx < sourceRow.length) {\n sheetRow[targetIdx] = sourceRow[sourceIdx] ?? null;\n }\n }\n\n // Check deduplication\n if (deduplicateBy && deduplicateBy.length > 0) {\n const key = buildDeduplicationKey(sheetRow, keyColumns, null, sourceHasHeaders);\n if (existingKeySet.has(key)) {\n rowsSkipped++;\n continue; // Skip duplicate\n }\n existingKeySet.add(key);\n }\n\n // Add to batch\n batch.push(sheetRow);\n totalRows++;\n }\n\n // Append batch when full\n if (batch.length >= BATCH_SIZE) {\n await appendBatch(batch);\n batch = []; // Clear batch\n }\n }\n\n // Flush remaining rows\n if (batch.length > 0) {\n await appendBatch(batch);\n }\n\n logger.info('sheets.rows.csv-append streaming complete', { totalRows, rowsSkipped });\n\n const updatedRows = totalRows;\n\n logger.info('sheets.rows.csv-append completed', { id, gid, updatedRows, rowsSkipped, sourceUri });\n\n const result: Output = {\n type: 'success' as const,\n id,\n gid,\n sheetTitle,\n updatedRows,\n rowsSkipped,\n sheetUrl: `https://docs.google.com/spreadsheets/d/${id}/edit#gid=${gid}`,\n };\n\n return {\n content: [{ type: 'text' as const, text: JSON.stringify(result) }],\n structuredContent: { result },\n };\n } catch (error) {\n const message = error instanceof Error ? error.message : String(error);\n logger.error('sheets.rows.csv-append error', { error: message });\n\n throw new McpError(ErrorCode.InternalError, `Error appending CSV rows: ${message}`, {\n stack: error instanceof Error ? error.stack : undefined,\n });\n }\n}\n\nexport default function createTool() {\n return {\n name: 'rows-csv-append',\n config,\n handler,\n } satisfies ToolModule;\n}\n"],"names":["createTool","AuthRequiredBranchSchema","schemas","HeaderMapItemSchema","z","object","source","union","string","number","int","min","describe","target","inputSchema","id","SpreadsheetIdSchema","gid","SheetGidSchema","sourceUri","trim","sourceHasHeaders","boolean","default","headerMap","array","deduplicateBy","optional","successBranchSchema","type","literal","SpreadsheetIdOutput","SheetGidOutput","sheetTitle","updatedRows","rowsSkipped","sheetUrl","outputSchema","discriminatedUnion","config","description","result","BATCH_SIZE","resolveColumnReference","ref","headers","context","Error","index","indexOf","join","handler","extra","logger","spreadsheetResponse","sheet","colRef","sheets","sheetHeaders","existingKeySet","keyColumns","targetHeaderNames","headerResult","CHUNK_SIZE","startRow","hasMore","endRow","chunkRange","response","rows","row","key","sourceHeaders","batch","totalRows","readStream","parser","appendBatch","resolvedMap","error","message","info","length","McpError","ErrorCode","InvalidParams","google","version","auth","authContext","spreadsheets","get","spreadsheetId","fields","data","find","s","String","properties","sheetId","title","Set","map","filter","t","ensureTabAndHeaders","requiredHeader","k","header","keySet","values","range","buildDeduplicationKey","replace","add","keyCount","size","getCsvReadStream","pipe","parse","columns","skip_empty_lines","cast","relax_column_count","append","valueInputOption","requestBody","majorDimension","batchSize","record","Math","sourceRow","maxTargetIdx","sheetRow","sourceIdx","targetIdx","Object","keys","h","max","m","Array","fill","has","push","content","text","JSON","stringify","structuredContent","InternalError","stack","undefined","name"],"mappings":"AAAA,sFAAsF;;;;+BA0VtF;;;eAAwBA;;;2BAvVA;qBAMY;wBACd;0BACC;mBACL;qBACuE;4BACxD;kCACK;+BACF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAXpC,IAAM,AAAEC,2BAA6BC,oBAAO,CAApCD;AAaR,sFAAsF;AACtF,IAAME,sBAAsBC,MAAC,CAACC,MAAM,CAAC;IACnCC,QAAQF,MAAC,CAACG,KAAK,CAAC;QAACH,MAAC,CAACI,MAAM;QAAIJ,MAAC,CAACK,MAAM,GAAGC,GAAG,GAAGC,GAAG,CAAC;KAAG,EAAEC,QAAQ,CAAC;IAChEC,QAAQT,MAAC,CAACG,KAAK,CAAC;QAACH,MAAC,CAACI,MAAM;QAAIJ,MAAC,CAACK,MAAM,GAAGC,GAAG,GAAGC,GAAG,CAAC;KAAG,EAAEC,QAAQ,CAAC;AAClE;AAEA,IAAME,cAAcV,MAAC,CAACC,MAAM,CAAC;IAC3BU,IAAIC,0BAAmB;IACvBC,KAAKC,qBAAc;IACnBC,WAAWf,MAAC,CAACI,MAAM,GAAGY,IAAI,GAAGT,GAAG,CAAC,GAAGC,QAAQ,CAAC;IAC7CS,kBAAkBjB,MAAC,CAACkB,OAAO,GAAGC,OAAO,CAAC,MAAMX,QAAQ,CAAC;IACrDY,WAAWpB,MAAC,CAACqB,KAAK,CAACtB,qBAAqBS,QAAQ,CAAC;IACjDc,eAAetB,MAAC,CACbqB,KAAK,CAACrB,MAAC,CAACG,KAAK,CAAC;QAACH,MAAC,CAACI,MAAM;QAAIJ,MAAC,CAACK,MAAM,GAAGC,GAAG,GAAGC,GAAG,CAAC;KAAG,GACnDgB,QAAQ,GACRf,QAAQ,CAAC;AACd;AAEA,IAAMgB,sBAAsBxB,MAAC,CAACC,MAAM,CAAC;IACnCwB,MAAMzB,MAAC,CAAC0B,OAAO,CAAC;IAChBf,IAAIgB,0BAAmB;IACvBd,KAAKe,qBAAc;IACnBC,YAAY7B,MAAC,CAACI,MAAM,GAAGI,QAAQ,CAAC;IAChCsB,aAAa9B,MAAC,CAACK,MAAM,GAAGG,QAAQ,CAAC;IACjCuB,aAAa/B,MAAC,CAACK,MAAM,GAAGkB,QAAQ,GAAGf,QAAQ,CAAC;IAC5CwB,UAAUhC,MAAC,CAACI,MAAM,GAAGmB,QAAQ,GAAGf,QAAQ,CAAC;AAC3C;AAEA,IAAMyB,eAAejC,MAAC,CAACkC,kBAAkB,CAAC,QAAQ;IAACV;IAAqB3B;CAAyB;AAEjG,IAAMsC,SAAS;IACbC,aAAa;IACb1B,aAAAA;IACAuB,cAAcjC,MAAC,CAACC,MAAM,CAAC;QACrBoC,QAAQJ;IACV;AACF;AAKA,4FAA4F,GAC5F,IAAMK,aAAa;AAEnB;;;;;;CAMC,GACD,SAASC,uBAAuBC,GAAoB,EAAEC,OAAwB,EAAExB,gBAAyB,EAAEyB,OAAe;IACxH,2CAA2C;IAC3C,IAAI,OAAOF,QAAQ,UAAU;QAC3B,IAAIA,MAAM,GAAG;YACX,MAAM,IAAIG,MAAM,AAAC,GAA6CH,OAA3CE,SAAQ,qCAAuC,OAAJF;QAChE;QACA,OAAOA;IACT;IAEA,iCAAiC;IACjC,IAAI,CAACvB,oBAAoB,CAACwB,SAAS;QACjC,MAAM,IAAIE,MAAM,AAAC,GAAuCH,OAArCE,SAAQ,+BAAiC,OAAJF,KAAI;IAC9D;IAEA,IAAMI,QAAQH,QAAQI,OAAO,CAACL;IAC9B,IAAII,UAAU,CAAC,GAAG;QAChB,MAAM,IAAID,MAAM,AAAC,GAAsBH,OAApBE,SAAQ,cAAkCD,OAAtBD,KAAI,oBAAqC,OAAnBC,QAAQK,IAAI,CAAC,OAAM;IAClF;IAEA,OAAOF;AACT;AAEA,SAAeG;wCAAQ,KAAyE,EAAEC,KAAoB;YAA7FrC,IAAIE,KAAKE,WAAWE,kBAAkBG,WAAWE,eAClE2B,cAmCUC,kCAMKC,mBA/BZ,2BAAA,mBAAA,gBAAA,WAAA,oBAAQjD,QAAQO,QASd,4BAAA,oBAAA,iBAAA,YAAA,QAAM2C,QAQTC,QAGAH,qBAKAC,OAMAtB,YAGFyB,cACAC,gBACEC,YAIEC,mBAGAC,cAcEC,YACFC,UACAC,SAGIC,QACAC,YAEAC,UAKAC,MAED,4BAAA,oBAAA,iBAAA,YAAA,QAAMC,KACHC,KAmBVC,eACAC,OACAC,WACAvC,aAGEwC,YAGAC,QAWAC,aAcFC,6GA0FE5C,aAIAO,QAcCsC,OACDC;;;;oBAtPejE,KAAF,MAAEA,IAAIE,MAAN,MAAMA,KAAKE,YAAX,MAAWA,WAAWE,mBAAtB,MAAsBA,kBAAkBG,YAAxC,MAAwCA,WAAWE,gBAAnD,MAAmDA;oBAClE2B,SAASD,MAAMC,MAAM;oBAC3BA,OAAO4B,IAAI,CAAC,iCAAiC;wBAAElE,IAAAA;wBAAIE,KAAAA;wBAAKE,WAAAA;wBAAWE,kBAAAA;wBAAkBG,WAAAA;wBAAWE,eAAAA;oBAAc;;;;;;;;;oBAG5G,IAAIF,UAAU0D,MAAM,KAAK,GAAG;wBAC1B,MAAM,IAAIC,eAAQ,CAACC,gBAAS,CAACC,aAAa,EAAE;oBAC9C;oBAEA,sEAAsE;oBACtE,IAAI,CAAChE,kBAAkB;wBAChB,kCAAA,2BAAA;;4BAAL,IAAK,YAA4BG,gCAA5B,6BAAA,QAAA,yBAAA,iCAAuC;8CAAvC,aAAQlB,qBAAAA,QAAQO,qBAAAA;gCACnB,IAAI,OAAOP,WAAW,UAAU;oCAC9B,MAAM,IAAI6E,eAAQ,CAACC,gBAAS,CAACC,aAAa,EAAE,AAAC,wEAA8E,OAAP/E,QAAO;gCAC7H;gCACA,IAAI,OAAOO,WAAW,UAAU;oCAC9B,MAAM,IAAIsE,eAAQ,CAACC,gBAAS,CAACC,aAAa,EAAE,AAAC,wEAA8E,OAAPxE,QAAO;gCAC7H;4BACF;;4BAPK;4BAAA;;;qCAAA,6BAAA;oCAAA;;;oCAAA;0CAAA;;;;wBAQL,IAAIa,eAAe;4BACZ,mCAAA,4BAAA;;gCAAL,IAAK,aAAgBA,oCAAhB,8BAAA,SAAA,0BAAA,kCAA+B;oCAAzB8B,SAAN;oCACH,IAAI,OAAOA,WAAW,UAAU;wCAC9B,MAAM,IAAI2B,eAAQ,CAACC,gBAAS,CAACC,aAAa,EAAE,AAAC,kFAAwF,OAAP7B,QAAO;oCACvI;gCACF;;gCAJK;gCAAA;;;yCAAA,8BAAA;wCAAA;;;wCAAA;8CAAA;;;;wBAKP;oBACF;oBAEMC,SAAS6B,kBAAM,CAAC7B,MAAM,CAAC;wBAAE8B,SAAS;wBAAMC,MAAMpC,MAAMqC,WAAW,CAACD,IAAI;oBAAC;oBAG/C;;wBAAM/B,OAAOiC,YAAY,CAACC,GAAG,CAAC;4BACxDC,eAAe7E;4BACf8E,QAAQ;wBACV;;;oBAHMvC,sBAAsB;oBAKtBC,SAAQD,mCAAAA,oBAAoBwC,IAAI,CAACrC,MAAM,cAA/BH,uDAAAA,iCAAiCyC,IAAI,CAAC,SAACC;4BAAaA;+BAAPC,QAAOD,gBAAAA,EAAEE,UAAU,cAAZF,oCAAAA,cAAcG,OAAO,MAAMlF;;oBAE7F,IAAI,CAACsC,OAAO;wBACV,MAAM,IAAI4B,eAAQ,CAACC,gBAAS,CAACC,aAAa,EAAE;oBAC9C;oBAEMpD,qBAAasB,kBAAAA,6BAAAA,oBAAAA,MAAO2C,UAAU,cAAjB3C,wCAAAA,kBAAmB6C,KAAK,uCAAI;oBAE/C,oGAAoG;oBAChG1C,eAAgC;oBAChCC,iBAA8B,IAAI0C;oBAChCzC,aAAkClC;yBAEpCL,kBAAAA;;;;oBACF,6CAA6C;oBACvCwC,oBAAoBrC,UAAU8E,GAAG,CAAC;4BAAGzF,eAAAA;+BAAaA;uBAAQ0F,MAAM,CAAC,SAACC;+BAAM,OAAOA,MAAM;;oBAGtE;;wBAAMC,IAAAA,oCAAmB,EAAChD,QAAQ;4BACrDmC,eAAe7E;4BACfkB,YAAAA;4BACAyE,gBAAgB7C,kBAAkBqB,MAAM,GAAG,IAAIrB,oBAAoB;4BACnED,YAAYA,WAAW2C,MAAM,CAAC,SAACI;uCAAM,OAAOA,MAAM;;4BAClDtD,QAAAA;wBACF;;;oBANMS,eAAe;oBAQrBJ,eAAeI,aAAa8C,MAAM;oBAClCjD,iBAAiBG,aAAa+C,MAAM;;;;;;yBAGhCnF,CAAAA,iBAAiBA,cAAcwD,MAAM,GAAG,CAAA,GAAxCxD;;;;oBACF,8DAA8D;oBACxDqC,aAAa;oBACfC,WAAW;oBACXC,UAAU;;;yBAEPA;;;;oBACCC,SAASF,WAAWD,aAAa;oBACjCI,aAAa,AAAC,GAAiBH,OAAf/B,YAAW,MAAmBiC,OAAfF,UAAS,QAAa,OAAPE;oBAEnC;;wBAAMT,OAAOiC,YAAY,CAACoB,MAAM,CAACnB,GAAG,CAAC;4BACpDC,eAAe7E;4BACfgG,OAAO5C;wBACT;;;oBAHMC,WAAW;oBAKXC,OAAOD,SAAS0B,IAAI,CAACgB,MAAM;oBAE5B,mCAAA,4BAAA;;wBAAL,IAAK,aAAazC,2BAAb,8BAAA,SAAA,0BAAA,kCAAmB;4BAAbC,MAAN;4BACGC,MAAMyC,IAAAA,yCAAqB,EAAC1C,KAAKV,YAAY,MAAM;4BACzD,IAAIW,IAAI0C,OAAO,CAAC,OAAO,QAAQ,IAAI;gCACjCtD,eAAeuD,GAAG,CAAC3C;4BACrB;wBACF;;wBALK;wBAAA;;;iCAAA,8BAAA;gCAAA;;;gCAAA;sCAAA;;;;oBAOL,uCAAuC;oBACvC,IAAIF,KAAKa,MAAM,GAAGnB,YAAY;wBAC5BE,UAAU;oBACZ,OAAO;wBACLD,YAAYD;oBACd;;;;;;oBAGFV,OAAO4B,IAAI,CAAC,+CAA+C;wBAAEkC,UAAUxD,eAAeyD,IAAI;oBAAC;;;oBAI/F,iCAAiC;oBAC7B5C,gBAAiC;oBACjCC;oBACAC,YAAY;oBACZvC,cAAc;oBAGC;;wBAAMkF,IAAAA,8BAAgB,EAAClG;;;oBAApCwD,aAAa;oBAEnB,oBAAoB;oBACdC,SAASD,WAAW2C,IAAI,CAC5BC,IAAAA,eAAK,EAAC;wBACJC,SAAS,CAAC,CAACnG;wBACXoG,kBAAkB;wBAClBrG,MAAM;wBACNsG,MAAM;wBACNC,oBAAoB;oBACtB;oBAGF,mCAAmC;oBAC7B9C,cAAc,SAAOR;;;;;wCACzB,IAAIA,KAAKa,MAAM,KAAK,GAAG;;;wCAEvB;;4CAAMzB,OAAOiC,YAAY,CAACoB,MAAM,CAACc,MAAM,CAAC;gDACtChC,eAAe7E;gDACfgG,OAAO,AAAC,GAAa,OAAX9E,YAAW;gDACrB4F,kBAAkB;gDAClBC,aAAa;oDAAEhB,QAAQzC;oDAAM0D,gBAAgB;gDAAO;4CACtD;;;wCALA;wCAOA1E,OAAO4B,IAAI,CAAC,yCAAyC;4CAAE+C,WAAW3D,KAAKa,MAAM;4CAAER,WAAAA;wCAAU;;;;;;wBAC3F;;oBAEA,8EAA8E;oBAC1EI;;;;;;;;;;;oCAGamD,QAgBQC,OADfC,WACAC,cACAC,UAED,2BAAA,mBAAA,gBAAA,WAAA,oBAAQC,WAAWC,WAEEJ,sBAMlB5D,KAsBa2D,QADfC,YACAC,eACAC,WAED,4BAAA,oBAAA,iBAAA,YAAA,sBAAQC,YAAWC,YAEEJ,uBAMlB5D;;;;;oCA5DK0D;oCACf,IAAI5G,kBAAkB;;wCACpB,2CAA2C;wCAC3C,IAAImD,kBAAkB,MAAM;4CAC1BA,gBAAgBgE,OAAOC,IAAI,CAACR;4CAC5B5E,OAAO4B,IAAI,CAAC,yCAAyC;gDAAET,eAAAA;4CAAc;4CAErE,mEAAmE;4CACnEM,cAActD,UAAU8E,GAAG,CAAC;oDAAGhG,eAAAA,QAAQO,eAAAA;uDAAc;oDACnDyH,WAAW3F,uBAAuBrC,QAAQkE,eAAenD,kBAAkB;oDAC3EkH,WAAW5F,uBAAuB9B,QAAQ6C,cAAcrC,kBAAkB;gDAC5E;;wCACF;wCAEA,iCAAiC;wCAC3B8G,YAAY3D,0BAAAA,oCAAAA,cAAe8B,GAAG,CAAC,SAACoC;gDAAM;oDAAA,YAAA,AAACT,MAAkC,CAACS,EAAE,cAAtC,uBAAA,YAA0C;;wCAChFN,eAAeF,CAAAA,QAAAA,MAAKS,GAAG,OAART,OAAS,qBAAGpD,YAAYwB,GAAG,CAAC,SAACsC;mDAAMA,EAAEL,SAAS;;wCAC7DF,WAAW,IAAIQ,MAAMT,eAAe,GAAGU,IAAI,CAAC;wCAE7C,kCAAA,2BAAA;;4CAAL,IAAK,YAAkChE,kCAAlC,6BAAA,QAAA,yBAAA,iCAA+C;8DAA/C,aAAQwD,wBAAAA,WAAWC,wBAAAA;gDACtB,IAAIJ,WAAW;;oDACbE,QAAQ,CAACE,UAAU,IAAGJ,uBAAAA,SAAS,CAACG,UAAU,cAApBH,kCAAAA,uBAAwB;gDAChD;4CACF;;4CAJK;4CAAA;;;qDAAA,6BAAA;oDAAA;;;oDAAA;0DAAA;;;;wCAML,sBAAsB;wCACtB,IAAIzG,iBAAiBA,cAAcwD,MAAM,GAAG,GAAG;4CACvCX,MAAMyC,IAAAA,yCAAqB,EAACqB,UAAUzE,YAAYF,cAAcrC;4CACtE,IAAIsC,eAAeoF,GAAG,CAACxE,MAAM;gDAC3BpC;gDACA;;oDAAA,WAAU,iBAAiB;;4CAC7B;4CACAwB,eAAeuD,GAAG,CAAC3C,MAAM,sCAAsC;wCACjE;wCAEA,eAAe;wCACfE,MAAMuE,IAAI,CAACX;wCACX3D;oCACF,OAAO;;wCACL,6DAA6D;wCAC7D,2BAA2B;wCAC3B,IAAII,YAAYI,MAAM,KAAK,GAAG;4CAC5BJ,cAActD,UAAU8E,GAAG,CAAC;oDAAGhG,eAAAA,QAAQO,eAAAA;uDAAc;oDACnDyH,WAAW3F,uBAAuBrC,QAAQ,MAAMe,kBAAkB;oDAClEkH,WAAW5F,uBAAuB9B,QAAQ,MAAMQ,kBAAkB;gDACpE;;wCACF;wCAEM8G,aAAYF;wCACZG,gBAAeF,CAAAA,SAAAA,MAAKS,GAAG,OAART,QAAS,qBAAGpD,YAAYwB,GAAG,CAAC,SAACsC;mDAAMA,EAAEL,SAAS;;wCAC7DF,YAAW,IAAIQ,MAAMT,gBAAe,GAAGU,IAAI,CAAC;wCAE7C,mCAAA,4BAAA;;4CAAL,IAAK,aAAkChE,kCAAlC,8BAAA,SAAA,0BAAA,kCAA+C;+DAA/C,cAAQwD,0BAAAA,WAAWC,0BAAAA;gDACtB,IAAID,aAAYH,WAAUjD,MAAM,EAAE;;oDAChCmD,SAAQ,CAACE,WAAU,IAAGJ,wBAAAA,UAAS,CAACG,WAAU,cAApBH,mCAAAA,wBAAwB;gDAChD;4CACF;;4CAJK;4CAAA;;;qDAAA,8BAAA;oDAAA;;;oDAAA;0DAAA;;;;wCAML,sBAAsB;wCACtB,IAAIzG,iBAAiBA,cAAcwD,MAAM,GAAG,GAAG;4CACvCX,OAAMyC,IAAAA,yCAAqB,EAACqB,WAAUzE,YAAY,MAAMvC;4CAC9D,IAAIsC,eAAeoF,GAAG,CAACxE,OAAM;gDAC3BpC;gDACA;;oDAAA,WAAU,iBAAiB;;4CAC7B;4CACAwB,eAAeuD,GAAG,CAAC3C;wCACrB;wCAEA,eAAe;wCACfE,MAAMuE,IAAI,CAACX;wCACX3D;oCACF;yCAGID,CAAAA,MAAMS,MAAM,IAAIxC,UAAS,GAAzB+B;;;;oCACF;;wCAAMI,YAAYJ;;;oCAAlB;oCACAA,YAAY,cAAc;;;;;;;;oBAE9B;iDA9E2BG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;yBAiFvBH,CAAAA,MAAMS,MAAM,GAAG,CAAA,GAAfT;;;;oBACF;;wBAAMI,YAAYJ;;;oBAAlB;;;oBAGFpB,OAAO4B,IAAI,CAAC,6CAA6C;wBAAEP,WAAAA;wBAAWvC,aAAAA;oBAAY;oBAE5ED,cAAcwC;oBAEpBrB,OAAO4B,IAAI,CAAC,oCAAoC;wBAAElE,IAAAA;wBAAIE,KAAAA;wBAAKiB,aAAAA;wBAAaC,aAAAA;wBAAahB,WAAAA;oBAAU;oBAEzFsB,SAAiB;wBACrBZ,MAAM;wBACNd,IAAAA;wBACAE,KAAAA;wBACAgB,YAAAA;wBACAC,aAAAA;wBACAC,aAAAA;wBACAC,UAAU,AAAC,0CAAwDnB,OAAfF,IAAG,cAAgB,OAAJE;oBACrE;oBAEA;;wBAAO;4BACLgI,OAAO;gCAAG;oCAAEpH,MAAM;oCAAiBqH,MAAMC,KAAKC,SAAS,CAAC3G;gCAAQ;;4BAChE4G,mBAAmB;gCAAE5G,QAAAA;4BAAO;wBAC9B;;;oBACOsC;oBACDC,UAAUD,AAAK,YAALA,OAAiBhC,SAAQgC,MAAMC,OAAO,GAAGiB,OAAOlB;oBAChE1B,OAAO0B,KAAK,CAAC,gCAAgC;wBAAEA,OAAOC;oBAAQ;oBAE9D,MAAM,IAAIG,eAAQ,CAACC,gBAAS,CAACkE,aAAa,EAAE,AAAC,6BAAoC,OAARtE,UAAW;wBAClFuE,OAAOxE,AAAK,YAALA,OAAiBhC,SAAQgC,MAAMwE,KAAK,GAAGC;oBAChD;;;;;;;IAEJ;;AAEe,SAASxJ;IACtB,OAAO;QACLyJ,MAAM;QACNlH,QAAAA;QACAY,SAAAA;IACF;AACF"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import type { EnrichedExtra } from '@mcp-z/oauth-google';
|
|
2
|
+
import type { CallToolResult } from '@modelcontextprotocol/sdk/types.js';
|
|
3
|
+
import { z } from 'zod';
|
|
4
|
+
declare const inputSchema: z.ZodObject<{
|
|
5
|
+
id: z.ZodString;
|
|
6
|
+
gid: z.ZodCoercedString<unknown>;
|
|
7
|
+
range: z.ZodString;
|
|
8
|
+
render: z.ZodOptional<z.ZodEnum<{
|
|
9
|
+
FORMATTED_VALUE: "FORMATTED_VALUE";
|
|
10
|
+
UNFORMATTED_VALUE: "UNFORMATTED_VALUE";
|
|
11
|
+
FORMULA: "FORMULA";
|
|
12
|
+
}>>;
|
|
13
|
+
}, z.core.$strip>;
|
|
14
|
+
declare const outputSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
15
|
+
type: z.ZodLiteral<"success">;
|
|
16
|
+
range: z.ZodString;
|
|
17
|
+
rows: z.ZodArray<z.ZodArray<z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodLiteral<number>, z.ZodLiteral<number>, z.ZodBoolean, z.ZodNull]>>>;
|
|
18
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
19
|
+
type: z.ZodLiteral<"auth_required">;
|
|
20
|
+
provider: z.ZodString;
|
|
21
|
+
message: z.ZodString;
|
|
22
|
+
url: z.ZodOptional<z.ZodString>;
|
|
23
|
+
}, z.core.$strip>], "type">;
|
|
24
|
+
export type Input = z.infer<typeof inputSchema>;
|
|
25
|
+
export type Output = z.infer<typeof outputSchema>;
|
|
26
|
+
declare function handler({ id, gid, range, render }: Input, extra: EnrichedExtra): Promise<CallToolResult>;
|
|
27
|
+
export default function createTool(): {
|
|
28
|
+
name: string;
|
|
29
|
+
config: {
|
|
30
|
+
readonly description: "Fetch row data from a specific range in A1 notation. Best used after values-search to get surrounding context. Use a1-notation prompt for syntax reference.";
|
|
31
|
+
readonly inputSchema: z.ZodObject<{
|
|
32
|
+
id: z.ZodString;
|
|
33
|
+
gid: z.ZodCoercedString<unknown>;
|
|
34
|
+
range: z.ZodString;
|
|
35
|
+
render: z.ZodOptional<z.ZodEnum<{
|
|
36
|
+
FORMATTED_VALUE: "FORMATTED_VALUE";
|
|
37
|
+
UNFORMATTED_VALUE: "UNFORMATTED_VALUE";
|
|
38
|
+
FORMULA: "FORMULA";
|
|
39
|
+
}>>;
|
|
40
|
+
}, z.core.$strip>;
|
|
41
|
+
readonly outputSchema: z.ZodObject<{
|
|
42
|
+
result: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
43
|
+
type: z.ZodLiteral<"success">;
|
|
44
|
+
range: z.ZodString;
|
|
45
|
+
rows: z.ZodArray<z.ZodArray<z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodLiteral<number>, z.ZodLiteral<number>, z.ZodBoolean, z.ZodNull]>>>;
|
|
46
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
47
|
+
type: z.ZodLiteral<"auth_required">;
|
|
48
|
+
provider: z.ZodString;
|
|
49
|
+
message: z.ZodString;
|
|
50
|
+
url: z.ZodOptional<z.ZodString>;
|
|
51
|
+
}, z.core.$strip>], "type">;
|
|
52
|
+
}, z.core.$strip>;
|
|
53
|
+
};
|
|
54
|
+
handler: typeof handler;
|
|
55
|
+
};
|
|
56
|
+
export {};
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import type { EnrichedExtra } from '@mcp-z/oauth-google';
|
|
2
|
+
import type { CallToolResult } from '@modelcontextprotocol/sdk/types.js';
|
|
3
|
+
import { z } from 'zod';
|
|
4
|
+
declare const inputSchema: z.ZodObject<{
|
|
5
|
+
id: z.ZodString;
|
|
6
|
+
gid: z.ZodCoercedString<unknown>;
|
|
7
|
+
range: z.ZodString;
|
|
8
|
+
render: z.ZodOptional<z.ZodEnum<{
|
|
9
|
+
FORMATTED_VALUE: "FORMATTED_VALUE";
|
|
10
|
+
UNFORMATTED_VALUE: "UNFORMATTED_VALUE";
|
|
11
|
+
FORMULA: "FORMULA";
|
|
12
|
+
}>>;
|
|
13
|
+
}, z.core.$strip>;
|
|
14
|
+
declare const outputSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
15
|
+
type: z.ZodLiteral<"success">;
|
|
16
|
+
range: z.ZodString;
|
|
17
|
+
rows: z.ZodArray<z.ZodArray<z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodLiteral<number>, z.ZodLiteral<number>, z.ZodBoolean, z.ZodNull]>>>;
|
|
18
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
19
|
+
type: z.ZodLiteral<"auth_required">;
|
|
20
|
+
provider: z.ZodString;
|
|
21
|
+
message: z.ZodString;
|
|
22
|
+
url: z.ZodOptional<z.ZodString>;
|
|
23
|
+
}, z.core.$strip>], "type">;
|
|
24
|
+
export type Input = z.infer<typeof inputSchema>;
|
|
25
|
+
export type Output = z.infer<typeof outputSchema>;
|
|
26
|
+
declare function handler({ id, gid, range, render }: Input, extra: EnrichedExtra): Promise<CallToolResult>;
|
|
27
|
+
export default function createTool(): {
|
|
28
|
+
name: string;
|
|
29
|
+
config: {
|
|
30
|
+
readonly description: "Fetch row data from a specific range in A1 notation. Best used after values-search to get surrounding context. Use a1-notation prompt for syntax reference.";
|
|
31
|
+
readonly inputSchema: z.ZodObject<{
|
|
32
|
+
id: z.ZodString;
|
|
33
|
+
gid: z.ZodCoercedString<unknown>;
|
|
34
|
+
range: z.ZodString;
|
|
35
|
+
render: z.ZodOptional<z.ZodEnum<{
|
|
36
|
+
FORMATTED_VALUE: "FORMATTED_VALUE";
|
|
37
|
+
UNFORMATTED_VALUE: "UNFORMATTED_VALUE";
|
|
38
|
+
FORMULA: "FORMULA";
|
|
39
|
+
}>>;
|
|
40
|
+
}, z.core.$strip>;
|
|
41
|
+
readonly outputSchema: z.ZodObject<{
|
|
42
|
+
result: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
43
|
+
type: z.ZodLiteral<"success">;
|
|
44
|
+
range: z.ZodString;
|
|
45
|
+
rows: z.ZodArray<z.ZodArray<z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodLiteral<number>, z.ZodLiteral<number>, z.ZodBoolean, z.ZodNull]>>>;
|
|
46
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
47
|
+
type: z.ZodLiteral<"auth_required">;
|
|
48
|
+
provider: z.ZodString;
|
|
49
|
+
message: z.ZodString;
|
|
50
|
+
url: z.ZodOptional<z.ZodString>;
|
|
51
|
+
}, z.core.$strip>], "type">;
|
|
52
|
+
}, z.core.$strip>;
|
|
53
|
+
};
|
|
54
|
+
handler: typeof handler;
|
|
55
|
+
};
|
|
56
|
+
export {};
|
|
@@ -0,0 +1,292 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
Object.defineProperty(exports, "default", {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: function() {
|
|
8
|
+
return createTool;
|
|
9
|
+
}
|
|
10
|
+
});
|
|
11
|
+
var _oauthgoogle = require("@mcp-z/oauth-google");
|
|
12
|
+
var _types = require("@modelcontextprotocol/sdk/types.js");
|
|
13
|
+
var _googleapis = require("googleapis");
|
|
14
|
+
var _zod = require("zod");
|
|
15
|
+
var _index = require("../../schemas/index.js");
|
|
16
|
+
function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
|
|
17
|
+
try {
|
|
18
|
+
var info = gen[key](arg);
|
|
19
|
+
var value = info.value;
|
|
20
|
+
} catch (error) {
|
|
21
|
+
reject(error);
|
|
22
|
+
return;
|
|
23
|
+
}
|
|
24
|
+
if (info.done) {
|
|
25
|
+
resolve(value);
|
|
26
|
+
} else {
|
|
27
|
+
Promise.resolve(value).then(_next, _throw);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
function _async_to_generator(fn) {
|
|
31
|
+
return function() {
|
|
32
|
+
var self = this, args = arguments;
|
|
33
|
+
return new Promise(function(resolve, reject) {
|
|
34
|
+
var gen = fn.apply(self, args);
|
|
35
|
+
function _next(value) {
|
|
36
|
+
asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value);
|
|
37
|
+
}
|
|
38
|
+
function _throw(err) {
|
|
39
|
+
asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err);
|
|
40
|
+
}
|
|
41
|
+
_next(undefined);
|
|
42
|
+
});
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
function _instanceof(left, right) {
|
|
46
|
+
if (right != null && typeof Symbol !== "undefined" && right[Symbol.hasInstance]) {
|
|
47
|
+
return !!right[Symbol.hasInstance](left);
|
|
48
|
+
} else {
|
|
49
|
+
return left instanceof right;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
function _ts_generator(thisArg, body) {
|
|
53
|
+
var f, y, t, _ = {
|
|
54
|
+
label: 0,
|
|
55
|
+
sent: function() {
|
|
56
|
+
if (t[0] & 1) throw t[1];
|
|
57
|
+
return t[1];
|
|
58
|
+
},
|
|
59
|
+
trys: [],
|
|
60
|
+
ops: []
|
|
61
|
+
}, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype), d = Object.defineProperty;
|
|
62
|
+
return d(g, "next", {
|
|
63
|
+
value: verb(0)
|
|
64
|
+
}), d(g, "throw", {
|
|
65
|
+
value: verb(1)
|
|
66
|
+
}), d(g, "return", {
|
|
67
|
+
value: verb(2)
|
|
68
|
+
}), typeof Symbol === "function" && d(g, Symbol.iterator, {
|
|
69
|
+
value: function() {
|
|
70
|
+
return this;
|
|
71
|
+
}
|
|
72
|
+
}), g;
|
|
73
|
+
function verb(n) {
|
|
74
|
+
return function(v) {
|
|
75
|
+
return step([
|
|
76
|
+
n,
|
|
77
|
+
v
|
|
78
|
+
]);
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
function step(op) {
|
|
82
|
+
if (f) throw new TypeError("Generator is already executing.");
|
|
83
|
+
while(g && (g = 0, op[0] && (_ = 0)), _)try {
|
|
84
|
+
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
85
|
+
if (y = 0, t) op = [
|
|
86
|
+
op[0] & 2,
|
|
87
|
+
t.value
|
|
88
|
+
];
|
|
89
|
+
switch(op[0]){
|
|
90
|
+
case 0:
|
|
91
|
+
case 1:
|
|
92
|
+
t = op;
|
|
93
|
+
break;
|
|
94
|
+
case 4:
|
|
95
|
+
_.label++;
|
|
96
|
+
return {
|
|
97
|
+
value: op[1],
|
|
98
|
+
done: false
|
|
99
|
+
};
|
|
100
|
+
case 5:
|
|
101
|
+
_.label++;
|
|
102
|
+
y = op[1];
|
|
103
|
+
op = [
|
|
104
|
+
0
|
|
105
|
+
];
|
|
106
|
+
continue;
|
|
107
|
+
case 7:
|
|
108
|
+
op = _.ops.pop();
|
|
109
|
+
_.trys.pop();
|
|
110
|
+
continue;
|
|
111
|
+
default:
|
|
112
|
+
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {
|
|
113
|
+
_ = 0;
|
|
114
|
+
continue;
|
|
115
|
+
}
|
|
116
|
+
if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {
|
|
117
|
+
_.label = op[1];
|
|
118
|
+
break;
|
|
119
|
+
}
|
|
120
|
+
if (op[0] === 6 && _.label < t[1]) {
|
|
121
|
+
_.label = t[1];
|
|
122
|
+
t = op;
|
|
123
|
+
break;
|
|
124
|
+
}
|
|
125
|
+
if (t && _.label < t[2]) {
|
|
126
|
+
_.label = t[2];
|
|
127
|
+
_.ops.push(op);
|
|
128
|
+
break;
|
|
129
|
+
}
|
|
130
|
+
if (t[2]) _.ops.pop();
|
|
131
|
+
_.trys.pop();
|
|
132
|
+
continue;
|
|
133
|
+
}
|
|
134
|
+
op = body.call(thisArg, _);
|
|
135
|
+
} catch (e) {
|
|
136
|
+
op = [
|
|
137
|
+
6,
|
|
138
|
+
e
|
|
139
|
+
];
|
|
140
|
+
y = 0;
|
|
141
|
+
} finally{
|
|
142
|
+
f = t = 0;
|
|
143
|
+
}
|
|
144
|
+
if (op[0] & 5) throw op[1];
|
|
145
|
+
return {
|
|
146
|
+
value: op[0] ? op[1] : void 0,
|
|
147
|
+
done: true
|
|
148
|
+
};
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
var AuthRequiredBranchSchema = _oauthgoogle.schemas.AuthRequiredBranchSchema;
|
|
152
|
+
var inputSchema = _zod.z.object({
|
|
153
|
+
id: _index.SpreadsheetIdSchema,
|
|
154
|
+
gid: _index.SheetGidSchema,
|
|
155
|
+
range: _zod.z.string().min(1).describe('A1 notation range to fetch (e.g., "B5", "A5:D5", "B:B", "5:5")'),
|
|
156
|
+
render: _zod.z.enum([
|
|
157
|
+
'FORMATTED_VALUE',
|
|
158
|
+
'UNFORMATTED_VALUE',
|
|
159
|
+
'FORMULA'
|
|
160
|
+
]).optional().describe('How to render cell values. FORMATTED_VALUE (default): calculated with formatting. UNFORMATTED_VALUE: calculated without formatting. FORMULA: show formula text instead of result.')
|
|
161
|
+
});
|
|
162
|
+
// Success branch schema - uses rows: for consistency with standard vocabulary
|
|
163
|
+
var successBranchSchema = _zod.z.object({
|
|
164
|
+
type: _zod.z.literal('success'),
|
|
165
|
+
range: _zod.z.string().describe('The A1 notation range that was retrieved'),
|
|
166
|
+
rows: _zod.z.array(_zod.z.array(_index.SheetCellSchema)).describe('2D array of row data (each inner array is a row)')
|
|
167
|
+
});
|
|
168
|
+
// Output schema with auth_required support
|
|
169
|
+
var outputSchema = _zod.z.discriminatedUnion('type', [
|
|
170
|
+
successBranchSchema,
|
|
171
|
+
AuthRequiredBranchSchema
|
|
172
|
+
]);
|
|
173
|
+
var config = {
|
|
174
|
+
description: 'Fetch row data from a specific range in A1 notation. Best used after values-search to get surrounding context. Use a1-notation prompt for syntax reference.',
|
|
175
|
+
inputSchema: inputSchema,
|
|
176
|
+
outputSchema: _zod.z.object({
|
|
177
|
+
result: outputSchema
|
|
178
|
+
})
|
|
179
|
+
};
|
|
180
|
+
function handler(_0, _1) {
|
|
181
|
+
return _async_to_generator(function(param, extra) {
|
|
182
|
+
var id, gid, range, render, logger, _ref, _spreadsheetResponse_data_sheets, _sheet_properties, sheets, spreadsheetResponse, sheet, sheetTitle, fullRange, response, res, rows, result, error, message;
|
|
183
|
+
return _ts_generator(this, function(_state) {
|
|
184
|
+
switch(_state.label){
|
|
185
|
+
case 0:
|
|
186
|
+
id = param.id, gid = param.gid, range = param.range, render = param.render;
|
|
187
|
+
logger = extra.logger;
|
|
188
|
+
logger.info('sheets.rows.get called', {
|
|
189
|
+
id: id,
|
|
190
|
+
gid: gid,
|
|
191
|
+
range: range,
|
|
192
|
+
render: render
|
|
193
|
+
});
|
|
194
|
+
_state.label = 1;
|
|
195
|
+
case 1:
|
|
196
|
+
_state.trys.push([
|
|
197
|
+
1,
|
|
198
|
+
4,
|
|
199
|
+
,
|
|
200
|
+
5
|
|
201
|
+
]);
|
|
202
|
+
sheets = _googleapis.google.sheets({
|
|
203
|
+
version: 'v4',
|
|
204
|
+
auth: extra.authContext.auth
|
|
205
|
+
});
|
|
206
|
+
return [
|
|
207
|
+
4,
|
|
208
|
+
sheets.spreadsheets.get({
|
|
209
|
+
spreadsheetId: id,
|
|
210
|
+
fields: 'sheets.properties.sheetId,sheets.properties.title'
|
|
211
|
+
})
|
|
212
|
+
];
|
|
213
|
+
case 2:
|
|
214
|
+
spreadsheetResponse = _state.sent();
|
|
215
|
+
sheet = (_spreadsheetResponse_data_sheets = spreadsheetResponse.data.sheets) === null || _spreadsheetResponse_data_sheets === void 0 ? void 0 : _spreadsheetResponse_data_sheets.find(function(s) {
|
|
216
|
+
var _s_properties;
|
|
217
|
+
return String((_s_properties = s.properties) === null || _s_properties === void 0 ? void 0 : _s_properties.sheetId) === gid;
|
|
218
|
+
});
|
|
219
|
+
if (!sheet) {
|
|
220
|
+
logger.info('sheets.rows.get sheet not found', {
|
|
221
|
+
id: id,
|
|
222
|
+
gid: gid,
|
|
223
|
+
range: range
|
|
224
|
+
});
|
|
225
|
+
throw new _types.McpError(_types.ErrorCode.InvalidParams, "Sheet not found: ".concat(gid));
|
|
226
|
+
}
|
|
227
|
+
sheetTitle = (_ref = (_sheet_properties = sheet.properties) === null || _sheet_properties === void 0 ? void 0 : _sheet_properties.title) !== null && _ref !== void 0 ? _ref : '';
|
|
228
|
+
// Construct full range with sheet title
|
|
229
|
+
fullRange = "".concat(sheetTitle, "!").concat(range);
|
|
230
|
+
return [
|
|
231
|
+
4,
|
|
232
|
+
sheets.spreadsheets.values.get({
|
|
233
|
+
spreadsheetId: id,
|
|
234
|
+
range: fullRange,
|
|
235
|
+
valueRenderOption: render || 'FORMATTED_VALUE'
|
|
236
|
+
})
|
|
237
|
+
];
|
|
238
|
+
case 3:
|
|
239
|
+
response = _state.sent();
|
|
240
|
+
res = response.data;
|
|
241
|
+
rows = Array.isArray(res.values) ? res.values : [];
|
|
242
|
+
logger.info('sheets.rows.get success', {
|
|
243
|
+
id: id,
|
|
244
|
+
gid: gid,
|
|
245
|
+
range: range,
|
|
246
|
+
rowCount: rows.length
|
|
247
|
+
});
|
|
248
|
+
result = {
|
|
249
|
+
type: 'success',
|
|
250
|
+
range: res.range || fullRange,
|
|
251
|
+
rows: rows
|
|
252
|
+
};
|
|
253
|
+
return [
|
|
254
|
+
2,
|
|
255
|
+
{
|
|
256
|
+
content: [
|
|
257
|
+
{
|
|
258
|
+
type: 'text',
|
|
259
|
+
text: JSON.stringify(result)
|
|
260
|
+
}
|
|
261
|
+
],
|
|
262
|
+
structuredContent: {
|
|
263
|
+
result: result
|
|
264
|
+
}
|
|
265
|
+
}
|
|
266
|
+
];
|
|
267
|
+
case 4:
|
|
268
|
+
error = _state.sent();
|
|
269
|
+
message = _instanceof(error, Error) ? error.message : String(error);
|
|
270
|
+
logger.error('sheets.rows.get error', {
|
|
271
|
+
error: message
|
|
272
|
+
});
|
|
273
|
+
// Throw McpError for proper MCP error handling
|
|
274
|
+
throw new _types.McpError(_types.ErrorCode.InternalError, "Error getting rows: ".concat(message), {
|
|
275
|
+
stack: _instanceof(error, Error) ? error.stack : undefined
|
|
276
|
+
});
|
|
277
|
+
case 5:
|
|
278
|
+
return [
|
|
279
|
+
2
|
|
280
|
+
];
|
|
281
|
+
}
|
|
282
|
+
});
|
|
283
|
+
}).apply(this, arguments);
|
|
284
|
+
}
|
|
285
|
+
function createTool() {
|
|
286
|
+
return {
|
|
287
|
+
name: 'rows-get',
|
|
288
|
+
config: config,
|
|
289
|
+
handler: handler
|
|
290
|
+
};
|
|
291
|
+
}
|
|
292
|
+
/* CJS INTEROP */ if (exports.__esModule && exports.default) { try { Object.defineProperty(exports.default, '__esModule', { value: true }); for (var key in exports) { exports.default[key] = exports[key]; } } catch (_) {}; module.exports = exports.default; }
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["/Users/kevin/Dev/Projects/ai/mcp-z/servers/mcp-sheets/src/mcp/tools/rows-get.ts"],"sourcesContent":["import type { EnrichedExtra } from '@mcp-z/oauth-google';\nimport { schemas } from '@mcp-z/oauth-google';\n\nconst { AuthRequiredBranchSchema } = schemas;\n\nimport type { ToolModule } from '@mcp-z/server';\nimport type { CallToolResult } from '@modelcontextprotocol/sdk/types.js';\nimport { ErrorCode, McpError } from '@modelcontextprotocol/sdk/types.js';\nimport { google } from 'googleapis';\nimport { z } from 'zod';\nimport { SheetCellSchema, SheetGidSchema, SpreadsheetIdSchema } from '../../schemas/index.js';\n\nconst inputSchema = z.object({\n id: SpreadsheetIdSchema,\n gid: SheetGidSchema,\n range: z.string().min(1).describe('A1 notation range to fetch (e.g., \"B5\", \"A5:D5\", \"B:B\", \"5:5\")'),\n render: z.enum(['FORMATTED_VALUE', 'UNFORMATTED_VALUE', 'FORMULA']).optional().describe('How to render cell values. FORMATTED_VALUE (default): calculated with formatting. UNFORMATTED_VALUE: calculated without formatting. FORMULA: show formula text instead of result.'),\n});\n\n// Success branch schema - uses rows: for consistency with standard vocabulary\nconst successBranchSchema = z.object({\n type: z.literal('success'),\n range: z.string().describe('The A1 notation range that was retrieved'),\n rows: z.array(z.array(SheetCellSchema)).describe('2D array of row data (each inner array is a row)'),\n});\n\n// Output schema with auth_required support\nconst outputSchema = z.discriminatedUnion('type', [successBranchSchema, AuthRequiredBranchSchema]);\n\nconst config = {\n description: 'Fetch row data from a specific range in A1 notation. Best used after values-search to get surrounding context. Use a1-notation prompt for syntax reference.',\n inputSchema,\n outputSchema: z.object({\n result: outputSchema,\n }),\n} as const;\n\nexport type Input = z.infer<typeof inputSchema>;\nexport type Output = z.infer<typeof outputSchema>;\n\nasync function handler({ id, gid, range, render }: Input, extra: EnrichedExtra): Promise<CallToolResult> {\n const logger = extra.logger;\n logger.info('sheets.rows.get called', { id, gid, range, render });\n\n try {\n const sheets = google.sheets({ version: 'v4', auth: extra.authContext.auth });\n\n // Get sheet details using the gid to get sheet title\n const spreadsheetResponse = await sheets.spreadsheets.get({\n spreadsheetId: id,\n fields: 'sheets.properties.sheetId,sheets.properties.title',\n });\n\n const sheet = spreadsheetResponse.data.sheets?.find((s) => String(s.properties?.sheetId) === gid);\n\n if (!sheet) {\n logger.info('sheets.rows.get sheet not found', { id, gid, range });\n throw new McpError(ErrorCode.InvalidParams, `Sheet not found: ${gid}`);\n }\n\n const sheetTitle = sheet.properties?.title ?? '';\n\n // Construct full range with sheet title\n const fullRange = `${sheetTitle}!${range}`;\n\n const response = await sheets.spreadsheets.values.get({\n spreadsheetId: id,\n range: fullRange,\n valueRenderOption: render || 'FORMATTED_VALUE',\n });\n\n const res = response.data;\n const rows = Array.isArray(res.values) ? (res.values as (string | number | boolean | null)[][]) : [];\n\n logger.info('sheets.rows.get success', { id, gid, range, rowCount: rows.length });\n\n const result: Output = {\n type: 'success' as const,\n range: res.range || fullRange,\n rows,\n };\n\n return {\n content: [{ type: 'text' as const, text: JSON.stringify(result) }],\n structuredContent: { result },\n };\n } catch (error) {\n const message = error instanceof Error ? error.message : String(error);\n logger.error('sheets.rows.get error', { error: message });\n\n // Throw McpError for proper MCP error handling\n throw new McpError(ErrorCode.InternalError, `Error getting rows: ${message}`, {\n stack: error instanceof Error ? error.stack : undefined,\n });\n }\n}\n\nexport default function createTool() {\n return {\n name: 'rows-get',\n config,\n handler,\n } satisfies ToolModule;\n}\n"],"names":["createTool","AuthRequiredBranchSchema","schemas","inputSchema","z","object","id","SpreadsheetIdSchema","gid","SheetGidSchema","range","string","min","describe","render","enum","optional","successBranchSchema","type","literal","rows","array","SheetCellSchema","outputSchema","discriminatedUnion","config","description","result","handler","extra","logger","spreadsheetResponse","sheet","sheets","sheetTitle","fullRange","response","res","error","message","info","google","version","auth","authContext","spreadsheets","get","spreadsheetId","fields","data","find","s","String","properties","sheetId","McpError","ErrorCode","InvalidParams","title","values","valueRenderOption","Array","isArray","rowCount","length","content","text","JSON","stringify","structuredContent","Error","InternalError","stack","undefined","name"],"mappings":"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"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import type { EnrichedExtra } from '@mcp-z/oauth-google';
|
|
2
|
+
import type { CallToolResult } from '@modelcontextprotocol/sdk/types.js';
|
|
3
|
+
import { z } from 'zod';
|
|
4
|
+
declare const inputSchema: z.ZodObject<{
|
|
5
|
+
sourceId: z.ZodString;
|
|
6
|
+
sourceGid: z.ZodCoercedString<unknown>;
|
|
7
|
+
destinationId: z.ZodString;
|
|
8
|
+
newTitle: z.ZodOptional<z.ZodCoercedString<unknown>>;
|
|
9
|
+
}, z.core.$strip>;
|
|
10
|
+
declare const outputSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
11
|
+
type: z.ZodLiteral<"success">;
|
|
12
|
+
operationSummary: z.ZodString;
|
|
13
|
+
itemsProcessed: z.ZodNumber;
|
|
14
|
+
itemsChanged: z.ZodNumber;
|
|
15
|
+
completedAt: z.ZodString;
|
|
16
|
+
sourceId: z.ZodString;
|
|
17
|
+
sourceGid: z.ZodString;
|
|
18
|
+
sourceTitle: z.ZodString;
|
|
19
|
+
destinationId: z.ZodString;
|
|
20
|
+
destinationGid: z.ZodString;
|
|
21
|
+
destinationTitle: z.ZodString;
|
|
22
|
+
sheetUrl: z.ZodString;
|
|
23
|
+
renamed: z.ZodBoolean;
|
|
24
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
25
|
+
type: z.ZodLiteral<"auth_required">;
|
|
26
|
+
provider: z.ZodString;
|
|
27
|
+
message: z.ZodString;
|
|
28
|
+
url: z.ZodOptional<z.ZodString>;
|
|
29
|
+
}, z.core.$strip>], "type">;
|
|
30
|
+
export type Input = z.infer<typeof inputSchema>;
|
|
31
|
+
export type Output = z.infer<typeof outputSchema>;
|
|
32
|
+
declare function handler({ sourceId, sourceGid, destinationId, newTitle }: Input, extra: EnrichedExtra): Promise<CallToolResult>;
|
|
33
|
+
export default function createTool(): {
|
|
34
|
+
name: string;
|
|
35
|
+
config: {
|
|
36
|
+
readonly description: "Copy a sheet to another spreadsheet. Copies all data, formatting, and charts.";
|
|
37
|
+
readonly inputSchema: z.ZodObject<{
|
|
38
|
+
sourceId: z.ZodString;
|
|
39
|
+
sourceGid: z.ZodCoercedString<unknown>;
|
|
40
|
+
destinationId: z.ZodString;
|
|
41
|
+
newTitle: z.ZodOptional<z.ZodCoercedString<unknown>>;
|
|
42
|
+
}, z.core.$strip>;
|
|
43
|
+
readonly outputSchema: z.ZodObject<{
|
|
44
|
+
result: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
45
|
+
type: z.ZodLiteral<"success">;
|
|
46
|
+
operationSummary: z.ZodString;
|
|
47
|
+
itemsProcessed: z.ZodNumber;
|
|
48
|
+
itemsChanged: z.ZodNumber;
|
|
49
|
+
completedAt: z.ZodString;
|
|
50
|
+
sourceId: z.ZodString;
|
|
51
|
+
sourceGid: z.ZodString;
|
|
52
|
+
sourceTitle: z.ZodString;
|
|
53
|
+
destinationId: z.ZodString;
|
|
54
|
+
destinationGid: z.ZodString;
|
|
55
|
+
destinationTitle: z.ZodString;
|
|
56
|
+
sheetUrl: z.ZodString;
|
|
57
|
+
renamed: z.ZodBoolean;
|
|
58
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
59
|
+
type: z.ZodLiteral<"auth_required">;
|
|
60
|
+
provider: z.ZodString;
|
|
61
|
+
message: z.ZodString;
|
|
62
|
+
url: z.ZodOptional<z.ZodString>;
|
|
63
|
+
}, z.core.$strip>], "type">;
|
|
64
|
+
}, z.core.$strip>;
|
|
65
|
+
};
|
|
66
|
+
handler: typeof handler;
|
|
67
|
+
};
|
|
68
|
+
export {};
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import type { EnrichedExtra } from '@mcp-z/oauth-google';
|
|
2
|
+
import type { CallToolResult } from '@modelcontextprotocol/sdk/types.js';
|
|
3
|
+
import { z } from 'zod';
|
|
4
|
+
declare const inputSchema: z.ZodObject<{
|
|
5
|
+
sourceId: z.ZodString;
|
|
6
|
+
sourceGid: z.ZodCoercedString<unknown>;
|
|
7
|
+
destinationId: z.ZodString;
|
|
8
|
+
newTitle: z.ZodOptional<z.ZodCoercedString<unknown>>;
|
|
9
|
+
}, z.core.$strip>;
|
|
10
|
+
declare const outputSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
11
|
+
type: z.ZodLiteral<"success">;
|
|
12
|
+
operationSummary: z.ZodString;
|
|
13
|
+
itemsProcessed: z.ZodNumber;
|
|
14
|
+
itemsChanged: z.ZodNumber;
|
|
15
|
+
completedAt: z.ZodString;
|
|
16
|
+
sourceId: z.ZodString;
|
|
17
|
+
sourceGid: z.ZodString;
|
|
18
|
+
sourceTitle: z.ZodString;
|
|
19
|
+
destinationId: z.ZodString;
|
|
20
|
+
destinationGid: z.ZodString;
|
|
21
|
+
destinationTitle: z.ZodString;
|
|
22
|
+
sheetUrl: z.ZodString;
|
|
23
|
+
renamed: z.ZodBoolean;
|
|
24
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
25
|
+
type: z.ZodLiteral<"auth_required">;
|
|
26
|
+
provider: z.ZodString;
|
|
27
|
+
message: z.ZodString;
|
|
28
|
+
url: z.ZodOptional<z.ZodString>;
|
|
29
|
+
}, z.core.$strip>], "type">;
|
|
30
|
+
export type Input = z.infer<typeof inputSchema>;
|
|
31
|
+
export type Output = z.infer<typeof outputSchema>;
|
|
32
|
+
declare function handler({ sourceId, sourceGid, destinationId, newTitle }: Input, extra: EnrichedExtra): Promise<CallToolResult>;
|
|
33
|
+
export default function createTool(): {
|
|
34
|
+
name: string;
|
|
35
|
+
config: {
|
|
36
|
+
readonly description: "Copy a sheet to another spreadsheet. Copies all data, formatting, and charts.";
|
|
37
|
+
readonly inputSchema: z.ZodObject<{
|
|
38
|
+
sourceId: z.ZodString;
|
|
39
|
+
sourceGid: z.ZodCoercedString<unknown>;
|
|
40
|
+
destinationId: z.ZodString;
|
|
41
|
+
newTitle: z.ZodOptional<z.ZodCoercedString<unknown>>;
|
|
42
|
+
}, z.core.$strip>;
|
|
43
|
+
readonly outputSchema: z.ZodObject<{
|
|
44
|
+
result: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
45
|
+
type: z.ZodLiteral<"success">;
|
|
46
|
+
operationSummary: z.ZodString;
|
|
47
|
+
itemsProcessed: z.ZodNumber;
|
|
48
|
+
itemsChanged: z.ZodNumber;
|
|
49
|
+
completedAt: z.ZodString;
|
|
50
|
+
sourceId: z.ZodString;
|
|
51
|
+
sourceGid: z.ZodString;
|
|
52
|
+
sourceTitle: z.ZodString;
|
|
53
|
+
destinationId: z.ZodString;
|
|
54
|
+
destinationGid: z.ZodString;
|
|
55
|
+
destinationTitle: z.ZodString;
|
|
56
|
+
sheetUrl: z.ZodString;
|
|
57
|
+
renamed: z.ZodBoolean;
|
|
58
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
59
|
+
type: z.ZodLiteral<"auth_required">;
|
|
60
|
+
provider: z.ZodString;
|
|
61
|
+
message: z.ZodString;
|
|
62
|
+
url: z.ZodOptional<z.ZodString>;
|
|
63
|
+
}, z.core.$strip>], "type">;
|
|
64
|
+
}, z.core.$strip>;
|
|
65
|
+
};
|
|
66
|
+
handler: typeof handler;
|
|
67
|
+
};
|
|
68
|
+
export {};
|