Skip to content

fix: validate zero-argument tools and upgrade Console SDK to 0.7.0 - #122

Merged
ChiragAgg5k merged 1 commit into
mainfrom
fix/zero-argument-validation-console-sdk-070
Oct 1, 2026
Merged

ChiragAgg5k merged 1 commit into
mainfrom
fix/zero-argument-validation-console-sdk-070

Conversation

@ChiragAgg5k

@ChiragAgg5k ChiragAgg5k commented Oct 1, 2026 •

Copy link
Copy Markdown
Member

Summary

  • Reject extra arguments for zero-parameter hidden tools instead of forwarding them to the SDK. Keep validation generic, with one new regression test and no tool-specific branches or descriptions.
  • Upgrade appwrite-console from 0.6.0 to 0.7.0 (>=0.7.0,<0.8) and refresh only that package in uv.lock.
  • Preserve the API-key catalog boundary: exclude the renamed tables_db.create_cutover and the six new organization project-key administration methods; remove obsolete exclusions for deleted SDK methods. The new Growth service remains OAuth-only.
  • Update existing catalog tests and documentation: OAuth exposes 1,007 hidden tools across 40 services; API-key mode exposes 663 across 26 services. The public operator surface is unchanged.

SDK release: https://github.com/appwrite/sdk-for-console-python/releases/tag/0.7.0

Compatibility review

Compared the complete 0.6.0 and 0.7.0 generated catalogs, reviewed the SDK breaking changes, and verified all services register successfully. SDK execution already uses keyword arguments, so optional-parameter reordering does not require call-site changes. Removed SDK methods disappear from the searchable catalog, and the renamed cutover method is advertised only for OAuth.

Synthetic response fixtures reproduce the field/type problems observed in Sentry; these are not production payload replays or proof of production resolution:

Observed failure 0.6.0 0.7.0
MCP-N: Block lacks project/organization metadata Rejects Accepts
MCP-4: framework adapter fallbackFile=null Rejects Accepts
MCP-1V: dedicated-database specification list lacks pricing Rejects Accepts
MCP-H: get_column receives a varchar column Rejects Parses ColumnVarchar
MCP-1B/J: execution lacks resourceId/resourceType Rejects Still rejects
MCP-12: deployment lacks required fields Rejects Still rejects
MCP-K: proxy rule resource type is dedicatedDatabase Rejects Still rejects
MCP-Y/Z: backup archive null size/start time Rejects Still rejects
MCP-1C: database status connections is [] Rejects Still rejects
MCP-1G: row lacks $permissions Rejects Still rejects
MCP-X: structured query object reaches SDK flatten() Crashes Still crashes

MCP-A's unexpected keyword failure is addressed separately by the generic MCP validation fix in this PR. Upstream 500/503 failures are not addressed by this SDK upgrade.

Verification

On Python 3.12.8:

  • uv run --python 3.12 --group dev black --check src tests — passed.
  • uv run --python 3.12 --group dev ruff check src tests — passed.
  • uv run --python 3.12 --group dev pyright — passed, zero errors/warnings.
  • uv run --python 3.12 python -m unittest discover -s tests/unit -v — 259 passed.
  • uv run --python 3.12 --extra integration python -m unittest discover -s tests/integration -v — 24 discovered: 10 passed, 14 skipped. Passing coverage is docs/index integration; live Appwrite API/OAuth/operator end-to-end verification is blocked by missing credentials.
  • Side-by-side SDK fixture checks — outcomes shown above.
  • git diff --check — passed.
  • GitHub CI — all four jobs passed: lint/format/type checks, unit, Docker build, and integration. Local Docker attempts were interrupted; the successful Docker verification is from CI.

This is a backend change; no visual screenshots are applicable. Production error resolution must be verified after deployment.

Draft release note

Fixed

  • Hidden tools with no parameters now reject unexpected arguments before calling Appwrite, preventing unexpected-keyword failures.
  • Updated Console SDK parsing handles project blocks without expanded metadata, nullable framework fallback files, dedicated-database specifications without top-level pricing, and varchar column responses.

Updated

  • Upgraded the Appwrite Console Python SDK to 0.7.0. Hosted OAuth now discovers 1,007 tools across 40 services, including Growth and new organization project-key operations. API-key mode exposes 663 tools across 26 services and continues to exclude console-only administration operations.

Compatibility

  • The hidden tool tables_db_cutover_migration is now tables_db_create_cutover in the OAuth catalog.
  • SDK-removed log-listing endpoints, project dev-key endpoints, project_get_usage, and organizations_cancel_downgrade are no longer advertised. Clients should rediscover tools rather than reuse removed names.
  • Execution/deployment response-schema mismatches and upstream service errors remain under investigation; this release does not claim to resolve every Sentry issue.

@hansi-codes

hansi-codes Bot commented Oct 1, 2026

Copy link
Copy Markdown

🟢 Tier S · Ready to merge

No concrete defects were found in the changed validation, catalog policy, dependency configuration, or regression coverage.

This change rejects unexpected arguments for hidden tools with no parameters and upgrades the Console SDK to 0.7.0. It updates the API-key catalog exclusions for renamed and newly added administration methods, and refreshes catalog tests and documentation without changing the public operator surface.

Verdict New comments Fixed Still open
✅ Approved 0 0 0
📂 Walkthrough · 8
File Change
src/mcp_server_appwrite/server.py Validate unexpected argument keys even when a tool has no parameters.
src/mcp_server_appwrite/catalog_policy.py Exclude organization project-key administration and the renamed cutover method from API-key mode.
tests/unit/test_server.py Add zero-argument validation coverage and update SDK catalog and exclusion assertions.
pyproject.toml Require appwrite-console 0.7.x.
uv.lock Lock the Console SDK upgrade to 0.7.0.
docs/self-hosted.md Update the API-key catalog tool count.
docs/tool-surface.md Refresh SDK version and OAuth/API-key catalog counts.
docs/appwrite-mcp-flow.svg Update the hosted catalog counts in the flow diagram.

Reviewed 9d357da · Details · Comment @hansi-codes review to re-run, or mention @hansi-codes with a question.

@hansi-codes hansi-codes Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟢 Tier S · Looks good to merge. Summary

@ChiragAgg5k
ChiragAgg5k merged commit 35fcf9b into main Oct 1, 2026
5 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant