{"servers":[{"server":{"name":"io.github.mcpsmiths/cost-guard-mcp","$schema":"https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json","version":"0.1.0","packages":[{"version":"0.1.0","transport":{"type":"stdio"},"identifier":"cost-guard-mcp","registryType":"pypi"}],"repository":{"url":"https://github.com/mcpsmiths/cost-guard-mcp","source":"github"},"description":"Pre-flight query cost & result-size guardrails for AI agents across BigQuery and Snowflake"},"_meta":{"io.modelcontextprotocol.registry/official":{"status":"active","isLatest":false,"updatedAt":"2026-09-12T22:25:08.778875Z","publishedAt":"2026-09-12T22:25:08.778875Z","statusChangedAt":"2026-09-12T22:25:08.778875Z"},"dev.protogrid/connectability":{"class":"L0","autonomous":false,"human_steps":["run_local_package"],"preferred":{"kind":"package","idx":0},"remotes":[],"packages":[{"idx":0,"registry_type":"pypi","identifier":"cost-guard-mcp","version":"0.5.0","runtime_hint":null,"transport":"stdio","secrets":["GOOGLE_APPLICATION_CREDENTIALS","SNOWFLAKE_PRIVATE_KEY_PATH","SNOWFLAKE_PRIVATE_KEY_PASSPHRASE","SNOWFLAKE_PASSWORD","DATABRICKS_TOKEN","DATABRICKS_CLIENT_SECRET"],"requires_execution":true}]},"dev.protogrid/trust":{"score":91,"components":{"hygiene":100,"liveness":null,"freshness":100,"provenance":80},"drivers":["+repository","+namespace-matches-repo","~liveness-unmeasured","+updated-4d-ago"],"flags":[],"blocked":false,"computed_at":"2026-10-19T15:46:33.170Z","disclaimer":"Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed."}}},{"server":{"name":"io.github.mcpsmiths/cost-guard-mcp","$schema":"https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json","version":"0.1.1","packages":[{"version":"0.1.1","transport":{"type":"stdio"},"identifier":"cost-guard-mcp","registryType":"pypi"}],"repository":{"url":"https://github.com/mcpsmiths/cost-guard-mcp","source":"github"},"description":"Pre-flight query cost and result-size guardrails for AI agents on BigQuery, Snowflake, Databricks"},"_meta":{"io.modelcontextprotocol.registry/official":{"status":"active","isLatest":false,"updatedAt":"2026-09-14T12:27:41.396665Z","publishedAt":"2026-09-14T12:27:41.396665Z","statusChangedAt":"2026-09-14T12:27:41.396665Z"},"dev.protogrid/connectability":{"class":"L0","autonomous":false,"human_steps":["run_local_package"],"preferred":{"kind":"package","idx":0},"remotes":[],"packages":[{"idx":0,"registry_type":"pypi","identifier":"cost-guard-mcp","version":"0.5.0","runtime_hint":null,"transport":"stdio","secrets":["GOOGLE_APPLICATION_CREDENTIALS","SNOWFLAKE_PRIVATE_KEY_PATH","SNOWFLAKE_PRIVATE_KEY_PASSPHRASE","SNOWFLAKE_PASSWORD","DATABRICKS_TOKEN","DATABRICKS_CLIENT_SECRET"],"requires_execution":true}]},"dev.protogrid/trust":{"score":91,"components":{"hygiene":100,"liveness":null,"freshness":100,"provenance":80},"drivers":["+repository","+namespace-matches-repo","~liveness-unmeasured","+updated-4d-ago"],"flags":[],"blocked":false,"computed_at":"2026-10-19T15:46:33.170Z","disclaimer":"Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed."}}},{"server":{"name":"io.github.mcpsmiths/cost-guard-mcp","$schema":"https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json","version":"0.2.0","packages":[{"version":"0.2.0","transport":{"type":"stdio"},"identifier":"cost-guard-mcp","registryType":"pypi"}],"repository":{"url":"https://github.com/mcpsmiths/cost-guard-mcp","source":"github"},"description":"Pre-flight query cost and result-size guardrails for AI agents on BigQuery, Snowflake, Databricks"},"_meta":{"io.modelcontextprotocol.registry/official":{"status":"active","isLatest":true,"updatedAt":"2026-09-17T17:27:11.431579Z","publishedAt":"2026-09-17T17:27:11.431579Z","statusChangedAt":"2026-09-17T17:27:11.431579Z"},"dev.protogrid/connectability":{"class":"L0","autonomous":false,"human_steps":["run_local_package"],"preferred":{"kind":"package","idx":0},"remotes":[],"packages":[{"idx":0,"registry_type":"pypi","identifier":"cost-guard-mcp","version":"0.5.0","runtime_hint":null,"transport":"stdio","secrets":["GOOGLE_APPLICATION_CREDENTIALS","SNOWFLAKE_PRIVATE_KEY_PATH","SNOWFLAKE_PRIVATE_KEY_PASSPHRASE","SNOWFLAKE_PASSWORD","DATABRICKS_TOKEN","DATABRICKS_CLIENT_SECRET"],"requires_execution":true}]},"dev.protogrid/trust":{"score":91,"components":{"hygiene":100,"liveness":null,"freshness":100,"provenance":80},"drivers":["+repository","+namespace-matches-repo","~liveness-unmeasured","+updated-4d-ago"],"flags":[],"blocked":false,"computed_at":"2026-10-19T15:46:33.170Z","disclaimer":"Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed."}}},{"server":{"name":"io.github.mcpsmiths/cost-guard-mcp","title":"Cost Guard MCP","$schema":"https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json","version":"0.3.0","packages":[{"version":"0.3.0","transport":{"type":"stdio"},"identifier":"cost-guard-mcp","registryType":"pypi","environmentVariables":[{"name":"GOOGLE_APPLICATION_CREDENTIALS","isSecret":true,"description":"BigQuery: path to a service-account key file (Application Default Credentials). Required to use the bigquery engine."},{"name":"SNOWFLAKE_ACCOUNT","description":"Snowflake: account identifier. Required to use the snowflake engine."},{"name":"SNOWFLAKE_USER","description":"Snowflake: username. Required to use the snowflake engine."},{"name":"SNOWFLAKE_ROLE","description":"Snowflake: role to assume. Required to use the snowflake engine; has no default and must never be ACCOUNTADMIN."},{"name":"SNOWFLAKE_PRIVATE_KEY_PATH","isSecret":true,"description":"Snowflake: path to an RSA private key file for key-pair auth (preferred over SNOWFLAKE_PASSWORD). Either this or SNOWFLAKE_PASSWORD is required to use the snowflake engine."},{"name":"SNOWFLAKE_PRIVATE_KEY_PASSPHRASE","isSecret":true,"description":"Snowflake: passphrase for an encrypted SNOWFLAKE_PRIVATE_KEY_PATH key file, if the key is encrypted."},{"name":"SNOWFLAKE_PASSWORD","isSecret":true,"description":"Snowflake: password (discouraged; prefer SNOWFLAKE_PRIVATE_KEY_PATH). Either this or SNOWFLAKE_PRIVATE_KEY_PATH is required to use the snowflake engine."},{"name":"DATABRICKS_SERVER_HOSTNAME","description":"Databricks: SQL warehouse server hostname (e.g. my-workspace.cloud.databricks.com, no scheme, no trailing slash). Required to use the databricks engine."},{"name":"DATABRICKS_HTTP_PATH","description":"Databricks: SQL warehouse HTTP path (from the warehouse's Connection Details tab, e.g. /sql/1.0/warehouses/<warehouse-id>). Required to use the databricks engine."},{"name":"DATABRICKS_TOKEN","isSecret":true,"description":"Databricks: personal access token (simplest auth option). Either this or DATABRICKS_CLIENT_ID + DATABRICKS_CLIENT_SECRET is required to use the databricks engine."},{"name":"DATABRICKS_CLIENT_ID","description":"Databricks: OAuth machine-to-machine service-principal client ID (preferred for automated use). Requires DATABRICKS_CLIENT_SECRET as well."},{"name":"DATABRICKS_CLIENT_SECRET","isSecret":true,"description":"Databricks: OAuth machine-to-machine service-principal client secret. Requires DATABRICKS_CLIENT_ID as well."}]}],"repository":{"url":"https://github.com/mcpsmiths/cost-guard-mcp","source":"github"},"description":"Pre-flight query cost and result-size guardrails for AI agents on BigQuery, Snowflake, Databricks"},"_meta":{"io.modelcontextprotocol.registry/official":{"status":"active","isLatest":true,"updatedAt":"2026-09-18T11:30:49.530452Z","publishedAt":"2026-09-18T11:30:49.530452Z","statusChangedAt":"2026-09-18T11:30:49.530452Z"},"dev.protogrid/connectability":{"class":"L0","autonomous":false,"human_steps":["run_local_package"],"preferred":{"kind":"package","idx":0},"remotes":[],"packages":[{"idx":0,"registry_type":"pypi","identifier":"cost-guard-mcp","version":"0.5.0","runtime_hint":null,"transport":"stdio","secrets":["GOOGLE_APPLICATION_CREDENTIALS","SNOWFLAKE_PRIVATE_KEY_PATH","SNOWFLAKE_PRIVATE_KEY_PASSPHRASE","SNOWFLAKE_PASSWORD","DATABRICKS_TOKEN","DATABRICKS_CLIENT_SECRET"],"requires_execution":true}]},"dev.protogrid/trust":{"score":91,"components":{"hygiene":100,"liveness":null,"freshness":100,"provenance":80},"drivers":["+repository","+namespace-matches-repo","~liveness-unmeasured","+updated-4d-ago"],"flags":[],"blocked":false,"computed_at":"2026-10-19T15:46:33.170Z","disclaimer":"Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed."}}},{"server":{"name":"io.github.mcpsmiths/cost-guard-mcp","title":"Cost Guard MCP","$schema":"https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json","version":"0.3.2","packages":[{"version":"0.3.2","transport":{"type":"stdio"},"identifier":"cost-guard-mcp","registryType":"pypi","environmentVariables":[{"name":"GOOGLE_APPLICATION_CREDENTIALS","isSecret":true,"description":"BigQuery: path to a service-account key file (Application Default Credentials). Required to use the bigquery engine."},{"name":"SNOWFLAKE_ACCOUNT","description":"Snowflake: account identifier. Required to use the snowflake engine."},{"name":"SNOWFLAKE_USER","description":"Snowflake: username. Required to use the snowflake engine."},{"name":"SNOWFLAKE_ROLE","description":"Snowflake: role to assume. Required to use the snowflake engine; has no default and must never be ACCOUNTADMIN."},{"name":"SNOWFLAKE_PRIVATE_KEY_PATH","isSecret":true,"description":"Snowflake: path to an RSA private key file for key-pair auth (preferred over SNOWFLAKE_PASSWORD). Either this or SNOWFLAKE_PASSWORD is required to use the snowflake engine."},{"name":"SNOWFLAKE_PRIVATE_KEY_PASSPHRASE","isSecret":true,"description":"Snowflake: passphrase for an encrypted SNOWFLAKE_PRIVATE_KEY_PATH key file, if the key is encrypted."},{"name":"SNOWFLAKE_PASSWORD","isSecret":true,"description":"Snowflake: password (discouraged; prefer SNOWFLAKE_PRIVATE_KEY_PATH). Either this or SNOWFLAKE_PRIVATE_KEY_PATH is required to use the snowflake engine."},{"name":"DATABRICKS_SERVER_HOSTNAME","description":"Databricks: SQL warehouse server hostname (e.g. my-workspace.cloud.databricks.com, no scheme, no trailing slash). Required to use the databricks engine."},{"name":"DATABRICKS_HTTP_PATH","description":"Databricks: SQL warehouse HTTP path (from the warehouse's Connection Details tab, e.g. /sql/1.0/warehouses/<warehouse-id>). Required to use the databricks engine."},{"name":"DATABRICKS_TOKEN","isSecret":true,"description":"Databricks: personal access token (simplest auth option). Either this or DATABRICKS_CLIENT_ID + DATABRICKS_CLIENT_SECRET is required to use the databricks engine."},{"name":"DATABRICKS_CLIENT_ID","description":"Databricks: OAuth machine-to-machine service-principal client ID (preferred for automated use). Requires DATABRICKS_CLIENT_SECRET as well."},{"name":"DATABRICKS_CLIENT_SECRET","isSecret":true,"description":"Databricks: OAuth machine-to-machine service-principal client secret. Requires DATABRICKS_CLIENT_ID as well."}]}],"repository":{"url":"https://github.com/mcpsmiths/cost-guard-mcp","source":"github"},"description":"Pre-flight query cost and result-size guardrails for AI agents on BigQuery, Snowflake, Databricks"},"_meta":{"io.modelcontextprotocol.registry/official":{"status":"active","isLatest":true,"updatedAt":"2026-09-28T11:38:05.233048Z","publishedAt":"2026-09-28T11:38:05.233048Z","statusChangedAt":"2026-09-28T11:38:05.233048Z"},"dev.protogrid/connectability":{"class":"L0","autonomous":false,"human_steps":["run_local_package"],"preferred":{"kind":"package","idx":0},"remotes":[],"packages":[{"idx":0,"registry_type":"pypi","identifier":"cost-guard-mcp","version":"0.5.0","runtime_hint":null,"transport":"stdio","secrets":["GOOGLE_APPLICATION_CREDENTIALS","SNOWFLAKE_PRIVATE_KEY_PATH","SNOWFLAKE_PRIVATE_KEY_PASSPHRASE","SNOWFLAKE_PASSWORD","DATABRICKS_TOKEN","DATABRICKS_CLIENT_SECRET"],"requires_execution":true}]},"dev.protogrid/trust":{"score":91,"components":{"hygiene":100,"liveness":null,"freshness":100,"provenance":80},"drivers":["+repository","+namespace-matches-repo","~liveness-unmeasured","+updated-4d-ago"],"flags":[],"blocked":false,"computed_at":"2026-10-19T15:46:33.170Z","disclaimer":"Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed."}}},{"server":{"name":"io.github.mcpsmiths/cost-guard-mcp","title":"Cost Guard MCP","$schema":"https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json","version":"0.5.0","packages":[{"version":"0.5.0","transport":{"type":"stdio"},"identifier":"cost-guard-mcp","registryType":"pypi","environmentVariables":[{"name":"GOOGLE_APPLICATION_CREDENTIALS","isSecret":true,"description":"BigQuery: path to a service-account key file (Application Default Credentials). Required to use the bigquery engine."},{"name":"SNOWFLAKE_ACCOUNT","description":"Snowflake: account identifier. Required to use the snowflake engine."},{"name":"SNOWFLAKE_USER","description":"Snowflake: username. Required to use the snowflake engine."},{"name":"SNOWFLAKE_ROLE","description":"Snowflake: role to assume. Required to use the snowflake engine; has no default and must never be ACCOUNTADMIN (ACCOUNTADMIN, SECURITYADMIN and ORGADMIN are rejected before any Snowflake connection is opened - the check runs when the Snowflake configuration is first loaded, on the first Snowflake tool call; the server process itself starts regardless, so a bad role surfaces as a failed check_credentials or a tool error, not as a startup exit)."},{"name":"SNOWFLAKE_SECONDARY_ROLES","description":"Snowflake: secondary roles activated at login. NONE (default) means only SNOWFLAKE_ROLE is active in the session; ALL is the explicit opt-out that activates every role granted to SNOWFLAKE_USER."},{"name":"SNOWFLAKE_PRIVATE_KEY_PATH","isSecret":true,"description":"Snowflake: path to an RSA private key file for key-pair auth (preferred over SNOWFLAKE_PASSWORD). Either this or SNOWFLAKE_PASSWORD is required to use the snowflake engine."},{"name":"SNOWFLAKE_PRIVATE_KEY_PASSPHRASE","isSecret":true,"description":"Snowflake: passphrase for an encrypted SNOWFLAKE_PRIVATE_KEY_PATH key file, if the key is encrypted."},{"name":"SNOWFLAKE_PASSWORD","isSecret":true,"description":"Snowflake: password (discouraged; prefer SNOWFLAKE_PRIVATE_KEY_PATH). Either this or SNOWFLAKE_PRIVATE_KEY_PATH is required to use the snowflake engine."},{"name":"SNOWFLAKE_EDITION","description":"Snowflake: account edition that sets the USD/credit price of estimates - standard (default), enterprise, business_critical or vps. The per-call edition argument can only raise it."},{"name":"DATABRICKS_SERVER_HOSTNAME","description":"Databricks: SQL warehouse server hostname (e.g. my-workspace.cloud.databricks.com, no scheme, no trailing slash). Required to use the databricks engine."},{"name":"DATABRICKS_HTTP_PATH","description":"Databricks: SQL warehouse HTTP path (from the warehouse's Connection Details tab, e.g. /sql/1.0/warehouses/<warehouse-id>). Required to use the databricks engine."},{"name":"DATABRICKS_TOKEN","isSecret":true,"description":"Databricks: personal access token (simplest auth option). Either this or DATABRICKS_CLIENT_ID + DATABRICKS_CLIENT_SECRET is required to use the databricks engine."},{"name":"DATABRICKS_CLIENT_ID","description":"Databricks: OAuth machine-to-machine service-principal client ID (preferred for automated use). Requires DATABRICKS_CLIENT_SECRET as well."},{"name":"DATABRICKS_CLIENT_SECRET","isSecret":true,"description":"Databricks: OAuth machine-to-machine service-principal client secret. Requires DATABRICKS_CLIENT_ID as well."},{"name":"COST_GUARD_ALLOW_MULTI_STATEMENT_SQL","description":"Set to 1 to let estimate_query_cost/run_query_bounded accept text containing more than one SQL statement. Off by default: the cost cap is only known to cover the single statement the dry run/EXPLAIN priced. Skips only this server's scanner: Snowflake still rejects multi-statement text (sessions are pinned to MULTI_STATEMENT_COUNT=1), and max_rows wraps the whole text in one LIMIT subquery, so use the opt-out without max_rows."},{"name":"COST_GUARD_ALLOW_WRITE_STATEMENTS","description":"Set to 1 (exactly that value) to let estimate_query_cost/run_query_bounded accept statements that are not reads. Off by default: only text whose first keyword (after comments and opening parentheses) is SELECT, WITH, VALUES, SHOW, DESCRIBE, DESC or EXPLAIN is estimated or run - a WITH must be followed by a SELECT or VALUES - because warehouse rows re-enter the model's context and can steer the next call. The gate is defence in depth: the authorisation boundary is the credential's grants (deploy a read-only principal). With COST_GUARD_ALLOW_MULTI_STATEMENT_SQL=1 every statement in the text must be a read, so BigQuery scripts (DECLARE/SET/BEGIN) need both opt-outs. Any other value leaves the gate on."},{"name":"COST_GUARD_MAX_IN_FLIGHT_QUERIES","description":"Maximum number of run_query_bounded calls allowed in flight at once (positive integer, default 8). A cancelled call keeps its slot until its warehouse query completes or the 120 s watchdog fires; a call over the cap fails with a tool error naming this variable before any warehouse connection is opened."},{"name":"COST_GUARD_DATABRICKS_ALLOW_WAREHOUSE_START","description":"Set to true (exactly that value) to let the read-only Databricks tools (check_credentials, estimate_query_cost) open a session on a SQL warehouse that is not RUNNING, which starts the warehouse and bills compute until it auto-stops. Off by default: the server first reads the warehouse's state through the Warehouses API (GET /api/2.0/sql/warehouses/<id>, CAN_VIEW/CAN_USE suffices) and, unless it is RUNNING - also when the state cannot be read - check_credentials returns ok=false and estimate_query_cost returns no byte or dollar figure, without opening a session. run_query_bounded is not gated: its own pre-execution estimate and the execution may start the warehouse. Any other value leaves the guard on."},{"name":"COST_GUARD_SNOWFLAKE_ALLOW_WAREHOUSE_RESUME","description":"Set to true (exactly that value) to let the read-only Snowflake tools run SELECT CURRENT_REGION(), the INFORMATION_SCHEMA.QUERY_HISTORY read and check_credentials' session-context SELECT on a warehouse that is not STARTED, which can resume a suspended AUTO_RESUME warehouse and bill compute until it auto-suspends. Off by default: those statements are skipped unless the pinned warehouse's SHOW WAREHOUSES state is STARTED (also skipped when no warehouse is pinned or the state cannot be read), and the QUERY_HISTORY read is skipped whenever estimate_query_cost is called without a warehouse argument; estimate_query_cost then prices at Gen1 rates with the byte-tier heuristic and says so in a caveat, and check_credentials returns ok=true with a detail built from the SHOW WAREHOUSES row. USE WAREHOUSE, EXPLAIN USING JSON, SHOW WAREHOUSES and SELECT CURRENT_WAREHOUSE() always run; run_query_bounded is not gated. Any other value leaves the guard on."}]}],"repository":{"url":"https://github.com/mcpsmiths/cost-guard-mcp","source":"github"},"description":"Pre-flight query cost and result-size guardrails for AI agents on BigQuery, Snowflake, Databricks"},"_meta":{"io.modelcontextprotocol.registry/official":{"status":"active","isLatest":true,"updatedAt":"2026-10-15T17:10:07.37051Z","publishedAt":"2026-10-15T17:10:07.37051Z","statusChangedAt":"2026-10-15T17:10:07.37051Z"},"dev.protogrid/connectability":{"class":"L0","autonomous":false,"human_steps":["run_local_package"],"preferred":{"kind":"package","idx":0},"remotes":[],"packages":[{"idx":0,"registry_type":"pypi","identifier":"cost-guard-mcp","version":"0.5.0","runtime_hint":null,"transport":"stdio","secrets":["GOOGLE_APPLICATION_CREDENTIALS","SNOWFLAKE_PRIVATE_KEY_PATH","SNOWFLAKE_PRIVATE_KEY_PASSPHRASE","SNOWFLAKE_PASSWORD","DATABRICKS_TOKEN","DATABRICKS_CLIENT_SECRET"],"requires_execution":true}]},"dev.protogrid/trust":{"score":91,"components":{"hygiene":100,"liveness":null,"freshness":100,"provenance":80},"drivers":["+repository","+namespace-matches-repo","~liveness-unmeasured","+updated-4d-ago"],"flags":[],"blocked":false,"computed_at":"2026-10-19T15:46:33.170Z","disclaimer":"Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed."}}}],"metadata":{"count":6}}