From b8eafb79b2ca178eb44cf42a530665850115a6c9 Mon Sep 17 00:00:00 2001 From: Chirag Aggarwal Date: Thu, 12 Nov 2026 15:28:53 +0000 Subject: [PATCH 1/4] feat: redact secrets from tool results by default API key secrets, webhook signing keys, password hashes and other secrets went into the model's context, transcripts and caches the moment a call returned them. Redact every field Appwrite's spec marks format: password, read from the Console SDK model, leaving a fingerprint and a note; reveal_secrets returns them in full when the user asks. --- AGENTS.md | 1 + docs/tool-surface.md | 8 +++ src/mcp_server_appwrite/apps/views.py | 5 +- src/mcp_server_appwrite/operator.py | 22 +++++- src/mcp_server_appwrite/redaction.py | 97 +++++++++++++++++++++++++++ src/mcp_server_appwrite/server.py | 14 +++- tests/e2e/test_stdio.py | 6 ++ tests/e2e/test_tools.py | 33 ++++++++- tests/unit/test_server.py | 19 ++---- 9 files changed, 184 insertions(+), 21 deletions(-) create mode 100644 src/mcp_server_appwrite/redaction.py diff --git a/AGENTS.md b/AGENTS.md index fa4e757..7ddcaac 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -34,6 +34,7 @@ Source lives in `src/mcp_server_appwrite/`: | `instructions.py` | `serverInfo.description` and the server instructions sent on initialize, rendered from `assets/instructions.json` (a description plus ordered, transport/docs-conditional Markdown sections). Edit the JSON to change the wording; keep the `pyproject.toml` description in sync (a test enforces it). | | `context.py` | `appwrite_get_context` — workspace summary (project, services, account/org for OAuth, a focused project's environments). | | `headers.py` | Per-call request headers: `X-Appwrite-Environment` (a project environment, next to the project's ID) and `X-Appwrite-Reason` (why a write is made, validated and percent-encoded as Appwrite expects). | +| `redaction.py` | Redacts the response fields Appwrite's spec marks `format: password` (carried on Console SDK model fields) from tool results, leaving a fingerprint, unless a call sets `reveal_secrets`. | | `docs_search.py` | In-process semantic docs search (`appwrite_search_docs`) over a prebuilt index. | | `docs_source.py` | Fetches the published docs (`/docs/llms.txt` + per-page `.md` exports on appwrite.io) and chunks them for the index build. | | `docs_index.py` | Writes the index artifact deterministically and atomically: page and chunk hashes, reuse of cached chunk vectors, build lock, and the added/changed/removed page report. | diff --git a/docs/tool-surface.md b/docs/tool-surface.md index fbeeb1c..a859887 100644 --- a/docs/tool-surface.md +++ b/docs/tool-surface.md @@ -45,6 +45,14 @@ flowchart LR - **Large outputs** are stored as an MCP resource and returned as preview text plus a resource URI. +- **Secrets** are redacted from results by default: every response field + Appwrite's API spec marks `format: password` (API key and token secrets, + webhook signing keys, password hashes, OAuth client secrets, MFA recovery + codes, database passwords). A redacted string becomes `[redacted]` with a + sibling `Fingerprint` (a SHA-256 prefix) to tell secrets apart or check + a stored copy, and a note names the redacted fields. `reveal_secrets=true` on + `appwrite_call_tool` or `appwrite_call_write_tool` returns them in full, for + when the user asks to see a secret. - **Reads and writes** go through separate tools so each tool's annotations match every call it accepts: `appwrite_call_tool` is read-only and idempotent, `appwrite_call_write_tool` is destructive. Each search result diff --git a/src/mcp_server_appwrite/apps/views.py b/src/mcp_server_appwrite/apps/views.py index dc070a1..31dc80e 100644 --- a/src/mcp_server_appwrite/apps/views.py +++ b/src/mcp_server_appwrite/apps/views.py @@ -497,8 +497,9 @@ def _row(row: dict[str, Any]) -> dict[str, Any]: def _json(content: list[Any]) -> Any: - text = "\n".join( - item.text for item in content if isinstance(item, types.TextContent) + # The result is the first text item; a note on redacted secrets may follow. + text = next( + (item.text for item in content if isinstance(item, types.TextContent)), "" ) try: return json.loads(text) diff --git a/src/mcp_server_appwrite/operator.py b/src/mcp_server_appwrite/operator.py index ebf6b85..2c9f8e2 100644 --- a/src/mcp_server_appwrite/operator.py +++ b/src/mcp_server_appwrite/operator.py @@ -47,10 +47,10 @@ from .tool_manager import ToolManager ToolContent = types.TextContent | types.ImageContent | types.EmbeddedResource -# (tool_name, arguments, project_id, organization_id, environment_id, reason) -# -> content +# (tool_name, arguments, project_id, organization_id, environment_id, reason, +# reveal) -> content ToolExecutor = Callable[ - [str, dict[str, Any], str | None, str | None, str | None, str | None], + [str, dict[str, Any], str | None, str | None, str | None, str | None, bool], list[ToolContent], ] ContextProvider = Callable[[dict[str, Any]], dict[str, Any]] @@ -668,6 +668,9 @@ def _run_hidden_tool( f"Tool {tool_name} requires organization_id. Use {CONTEXT_TOOL_NAME} " "to select an organization, then retry with that organization ID." ) + reveal = bool( + raw_arguments.get("reveal_secrets", raw_arguments.get("revealSecrets")) + ) arguments_object = _normalize_arguments(raw_arguments) return self._execute_tool( tool_name, @@ -676,6 +679,7 @@ def _run_hidden_tool( organization_id, environment_id or None, reason, + reveal, ) def _preview_or_store_result( @@ -812,6 +816,16 @@ def _call_input_schema(*, write: bool) -> dict[str, Any]: "log and shown in the Activity tab next to the change." ), } + properties["reveal_secrets"] = { + "type": "boolean", + "description": ( + "Return secrets in full: API key and token secrets, signing keys, " + "client secrets, password hashes and other fields Appwrite marks " + "secret. Off by default, so they are redacted and replaced with a " + "fingerprint. Set true only when the user explicitly asks to see a " + "secret in this conversation." + ), + } properties |= { "project_id": { "type": "string", @@ -1225,6 +1239,8 @@ def _normalize_arguments(raw_arguments: dict[str, Any]) -> dict[str, Any]: "environment_id", "environmentId", "reason", + "reveal_secrets", + "revealSecrets", }: continue if value is not None: diff --git a/src/mcp_server_appwrite/redaction.py b/src/mcp_server_appwrite/redaction.py new file mode 100644 index 0000000..289eac7 --- /dev/null +++ b/src/mcp_server_appwrite/redaction.py @@ -0,0 +1,97 @@ +"""Keeps secrets out of tool results. + +A tool result goes into the model's context and from there into transcripts, +subagent logs and caches, so a secret Appwrite returns (an API key created or +updated, a webhook's signing key, a user's password hash) would leak the moment +the call returns. Appwrite's API spec marks every such response field with +``format: password``, and the Console SDK carries that on each model field, so +the result is redacted from the SDK model before it is serialized, unless the +call sets ``reveal_secrets``. + +A redacted value is replaced with ``[redacted]``. A string also gets a sibling +``Fingerprint``, a short SHA-256 of the value, so the caller can still +tell which secret it got and check a stored copy against it. Empty values are +kept: they only say a secret is unset, or that Appwrite already hid it. + +Only typed results are redacted. A ``select`` query returns its rows untyped, +and those carry the caller's own data, not Appwrite's secrets. +""" + +import hashlib +from typing import Any + +from pydantic import BaseModel +from pydantic.fields import FieldInfo + +REDACTED = "[redacted]" + +SECRET_FORMAT = "password" +"""The OpenAPI format Appwrite's spec marks secret response fields with.""" + + +def redact(result: Any) -> tuple[Any, list[str]]: + """The result as JSON-ready data with every secret field redacted, and the + names of the fields that were, sorted.""" + fields: set[str] = set() + return _clean(result, fields), sorted(fields) + + +def fingerprint(value: str) -> str: + """A short SHA-256 of a secret: enough to tell secrets apart, not to recover one.""" + return "sha256:" + hashlib.sha256(value.encode()).hexdigest()[:12] + + +def note(fields: list[str]) -> str: + """Tells the model what was redacted and how to see it if the user asks.""" + return ( + f"Secrets redacted from this result: {', '.join(fields)}. Each redacted " + "string has a Fingerprint (a SHA-256 prefix) to compare against a " + "stored copy. Only if the user explicitly asks to see a secret in this " + "conversation, read it again with reveal_secrets=true (do not repeat a " + "create, which would make a new secret)." + ) + + +def _clean(value: Any, fields: set[str]) -> Any: + if isinstance(value, BaseModel): + return _clean_model(value, fields) + if isinstance(value, (list, tuple)): + return [_clean(item, fields) for item in value] + if isinstance(value, dict): + return {key: _clean(item, fields) for key, item in value.items()} + return value + + +def _clean_model(model: BaseModel, fields: set[str]) -> dict[str, Any]: + data = model.model_dump(by_alias=True, mode="json", exclude_unset=True) + for name, field in type(model).model_fields.items(): + key = field.alias or name + if key not in data: + continue + if _secret(field): + if data[key] in ("", [], None): + continue + fields.add(key) + if isinstance(data[key], str): + data[f"{key}Fingerprint"] = fingerprint(data[key]) + data[key] = REDACTED + continue + item = getattr(model, name) + if _holds_model(item): + data[key] = _clean(item, fields) + return data + + +def _secret(field: FieldInfo) -> bool: + extra = field.json_schema_extra + return isinstance(extra, dict) and extra.get("format") == SECRET_FORMAT + + +def _holds_model(value: Any) -> bool: + if isinstance(value, BaseModel): + return True + if isinstance(value, (list, tuple)): + return any(_holds_model(item) for item in value) + if isinstance(value, dict): + return any(_holds_model(item) for item in value.values()) + return False diff --git a/src/mcp_server_appwrite/server.py b/src/mcp_server_appwrite/server.py index e680eea..7640839 100644 --- a/src/mcp_server_appwrite/server.py +++ b/src/mcp_server_appwrite/server.py @@ -83,6 +83,7 @@ from .headers import environment, scoped, set_environment from .instructions import build_instructions, load_description from .operator import Operator, ToolOutput, _parse_tool_name +from .redaction import note, redact from .service import Service from .tool_manager import ToolManager @@ -1108,6 +1109,7 @@ def execute_registered_tool( organization_id: str | None = None, environment_id: str | None = None, reason: str | None = None, + reveal: bool = False, ) -> list[types.TextContent | types.ImageContent | types.EmbeddedResource]: tool_info = tools_manager.get_tool(name) if not tool_info: @@ -1214,7 +1216,14 @@ def execute_registered_tool( ) raise - return _format_tool_result(name, result, prepared_arguments) + if reveal: + return _format_tool_result(name, result, prepared_arguments) + # Secrets stay out of the model's context unless the call asks for them. + result, redacted = redact(result) + content = _format_tool_result(name, result, prepared_arguments) + if redacted: + content.append(types.TextContent(type="text", text=note(redacted))) + return content def _json_default(value: Any) -> Any: @@ -1823,7 +1832,7 @@ def build_operator( return Operator( tools_manager, - lambda tool_name, tool_arguments, target_project=None, organization_id=None, environment_id=None, reason=None: ( + lambda tool_name, tool_arguments, target_project=None, organization_id=None, environment_id=None, reason=None, reveal=False: ( execute_registered_tool( tools_manager, tool_name, @@ -1833,6 +1842,7 @@ def build_operator( organization_id=organization_id, environment_id=environment_id, reason=reason, + reveal=reveal, ) ), context_provider=lambda arguments: _get_context_for_request(arguments, client), diff --git a/tests/e2e/test_stdio.py b/tests/e2e/test_stdio.py index 8dedb86..0d5fb5a 100644 --- a/tests/e2e/test_stdio.py +++ b/tests/e2e/test_stdio.py @@ -169,6 +169,12 @@ async def script(client: ClientSession) -> dict[str, Any]: # Every request is in the environment; the reason went with its write alone. self.assertFalse(session["read"].is_error, session["read"]) + # Password hashes never reach the model, only their fingerprints. + listed_users = session["read"].content[0].text + self.assertNotIn("$argon2", listed_users) + for each in json.loads(listed_users)["users"]: + self.assertEqual(each["password"], "[redacted]") + self.assertTrue(each["passwordFingerprint"].startswith("sha256:")) listed = self.cloud.headers("GET", "/v1/users") self.assertTrue(listed) for headers in listed: diff --git a/tests/e2e/test_tools.py b/tests/e2e/test_tools.py index 9f2b7f1..76396d5 100644 --- a/tests/e2e/test_tools.py +++ b/tests/e2e/test_tools.py @@ -16,6 +16,7 @@ """ import base64 +import hashlib import json import unittest from typing import Any @@ -310,7 +311,37 @@ def test_reads_and_writes_run_only_through_their_own_tool(self): ) self.assertFalse(result.get("isError"), result) self.assertEqual(cloud.calls("POST", "/v1/webhooks"), created + 1) - self.assertIn(WEBHOOK["webhook_id"], cloud.documents(PROJECT)) + signing = cloud.documents(PROJECT)[WEBHOOK["webhook_id"]]["signatureKey"] + + # The signing key Appwrite returns stays out of the model's context: + # only a fingerprint of it, and a note on how to see it if asked. + self.assertNotIn(signing, json.dumps(result["content"])) + webhook = json.loads(self.text(result)) + self.assertEqual(webhook["secret"], "[redacted]") + self.assertEqual( + webhook["secretFingerprint"], + "sha256:" + hashlib.sha256(signing.encode()).hexdigest()[:12], + ) + self.assertIn( + "Secrets redacted from this result: secret.", result["content"][1]["text"] + ) + + # Asked for, a rotated key comes back in full. + result = self.call( + "appwrite_call_write_tool", + { + "tool_name": "webhooks_update_secret", + "project_id": PROJECT, + "confirm_write": True, + "reason": "Show the user the rotated signing key", + "reveal_secrets": True, + "arguments": {"webhook_id": WEBHOOK["webhook_id"]}, + }, + ) + self.assertFalse(result.get("isError"), result) + signing = cloud.documents(PROJECT)[WEBHOOK["webhook_id"]]["signatureKey"] + self.assertEqual(json.loads(self.text(result))["secret"], signing) + self.assertEqual(len(result["content"]), 1) self.assertEqual( collector().wait( diff --git a/tests/unit/test_server.py b/tests/unit/test_server.py index 6fbd20c..5e8fac9 100644 --- a/tests/unit/test_server.py +++ b/tests/unit/test_server.py @@ -1060,7 +1060,7 @@ def test_register_services_returns_fresh_manager(self): set(SERVICE_CLASSES), ) self.assertEqual(len(manager_a.services), 41) - self.assertEqual(len(manager_a.get_all_tools()), 1029) + self.assertEqual(len(manager_a.get_all_tools()), 1065) def test_console_sdk_0_7_surface(self): manager = register_services(object(), profile=OAUTH_PROFILE) @@ -1182,7 +1182,7 @@ def test_api_key_profile_only_advertises_server_capabilities(self): tool_names = {tool.name for tool in manager.get_all_tools()} self.assertEqual(len(manager.services), 27) - self.assertEqual(len(tool_names), 689) + self.assertEqual(len(tool_names), 720) self.assertIn("waf_list_rules", tool_names) self.assertIn("waf_create_deny_rule", tool_names) self.assertIn("avatars_get_photo", tool_names) @@ -1365,6 +1365,7 @@ def fake_execute( organization_id=None, environment_id=None, reason=None, + reveal=False, ): seen["client"] = client seen["target_project"] = target_project @@ -1534,8 +1535,9 @@ def get_file_download(self) -> bytes: self.assertIsInstance(result[0], types.EmbeddedResource) def test_execute_registered_tool_returns_selected_attributes_untyped(self): - # A select query returns partial documents that the SDK's full models - # reject (Sentry MCP-12/MCP-13). + # A select query returns partial documents. They are passed through as + # Appwrite sent them, not filled with the full model's defaults + # (Sentry MCP-12/MCP-13). manager = register_services(object(), profile=OAUTH_PROFILE) partial = { "total": 1, @@ -1555,15 +1557,6 @@ def test_execute_registered_tool_returns_selected_attributes_untyped(self): self.assertIsInstance(result[0], types.TextContent) self.assertEqual(json.loads(result[0].text), partial) - with patch.object(server_module.error_monitoring, "capture_appwrite_exception"): - with self.assertRaises(RuntimeError): - execute_registered_tool( - manager, - "functions_list_deployments", - {"function_id": "function"}, - client=client, - ) - def test_execute_registered_tool_captures_publishable_appwrite_error(self): tool = types.Tool( name="users_list", From 37f07b35b07f2fc82ba038e535486a306b6b385b Mon Sep 17 00:00:00 2001 From: Chirag Aggarwal Date: Thu, 12 Nov 2026 15:47:04 +0000 Subject: [PATCH 2/4] build: require appwrite-console 0.16.0 0.16.0 carries format: password on every secret response field, which the redaction reads. It also adds 36 catalog methods (1065 hosted, 720 for API keys), so the documented counts and the flow diagram move with it. --- docs/appwrite-mcp-flow.png | Bin 340074 -> 339815 bytes docs/appwrite-mcp-flow.svg | 2 +- docs/self-hosted.md | 2 +- docs/tool-surface.md | 8 ++++---- pyproject.toml | 2 +- uv.lock | 23 ++++++++++++----------- 6 files changed, 19 insertions(+), 18 deletions(-) diff --git a/docs/appwrite-mcp-flow.png b/docs/appwrite-mcp-flow.png index b3e6fd7d25da0f9115a7886a74393a6e511d52a6..e67e4002ffb2dab69fa2e2d20a2721676f7ee337 100644 GIT binary patch delta 71459 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

