mcp-gee-sweet 0.8.2.dev321__tar.gz → 0.8.2.dev323__tar.gz

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.
Files changed (208) hide show
  1. {mcp_gee_sweet-0.8.2.dev321 → mcp_gee_sweet-0.8.2.dev323}/PKG-INFO +1 -1
  2. {mcp_gee_sweet-0.8.2.dev321 → mcp_gee_sweet-0.8.2.dev323}/docs/qa/tests/calendar.md +14 -0
  3. {mcp_gee_sweet-0.8.2.dev321 → mcp_gee_sweet-0.8.2.dev323}/docs/roadmap.md +1 -1
  4. {mcp_gee_sweet-0.8.2.dev321 → mcp_gee_sweet-0.8.2.dev323}/src/mcp_gee_sweet/tools/calendar.py +6 -2
  5. {mcp_gee_sweet-0.8.2.dev321 → mcp_gee_sweet-0.8.2.dev323}/tests/test_calendar.py +16 -0
  6. {mcp_gee_sweet-0.8.2.dev321 → mcp_gee_sweet-0.8.2.dev323}/.claude/commands/cleanup-worktrees.md +0 -0
  7. {mcp_gee_sweet-0.8.2.dev321 → mcp_gee_sweet-0.8.2.dev323}/.claude/commands/merge-pr.md +0 -0
  8. {mcp_gee_sweet-0.8.2.dev321 → mcp_gee_sweet-0.8.2.dev323}/.claude/commands/orchestrator.md +0 -0
  9. {mcp_gee_sweet-0.8.2.dev321 → mcp_gee_sweet-0.8.2.dev323}/.claude/commands/prep-for-pr.md +0 -0
  10. {mcp_gee_sweet-0.8.2.dev321 → mcp_gee_sweet-0.8.2.dev323}/.claude/commands/qa-kickoff.md +0 -0
  11. {mcp_gee_sweet-0.8.2.dev321 → mcp_gee_sweet-0.8.2.dev323}/.claude/commands/release.md +0 -0
  12. {mcp_gee_sweet-0.8.2.dev321 → mcp_gee_sweet-0.8.2.dev323}/.claude/commands/retro.md +0 -0
  13. {mcp_gee_sweet-0.8.2.dev321 → mcp_gee_sweet-0.8.2.dev323}/.claude/commands/start-worktree.md +0 -0
  14. {mcp_gee_sweet-0.8.2.dev321 → mcp_gee_sweet-0.8.2.dev323}/.claude/commands/team-member.md +0 -0
  15. {mcp_gee_sweet-0.8.2.dev321 → mcp_gee_sweet-0.8.2.dev323}/.claude/commands/verify-pr.md +0 -0
  16. {mcp_gee_sweet-0.8.2.dev321 → mcp_gee_sweet-0.8.2.dev323}/.claude/settings.json +0 -0
  17. {mcp_gee_sweet-0.8.2.dev321 → mcp_gee_sweet-0.8.2.dev323}/.claude/team-roles/amy.md +0 -0
  18. {mcp_gee_sweet-0.8.2.dev321 → mcp_gee_sweet-0.8.2.dev323}/.claude/team-roles/aziz.md +0 -0
  19. {mcp_gee_sweet-0.8.2.dev321 → mcp_gee_sweet-0.8.2.dev323}/.claude/team-roles/bob.md +0 -0
  20. {mcp_gee_sweet-0.8.2.dev321 → mcp_gee_sweet-0.8.2.dev323}/.claude/team-roles/dev.md +0 -0
  21. {mcp_gee_sweet-0.8.2.dev321 → mcp_gee_sweet-0.8.2.dev323}/.claude/team-roles/joy.md +0 -0
  22. {mcp_gee_sweet-0.8.2.dev321 → mcp_gee_sweet-0.8.2.dev323}/.claude/team-roles/kai.md +0 -0
  23. {mcp_gee_sweet-0.8.2.dev321 → mcp_gee_sweet-0.8.2.dev323}/.claude/team-roles/qa.md +0 -0
  24. {mcp_gee_sweet-0.8.2.dev321 → mcp_gee_sweet-0.8.2.dev323}/.dockerignore +0 -0
  25. {mcp_gee_sweet-0.8.2.dev321 → mcp_gee_sweet-0.8.2.dev323}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  26. {mcp_gee_sweet-0.8.2.dev321 → mcp_gee_sweet-0.8.2.dev323}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
  27. {mcp_gee_sweet-0.8.2.dev321 → mcp_gee_sweet-0.8.2.dev323}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
  28. {mcp_gee_sweet-0.8.2.dev321 → mcp_gee_sweet-0.8.2.dev323}/.github/dependabot.yml +0 -0
  29. {mcp_gee_sweet-0.8.2.dev321 → mcp_gee_sweet-0.8.2.dev323}/.github/workflows/ci.yml +0 -0
  30. {mcp_gee_sweet-0.8.2.dev321 → mcp_gee_sweet-0.8.2.dev323}/.github/workflows/docs.yml +0 -0
  31. {mcp_gee_sweet-0.8.2.dev321 → mcp_gee_sweet-0.8.2.dev323}/.github/workflows/publish-dev.yml +0 -0
  32. {mcp_gee_sweet-0.8.2.dev321 → mcp_gee_sweet-0.8.2.dev323}/.github/workflows/release.yml +0 -0
  33. {mcp_gee_sweet-0.8.2.dev321 → mcp_gee_sweet-0.8.2.dev323}/.gitignore +0 -0
  34. {mcp_gee_sweet-0.8.2.dev321 → mcp_gee_sweet-0.8.2.dev323}/.pre-commit-config.yaml +0 -0
  35. {mcp_gee_sweet-0.8.2.dev321 → mcp_gee_sweet-0.8.2.dev323}/.python-version +0 -0
  36. {mcp_gee_sweet-0.8.2.dev321 → mcp_gee_sweet-0.8.2.dev323}/CHANGELOG.md +0 -0
  37. {mcp_gee_sweet-0.8.2.dev321 → mcp_gee_sweet-0.8.2.dev323}/CLAUDE.md +0 -0
  38. {mcp_gee_sweet-0.8.2.dev321 → mcp_gee_sweet-0.8.2.dev323}/CODE_OF_CONDUCT.md +0 -0
  39. {mcp_gee_sweet-0.8.2.dev321 → mcp_gee_sweet-0.8.2.dev323}/CONTRIBUTING.md +0 -0
  40. {mcp_gee_sweet-0.8.2.dev321 → mcp_gee_sweet-0.8.2.dev323}/Dockerfile +0 -0
  41. {mcp_gee_sweet-0.8.2.dev321 → mcp_gee_sweet-0.8.2.dev323}/LICENSE +0 -0
  42. {mcp_gee_sweet-0.8.2.dev321 → mcp_gee_sweet-0.8.2.dev323}/Makefile +0 -0
  43. {mcp_gee_sweet-0.8.2.dev321 → mcp_gee_sweet-0.8.2.dev323}/README.md +0 -0
  44. {mcp_gee_sweet-0.8.2.dev321 → mcp_gee_sweet-0.8.2.dev323}/SECURITY.md +0 -0
  45. {mcp_gee_sweet-0.8.2.dev321 → mcp_gee_sweet-0.8.2.dev323}/docker-compose.yml +0 -0
  46. {mcp_gee_sweet-0.8.2.dev321 → mcp_gee_sweet-0.8.2.dev323}/docs/auth.md +0 -0
  47. {mcp_gee_sweet-0.8.2.dev321 → mcp_gee_sweet-0.8.2.dev323}/docs/client-setup.md +0 -0
  48. {mcp_gee_sweet-0.8.2.dev321 → mcp_gee_sweet-0.8.2.dev323}/docs/configuration.md +0 -0
  49. {mcp_gee_sweet-0.8.2.dev321 → mcp_gee_sweet-0.8.2.dev323}/docs/decisions/decision-async-tool-execution.md +0 -0
  50. {mcp_gee_sweet-0.8.2.dev321 → mcp_gee_sweet-0.8.2.dev323}/docs/decisions/decision-auth-status-limitation-categories.md +0 -0
  51. {mcp_gee_sweet-0.8.2.dev321 → mcp_gee_sweet-0.8.2.dev323}/docs/decisions/decision-cache-invalidation.md +0 -0
  52. {mcp_gee_sweet-0.8.2.dev321 → mcp_gee_sweet-0.8.2.dev323}/docs/decisions/decision-chart-theming.md +0 -0
  53. {mcp_gee_sweet-0.8.2.dev321 → mcp_gee_sweet-0.8.2.dev323}/docs/decisions/decision-composite-tools.md +0 -0
  54. {mcp_gee_sweet-0.8.2.dev321 → mcp_gee_sweet-0.8.2.dev323}/docs/decisions/decision-dev-team.md +0 -0
  55. {mcp_gee_sweet-0.8.2.dev321 → mcp_gee_sweet-0.8.2.dev323}/docs/decisions/decision-docs-formatting.md +0 -0
  56. {mcp_gee_sweet-0.8.2.dev321 → mcp_gee_sweet-0.8.2.dev323}/docs/decisions/decision-fork.md +0 -0
  57. {mcp_gee_sweet-0.8.2.dev321 → mcp_gee_sweet-0.8.2.dev323}/docs/decisions/decision-grid-data-size-cap.md +0 -0
  58. {mcp_gee_sweet-0.8.2.dev321 → mcp_gee_sweet-0.8.2.dev323}/docs/decisions/decision-pillow-image-dependency.md +0 -0
  59. {mcp_gee_sweet-0.8.2.dev321 → mcp_gee_sweet-0.8.2.dev323}/docs/decisions/decision-prompt-qa-role.md +0 -0
  60. {mcp_gee_sweet-0.8.2.dev321 → mcp_gee_sweet-0.8.2.dev323}/docs/decisions/decision-publishing.md +0 -0
  61. {mcp_gee_sweet-0.8.2.dev321 → mcp_gee_sweet-0.8.2.dev323}/docs/decisions/decision-release-docs-roles.md +0 -0
  62. {mcp_gee_sweet-0.8.2.dev321 → mcp_gee_sweet-0.8.2.dev323}/docs/decisions/decision-repositioning.md +0 -0
  63. {mcp_gee_sweet-0.8.2.dev321 → mcp_gee_sweet-0.8.2.dev323}/docs/decisions/decision-response-size-cap-generalization.md +0 -0
  64. {mcp_gee_sweet-0.8.2.dev321 → mcp_gee_sweet-0.8.2.dev323}/docs/decisions/decision-response-size-cap-reevaluation-519.md +0 -0
  65. {mcp_gee_sweet-0.8.2.dev321 → mcp_gee_sweet-0.8.2.dev323}/docs/decisions/decision-sync-folder-recursion.md +0 -0
  66. {mcp_gee_sweet-0.8.2.dev321 → mcp_gee_sweet-0.8.2.dev323}/docs/decisions/decision-testing.md +0 -0
  67. {mcp_gee_sweet-0.8.2.dev321 → mcp_gee_sweet-0.8.2.dev323}/docs/decisions/index.md +0 -0
  68. {mcp_gee_sweet-0.8.2.dev321 → mcp_gee_sweet-0.8.2.dev323}/docs/design/blockquote-representation.md +0 -0
  69. {mcp_gee_sweet-0.8.2.dev321 → mcp_gee_sweet-0.8.2.dev323}/docs/design/borderless-table-columns.md +0 -0
  70. {mcp_gee_sweet-0.8.2.dev321 → mcp_gee_sweet-0.8.2.dev323}/docs/design/doc-to-markdown.md +0 -0
  71. {mcp_gee_sweet-0.8.2.dev321 → mcp_gee_sweet-0.8.2.dev323}/docs/design/docs-ast-pipeline.md +0 -0
  72. {mcp_gee_sweet-0.8.2.dev321 → mcp_gee_sweet-0.8.2.dev323}/docs/design/effectiveformat-spike.md +0 -0
  73. {mcp_gee_sweet-0.8.2.dev321 → mcp_gee_sweet-0.8.2.dev323}/docs/design/heading-anchor-resolution.md +0 -0
  74. {mcp_gee_sweet-0.8.2.dev321 → mcp_gee_sweet-0.8.2.dev323}/docs/design/image-conversion.md +0 -0
  75. {mcp_gee_sweet-0.8.2.dev321 → mcp_gee_sweet-0.8.2.dev323}/docs/design/index.md +0 -0
  76. {mcp_gee_sweet-0.8.2.dev321 → mcp_gee_sweet-0.8.2.dev323}/docs/design/markdown-support.md +0 -0
  77. {mcp_gee_sweet-0.8.2.dev321 → mcp_gee_sweet-0.8.2.dev323}/docs/design/phase3-theme-system.md +0 -0
  78. {mcp_gee_sweet-0.8.2.dev321 → mcp_gee_sweet-0.8.2.dev323}/docs/design.md +0 -0
  79. {mcp_gee_sweet-0.8.2.dev321 → mcp_gee_sweet-0.8.2.dev323}/docs/index.md +0 -0
  80. {mcp_gee_sweet-0.8.2.dev321 → mcp_gee_sweet-0.8.2.dev323}/docs/known-limitations.md +0 -0
  81. {mcp_gee_sweet-0.8.2.dev321 → mcp_gee_sweet-0.8.2.dev323}/docs/notes-read.md +0 -0
  82. {mcp_gee_sweet-0.8.2.dev321 → mcp_gee_sweet-0.8.2.dev323}/docs/qa/README.md +0 -0
  83. {mcp_gee_sweet-0.8.2.dev321 → mcp_gee_sweet-0.8.2.dev323}/docs/qa/fixtures/qa-fixture-pixel.png +0 -0
  84. {mcp_gee_sweet-0.8.2.dev321 → mcp_gee_sweet-0.8.2.dev323}/docs/qa/fixtures/tc-d195-create-doc.md +0 -0
  85. {mcp_gee_sweet-0.8.2.dev321 → mcp_gee_sweet-0.8.2.dev323}/docs/qa/fixtures/tc-d196-create-doc.html +0 -0
  86. {mcp_gee_sweet-0.8.2.dev321 → mcp_gee_sweet-0.8.2.dev323}/docs/qa/fixtures/tc-d213-dollar-escape.md +0 -0
  87. {mcp_gee_sweet-0.8.2.dev321 → mcp_gee_sweet-0.8.2.dev323}/docs/qa/fixtures/tc-d226-heading-table.md +0 -0
  88. {mcp_gee_sweet-0.8.2.dev321 → mcp_gee_sweet-0.8.2.dev323}/docs/qa/fixtures/tc-doc102-image-conversion.html +0 -0
  89. {mcp_gee_sweet-0.8.2.dev321 → mcp_gee_sweet-0.8.2.dev323}/docs/qa/fixtures/tc-doc103-image-conversion.md +0 -0
  90. {mcp_gee_sweet-0.8.2.dev321 → mcp_gee_sweet-0.8.2.dev323}/docs/qa/fixtures/tc-doc104-nested-lists.html +0 -0
  91. {mcp_gee_sweet-0.8.2.dev321 → mcp_gee_sweet-0.8.2.dev323}/docs/qa/fixtures/tc-doc105-nested-lists-gfm.md +0 -0
  92. {mcp_gee_sweet-0.8.2.dev321 → mcp_gee_sweet-0.8.2.dev323}/docs/qa/fixtures/tc-doc106-nested-lists-4space.md +0 -0
  93. {mcp_gee_sweet-0.8.2.dev321 → mcp_gee_sweet-0.8.2.dev323}/docs/qa/fixtures/tc-doc135-paragraph-boundary.md +0 -0
  94. {mcp_gee_sweet-0.8.2.dev321 → mcp_gee_sweet-0.8.2.dev323}/docs/qa/fixtures/tc-doc136-interrupted-block-boundary.md +0 -0
  95. {mcp_gee_sweet-0.8.2.dev321 → mcp_gee_sweet-0.8.2.dev323}/docs/qa/fixtures/tc-doc137-inline-hr-no-block-ancestor.html +0 -0
  96. {mcp_gee_sweet-0.8.2.dev321 → mcp_gee_sweet-0.8.2.dev323}/docs/qa/fixtures/tc-doc138-nbsp-spacer-paragraph.md +0 -0
  97. {mcp_gee_sweet-0.8.2.dev321 → mcp_gee_sweet-0.8.2.dev323}/docs/qa/fixtures/tc-doc141-mismatched-list-tags.html +0 -0
  98. {mcp_gee_sweet-0.8.2.dev321 → mcp_gee_sweet-0.8.2.dev323}/docs/qa/fixtures/tc-doc142-heading-anchors.md +0 -0
  99. {mcp_gee_sweet-0.8.2.dev321 → mcp_gee_sweet-0.8.2.dev323}/docs/qa/fixtures/tc-doc144-anchor-in-table-cell.md +0 -0
  100. {mcp_gee_sweet-0.8.2.dev321 → mcp_gee_sweet-0.8.2.dev323}/docs/qa/fixtures/tc-doc145-anchor-on-first-element.md +0 -0
  101. {mcp_gee_sweet-0.8.2.dev321 → mcp_gee_sweet-0.8.2.dev323}/docs/qa/fixtures.template.md +0 -0
  102. {mcp_gee_sweet-0.8.2.dev321 → mcp_gee_sweet-0.8.2.dev323}/docs/qa/operations.yaml +0 -0
  103. {mcp_gee_sweet-0.8.2.dev321 → mcp_gee_sweet-0.8.2.dev323}/docs/qa/playwright_oauth.md +0 -0
  104. {mcp_gee_sweet-0.8.2.dev321 → mcp_gee_sweet-0.8.2.dev323}/docs/qa/results/.gitkeep +0 -0
  105. {mcp_gee_sweet-0.8.2.dev321 → mcp_gee_sweet-0.8.2.dev323}/docs/qa/results/2026-06-02.md +0 -0
  106. {mcp_gee_sweet-0.8.2.dev321 → mcp_gee_sweet-0.8.2.dev323}/docs/qa/results/2026-06-14.md +0 -0
  107. {mcp_gee_sweet-0.8.2.dev321 → mcp_gee_sweet-0.8.2.dev323}/docs/qa/results/2026-06-17.md +0 -0
  108. {mcp_gee_sweet-0.8.2.dev321 → mcp_gee_sweet-0.8.2.dev323}/docs/qa/results/2026-06-18.md +0 -0
  109. {mcp_gee_sweet-0.8.2.dev321 → mcp_gee_sweet-0.8.2.dev323}/docs/qa/results/2026-06-21-drive-discovery.md +0 -0
  110. {mcp_gee_sweet-0.8.2.dev321 → mcp_gee_sweet-0.8.2.dev323}/docs/qa/results/2026-06-21-sheets-delete-clear.md +0 -0
  111. {mcp_gee_sweet-0.8.2.dev321 → mcp_gee_sweet-0.8.2.dev323}/docs/qa/results/2026-06-28.md +0 -0
  112. {mcp_gee_sweet-0.8.2.dev321 → mcp_gee_sweet-0.8.2.dev323}/docs/qa/results/2026-07-04-docs.md +0 -0
  113. {mcp_gee_sweet-0.8.2.dev321 → mcp_gee_sweet-0.8.2.dev323}/docs/qa/results/2026-07-04-drive-smoke.md +0 -0
  114. {mcp_gee_sweet-0.8.2.dev321 → mcp_gee_sweet-0.8.2.dev323}/docs/qa/results/2026-07-04-infra.md +0 -0
  115. {mcp_gee_sweet-0.8.2.dev321 → mcp_gee_sweet-0.8.2.dev323}/docs/qa/results/2026-07-04-sheets_read.md +0 -0
  116. {mcp_gee_sweet-0.8.2.dev321 → mcp_gee_sweet-0.8.2.dev323}/docs/qa/results/2026-07-04.md +0 -0
  117. {mcp_gee_sweet-0.8.2.dev321 → mcp_gee_sweet-0.8.2.dev323}/docs/qa/retro-v0.8.0.md +0 -0
  118. {mcp_gee_sweet-0.8.2.dev321 → mcp_gee_sweet-0.8.2.dev323}/docs/qa/run.md +0 -0
  119. {mcp_gee_sweet-0.8.2.dev321 → mcp_gee_sweet-0.8.2.dev323}/docs/qa/runs/README.md +0 -0
  120. {mcp_gee_sweet-0.8.2.dev321 → mcp_gee_sweet-0.8.2.dev323}/docs/qa/runs/v0.8.0.md +0 -0
  121. {mcp_gee_sweet-0.8.2.dev321 → mcp_gee_sweet-0.8.2.dev323}/docs/qa/runs/v0.8.1.md +0 -0
  122. {mcp_gee_sweet-0.8.2.dev321 → mcp_gee_sweet-0.8.2.dev323}/docs/qa/setup.md +0 -0
  123. {mcp_gee_sweet-0.8.2.dev321 → mcp_gee_sweet-0.8.2.dev323}/docs/qa/tests/docs_content.md +0 -0
  124. {mcp_gee_sweet-0.8.2.dev321 → mcp_gee_sweet-0.8.2.dev323}/docs/qa/tests/docs_layout.md +0 -0
  125. {mcp_gee_sweet-0.8.2.dev321 → mcp_gee_sweet-0.8.2.dev323}/docs/qa/tests/docs_style.md +0 -0
  126. {mcp_gee_sweet-0.8.2.dev321 → mcp_gee_sweet-0.8.2.dev323}/docs/qa/tests/docs_tables.md +0 -0
  127. {mcp_gee_sweet-0.8.2.dev321 → mcp_gee_sweet-0.8.2.dev323}/docs/qa/tests/drive_activity.md +0 -0
  128. {mcp_gee_sweet-0.8.2.dev321 → mcp_gee_sweet-0.8.2.dev323}/docs/qa/tests/drive_files.md +0 -0
  129. {mcp_gee_sweet-0.8.2.dev321 → mcp_gee_sweet-0.8.2.dev323}/docs/qa/tests/drive_sharing.md +0 -0
  130. {mcp_gee_sweet-0.8.2.dev321 → mcp_gee_sweet-0.8.2.dev323}/docs/qa/tests/drive_transfer.md +0 -0
  131. {mcp_gee_sweet-0.8.2.dev321 → mcp_gee_sweet-0.8.2.dev323}/docs/qa/tests/infra.md +0 -0
  132. {mcp_gee_sweet-0.8.2.dev321 → mcp_gee_sweet-0.8.2.dev323}/docs/qa/tests/sheets_charts.md +0 -0
  133. {mcp_gee_sweet-0.8.2.dev321 → mcp_gee_sweet-0.8.2.dev323}/docs/qa/tests/sheets_mgmt.md +0 -0
  134. {mcp_gee_sweet-0.8.2.dev321 → mcp_gee_sweet-0.8.2.dev323}/docs/qa/tests/sheets_read.md +0 -0
  135. {mcp_gee_sweet-0.8.2.dev321 → mcp_gee_sweet-0.8.2.dev323}/docs/qa/tests/sheets_write.md +0 -0
  136. {mcp_gee_sweet-0.8.2.dev321 → mcp_gee_sweet-0.8.2.dev323}/docs/style-guide.md +0 -0
  137. {mcp_gee_sweet-0.8.2.dev321 → mcp_gee_sweet-0.8.2.dev323}/docs/tools.md +0 -0
  138. {mcp_gee_sweet-0.8.2.dev321 → mcp_gee_sweet-0.8.2.dev323}/mkdocs.yml +0 -0
  139. {mcp_gee_sweet-0.8.2.dev321 → mcp_gee_sweet-0.8.2.dev323}/pyproject.toml +0 -0
  140. {mcp_gee_sweet-0.8.2.dev321 → mcp_gee_sweet-0.8.2.dev323}/pyrightconfig.json +0 -0
  141. {mcp_gee_sweet-0.8.2.dev321 → mcp_gee_sweet-0.8.2.dev323}/scripts/gen_tool_docs.py +0 -0
  142. {mcp_gee_sweet-0.8.2.dev321 → mcp_gee_sweet-0.8.2.dev323}/scripts/oauth_setup.py +0 -0
  143. {mcp_gee_sweet-0.8.2.dev321 → mcp_gee_sweet-0.8.2.dev323}/scripts/setup_team.sh +0 -0
  144. {mcp_gee_sweet-0.8.2.dev321 → mcp_gee_sweet-0.8.2.dev323}/server.json +0 -0
  145. {mcp_gee_sweet-0.8.2.dev321 → mcp_gee_sweet-0.8.2.dev323}/src/mcp_gee_sweet/.env.template +0 -0
  146. {mcp_gee_sweet-0.8.2.dev321 → mcp_gee_sweet-0.8.2.dev323}/src/mcp_gee_sweet/__init__.py +0 -0
  147. {mcp_gee_sweet-0.8.2.dev321 → mcp_gee_sweet-0.8.2.dev323}/src/mcp_gee_sweet/auth.py +0 -0
  148. {mcp_gee_sweet-0.8.2.dev321 → mcp_gee_sweet-0.8.2.dev323}/src/mcp_gee_sweet/cache.py +0 -0
  149. {mcp_gee_sweet-0.8.2.dev321 → mcp_gee_sweet-0.8.2.dev323}/src/mcp_gee_sweet/http_transport.py +0 -0
  150. {mcp_gee_sweet-0.8.2.dev321 → mcp_gee_sweet-0.8.2.dev323}/src/mcp_gee_sweet/server.py +0 -0
  151. {mcp_gee_sweet-0.8.2.dev321 → mcp_gee_sweet-0.8.2.dev323}/src/mcp_gee_sweet/tools/__init__.py +0 -0
  152. {mcp_gee_sweet-0.8.2.dev321 → mcp_gee_sweet-0.8.2.dev323}/src/mcp_gee_sweet/tools/cache.py +0 -0
  153. {mcp_gee_sweet-0.8.2.dev321 → mcp_gee_sweet-0.8.2.dev323}/src/mcp_gee_sweet/tools/docs/__init__.py +0 -0
  154. {mcp_gee_sweet-0.8.2.dev321 → mcp_gee_sweet-0.8.2.dev323}/src/mcp_gee_sweet/tools/docs/anchors.py +0 -0
  155. {mcp_gee_sweet-0.8.2.dev321 → mcp_gee_sweet-0.8.2.dev323}/src/mcp_gee_sweet/tools/docs/ast.py +0 -0
  156. {mcp_gee_sweet-0.8.2.dev321 → mcp_gee_sweet-0.8.2.dev323}/src/mcp_gee_sweet/tools/docs/ast_to_markdown.py +0 -0
  157. {mcp_gee_sweet-0.8.2.dev321 → mcp_gee_sweet-0.8.2.dev323}/src/mcp_gee_sweet/tools/docs/comments.py +0 -0
  158. {mcp_gee_sweet-0.8.2.dev321 → mcp_gee_sweet-0.8.2.dev323}/src/mcp_gee_sweet/tools/docs/content.py +0 -0
  159. {mcp_gee_sweet-0.8.2.dev321 → mcp_gee_sweet-0.8.2.dev323}/src/mcp_gee_sweet/tools/docs/doc_to_ast.py +0 -0
  160. {mcp_gee_sweet-0.8.2.dev321 → mcp_gee_sweet-0.8.2.dev323}/src/mcp_gee_sweet/tools/docs/editing.py +0 -0
  161. {mcp_gee_sweet-0.8.2.dev321 → mcp_gee_sweet-0.8.2.dev323}/src/mcp_gee_sweet/tools/docs/emitter.py +0 -0
  162. {mcp_gee_sweet-0.8.2.dev321 → mcp_gee_sweet-0.8.2.dev323}/src/mcp_gee_sweet/tools/docs/html_parser.py +0 -0
  163. {mcp_gee_sweet-0.8.2.dev321 → mcp_gee_sweet-0.8.2.dev323}/src/mcp_gee_sweet/tools/docs/images.py +0 -0
  164. {mcp_gee_sweet-0.8.2.dev321 → mcp_gee_sweet-0.8.2.dev323}/src/mcp_gee_sweet/tools/docs/indices.py +0 -0
  165. {mcp_gee_sweet-0.8.2.dev321 → mcp_gee_sweet-0.8.2.dev323}/src/mcp_gee_sweet/tools/docs/layout.py +0 -0
  166. {mcp_gee_sweet-0.8.2.dev321 → mcp_gee_sweet-0.8.2.dev323}/src/mcp_gee_sweet/tools/docs/markdown_export.py +0 -0
  167. {mcp_gee_sweet-0.8.2.dev321 → mcp_gee_sweet-0.8.2.dev323}/src/mcp_gee_sweet/tools/docs/named_ranges.py +0 -0
  168. {mcp_gee_sweet-0.8.2.dev321 → mcp_gee_sweet-0.8.2.dev323}/src/mcp_gee_sweet/tools/docs/style.py +0 -0
  169. {mcp_gee_sweet-0.8.2.dev321 → mcp_gee_sweet-0.8.2.dev323}/src/mcp_gee_sweet/tools/docs/tables.py +0 -0
  170. {mcp_gee_sweet-0.8.2.dev321 → mcp_gee_sweet-0.8.2.dev323}/src/mcp_gee_sweet/tools/drive/__init__.py +0 -0
  171. {mcp_gee_sweet-0.8.2.dev321 → mcp_gee_sweet-0.8.2.dev323}/src/mcp_gee_sweet/tools/drive/activity.py +0 -0
  172. {mcp_gee_sweet-0.8.2.dev321 → mcp_gee_sweet-0.8.2.dev323}/src/mcp_gee_sweet/tools/drive/files.py +0 -0
  173. {mcp_gee_sweet-0.8.2.dev321 → mcp_gee_sweet-0.8.2.dev323}/src/mcp_gee_sweet/tools/drive/sharing.py +0 -0
  174. {mcp_gee_sweet-0.8.2.dev321 → mcp_gee_sweet-0.8.2.dev323}/src/mcp_gee_sweet/tools/drive/transfer.py +0 -0
  175. {mcp_gee_sweet-0.8.2.dev321 → mcp_gee_sweet-0.8.2.dev323}/src/mcp_gee_sweet/tools/response_limits.py +0 -0
  176. {mcp_gee_sweet-0.8.2.dev321 → mcp_gee_sweet-0.8.2.dev323}/src/mcp_gee_sweet/tools/sheets/__init__.py +0 -0
  177. {mcp_gee_sweet-0.8.2.dev321 → mcp_gee_sweet-0.8.2.dev323}/src/mcp_gee_sweet/tools/sheets/data.py +0 -0
  178. {mcp_gee_sweet-0.8.2.dev321 → mcp_gee_sweet-0.8.2.dev323}/src/mcp_gee_sweet/tools/sheets/helpers.py +0 -0
  179. {mcp_gee_sweet-0.8.2.dev321 → mcp_gee_sweet-0.8.2.dev323}/src/mcp_gee_sweet/tools/sheets/structure.py +0 -0
  180. {mcp_gee_sweet-0.8.2.dev321 → mcp_gee_sweet-0.8.2.dev323}/tests/__init__.py +0 -0
  181. {mcp_gee_sweet-0.8.2.dev321 → mcp_gee_sweet-0.8.2.dev323}/tests/drive/__init__.py +0 -0
  182. {mcp_gee_sweet-0.8.2.dev321 → mcp_gee_sweet-0.8.2.dev323}/tests/drive/test_activity.py +0 -0
  183. {mcp_gee_sweet-0.8.2.dev321 → mcp_gee_sweet-0.8.2.dev323}/tests/drive/test_files.py +0 -0
  184. {mcp_gee_sweet-0.8.2.dev321 → mcp_gee_sweet-0.8.2.dev323}/tests/drive/test_sharing.py +0 -0
  185. {mcp_gee_sweet-0.8.2.dev321 → mcp_gee_sweet-0.8.2.dev323}/tests/drive/test_transfer.py +0 -0
  186. {mcp_gee_sweet-0.8.2.dev321 → mcp_gee_sweet-0.8.2.dev323}/tests/sheets/__init__.py +0 -0
  187. {mcp_gee_sweet-0.8.2.dev321 → mcp_gee_sweet-0.8.2.dev323}/tests/sheets/test_data.py +0 -0
  188. {mcp_gee_sweet-0.8.2.dev321 → mcp_gee_sweet-0.8.2.dev323}/tests/sheets/test_helpers.py +0 -0
  189. {mcp_gee_sweet-0.8.2.dev321 → mcp_gee_sweet-0.8.2.dev323}/tests/sheets/test_structure.py +0 -0
  190. {mcp_gee_sweet-0.8.2.dev321 → mcp_gee_sweet-0.8.2.dev323}/tests/test_auth.py +0 -0
  191. {mcp_gee_sweet-0.8.2.dev321 → mcp_gee_sweet-0.8.2.dev323}/tests/test_cache.py +0 -0
  192. {mcp_gee_sweet-0.8.2.dev321 → mcp_gee_sweet-0.8.2.dev323}/tests/test_docs_anchors.py +0 -0
  193. {mcp_gee_sweet-0.8.2.dev321 → mcp_gee_sweet-0.8.2.dev323}/tests/test_docs_comments.py +0 -0
  194. {mcp_gee_sweet-0.8.2.dev321 → mcp_gee_sweet-0.8.2.dev323}/tests/test_docs_content.py +0 -0
  195. {mcp_gee_sweet-0.8.2.dev321 → mcp_gee_sweet-0.8.2.dev323}/tests/test_docs_core.py +0 -0
  196. {mcp_gee_sweet-0.8.2.dev321 → mcp_gee_sweet-0.8.2.dev323}/tests/test_docs_editing.py +0 -0
  197. {mcp_gee_sweet-0.8.2.dev321 → mcp_gee_sweet-0.8.2.dev323}/tests/test_docs_images.py +0 -0
  198. {mcp_gee_sweet-0.8.2.dev321 → mcp_gee_sweet-0.8.2.dev323}/tests/test_docs_indices.py +0 -0
  199. {mcp_gee_sweet-0.8.2.dev321 → mcp_gee_sweet-0.8.2.dev323}/tests/test_docs_layout.py +0 -0
  200. {mcp_gee_sweet-0.8.2.dev321 → mcp_gee_sweet-0.8.2.dev323}/tests/test_docs_markdown_export.py +0 -0
  201. {mcp_gee_sweet-0.8.2.dev321 → mcp_gee_sweet-0.8.2.dev323}/tests/test_docs_named_ranges.py +0 -0
  202. {mcp_gee_sweet-0.8.2.dev321 → mcp_gee_sweet-0.8.2.dev323}/tests/test_docs_style.py +0 -0
  203. {mcp_gee_sweet-0.8.2.dev321 → mcp_gee_sweet-0.8.2.dev323}/tests/test_docs_tables.py +0 -0
  204. {mcp_gee_sweet-0.8.2.dev321 → mcp_gee_sweet-0.8.2.dev323}/tests/test_gen_tool_docs.py +0 -0
  205. {mcp_gee_sweet-0.8.2.dev321 → mcp_gee_sweet-0.8.2.dev323}/tests/test_response_limits.py +0 -0
  206. {mcp_gee_sweet-0.8.2.dev321 → mcp_gee_sweet-0.8.2.dev323}/tests/test_server.py +0 -0
  207. {mcp_gee_sweet-0.8.2.dev321 → mcp_gee_sweet-0.8.2.dev323}/tests/test_server_json.py +0 -0
  208. {mcp_gee_sweet-0.8.2.dev321 → mcp_gee_sweet-0.8.2.dev323}/uv.lock +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: mcp-gee-sweet
3
- Version: 0.8.2.dev321
3
+ Version: 0.8.2.dev323
4
4
  Summary: MCP server for Google Workspace — Sheets, Drive, Docs (HTML or Markdown), and Calendar.
5
5
  Project-URL: Homepage, https://github.com/khuisman/mcp-gee-sweet
6
6
  Project-URL: Bug Tracker, https://github.com/khuisman/mcp-gee-sweet/issues
@@ -428,6 +428,20 @@ Fixtures: see [`docs/qa/setup.md`](../setup.md). Substitute your `{CALENDAR_ID}`
428
428
 
429
429
  ---
430
430
 
431
+ ### TC-CAL77: scope_value rejected when scope_type is 'default' (issue #458)
432
+
433
+ **Prompt**
434
+ > "Add a calendar ACL rule on {CALENDAR_ID} with role 'freeBusyReader', scope_type 'default', and scope_value 'someone@example.com'"
435
+
436
+ **Checks**
437
+ - Call `add_calendar_acl(calendar_id="{CALENDAR_ID}", role="freeBusyReader", scope_type="default", scope_value="someone@example.com")`
438
+ - Returns `{"error": "..."}` naming `scope_value` and `'default'` — not a silently-accepted rule with the value ignored (the prior behavior)
439
+ - No new rule appears in a follow-up `list_calendar_acl` call
440
+
441
+ **Result:** PASS (live, 2026-08-16) — `add_calendar_acl(calendar_id="primary", role="freeBusyReader", scope_type="default", scope_value="someone@example.com")` returned `{"error": "scope_value must not be set when scope_type is 'default'."}`. Follow-up `list_calendar_acl(calendar_id="primary")` showed no new rule — the 4 existing rules were unchanged. No dedicated QA fixture calendar exists yet (tracked under #304); tested against `primary` instead, which is safe here since the validation short-circuits before any Calendar API call is made.
442
+
443
+ ---
444
+
431
445
  ### TC-CAL64: Invalid role rejected without calling the API
432
446
 
433
447
  **Prompt**
@@ -160,7 +160,7 @@ No new tools. Stabilize on what Tier 1 shipped before starting Tier 2 feature wo
160
160
  - [x] Log the running `mcp-gee-sweet` package version at startup — `server.py::main()` logs tool-filtering state but never the version, which is dynamic (`uv-dynamic-versioning`) so needs an `importlib.metadata.version()` lookup rather than a static string (PR #479) ([#356](https://github.com/khuisman/mcp-gee-sweet/issues/356))
161
161
  - [x] `server.py::main()`'s new version-logging call (#356) has no fallback for `importlib.metadata.PackageNotFoundError` — a broken/repackaged install or invoking `main()` directly without the package installed crashes the whole server before any tool-filtering log or transport startup, instead of degrading gracefully. Found during #356's own QA (PR #483) ([#481](https://github.com/khuisman/mcp-gee-sweet/issues/481))
162
162
  - [x] `transfer_ownership` missing from `server://auth-status`'s `_SA_LIMITED_TOOLS` despite its own docstring documenting the OAuth-only restriction — found during #140's review. Needed a design call on generalizing `_auth_status_json`'s failure-reason schema (storage-quota vs. no-Drive-identity are different failure classes), so routed to Joy instead of Amy. (PR #507) ([#447](https://github.com/khuisman/mcp-gee-sweet/issues/447))
163
- - [ ] `server://auth-status`'s `auth_method: "adc"` can't distinguish a real user credential from a service-account-backed one (GCE/Cloud Run/GKE metadata identity, or `GOOGLE_APPLICATION_CREDENTIALS` pointed at a key file) — both get tagged plain `"adc"` with `can_create_in_personal_drive: true` and zero limitations, which is wrong whenever ADC resolves to a service account. Found during #447's design work; not blocking it. `ready-for-development` (on deck, no lane yet) ([#506](https://github.com/khuisman/mcp-gee-sweet/issues/506))
163
+ - [x] `server://auth-status`'s `auth_method: "adc"` can't distinguish a real user credential from a service-account-backed one (GCE/Cloud Run/GKE metadata identity, or `GOOGLE_APPLICATION_CREDENTIALS` pointed at a key file) — both get tagged plain `"adc"` with `can_create_in_personal_drive: true` and zero limitations, which is wrong whenever ADC resolves to a service account. Found during #447's design work; not blocking it. `ready-for-development` (on deck, no lane yet) ([#506](https://github.com/khuisman/mcp-gee-sweet/issues/506)) (PR #613)
164
164
  - [x] Dependabot's `pip`-ecosystem config doesn't always regenerate `uv.lock` for a version bump (confirmed on 2 of 7 PRs in the same batch) — silently defeats every `--frozen` CI/release install, which doesn't validate lock-vs-manifest consistency. Immediate drift fixed by hand 2026-08-06; switched to native `uv` ecosystem config and added a lockfile-sync CI guard ([#528](https://github.com/khuisman/mcp-gee-sweet/issues/528), PR #533)
165
165
 
166
166
  **Documentation**
@@ -374,9 +374,11 @@ def register(tool):
374
374
  calendar_id: The calendar ID, or 'primary'.
375
375
  role: Access role to grant. One of: 'reader', 'writer', 'owner', 'freeBusyReader'.
376
376
  scope_type: Who the rule applies to. One of: 'user', 'group', 'domain', 'default'
377
- ('default' grants public access to all users and needs no scope_value).
377
+ ('default' grants public access to all users and must not have a
378
+ scope_value).
378
379
  scope_value: Email address (for 'user'/'group') or domain name (for 'domain').
379
- Required unless scope_type is 'default'.
380
+ Required unless scope_type is 'default', in which case it must be
381
+ omitted.
380
382
  send_notifications: Whether to send a notification email to the grantee.
381
383
  Defaults to True.
382
384
 
@@ -396,6 +398,8 @@ def register(tool):
396
398
  }
397
399
  if scope_type != "default" and not scope_value:
398
400
  return {"error": f"scope_value is required when scope_type is '{scope_type}'."}
401
+ if scope_type == "default" and scope_value:
402
+ return {"error": "scope_value must not be set when scope_type is 'default'."}
399
403
 
400
404
  scope: dict[str, str] = {"type": scope_type}
401
405
  if scope_value:
@@ -522,6 +522,22 @@ class TestAddCalendarAcl:
522
522
  assert "error" in result
523
523
  cal_svc.acl.return_value.insert.assert_not_called()
524
524
 
525
+ async def test_scope_value_with_default_scope_type_returns_error(self):
526
+ """A stray scope_value alongside scope_type='default' must be rejected, not silently ignored."""
527
+ cal_svc = MagicMock()
528
+ ctx = _make_ctx(calendar_service=cal_svc)
529
+
530
+ result = await _cal_tools["add_calendar_acl"](
531
+ calendar_id="cal-1",
532
+ role="freeBusyReader",
533
+ scope_type="default",
534
+ scope_value="someone@example.com",
535
+ ctx=ctx,
536
+ )
537
+
538
+ assert "error" in result
539
+ cal_svc.acl.return_value.insert.assert_not_called()
540
+
525
541
  async def test_default_scope_type_omits_value_and_scope_value_not_required(self):
526
542
  """scope_type='default' must not require scope_value and body must omit 'value'."""
527
543
  cal_svc = MagicMock()