M}^LeZBbmqCtjQEc~w)fm&fe>Tg z3t^nG5_p+`5PWx35o4r}F!Xz`5x(?yn<( z%l4A@wp3anCEb7Mc$KjOOGQKGMm(H2*;>fzW$0l72cv@Z7uSYkUPQyayC8sIc#^lC zg*h?14;}o-lvo3<-W+6~GG20dd%>`I!XTDPJuj z41pBGXJx4o3tP+~5NoIfYz+YB4CrnFIM+d!YiOnT?b~(7@0-pGSl$=HUn)euQ)445 zDc{?5^8`H zQ@nq*Rsu8dB#rc2!KOy|KH_~E_K8;X;l3Z*B=#MfE1&Qay|+O33fm8cO;P-|jDcN} zt@4+)Vb_DU-8=oY9EWB=Xy5%{0PqLJkV8ahbA|kE8l&)gpR!6XoeSRQGDzZH|g>W8> z97=OhBx{h7BP?m&!56rClrv3T|WJt_T4h8R56Zq@tG}`o)Rcez&hG>xvSw z)HhDmUvG`lIU!iGwcXe9*xH0C0YSXP5IxQ}z`=zF2MYji%UXivMl>zXkwZ;h#ClLxe`2zZ|}Z`6gsRWV?e6{#i#mU^on+_)82Y+ zSUE5-4AidPv2=$mlOB|>uE4iSeRMu4tgSsDr_9Deq4k(+e>zl>P{GLP+Drl*s+Y#H zD=L2I<^6CN5YC8qHN96e4>C+QNAPL*e*+a!HeP5CBk&HQ%m#20f)*jfyHgNM;TL#u zfCu(df;yn1ArNm|kLB7;kFmrk`y3w>J+k9fix7o~1U&8_S>Xf#X?RvRNaTON3>QgQ z1?66RYQE)#j1zu{-9Yr`<;$)CxKAAJaeh?#2|baTmNpJ|A&?;g$u9(%4wmfh4m4@n z1|HpK^N|!G_ub#Hlo`9V-vRHSc`76UAtD6$r~KX=sPy&Tz4TZK^gN!*#}G#J{y{8Z zVOf`JILF_KX%k7{biViJ=IxQkR=Z(DZ))*NzM{N-)?CD78?FtbQSM+=-ls{x>F zzi=H;!!e?W2qtw4L<<=Ui)`D-+MoQ0^Y3S_t`aVL%9v5D{8hHp(!%iEiqD|&Jsi|` ze|PlA39c0O$T1|t1cPqj|9li<6=7_+#m*7$yua|B#ux@&9?-9{Gda-9Z436AwoOc- z%yFO0Gqba`$~L1~HRZvpR%GV~4_L)|9IjpWeHfAo0(>gkdy>z5kPZ=zVc<-PlWV!x zQyK#?6{2>Ct^8-^b#gGaiODQu*0qA_Xa_rb`It zp;9*SDc<=n-bR8l0D$tY-QmW7@IPd-{@~)o!g?*Q=30@HqYPP7xUNXz9=JVGR80P^ z2h3IJOCoJRO~gw1JY-JO;36~z49BseLZ2PeNk5~62jYC6@hAiF(r?Q|zot7wO8g8U zPWRO;*h1DfMZ;N?64!3K>PRA^vjYcpDc5f?#BDl@UI&qQ*lhr;Y-~6~&;<_fyi__) zMg@B*LB|`gW*~|88AwwgTm=b>S7%Hgc;m*2BFAtdRzbIchtHZ&iQ5iTB<-`lFwiuB zMJB|Juy6C-?mgch`SemtK6qjj4iUlCgqK$!aGZ`8;bjsm#~}9~Jn)cY!1zc(A}2F5 zFFjqEMCq42K%Aq)!+Qn?AA=x^?fDpX-HETnG3&CC2n)2XTtdg=5R&SIw7fmagST>?48D;L|wY73pA`7k))}4d6{{61)avy z(q`h~*llyP=@cK}E`m_M`wNA^!U~X$NSigfLkO6t&-9#*Cy;nr!$q>iFBsM zg?u`>YxL>%O?qk-gxCc7VOAq!YyOI*9qccTl0*O8g8yaWNuZ1}wZ?@T`upi1LI~8*aAe1=OAGbtfc75Z- z4ZXRfJ6Ep1J(Yv?T3l`Oy`e0i%SqKD?pO>vPl)-vYg5Z2g7kND}i zpKmWC=Ji(}4)~nP3?B_IF)=&4f+ho?VDrUfr=^L9OdbehV7Xinp{+Q=Q;8(xLbh+! zHgTZK=#*q_ZuU@3mV|nHcT|fR5urY4zOwSE3bo&ZwU5-6f%|<3lCbx zu{=&!6==Y=0$UvCU0K`qW5u~XC+){lrpppW3@isyXzB8}ilfpfBk4FkjCnMCo=v|6 z6%2Yv++%9&!BYQ$2_ppT6i%1h9Dnx<{AoGXSA~2Txs0BaTYvUTdq`*WrptM$70O-CcImX8P>P6DOR zz!DvOOj~&&DY;2Qc%GK0|BXM*g9yWno`tnSZe0B$br|?D zN6gtG`{yBuh_Y~NorSLY)Y36no^$1SI4k3``WnxOw|gh`7LT#PZ)IbYq(iN;v*iV}4_ zMmwX_5R$yE#Q>;B)XPYG$@jkC(NxcxcE`lhkx1duqv-E?UFBq0^YFKnoE%e#76)vT zsF?NTXRkjX=$Ad^e|sJaingwmA_=0mx{UHvK`O!pSbYcXo>D|z_L$CaeW^^7U49(J7nuRe+W!w9CxPhX1qLf^lCmZusf|He>_Ok9BgTMDS^ zVT_b}7`)d!O)VE&3s-=jA!Xo{4D*vjmyZKWki=VwYpD^F5t~JpcP$JOfBTqEv;qt; zl+etK*f$RFko8fmVhWt}Dd9c8WY0h7C6R^bLzNFnf5^;ZfAup}OxE-g(%u$1_=&nEGoI#>Y z7+zk%hgRb(JbjA*Rg&n0%=;nJ_4WIysU$IN5r3Xw(y?4aJsNN#EEk=J&JlR9wfui| zeF;32-P`}I5=BuYDixKY31!JLA)!3BhAbm%JxpYa?8~h}Wlypjq3j`J>>?G4nIWXH z%f1XDV;RePM)B)?|G)qJQTb?``z+V;y}s9V&WTe`Alnp?CtW=G8w!*h)zpF-hMLL? z?}!c`ii0Uz)CW5cDpINW5hEA9!!Py6+G25g1tbls8}h;S-{UTp^&K5M>WH`O{51l7 z_6v=J+^EFOnBdM^tV=koL+Oz>Z>Bze1X3&FSraiPR!(p5Hn6-wOb8 z0|-M);+d7V&Mb@f9oAIF&sq)+!4iT3df!j-2Ryy+uQA>RCYOY19pvFbdZj6_6gn`2 zGF*aPagQ^kAi{A1C8mwNw6)WJqgh`EtJr@7K{+4qj=QW}KQDM>i@kmt!w1B;qDFwv zg{#>MmGHItv)Ba>=c_Ln4?(_{xskS9M441vXotAU1>c+;y3Y3|=E2hp6c+++O9*Pv|8;JNDb zelV#!G)&jeD5?-TET@-7k@n`?0p{F8;`cFy9(2wonCkVwL+0`S{@VDz-vv{!_Y)79 z_BoHx>4&K%m!5^Zu>*&UKDD{kJw8@=#5wyyy!-2;r(C{m58nTD!rUFTxOOY%#AjUn zct3tA@QM1*`LU(8&={}5s_XMgcZtN&g*o(IbS6WR2)$?-QfyjYN_k$$W3H;PDFgI> zM~_~4^G3BShxYCLM|kJW`mcRJz;kl)RWEk~mDdiz*9(m4h9AWp^28I&mYL`*AZOxL z0;kY@skxA@v`M$N{O>Qi zAB9vb3)>%Oq&r!+rRo*G0-c7D`GM{s^|@LZPunObUe^ws$~Jh>JFPQ5L-V!{PQQK& z)4gwKTI6*n`t(8EBai!cguhu`dWL7v2~n5J(~nA7oy&jzT%w1B2}7tAAeOw2p4idM z>WBsk%zF-76^hiqV61|V1-lmUmj2)-t|$rVBbsPEvHf67hz4-(JsgzM`rRPU^&IG2 z(}~}}Ka*Y}0iKsvL0aQ!#s>JWRw!I?TB)!7_U60-6UX5^6vGvj93cbNLK&U?fKVf5`0l$MTt0yYGvAoJ+>SgvF4s7Ok?1Pmti5u_S1 zcJ1&{2)e!x7$`p}5O(~2e9f)Mey0oGI^Sh#y}WR8wUYy%Zka7+EBa;I%i8opnbavG ztrK$F%GzFOrAv5YrX-iXuY=#b!R~V#2kjuXo($Z!4~RJ^+<=~3{HITyQzROhv?In5rdkkmD_1)LOrA$tKXpW-|far^-{QTdvB zApaxoTMleF76o6_RTXSpUqVm6!z*4N=XyfRr*qxUlQPARo#b_L(rkIhx<3f@{}!1l}DGw?bzT-;UeK3{XVW2%7o*MW)%zXYnjDm`8V8 zc%0K*B&%XSd_sj9-ceIy+++42;E)YfvERmwL@H;mfjug*vdqJNg{8c>TRvg96sKPyC8*>vgu=^ z@1mi-7ad0?M+YP@&%e&Z@jXLfE>jSaZ*Sz>`aJV|mIvbC9s?`w^%Qo~&;e)8SfGnc z4m<92hyokC5DnO*VvPZs1%nwM5KYLycPh+Dcj&C-5!=DgPtA#9sl>g{;V&7uChx2` zMIwA3k3-zFq#!=Fx-58l1Xt;`&QN7!WuEFCRJSYh2 zfw~tLa>dt0S6F>hS3GbrzdS3vyY=qlUe+6ZwqZb z;q?=K4&L6zoI_prAZ=~VPxJG-%>8R?$+oMMT~O5UlKVkLgFGNI3^3HkIWaHfm*07b z!0UI)p<>v+U31b+1CMJqR-_=5zNZEXH{D#uKz`_KOJ0B6K9Jl25wK!OW##7r_oHUM zgW!A?PfrfT@1SU-dk(zLx1X|5o|ZX>6bZaFg@B+Vp#MmbxHJ&VIAP5B?i2TxdgUZW z_-TG;?Z&)?1-b4AWF)?RJ33k*@OAvF{Pq%YoIXKjH)g=Ytt2nY8#_{5Tr7iulE6-X zDpiscl$CY#=+sE)b|`r0KWYK_4%~OLE|(|1zkZ+CVK2DO~E}QcJPiZ;uvwFA%-&4rJv%Z^*0PeXZYSx3ls3;=T4F ziZ$M`NT52Y0707_Qfrr_t*z$fdVk&zMNRkjzqRe0_W-pebR)cIgn~J<+ra8~+l>%w zBE}LbD=Sc#0c}||n=zE@s|bq2D*CdTEhE(M%d-tpmh!BItVE@acNSNb<0RIXC+?!7 zoKA0h0`>xcyB*Fo6j;T9QLes=lidf2`ln?kVX*~>^3qbE9uSmN{_Y*Iz^2^$SLMTC z+Z7_&F|<7x4|C3HQ4ssoG7>GwpLLT@o>h7KShK3^HM~su+$u*xH5Ig>Fm8wzZuIe&t zCGYrp$eBw!FVR2fh#ObL9VK|omcb#|beelck1ll2t>czKdr8k5d35;DsID#IPLH=i0&PW<)zvWen)!KW)MCRvNa0mr%ILcQCwRT7 zNbVelf525tdm_O*!EDX!*gsQ#g#3yQvOg=5C9}1xanJU?+nG0D`dh_Hs=zTytGQNj zDd4_MdwV;(z?$t0M&T*-;9DQwR5UmkWfj~cFm)ZOMgnfarF;)xS5MEs=xuP&PN+m2 z7^|KhKlY+diroUz^@y;hUm{NGY9irSPFM$-)r3f99odUib7YHnn(MW*T4a|lL6O;( z`Q0P0qvde-6rj$hmzSx_%N~^`d3xEa?>Z>h#8XU&o9L*Cc}u)ddD!#f&bqp~tGx$V zpo3HW{XTf121jR4Pufp2%bkz{ID@CWvXU^Dl9lzCsrP(6vg4k-%f#9?$F2h^q4zx= zE<_#6Po23j+tim|CEFy1GVFw?j(&4K)M;A#dNjt5aQnN{A^+W_kBqahhBP z1b^ygU8eUAHq@jb{C>_JoEm74&~}~B%ByM$uif^G1U=EBjVFOc%AQzWTdNxw7?_`L zv&4O#`!Sw%_jVz;vq86oj&d|OI*MkJS=g&Ue1IU$fiJL?lwTxpcE~MfLluBfX|y!P zb3jl2X=!zJbzNU>uhNI<1_4qy39g3K&(`gf1V4Wl^I@_!?@Z!XX%<|xg4|JOE=v-X z508`HbMfb7>&>gjKQoRdF^FbU!(d&hAjOtewv8vd&ARfPVV*uv#-XfVi%`(@_BK0x zii;L))d$#Ng;(QcYcm5=;PUWFL+P6wkeOw-YMcd(F0!3lr6mf23t(pArcX0J#pd&r zb)Y};truo=pr!8ip`TQe-F$!5Vk?{Ex0?yUbUo3y2hNV9t*-U+4Z52|Wz$2V`Z;97 zERtlZvV%b>+qN^!s-q}#A}x0U+=*d5ebbD=_sZl#Td_U7K4H2p)G!N<5|u+D^>kqg z*E5iBkPhb%g`$BS(P;5n_ZbQM_oD!DK;pxsci73RiT=W_zd&!oJJ6y(CtvtAVEV(> z(AVzmfs{s4v(Q)j5!xCplP)B>_qhykWtvX=e6hVNIBH8D9cB8?%iXJM`R+cbI#Mz| zdtw4$1zp|VDp}R%*Ob3Y%g(@(AO3+`(NAPXlA`ovSw65LW#_-0S1tGYc7EF)-??AK zgoiaepjDLBhGD1zX299m+sUbtoKw_!+DQUzMgw>R=s!A&&o4b4n1j`>r!Ps1L$Acc z+E=8MemM){ac3%c+_;3_xpQ&hxKA`eQs2{oSJ-H_87>8O+5dF_0DX_?d0$JAp_9oQEt6O7+#=PC2^^FYhr=+V6KotNUl9)4If zlCDGqYh6n;7jWVLe;n(i&V_LuKf2F_s98bi(+0k+Y*cV?r6t80^Bxs{?55$;q(9f8 z>en(^bif4S+T+@`o#56Td3k$~SbxVf08i(e(t|9k4%SW*Z2n#c<62%bDZ&==ss7lr0kLWquCo0Eq6FPcdEx9|-R zwYap*cmU9vib5WMqZ#rn&`}odSd2UNARvg`Q7Z`;F2y@>%VT3pV^*EwMB&r!uu3BD zVSayM{aHLNy4ft#AMS0sYKy(cwD0ERPcbNJbg&40ePfKffR9GfpB%mH`DN=$lLN}A zsO+!3cfsIp{H z$qgtt{_@A}kO2w#nR}rI`>E(_l*u8)7xCzy$(Q3X{f@O*XJA0No47ZZ4t%`f-&S-| zAy8|^He!@JOtfr59)1Y$Yr2)^+Fj?V}N^W;2dRCag z4}F%qKQ4e&3u(uRroa^LeiOE@;QXoJ zE~2BDEYRO7DFn^vzSE2cqWjnwnWEW584tl4;UgKOE=_{iw+x)%(Y)I#iJz8Nc1_I7 zD2Xmv;SF7BE#9nNuWWukz`T_+k)LA~&zbmD{?rQ&y->?s$W#1!LhJrHc3;#1<)exj zS&`#!?AI!0#x3AL`Q7eTzcWmI{2#q4ED=`+PQf*n24DE%&1XhzTms~5#aO$GME>bX zI#B3GeVvsBf-GwZD0L!DT0lnY-j6JF`r`6@p4fDXZMoo)=hLH^Wrfg z0iJ!!Q-X;jb5A@ZGi>8GVir(>5GR@ks!#mGDGRhQkv&F{8{qipv19R;<2n+c1WJ)v ztCRBfqD`k{Lr}N{ZPgB5{-A(cUm2<5Fa-o9{TY@}-9Gj)NWCj`yyd2>S{)LPyH{w= z$0A)nQPd_rBxd4C&a7IiTHnRzMWfm-v#x`C_Cy+HX|%^_s*aQF;b8TE<^Ng)P8XkE z*MPzGmb6|zKl^oB)z$7S?*-G-|1O^V{icJMtN~a;3u!LKr6y%Ah8PVe{9H~T{A!;q z-M6>P%Udft-yieTJRY0m%I7y6g`h%&&TUPH8KMqPSC6 zSHd-lO*aHRlNmL>lT zI?C9z_g{2Tx7|b;R+f0P`7aa0{t$(^x+J9$d@PWPwxmpMW5PQ3@Oq|sMU~anfkNY1 zWYtELk$(h4>+UdCSNA}h8%}bW4iEn9d08`WB`15dC`Ha4Z^#DlpV#f1`z0zOServf zE?%>wjg99W!l7>HI=e2si3b-G zHrS%>$U;}o2L7N@i{fovz>l-CN;xX8O@@3>6a6iK74|hS3Zs^p=)H3Gp7Ls!Js#Iu zvjC7&dKj_m2+qspGwo7vR@T(iT5gsQX|A(V1YFaEwru5b2uCyk-wlB1EE0A7Vses3;4lKN%80Eu2Vj!#(>o)$SKB9SQTF=6=^pdRxH|R^gGoUUBCoB(l}{ zl6{3zrMs>!-MfRwmvrj{;qebJ>!X77_m%3>m!k5_ zmx&3GgB=s#Ch+clg6fn6Ok#TaY0Mq$aQC*n8gOav#&bky7BCPs{OxsWszpWkl@4?h zl6HkkQwf$|L5wExrsQVRXya>Z=6L#*ET%2N07j35?rco6jZd@6&dQyz1_}NJS}Dit zER5c(4Y&x}J@P&Sr-P_;;fgR)lqcZiTCf#Mb24xm_k{MYuYwHRO{eRkg}4}5;EIzf ziHU9vGl(J=t|-}`h&x#CaZ*2~YIXdHzTV~SW@br$DVRf`)m8B6%u&F~c*kl_*_@*# z5JHE^mpuZK{F^UoFz)efna2}+)+II-TB_SGBsWOPd=6(C-1UP*p1gzQrMKTgB|Y4I z2zm@lRs2DR^tr{o0wl)Ao1vI7JT9Cnv^Uw^C4qSv)Bi~O!Q;Jsio7@fV{59RG=Mm{ zoHtYpfmq$>hv1LVq}7T=Ci&@SI}CDK{z59;wS|=_jEVU?fH7t{=tQ&xXy|?tl?2zY z(w5Kzknaxf*&jaDcdIrhkX7&n3Uj*0@y5aHvMirP1{LBkBVX3O7f1=+flf}Y{ADtB zN-kyKIP$ox=B$cgGYp9B6y}~U_lUcg{u&~AvceX| z`Ue@zmjL>Du{HlM_!Imo1LtI{1Pt+4V2C|l)MEEcRqr;;AAt^<1^@N(+Se{Fx&H0M z8s)vn2`LAs`>2-INk~Ymx`5kRXi3PJg*tVNVx-pagxlDJ91k-+8`o zvFDk7?@`&GqUn=BwUD5sd~?ppp*5Q<%c-Z^cCss4e&eZbnnkkkiEB7b?vZz=9bWHl z_WNUbVswN~+h9Eh-tvl4CI?Kl8ah)Y55CRds1TzfjHc{@Gi??1{KBmk7+BA-^p_lL z=Sh#NwA@m{Mw?I+CR&Oz>1(PL^Z+Ar;W??cMWbh|_9rCz5=pwkZ0p(Nha-dE*)lw+ zYq>65d8FM}8>~-AThHwo!ab1CIG}h2(3!^}wUz_K@v^CPTa+$ACiG7Mr0)}T&zfQM zLG?al-F6~5SZ4iR4}28Q!-X$vk#cc@G>jjczF~%TwmQ4Z3nh5>@WLfv1e_f*gv2k9 z@0W@fX|RqitroKokvF{g3rmllhy{(AanN?5zzcpkxf5wtHR;oG&no5J<>{*mR5^n% zGn3MR{-q}6KTJ;V5lJFvSQoSL0oPXg2tr(?$HA*U@O8KiabfqyVP_y3f$+F~Z#@A+ zJMy);N%q)&j0m-SguUkP+{@I`(udxCGv&YIV(_Aqw?o5tNoAHFkG**3n7p0zaF~2v z*kcim@4fi{WLe6xsM9NszwAY~-WUN7swD1lpjjE&QGn^=9ozpni9*L*gkfv?GBy!{ zyDm-p(8x+XnueRQf9+WZ*%994c@3B#N)iQ&Rbg$AXy*wTUMBoRh#*lKW0 zZmvNfq=ifQt%+%6{K(7B$Lu=^$S(u)v&qwSm*owwDUy=HD%YB1WzEDw8-PE%!c1Eg zj#%Z9A<5HP->s11O&1NY>vL`rgcaJH3~3Dn0DvCIE9$H(bz(R<3Cdy`3P#e?(=xTD zVl`GqLN1^h5#>10!5 zBFk}IWz_uv0-ztIr!${dnpV&PEWVxEkQV5qecGcK;el{MUjl(xO~9$WST(s!dj)g7 zNXry;CH>z#3!w2dcHEYu%~xDJ017>wrz(pz+D!pw=yX}TcsV+moslD2ftPU)Tsnxn zos_?H8S5nCIZMH~Re0bepUT6b&noBalSZuODwye^niLh&gCtMOE4GNcqYA5z=2@{d zdS7i>p{`_RSyz?{1*X_`a%(CvUTd&)!jp62)84Jm3^bM>nkUI8^%zr=)>mA=tATBK z^amH8nSS9W#bzhdzZzDsH0HD13L9~rdS#tl?20$(^;$ja_j91m+gRVJj^UaLiW4y6 zfTe}k-*r-kL+9RYkH5QRE*Rsi99usfDd5>F!*u@jP{L4g<+UN-dZm9?(;YOcNVIOd zg~HzqFL`qHqObU$6pLGj+$XZ6?D!?+e)tcnjk0?8m2?UO^T~Kzq~86qUXSb1g+B!e zrk6YAkgd8eMwTd)H$>V3t#n{zxNu?brq~-?z~i2ByHUT%g7q<6i(Jcj z8PcQZxia%#^CGatdfAlX4;%-SoA=V}5TpaF$%!ZY7`smIE;5B zDaG;nzBjg=t9GWjdhV#4c3}J_Jl6KfL3158xpwyU1&HkI@w#qfu?d!ezg@afA^Pqm zYs|<>6r*SPazjtZ_lh?!@wVljKE%0-GYxIlc*7SOE%Zb}TFM#F&c%3V=KiIzvATt6 zTUq$}z=YfF8}u~5Z#nbrAgha$)yLsXi#ar=-p$ktfnfvj4M^W5cvIL-#HEH5t) z4-1gyK)%qYOWw8^camr7#li=Dq4?mZ;c*Wq{MZ`K zYP{RdR9DwnUj@tXe+heeI%A)fn+}u2(0_rZO zl%QkUvhmL!VA4U*s)>%uCZrj?3F1$ZWvPbE#>;x9spZ{H_+Bk|zQ3$2y-P>>d)sf9 z>HBF+&MzSoKR3H;6y2WWylX_-W_tiRZOCo)y*srNR!{Ux0zJzT@_URV1v%` zdI^c!wdYLE)uRjTdCN`+P8+fQg(4lo8C!`v%cD#0U=yb(`C=bPzIUu*cr{5jQL;LJ z0vae()YV)KBsE^TyQCF=AOhmfGW}ndNVU;e{}`3H%H$1IqX#QTY^Q3zh2wDyQ+HGz zQ$Ft3li>#q@_02t|5Wfv6tIlN`ak(AmhV%#2VVX}bU~5m@>3JU6}3Ob%#>-ex zYqGS&O{DD*#oS@I6T6z?E}8$XAM<`{^n~vYJT@V$l+Q&dY+A6GYe(=nQJe5PToUX6tgA5YQE9!|7F$(^Lq>Or zu>>8q;#y<=y@p^3)rI2rp?6~EWh_-$jC?rvzIn+g%T}c$6936Ry0K>e)i{4P#ZCSK zntNg?8S?;BscDVng{hs=-yY8q3!6#|$}Dg#Vu#H&P&PVR%$wf9OtV?MFd#2+kBjRw zsRE6nMvW($rY-6$A*Ysdd^waak2oHw>}K)y;*$P~I1+wktNW(^;&CtCsk?5IQm821 zz7HJIj~)lyInq?}^mU}u16HvKqrPjni=6Nuvdh;%Nk^9D5$36t)uRhk#Hp)cS7;R1 z>X)1i+U7Cjpx4yKni=V>nJoF(s(Rt)BzG5`iLY9j#$|FN{s*pzKB zFG@mbnP#c1$iuToQys^@<39MvK9|l8qIOQ-P7ck?`lt=(B|pZJ53@|g`h$esM&T6r zHB?ZZ3zs-4)M0S<3)22((;JH;$+EAS`W}R~JhK2>TE&kjf1cDDK%9>XIehZ*rmThg z##m#_D~8eHEJxnY=mHe~FSr0&Hfyyn)*)0ZP~h!-3+|7CY$J?F#;9&FmPaZed-8`Y zh}hSQ6a|R~rKR8#acotW`Y>Dq+VCu^vGLQ4-5ZA|qOs7b zg0N(GX=_pomC>IMy<<5zbm6L#c9{ASYl*@?mP}=SSagg~_~v`_*`q~&+T_TFkjX>1 z+jdOh&?(%9kfPC17pE@@TiTKGQJ*g9kEHQeEf;yh3tP&Sn%hzYQZSN2TXOZ_*16ju z+M)!IO^t--;BW;=Za}I-Cq-U~Mu{%VZa3etZ*EeY#jeJ(+&Evvr3dVU*)R4zS$^<~>*w4hpfN&JN> zRdAf?#JEG?guXBYtxNijfyKvp|3W< zr$fRh6V_ia9&^Ivw)xIP<23)BFns8B3obvU=|*Iu%q}J5(@lk_7Tg~@FQMG1RKzcL z6aZTml(yicu$xuIM+(m9_Uz z9j=wQbq_O>_%d@ewlYfP3vNqySx-D0M#s2KlGRG0(G}-O#7RLFxB8f`oV$a4B9lHRkgP|8D%9%z_DKewXynlufew;-1~In zaiCy>dlW9>->r@!j5wX&yjK!;MWmcj*zx16;-~0Q)*wUmA6v}`*FUVq!p{8GEj$l) z9z6ABO(!y$h^s#JT5C(l_n*sk=i*P0N_)67Xx}}G;Ey}$hJ6uH%3B{uQ5NU7F>9Wu z)2S!AlS%$;ySd)_J!)Y0CJ8S4Vhm`$l+r=cR-Y7h#;Z0t~}D&gnM)PAQ%?a{F8Cfso;QV%X1Zl~h+Lafw4^in?_-o#K z_-lI@{e8d3&rvcti^iZ16kgmb_!5D^M^k3Ms6-e4SoqFpvL#t&+FvkL6*v10CZmp+ z7@#M)KK>IudQf(T&GRzb*6=J-y{L~*u_?+nNozz0b>`@c`-Pep_n7NQZ8=8><<{a{ zGC15cEhqFq>3g#4oyMO`T7hydk2$txoBhNGlAIIzv||nCM*7}c@lw5zKQ86Ww+Rhq za}a(_EU(B${^pL3x(|m&zZ7BQkpPM6dqX@{i{x9>kr#Y*$>;9DgJ=aT$6=j=IQeO* ze;b6|;X!FVpEcv0-*nG^VSDJ#ZP#V{O!p3b`CIj3k>}?MkFCd?A_)$T73Uz+k+O(>G<*0zWalV* delta 71771 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 - hosted catalog · 41 services · 1029 tools + hosted catalog · 41 services · 1065 tools writes need confirm_write: true diff --git a/docs/self-hosted.md b/docs/self-hosted.md index 240666f..b10069b 100644 --- a/docs/self-hosted.md +++ b/docs/self-hosted.md @@ -4,7 +4,7 @@ Running your own Appwrite instance? Run the MCP server locally over `stdio` and authenticate with a project API key instead of OAuth. The local API-key catalog is intentionally smaller than the hosted OAuth catalog: -it exposes 689 project-key-compatible methods across 27 services. DocumentsDB, +it exposes 720 project-key-compatible methods across 27 services. DocumentsDB, VectorsDB, and text embeddings are available, but console control-plane services such as organizations, domains, projects, billing, migrations, dedicated databases, usage administration, VCS administration, and WAF administration are diff --git a/docs/tool-surface.md b/docs/tool-surface.md index a859887..8dd986d 100644 --- a/docs/tool-surface.md +++ b/docs/tool-surface.md @@ -22,7 +22,7 @@ flowchart LR subgraph CAT[Internal catalog — authentication-aware] direction LR - K[OAuth: 41 services / 1029 tools
API key: 27 services / 689 tools] + K[OAuth: 41 services / 1065 tools
API key: 27 services / 720 tools] end CT -->|large output| R[(MCP resource
preview + URI)] @@ -80,11 +80,11 @@ flowchart LR `context=organization`, or `context=project`. Hosted calls enforce the required top-level `organization_id` or `project_id` before making a request. - **Access** is still gated per-route by the scopes granted to the OAuth token. -- **Hosted OAuth** registers all 41 services and 1029 methods shipped by - `appwrite-console` 0.12.0. This adds console control-plane services including +- **Hosted OAuth** registers all 41 services and 1065 methods shipped by + `appwrite-console` 0.16.0. This adds console control-plane services including projects, organizations, domains, migrations, dedicated databases, usage, VCS, vectors, WAF, notifications, and regions. -- **API-key stdio** deliberately registers only the 689 project-key-compatible +- **API-key stdio** deliberately registers only the 720 project-key-compatible methods across 27 services. It includes the new DocumentsDB, VectorsDB, and text-embeddings APIs, while console administration methods remain hidden. - **Registration** remains SDK-driven, with the authentication profile policy diff --git a/pyproject.toml b/pyproject.toml index df1a822..e9552fa 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -6,7 +6,7 @@ readme = "README.md" requires-python = ">=3.12" dependencies = [ "anyio>=4.0.0", - "appwrite-console>=0.12.0,<0.13", + "appwrite-console>=0.16.0,<0.17", "docstring-parser>=0.16", "mcp[cli]>=2.3,<3", "python-dotenv>=1.0.1", diff --git a/uv.lock b/uv.lock index 9d35e65..0a199bd 100644 --- a/uv.lock +++ b/uv.lock @@ -1,5 +1,5 @@ version = 1 -revision = 5 +revision = 3 requires-python = ">=3.12" resolution-markers = [ "python_full_version >= '3.14'", @@ -39,15 +39,16 @@ wheels = [ [[package]] name = "appwrite-console" -version = "0.12.0" +version = "0.16.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "pydantic" }, { name = "requests" }, + { name = "urllib3" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/ce/f5/4197f42d80391b6cef115fdb528677f79d8a5417369345d98977b1fdfb2e/appwrite_console-0.12.0.tar.gz", hash = "sha256:d6e90c3d38ac626a04a1ca40d787215c739702fdbfb109db33f5ae37a4ec132a", size = 329956, upload-time = "2026-10-12T17:06:36.173Z" } +sdist = { url = "https://files.pythonhosted.org/packages/4f/56/1bcae0f5ffd77632d19693b85b0ae231e770c995804dc2d85ef7b974c2c7/appwrite_console-0.16.0.tar.gz", hash = "sha256:04807fa1403fa2fdcc41fe38fabca6ebc3f50819245763da380645b02e95b5d7", size = 376725, upload-time = "2026-11-12T15:44:58.206Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/b6/ad/bd7eabeab53ff663e5fcb13330c6918ebf6fa6934e9d30ee446e60796850/appwrite_console-0.12.0-py3-none-any.whl", hash = "sha256:c237fdee8f8492ab2e42754a85585f06effae69315efea1746d90c01536d94d9", size = 569953, upload-time = "2026-10-12T17:06:34.356Z" }, + { url = "https://files.pythonhosted.org/packages/09/b5/94005d0c095b652fb193d808a233165915b8128abb1632e8a3f0d2445118/appwrite_console-0.16.0-py3-none-any.whl", hash = "sha256:edd87050757f5ab78efc0a095b99599537c5e890722d0461a5ffe479a2e8d7f6", size = 683918, upload-time = "2026-11-12T15:44:56.626Z" }, ] [[package]] @@ -751,7 +752,7 @@ e2e = [ [package.metadata] requires-dist = [ { name = "anyio", specifier = ">=4.0.0" }, - { name = "appwrite-console", specifier = ">=0.12.0,<0.13" }, + { name = "appwrite-console", specifier = ">=0.16.0,<0.17" }, { name = "argon2-cffi", marker = "extra == 'integration'", specifier = ">=23.1.0" }, { name = "bcrypt", marker = "extra == 'integration'", specifier = ">=4.1.2" }, { name = "cryptography", specifier = ">=44.0.0" }, @@ -1362,7 +1363,7 @@ wheels = [ [[package]] name = "requests" -version = "2.32.3" +version = "2.34.2" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "certifi" }, @@ -1370,9 +1371,9 @@ dependencies = [ { name = "idna" }, { name = "urllib3" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/63/70/2bf7780ad2d390a8d301ad0b550f1581eadbd9a20f896afe06353c2a2913/requests-2.32.3.tar.gz", hash = "sha256:55365417734eb18255590a9ff9eb97e9e1da868d4ccd6402399eaf68af20a760", size = 131218, upload-time = "2024-05-29T15:37:49.536Z" } +sdist = { url = "https://files.pythonhosted.org/packages/ac/c3/e2a2b89f2d3e2179abd6d00ebd70bff6273f37fb3e0cc209f48b39d00cbf/requests-2.34.2.tar.gz", hash = "sha256:f288924cae4e29463698d6d60bc6a4da69c89185ad1e0bcc4104f584e960b9ed", size = 142856, upload-time = "2026-05-14T19:25:27.735Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/f9/9b/335f9764261e915ed497fcdeb11df5dfd6f7bf257d4a6a2a686d80da4d54/requests-2.32.3-py3-none-any.whl", hash = "sha256:70761cfe03c773ceb22aa2f671b4757976145175cdfca038c02654d061d6dcc6", size = 64928, upload-time = "2024-05-29T15:37:47.027Z" }, + { url = "https://files.pythonhosted.org/packages/a0/f4/c67b0b3f1b9245e8d266f0f112c500d50e5b4e83cb6f3b71b6528104182a/requests-2.34.2-py3-none-any.whl", hash = "sha256:2a0d60c172f83ac6ab31e4554906c0f3b3588d37b5cb939b1c061f4907e278e0", size = 73075, upload-time = "2026-05-14T19:25:26.443Z" }, ] [[package]] @@ -1653,11 +1654,11 @@ wheels = [ [[package]] name = "urllib3" -version = "2.3.0" +version = "2.8.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/aa/63/e53da845320b757bf29ef6a9062f5c669fe997973f966045cb019c3f4b66/urllib3-2.3.0.tar.gz", hash = "sha256:f8c5449b3cf0861679ce7e0503c7b44b5ec981bec0d1d3795a07f1ba96f0204d", size = 307268, upload-time = "2024-12-22T07:47:30.032Z" } +sdist = { url = "https://files.pythonhosted.org/packages/e3/05/b17359e1cefb4f909b5e40b1b90a496d987258916dbbf88e842c729f510e/urllib3-2.8.0.tar.gz", hash = "sha256:63bf2ead4c879426ebf22ef2a781eeb4aa3b4ae798a0435506f8687fd5bb9b63", size = 458972, upload-time = "2026-09-15T19:29:36.253Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/c8/19/4ec628951a74043532ca2cf5d97b7b14863931476d117c471e8e2b1eb39f/urllib3-2.3.0-py3-none-any.whl", hash = "sha256:1cee9ad369867bfdbbb48b7dd50374c0967a0bb7710050facf0dd6911440e3df", size = 128369, upload-time = "2024-12-22T07:47:28.074Z" }, + { url = "https://files.pythonhosted.org/packages/92/9d/c4e665119135114480843e7ab388fa94d8480650450e6f8e26b70d323a4c/urllib3-2.8.0-py3-none-any.whl", hash = "sha256:0cf3cae568d36aa9576b28dfb35f11328f1cb974ca7647d9475ebb86c75ac6e3", size = 135717, upload-time = "2026-09-15T19:29:34.577Z" }, ] [[package]] From 7412d955f7ff472e3484b50269c18242a033c334 Mon Sep 17 00:00:00 2001 From: Chirag Aggarwal Date: Thu, 12 Nov 2026 15:51:44 +0000 Subject: [PATCH 3/4] fix: redact secrets from payloads the SDK could not parse A response the SDK fails to hydrate is returned raw, without the model's field types, so secrets in it went through unredacted. Redact it by name: every field name an SDK model marks format: password. --- src/mcp_server_appwrite/redaction.py | 60 ++++++++++++++++++++++++---- src/mcp_server_appwrite/server.py | 7 +++- tests/unit/test_server.py | 10 ++++- 3 files changed, 66 insertions(+), 11 deletions(-) diff --git a/src/mcp_server_appwrite/redaction.py b/src/mcp_server_appwrite/redaction.py index 289eac7..4c35901 100644 --- a/src/mcp_server_appwrite/redaction.py +++ b/src/mcp_server_appwrite/redaction.py @@ -13,13 +13,17 @@ tell which secret it got and check a stored copy against it. Empty values are kept: they only say a secret is unset, or that Appwrite already hid it. -Only typed results are redacted. A ``select`` query returns its rows untyped, -and those carry the caller's own data, not Appwrite's secrets. +A payload the SDK could not hydrate into its model has no field types to go +by, so it is redacted by name: every field name some SDK model marks secret. +Rows from a ``select`` query are not redacted at all: they are the caller's own +data, not Appwrite's secrets, and a column may share a secret field's name. """ import hashlib +from functools import cache from typing import Any +import appwrite_console.models from pydantic import BaseModel from pydantic.fields import FieldInfo @@ -36,6 +40,13 @@ def redact(result: Any) -> tuple[Any, list[str]]: return _clean(result, fields), sorted(fields) +def redact_payload(payload: Any) -> tuple[Any, list[str]]: + """A raw response payload with every field named like a secret field + redacted, and the names that were, sorted.""" + fields: set[str] = set() + return _clean_payload(payload, fields), sorted(fields) + + def fingerprint(value: str) -> str: """A short SHA-256 of a secret: enough to tell secrets apart, not to recover one.""" return "sha256:" + hashlib.sha256(value.encode()).hexdigest()[:12] @@ -69,12 +80,7 @@ def _clean_model(model: BaseModel, fields: set[str]) -> dict[str, Any]: if key not in data: continue if _secret(field): - if data[key] in ("", [], None): - continue - fields.add(key) - if isinstance(data[key], str): - data[f"{key}Fingerprint"] = fingerprint(data[key]) - data[key] = REDACTED + _mask(data, key, fields) continue item = getattr(model, name) if _holds_model(item): @@ -82,6 +88,44 @@ def _clean_model(model: BaseModel, fields: set[str]) -> dict[str, Any]: return data +def _clean_payload(value: Any, fields: set[str]) -> Any: + if isinstance(value, list): + return [_clean_payload(item, fields) for item in value] + if not isinstance(value, dict): + return value + data = dict(value) + for key, item in value.items(): + if key in _secret_names(): + _mask(data, key, fields) + else: + data[key] = _clean_payload(item, fields) + return data + + +def _mask(data: dict[str, Any], key: str, fields: set[str]) -> None: + """Replace a secret value in place. Empty values stay: they only say the + secret is unset, or that Appwrite already hid it.""" + value = data[key] + if value in ("", [], None): + return + fields.add(key) + if isinstance(value, str): + data[f"{key}Fingerprint"] = fingerprint(value) + data[key] = REDACTED + + +@cache +def _secret_names() -> frozenset[str]: + """Every field name an SDK model marks secret.""" + names: set[str] = set() + for model in vars(appwrite_console.models).values(): + if isinstance(model, type) and issubclass(model, BaseModel): + for name, field in model.model_fields.items(): + if _secret(field): + names.add(field.alias or name) + return frozenset(names) + + def _secret(field: FieldInfo) -> bool: extra = field.json_schema_extra return isinstance(extra, dict) and extra.get("format") == SECRET_FORMAT diff --git a/src/mcp_server_appwrite/server.py b/src/mcp_server_appwrite/server.py index 7640839..52af5eb 100644 --- a/src/mcp_server_appwrite/server.py +++ b/src/mcp_server_appwrite/server.py @@ -83,7 +83,7 @@ from .headers import environment, scoped, set_environment from .instructions import build_instructions, load_description from .operator import Operator, ToolOutput, _parse_tool_name -from .redaction import note, redact +from .redaction import note, redact, redact_payload from .service import Service from .tool_manager import ToolManager @@ -1349,11 +1349,14 @@ def _format_response_parse_error(tool_name: str | None, response: Any = None) -> completed mutation. """ if response is not None: - return ( + # Untyped, so secrets are redacted by name rather than by model. + response, redacted = redact_payload(response) + message = ( "Appwrite accepted the request and it succeeded; the SDK could not " "deserialize the response into its model, so the raw payload " f"follows. Do not retry.\n{_serialize_result(response)}" ) + return f"{message}\n{note(redacted)}" if redacted else message verify = ( f" Verify with the matching get or list tool for {tool_name} before retrying." diff --git a/tests/unit/test_server.py b/tests/unit/test_server.py index 5e8fac9..322b6c7 100644 --- a/tests/unit/test_server.py +++ b/tests/unit/test_server.py @@ -876,7 +876,11 @@ def test_format_tool_result_keeps_nested_row_columns(self): def test_format_appwrite_error_returns_the_unhydrated_payload(self): exc = AppwriteException( "Unable to parse response into Project: 1 validation error", - response={"$id": "proj-1", "name": "New Project"}, + response={ + "$id": "proj-1", + "name": "New Project", + "keys": [{"$id": "key-1", "secret": "standard_0123456789abcdef"}], + }, ) message = _format_appwrite_error(exc, tool_name="projects_create") @@ -887,6 +891,10 @@ def test_format_appwrite_error_returns_the_unhydrated_payload(self): self.assertIn("Do not retry", message) self.assertIn('"$id": "proj-1"', message) self.assertNotIn("validation error", message) + # With no model to go by, secrets are still redacted, by field name. + self.assertNotIn("standard_0123456789abcdef", message) + self.assertIn('"secret": "[redacted]"', message) + self.assertIn("Secrets redacted from this result: secret.", message) def test_format_appwrite_error_does_not_report_parse_failure_as_failure(self): exc = AppwriteException( From 386177d7672a709ba585d3c77c3e43ee5ecdd39d Mon Sep 17 00:00:00 2001 From: Chirag Aggarwal Date: Thu, 12 Nov 2026 15:55:03 +0000 Subject: [PATCH 4/4] fix: honour reveal_secrets when the SDK cannot parse a response A create or rotate whose response the SDK fails to hydrate returns the raw payload, and redacting it regardless of reveal_secrets could leave a one-time secret unrecoverable. --- src/mcp_server_appwrite/server.py | 18 +++++++++++++----- tests/unit/test_server.py | 5 +++++ 2 files changed, 18 insertions(+), 5 deletions(-) diff --git a/src/mcp_server_appwrite/server.py b/src/mcp_server_appwrite/server.py index 52af5eb..a9af7d4 100644 --- a/src/mcp_server_appwrite/server.py +++ b/src/mcp_server_appwrite/server.py @@ -1190,7 +1190,9 @@ def execute_registered_tool( organization_id=organization_id, environment_id=environment_id, ) - raise RuntimeError(_format_appwrite_error(exc, tool_name=name)) from exc + raise RuntimeError( + _format_appwrite_error(exc, tool_name=name, reveal=reveal) + ) from exc except Exception as exc: error_monitoring.capture_exception( exc, @@ -1315,9 +1317,13 @@ def _format_tool_result( return [types.TextContent(type="text", text=str(result))] -def _format_appwrite_error(exc: AppwriteException, tool_name: str | None = None) -> str: +def _format_appwrite_error( + exc: AppwriteException, tool_name: str | None = None, reveal: bool = False +) -> str: if is_response_parse_error(exc): - return _format_response_parse_error(tool_name, _parse_error_response(exc)) + return _format_response_parse_error( + tool_name, _parse_error_response(exc), reveal + ) details = [] if getattr(exc, "code", None): @@ -1340,7 +1346,9 @@ def _parse_error_response(exc: BaseException) -> Any: return None -def _format_response_parse_error(tool_name: str | None, response: Any = None) -> str: +def _format_response_parse_error( + tool_name: str | None, response: Any = None, reveal: bool = False +) -> str: """Explain an SDK deserialization failure without implying the write failed. ``Service._parse_response`` raises this after Appwrite has already accepted @@ -1350,7 +1358,7 @@ def _format_response_parse_error(tool_name: str | None, response: Any = None) -> """ if response is not None: # Untyped, so secrets are redacted by name rather than by model. - response, redacted = redact_payload(response) + response, redacted = (response, []) if reveal else redact_payload(response) message = ( "Appwrite accepted the request and it succeeded; the SDK could not " "deserialize the response into its model, so the raw payload " diff --git a/tests/unit/test_server.py b/tests/unit/test_server.py index 322b6c7..6e993f6 100644 --- a/tests/unit/test_server.py +++ b/tests/unit/test_server.py @@ -896,6 +896,11 @@ def test_format_appwrite_error_returns_the_unhydrated_payload(self): self.assertIn('"secret": "[redacted]"', message) self.assertIn("Secrets redacted from this result: secret.", message) + # Asked for, a one-time secret is not lost to a parse failure. + revealed = _format_appwrite_error(exc, tool_name="projects_create", reveal=True) + self.assertIn("standard_0123456789abcdef", revealed) + self.assertNotIn("Secrets redacted", revealed) + def test_format_appwrite_error_does_not_report_parse_failure_as_failure(self): exc = AppwriteException( "Unable to parse response into Project: 1 validation error for Project"