{"grant":{"projectId":null,"scopes":null},"readOnly":true,"notices":["Notice: The MCP server is currently configured with read-only permissions. All write-access tools have been removed. Neon resources stay read-only: the remaining tools only read them (for example, read-only SQL queries). The user can still send feedback to Neon with send_feedback. Do not try to work around this restriction; it is intentional. If the user requests changes to Neon resources, inform them about the read-only configuration. Connection strings are unavailable in this mode because they carry a privileged role password; if the user needs a DATABASE_URL, tell them to copy it from https://console.neon.tech. The user can remove read-only mode by removing the readonly query param from the MCP server URL, then authorizing again when using OAuth.","Notice: For tools with `project_id`, always pass it on an unscoped connection, even though the published schema marks it optional. A connection scoped to one project supplies it automatically when omitted; an explicit value must match the granted project. A project-scoped connection also hides project management tools such as list_projects and create_project. To change project scope, change or remove the projectId query param in the MCP server URL and reconnect. With OAuth, the project is fixed when the connection is authorized: log out and authorize again, and choose \"All projects you can access\" on the consent page to remove scoping."],"tools":[{"name":"list_organizations","title":"List Organizations","scope":"projects","readOnlySafe":true,"description":"List all organizations the current user belongs to. Supports optional `search` parameter to filter by name or ID.","inputSchema":{"type":"object","properties":{"search":{"type":"string","description":"Search organizations by name or ID. You can specify partial name or ID values to filter results."}},"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"run_sql","title":"Run SQL","scope":"querying","readOnlySafe":true,"description":"Execute one SQL statement on a Neon database. If a prior step created a temporary branch, pass that branch_id. NEVER run destructive SQL autonomously; always ask the user first.","inputSchema":{"type":"object","properties":{"sql":{"type":"string","description":"The SQL query to execute"},"project_id":{"type":"string","description":"The ID of the project to execute the query against. Required for an unscoped connection. May be omitted when the connection is scoped to one project; if provided, it must match that project."},"branch_id":{"type":"string","description":"An optional ID of the branch to execute the query against. If not provided the default branch is used."},"database_name":{"type":"string","description":"The name of the database. If not provided, the default neondb or first available database is used."},"role_name":{"type":"string","description":"An optional Postgres role to log in as. The server resolves its credentials internally and never returns them. If not provided, the database owner is used. On a connection pinned to a role, omit this or pass that role."},"compute_id":{"type":"string","description":"An optional ID of the compute/endpoint to run on. If not provided, the read-write compute of the branch is used."}},"required":["sql"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"describe_table_schema","title":"Describe Table Schema","scope":"schema","readOnlySafe":true,"description":"Get column definitions, data types, and constraints for a specific table. Do not use when you need all tables in a database (use `get_database_tables` instead).","inputSchema":{"type":"object","properties":{"table_name":{"type":"string","description":"The table name, optionally schema-qualified (for example, crm.contacts)"},"project_id":{"type":"string","description":"The ID of the project to execute the query against. Required for an unscoped connection. May be omitted when the connection is scoped to one project; if provided, it must match that project."},"branch_id":{"type":"string","description":"An optional ID of the branch to execute the query against. If not provided the default branch is used."},"database_name":{"type":"string","description":"The name of the database. If not provided, the default neondb or first available database is used."}},"required":["table_name"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"get_database_tables","title":"Get Database Tables","scope":"schema","readOnlySafe":true,"description":"List all tables in a Neon database. Do not use when you need column-level detail for a specific table (use `describe_table_schema` instead).","inputSchema":{"type":"object","properties":{"project_id":{"type":"string","description":"The ID of the project. Required for an unscoped connection. May be omitted when the connection is scoped to one project; if provided, it must match that project."},"branch_id":{"type":"string","description":"An optional ID of the branch. If not provided the default branch is used."},"database_name":{"type":"string","description":"The name of the database. If not provided, the default neondb or first available database is used."}},"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"describe_branch","title":"Describe Branch","scope":"branches","readOnlySafe":true,"description":"Get a tree view of all objects in a branch, including databases, schemas, tables, views, and functions. Do not use when you only need table names (use `get_database_tables` instead) or column detail (use `describe_table_schema` instead).","inputSchema":{"type":"object","properties":{"project_id":{"type":"string","description":"The ID of the project. Required for an unscoped connection. May be omitted when the connection is scoped to one project; if provided, it must match that project."},"branch_id":{"type":"string","description":"An ID of the branch to describe"},"database_name":{"type":"string","description":"The name of the database. If not provided, the default neondb or first available database is used."}},"required":["branch_id"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"get_neon_auth_config","title":"Get Neon Auth configuration","scope":"neon_auth","readOnlySafe":true,"description":"Read Neon Auth config for a branch with OAuth and SMTP secrets redacted as \"***redacted***\". Requires provision_neon_auth first.","inputSchema":{"type":"object","properties":{"project_id":{"type":"string","description":"Neon project ID. Required for an unscoped connection. May be omitted when the connection is scoped to one project; if provided, it must match that project."},"branch_id":{"type":"string","description":"Branch ID. If omitted, the project default branch is used (same as provision_neon_auth)."}},"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"explain_sql_statement","title":"Explain SQL Statement","scope":"querying","readOnlySafe":true,"description":"Generate the execution plan for a SQL statement. When `analyze` is true, PostgreSQL executes the statement and any side effects. Use `analyze: false` to inspect a statement without executing it. Never analyze potentially destructive SQL autonomously. Do not use when you need query results (use `run_sql` instead).","inputSchema":{"type":"object","properties":{"sql":{"type":"string","description":"The SQL statement to analyze"},"project_id":{"type":"string","description":"The ID of the project to execute the query against. Required for an unscoped connection. May be omitted when the connection is scoped to one project; if provided, it must match that project."},"branch_id":{"type":"string","description":"An optional ID of the branch to execute the query against. If not provided the default branch is used."},"database_name":{"type":"string","description":"The name of the database. If not provided, the default neondb or first available database is used."},"analyze":{"type":"boolean","default":false,"description":"Whether to execute the statement with EXPLAIN ANALYZE. Defaults to false because execution may cause side effects."}},"required":["sql"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"list_slow_queries","title":"List Slow Queries","scope":"querying","readOnlySafe":true,"description":"List queries from pg_stat_statements by execution time, slowest first. For sizes, indexes, locks, cache, bloat, or replication use inspect_database.","inputSchema":{"type":"object","properties":{"project_id":{"type":"string","description":"The ID of the project to list slow queries from. Required for an unscoped connection. May be omitted when the connection is scoped to one project; if provided, it must match that project."},"branch_id":{"type":"string","description":"An optional ID of the branch. If not provided the default branch is used."},"database_name":{"type":"string","description":"The name of the database. If not provided, the default neondb or first available database is used."},"compute_id":{"type":"string","description":"The ID of the compute/endpoint. If not provided, the read-write compute associated with the branch will be used."},"limit":{"type":"number","default":10,"description":"Maximum number of slow queries to return"},"min_execution_time":{"type":"number","default":1000,"description":"Minimum execution time in milliseconds to consider a query as slow"}},"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"inspect_database","title":"Inspect Database","scope":"querying","readOnlySafe":true,"description":"Run one read-only neon inspect db check (pick `check` from the input schema). Not for arbitrary SQL (`run_sql`), one statement's plan (`explain_sql_statement`), or applying indexes (`prepare_query_tuning`). Omit `database_name` to cover every database; some checks are compute-wide. If a check needs an extension, the tool names `CREATE EXTENSION`; ask before running it.","inputSchema":{"type":"object","properties":{"check":{"type":"string","enum":["table-sizes","index-sizes","unused-indexes","seq-scans","long-running-queries","stalled-queries","locks","outliers","calls","lfc-hit-rate","working-set","vacuum-stats","bloat","replication-slots","subscriptions"],"description":"Which diagnostic to run:\n`table-sizes`: Size of each table (including TOAST), largest first (pg_table_size)\n`index-sizes`: Size of each index, largest first (pg_relation_size)\n`unused-indexes`: Non-unique indexes with fewer than 50 scans — candidates for removal (pg_stat_user_indexes)\n`seq-scans`: Number of sequential scans recorded against each table (pg_stat_user_tables)\n`long-running-queries`: Queries running longer than 5 minutes (pg_stat_activity)\n`stalled-queries`: Active queries running longer than 30 seconds with parallel-worker grouping, waits, and blockers, oldest query group first (compute-wide)\n`locks`: Locks held with the acquiring query and its age (pg_locks + pg_stat_activity)\n`outliers`: The 25 queries with the highest cumulative execution time since statistics were last reset (needs pg_stat_statements)\n`calls`: The 25 most frequently executed queries since statistics were last reset (needs pg_stat_statements)\n`lfc-hit-rate`: Local File Cache hit rate (compute-wide, needs neon extension)\n`working-set`: Estimated working set vs LFC size (compute-wide, needs neon extension)\n`vacuum-stats`: Autovacuum status per table: last (auto)vacuum, dead tuples, threshold\n`bloat`: Estimated bloat for the 25 most bloated tables (statistical estimate, no extension needed)\n`replication-slots`: Replication slots (compute-wide): kind, status, client, restart/confirmed-flush LSNs, and lag (pg_replication_slots + pg_stat_replication)\n`subscriptions`: Per-table logical replication progress on this subscriber (pg_subscription_rel)"},"project_id":{"type":"string","description":"The ID of the project to inspect. Required for an unscoped connection. May be omitted when the connection is scoped to one project; if provided, it must match that project."},"branch_id":{"type":"string","description":"An optional ID of the branch. If not provided the default branch is used."},"database_name":{"type":"string","minLength":1,"description":"For a database-scoped check, the database to inspect. Omit to cover every database on the branch. Ranking and SQL row limits stay per database. One failing database fails the whole run. For a compute-wide check, the database to connect through; the check still runs once for the whole compute and the result does not include `databaseName`. The response `limit` applies to the combined rows after that."},"compute_id":{"type":"string","description":"The ID of the compute/endpoint. If not provided, the read-write compute associated with the branch will be used."},"limit":{"type":"integer","minimum":1,"maximum":1000,"default":50,"description":"Maximum number of rows to return from the combined result. Per-database ranking and SQL caps are applied first. The response reports how many rows the check produced and whether they were truncated, so raise this only when `truncated` is true. A few checks are capped in SQL and say so in their description."}},"required":["check"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"search","title":"Search","scope":"global","readOnlySafe":true,"description":"Search across all organizations, projects, and branches by keyword. Returns matching items with id, title, and URL. Query must be at least 3 characters. Do not use when you need all projects (use `list_projects` instead) or to search Neon documentation (use `search_docs`).","inputSchema":{"type":"object","properties":{"query":{"type":"string","minLength":3,"description":"The search query to find matching organizations, projects, or branches"}},"required":["query"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"fetch","title":"Fetch","scope":"global","readOnlySafe":true,"description":"Fetch detailed information about a specific organization, project, or branch using the ID returned by the `search` tool.","inputSchema":{"type":"object","properties":{"id":{"type":"string","minLength":1,"description":"The ID returned by the search tool to fetch detailed information about the entity"}},"required":["id"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"search_docs","title":"Search Documentation","scope":"docs","readOnlySafe":true,"description":"Search neon.com: docs, API reference, PostgreSQL tutorial, guides, FAQs, changelog, and blog. Returns ranked pages with title, URL, the matching section, and a slug; read a full page with get_doc.","inputSchema":{"type":"object","properties":{"query":{"type":"string","minLength":1,"maxLength":500,"description":"What to search for, in words, e.g. \"reset a branch\" or \"connection pooling\"."},"categories":{"type":"array","items":{"type":"string","enum":["docs","api","postgresql","guides","faqs","blog","changelog"]},"minItems":1,"maxItems":7,"description":"Only return pages in these categories: docs, api (API reference), postgresql (PostgreSQL tutorial), guides, faqs, blog, changelog. Omit to search everything."},"limit":{"type":"integer","minimum":1,"maximum":40,"default":10,"description":"Maximum number of pages to return (1-40)."}},"required":["query"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"get_doc","title":"Get Documentation Page","scope":"docs","readOnlySafe":true,"description":"Fetch one neon.com page as markdown. Pass the slug of a search_docs hit (for example docs/guides/prisma).","inputSchema":{"type":"object","properties":{"slug":{"type":"string","description":"The slug of a hit returned by search_docs, e.g. 'docs/guides/prisma' or 'postgresql/tutorial/inner-join'."}},"required":["slug"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"send_feedback","title":"Send Feedback","scope":"global","readOnlySafe":true,"description":"Send anonymous feedback about Neon or this MCP server to the Neon team. Only call this when the user asks to give feedback. Sends only the feedback text, not account, project, or connection details.","inputSchema":{"type":"object","properties":{"feedback":{"type":"string","minLength":1,"maxLength":10000,"description":"The feedback to send to Neon. Do not include passwords, API keys, connection strings, or other secrets."}},"required":["feedback"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"list_projects","title":"List projects","scope":"projects","readOnlySafe":true,"description":"List Neon projects you own. Returns every page. Pass limit to cap how many. There is no `cursor` argument. `org_id` is optional: organization API keys use their organization; personal API keys auto-select when unambiguous and otherwise return the IDs to choose from.","inputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"limit":{"type":"integer","minimum":1,"maximum":400},"search":{"type":"string"},"org_id":{"type":"string","pattern":"^[a-z0-9-]{1,60}$"},"timeout":{"type":"integer","minimum":100,"maximum":30000},"recoverable":{"type":"boolean"}},"additionalProperties":false}},{"name":"describe_project","title":"Retrieve project details","scope":"projects","readOnlySafe":true,"description":"Retrieves the project record (settings, compute, usage). Call `list_branches` for branches.","inputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"project_id":{"description":"Required for an unscoped connection. May be omitted when the connection is scoped to one project; if provided, it must match that project.","type":"string","pattern":"^[a-z0-9-]{1,60}$"}},"additionalProperties":false}},{"name":"list_project_permissions","title":"List project access","scope":"projects","readOnlySafe":true,"description":"Retrieves details about users who have access to the project, including the permission `id`, the granted-to email address, and the date project access was granted.","inputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"project_id":{"description":"Required for an unscoped connection. May be omitted when the connection is scoped to one project; if provided, it must match that project.","type":"string","pattern":"^[a-z0-9-]{1,60}$"}},"additionalProperties":false}},{"name":"list_project_members","title":"List org members and their project roles","scope":"projects","readOnlySafe":true,"description":"Lists organization members and their per-project roles for an org-owned project. Returns every page. Pass limit to cap how many.","inputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"project_id":{"description":"Required for an unscoped connection. May be omitted when the connection is scoped to one project; if provided, it must match that project.","type":"string","pattern":"^[a-z0-9-]{1,60}$"},"limit":{"type":"integer","minimum":1,"maximum":500}},"additionalProperties":false}},{"name":"list_regions","title":"List regions","scope":"projects","readOnlySafe":true,"description":"Lists Neon regions available to the authenticated account.","inputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{},"additionalProperties":false}},{"name":"list_operations","title":"List operations","scope":"projects","readOnlySafe":true,"description":"Lists operations for a project. Omitting `limit` returns every remaining page. There is no `cursor` argument.","inputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"project_id":{"description":"Required for an unscoped connection. May be omitted when the connection is scoped to one project; if provided, it must match that project.","type":"string","pattern":"^[a-z0-9-]{1,60}$"},"limit":{"type":"integer","minimum":1,"maximum":1000}},"additionalProperties":false}},{"name":"get_operation","title":"Retrieve operation details","scope":"projects","readOnlySafe":true,"description":"Retrieves details for the specified operation.","inputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"project_id":{"description":"Required for an unscoped connection. May be omitted when the connection is scoped to one project; if provided, it must match that project.","type":"string","pattern":"^[a-z0-9-]{1,60}$"},"operation_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},"required":["operation_id"],"additionalProperties":false}},{"name":"list_branches","title":"List branches","scope":"branches","readOnlySafe":true,"description":"Retrieves a list of branches for the specified project. Returns every page. Pass limit to cap how many.","inputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"project_id":{"description":"Required for an unscoped connection. May be omitted when the connection is scoped to one project; if provided, it must match that project.","type":"string","pattern":"^[a-z0-9-]{1,60}$"},"search":{"type":"string"},"sort_by":{"type":"string","enum":["name","created_at","updated_at"]},"sort_order":{"type":"string","enum":["asc","desc"]},"limit":{"type":"integer","minimum":1,"maximum":10000},"include_deleted":{"type":"boolean"}},"additionalProperties":false}},{"name":"get_branch","title":"Retrieve branch details","scope":"branches","readOnlySafe":true,"description":"Retrieves information about the specified branch.\n\nbranch_id is a branch id (br-...), not a branch name. Call list_branches to resolve a name.","inputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"project_id":{"description":"Required for an unscoped connection. May be omitted when the connection is scoped to one project; if provided, it must match that project.","type":"string","pattern":"^[a-z0-9-]{1,60}$"},"branch_id":{"type":"string","pattern":"^[a-z0-9-]{1,60}$"}},"required":["branch_id"],"additionalProperties":false}},{"name":"get_default_branch","title":"Get default branch","scope":"branches","readOnlySafe":true,"description":"Resolve the project's default branch by the default flag, not by name.","inputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"project_id":{"description":"Required for an unscoped connection. May be omitted when the connection is scoped to one project; if provided, it must match that project.","type":"string","pattern":"^[a-z0-9-]{1,60}$"}},"additionalProperties":false}},{"name":"compare_database_schema","title":"Compare database schema","scope":"schema","readOnlySafe":true,"description":"Compare one database's SQL schema on a branch to another. `database_name` is required. Omit `base_branch_id` to compare against the parent; it is a branch id (`br-...`), not a name. Pass `lsn`, `timestamp`, `base_lsn`, or `base_timestamp` only for a point-in-time comparison.\n\nbranch_id is a branch id (br-...), not a branch name. Call list_branches to resolve a name.","inputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"project_id":{"description":"Required for an unscoped connection. May be omitted when the connection is scoped to one project; if provided, it must match that project.","type":"string","pattern":"^[a-z0-9-]{1,60}$"},"branch_id":{"type":"string","pattern":"^[a-z0-9-]{1,60}$"},"database_name":{"type":"string"},"base_branch_id":{"type":"string","pattern":"^[a-z0-9-]{1,60}$"},"lsn":{"type":"string"},"timestamp":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"base_lsn":{"type":"string"},"base_timestamp":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["branch_id","database_name"],"additionalProperties":false}},{"name":"list_postgres_roles","title":"List roles","scope":"branches","readOnlySafe":true,"description":"Retrieves a list of Postgres roles from the specified branch.\n\nbranch_id is a branch id (br-...), not a branch name. Call list_branches to resolve a name.","inputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"project_id":{"description":"Required for an unscoped connection. May be omitted when the connection is scoped to one project; if provided, it must match that project.","type":"string","pattern":"^[a-z0-9-]{1,60}$"},"branch_id":{"type":"string","pattern":"^[a-z0-9-]{1,60}$"}},"required":["branch_id"],"additionalProperties":false}},{"name":"get_postgres_role","title":"Retrieve role details","scope":"branches","readOnlySafe":true,"description":"Retrieves details about the specified role.\n\nbranch_id is a branch id (br-...), not a branch name. Call list_branches to resolve a name.","inputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"project_id":{"description":"Required for an unscoped connection. May be omitted when the connection is scoped to one project; if provided, it must match that project.","type":"string","pattern":"^[a-z0-9-]{1,60}$"},"branch_id":{"type":"string","pattern":"^[a-z0-9-]{1,60}$"},"role_name":{"type":"string"}},"required":["branch_id","role_name"],"additionalProperties":false}},{"name":"list_postgres_databases","title":"List databases","scope":"branches","readOnlySafe":true,"description":"Retrieves a list of databases for the specified branch.\n\nbranch_id is a branch id (br-...), not a branch name. Call list_branches to resolve a name.","inputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"project_id":{"description":"Required for an unscoped connection. May be omitted when the connection is scoped to one project; if provided, it must match that project.","type":"string","pattern":"^[a-z0-9-]{1,60}$"},"branch_id":{"type":"string","pattern":"^[a-z0-9-]{1,60}$"}},"required":["branch_id"],"additionalProperties":false}},{"name":"get_postgres_database","title":"Retrieve database details","scope":"branches","readOnlySafe":true,"description":"Retrieves information about the specified database.\n\nbranch_id is a branch id (br-...), not a branch name. Call list_branches to resolve a name.","inputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"project_id":{"description":"Required for an unscoped connection. May be omitted when the connection is scoped to one project; if provided, it must match that project.","type":"string","pattern":"^[a-z0-9-]{1,60}$"},"branch_id":{"type":"string","pattern":"^[a-z0-9-]{1,60}$"},"database_name":{"type":"string"}},"required":["branch_id","database_name"],"additionalProperties":false}},{"name":"list_postgres_endpoints","title":"List compute endpoints","scope":"endpoints","readOnlySafe":true,"description":"Retrieves a list of compute endpoints for the specified project.","inputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"project_id":{"description":"Required for an unscoped connection. May be omitted when the connection is scoped to one project; if provided, it must match that project.","type":"string","pattern":"^[a-z0-9-]{1,60}$"}},"additionalProperties":false}},{"name":"list_branch_computes","title":"List branch endpoints","scope":"endpoints","readOnlySafe":true,"description":"Retrieves a list of compute endpoints for the specified branch.\n\nbranch_id is a branch id (br-...), not a branch name. Call list_branches to resolve a name.","inputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"project_id":{"description":"Required for an unscoped connection. May be omitted when the connection is scoped to one project; if provided, it must match that project.","type":"string","pattern":"^[a-z0-9-]{1,60}$"},"branch_id":{"type":"string","pattern":"^[a-z0-9-]{1,60}$"}},"required":["branch_id"],"additionalProperties":false}},{"name":"get_postgres_endpoint","title":"Retrieve compute endpoint details","scope":"endpoints","readOnlySafe":true,"description":"Retrieves information about the specified compute endpoint.","inputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"project_id":{"description":"Required for an unscoped connection. May be omitted when the connection is scoped to one project; if provided, it must match that project.","type":"string","pattern":"^[a-z0-9-]{1,60}$"},"endpoint_id":{"type":"string","pattern":"^[a-z0-9-]{1,60}$"}},"required":["endpoint_id"],"additionalProperties":false}},{"name":"list_snapshots","title":"List project snapshots","scope":"snapshots","readOnlySafe":true,"description":"Lists the snapshots for the specified project.","inputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"project_id":{"description":"Required for an unscoped connection. May be omitted when the connection is scoped to one project; if provided, it must match that project.","type":"string","pattern":"^[a-z0-9-]{1,60}$"}},"additionalProperties":false}},{"name":"get_snapshot_schedule","title":"Retrieve backup schedule","scope":"snapshots","readOnlySafe":true,"description":"Returns the backup schedule for the specified branch, including the configured snapshot frequencies.\n\nbranch_id is a branch id (br-...), not a branch name. Call list_branches to resolve a name.","inputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"project_id":{"description":"Required for an unscoped connection. May be omitted when the connection is scoped to one project; if provided, it must match that project.","type":"string","pattern":"^[a-z0-9-]{1,60}$"},"branch_id":{"type":"string","pattern":"^[a-z0-9-]{1,60}$"}},"required":["branch_id"],"additionalProperties":false}},{"name":"get_auth","title":"Retrieve Neon Auth details for the branch","scope":"neon_auth","readOnlySafe":true,"description":"Retrieves the Neon Auth integration details for the specified branch, including the auth provider type and integration status.\n\nbranch_id is a branch id (br-...), not a branch name. Call list_branches to resolve a name.","inputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"project_id":{"description":"Required for an unscoped connection. May be omitted when the connection is scoped to one project; if provided, it must match that project.","type":"string","pattern":"^[a-z0-9-]{1,60}$"},"branch_id":{"type":"string","pattern":"^[a-z0-9-]{1,60}$"}},"required":["branch_id"],"additionalProperties":false}},{"name":"list_auth_trusted_domains","title":"List domains in redirect_uri whitelist","scope":"neon_auth","readOnlySafe":true,"description":"Lists the trusted domains in the redirect URI whitelist for the specified branch.\n\nbranch_id is a branch id (br-...), not a branch name. Call list_branches to resolve a name.","inputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"project_id":{"description":"Required for an unscoped connection. May be omitted when the connection is scoped to one project; if provided, it must match that project.","type":"string","pattern":"^[a-z0-9-]{1,60}$"},"branch_id":{"type":"string","pattern":"^[a-z0-9-]{1,60}$"}},"required":["branch_id"],"additionalProperties":false}},{"name":"get_data_api","title":"Retrieve Neon Data API configuration","scope":"data_api","readOnlySafe":true,"description":"Retrieves the Neon Data API configuration for the specified branch, including endpoint URL, enabled state, and database settings.\n\nbranch_id is a branch id (br-...), not a branch name. Call list_branches to resolve a name.","inputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"project_id":{"description":"Required for an unscoped connection. May be omitted when the connection is scoped to one project; if provided, it must match that project.","type":"string","pattern":"^[a-z0-9-]{1,60}$"},"branch_id":{"type":"string","pattern":"^[a-z0-9-]{1,60}$"},"database_name":{"type":"string"}},"required":["branch_id","database_name"],"additionalProperties":false}},{"name":"query_logs","title":"Query branch logs","scope":"observability","readOnlySafe":true,"description":"Returns logs for a branch. Pass `limit` to cap how many. There is no `cursor` argument. Filters combine with AND. Pass `logql` instead of structured filters, not with them. Give the window as `since` or `start_time`, not both; default is the previous hour, max seven days; `end_time` is exclusive. Private beta; a branch without logs access returns HTTP 404 with reason \"telemetry_not_enabled\".\n\nbranch_id is a branch id (br-...), not a branch name. Call list_branches to resolve a name.","inputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"project_id":{"description":"Required for an unscoped connection. May be omitted when the connection is scoped to one project; if provided, it must match that project.","type":"string","pattern":"^[a-z0-9-]{1,60}$"},"branch_id":{"type":"string","pattern":"^[a-z0-9-]{1,60}$"},"since":{"type":"string","pattern":"^[0-9]{1,6}(ms|s|m|h|d)$"},"start_time":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"end_time":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"limit":{"type":"integer","minimum":1,"maximum":1000},"sort_order":{"type":"string","enum":["asc","desc"]},"source":{"type":"string","enum":["function","storage","pg_endpoint"]},"service_name":{"type":"string","minLength":1},"scope_name":{"type":"string","minLength":1},"minimum_severity":{"type":"string","enum":["trace","debug","info","warn","error","fatal"]},"severity_text":{"type":"string","minLength":1},"body_contains":{"type":"string","minLength":1},"trace_id":{"type":"string","pattern":"^[0-9a-f]{32}$"},"logql":{"type":"string","minLength":1}},"required":["branch_id"],"additionalProperties":false}},{"name":"list_log_fields","title":"List branch log fields","scope":"observability","readOnlySafe":true,"description":"Lists the low-cardinality log fields observed on this branch. Call `list_log_field_values` with `field_name` to list distinct values.\n\nbranch_id is a branch id (br-...), not a branch name. Call list_branches to resolve a name.","inputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"project_id":{"description":"Required for an unscoped connection. May be omitted when the connection is scoped to one project; if provided, it must match that project.","type":"string","pattern":"^[a-z0-9-]{1,60}$"},"branch_id":{"type":"string","pattern":"^[a-z0-9-]{1,60}$"}},"required":["branch_id"],"additionalProperties":false}},{"name":"list_log_field_values","title":"List branch log field values","scope":"observability","readOnlySafe":true,"description":"Lists distinct values for a low-cardinality log field. Call `list_log_fields` first for `field_name`; a field the branch has never emitted returns `unknown_field`. Pass `since` or `start_time`, not both; default is the previous six hours, max seven days. Private beta.\n\nbranch_id is a branch id (br-...), not a branch name. Call list_branches to resolve a name.","inputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"project_id":{"description":"Required for an unscoped connection. May be omitted when the connection is scoped to one project; if provided, it must match that project.","type":"string","pattern":"^[a-z0-9-]{1,60}$"},"branch_id":{"type":"string","pattern":"^[a-z0-9-]{1,60}$"},"field_name":{"type":"string","minLength":1},"since":{"type":"string","pattern":"^[0-9]{1,6}(ms|s|m|h|d)$"},"start_time":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"end_time":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"source":{"type":"string","enum":["function","storage","pg_endpoint"]},"limit":{"type":"integer","minimum":1,"maximum":1000}},"required":["branch_id","field_name"],"additionalProperties":false}},{"name":"get_ai_gateway","title":"Get branch AI Gateway endpoint","scope":"observability","readOnlySafe":true,"description":"Returns the AI Gateway endpoint host for the specified branch, used to render code-snippet base URLs.\n\nbranch_id is a branch id (br-...), not a branch name. Call list_branches to resolve a name.","inputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"project_id":{"description":"Required for an unscoped connection. May be omitted when the connection is scoped to one project; if provided, it must match that project.","type":"string","pattern":"^[a-z0-9-]{1,60}$"},"branch_id":{"type":"string","pattern":"^[a-z0-9-]{1,60}$"}},"required":["branch_id"],"additionalProperties":false}},{"name":"list_functions","title":"List functions on the branch","scope":"functions","readOnlySafe":true,"description":"Lists functions on the specified branch. Returns every page. Pass limit to cap how many.\n\nbranch_id is a branch id (br-...), not a branch name. Call list_branches to resolve a name.","inputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"project_id":{"description":"Required for an unscoped connection. May be omitted when the connection is scoped to one project; if provided, it must match that project.","type":"string","pattern":"^[a-z0-9-]{1,60}$"},"branch_id":{"type":"string","pattern":"^[a-z0-9-]{1,60}$"},"limit":{"type":"integer","minimum":1,"maximum":1000}},"required":["branch_id"],"additionalProperties":false}},{"name":"get_function","title":"Get function details","scope":"functions","readOnlySafe":true,"description":"Returns the function identified by its slug.\n\nbranch_id is a branch id (br-...), not a branch name. Call list_branches to resolve a name.","inputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"project_id":{"description":"Required for an unscoped connection. May be omitted when the connection is scoped to one project; if provided, it must match that project.","type":"string","pattern":"^[a-z0-9-]{1,60}$"},"branch_id":{"type":"string","pattern":"^[a-z0-9-]{1,60}$"},"slug":{"type":"string","pattern":"^[a-z0-9]{1,20}$"}},"required":["branch_id","slug"],"additionalProperties":false}},{"name":"list_functions_custom_domains","title":"List the custom domains on a branch","scope":"functions","readOnlySafe":true,"description":"Lists all custom domains registered on the branch, across every target entity. Returns every page. Pass limit to cap how many.\n\nbranch_id is a branch id (br-...), not a branch name. Call list_branches to resolve a name.","inputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"project_id":{"description":"Required for an unscoped connection. May be omitted when the connection is scoped to one project; if provided, it must match that project.","type":"string","pattern":"^[a-z0-9-]{1,60}$"},"branch_id":{"type":"string","pattern":"^[a-z0-9-]{1,60}$"},"limit":{"type":"integer","minimum":1,"maximum":1000}},"required":["branch_id"],"additionalProperties":false}},{"name":"list_triggers","title":"List triggers on the branch","scope":"functions","readOnlySafe":true,"description":"Lists the complete project-bounded set of triggers visible on the branch, ordered by `trigger_id`.\n\nbranch_id is a branch id (br-...), not a branch name. Call list_branches to resolve a name.","inputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"project_id":{"description":"Required for an unscoped connection. May be omitted when the connection is scoped to one project; if provided, it must match that project.","type":"string","pattern":"^[a-z0-9-]{1,60}$"},"branch_id":{"type":"string","pattern":"^[a-z0-9-]{1,60}$"}},"required":["branch_id"],"additionalProperties":false}},{"name":"get_trigger","title":"Get a trigger","scope":"functions","readOnlySafe":true,"description":"Returns the trigger visible on the branch.\n\nbranch_id is a branch id (br-...), not a branch name. Call list_branches to resolve a name.","inputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"project_id":{"description":"Required for an unscoped connection. May be omitted when the connection is scoped to one project; if provided, it must match that project.","type":"string","pattern":"^[a-z0-9-]{1,60}$"},"branch_id":{"type":"string","pattern":"^[a-z0-9-]{1,60}$"},"trigger_id":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[A-Za-z0-9][A-Za-z0-9_.\\-]{0,127}$"}},"required":["branch_id","trigger_id"],"additionalProperties":false}},{"name":"list_credentials","title":"List credentials on the branch","scope":"branches","readOnlySafe":true,"description":"Returns metadata for customer-issued credentials on the branch.\n\nbranch_id is a branch id (br-...), not a branch name. Call list_branches to resolve a name.","inputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"project_id":{"description":"Required for an unscoped connection. May be omitted when the connection is scoped to one project; if provided, it must match that project.","type":"string","pattern":"^[a-z0-9-]{1,60}$"},"branch_id":{"type":"string","pattern":"^[a-z0-9-]{1,60}$"}},"required":["branch_id"],"additionalProperties":false}},{"name":"get_storage","title":"Get branch object storage state","scope":"storage","readOnlySafe":true,"description":"Returns whether branchable object storage is usable for the specified branch.\n\nbranch_id is a branch id (br-...), not a branch name. Call list_branches to resolve a name.","inputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"project_id":{"description":"Required for an unscoped connection. May be omitted when the connection is scoped to one project; if provided, it must match that project.","type":"string","pattern":"^[a-z0-9-]{1,60}$"},"branch_id":{"type":"string","pattern":"^[a-z0-9-]{1,60}$"}},"required":["branch_id"],"additionalProperties":false}},{"name":"list_storage_buckets","title":"List buckets on the branch","scope":"storage","readOnlySafe":true,"description":"Lists branchable object storage buckets visible on the specified branch, including those inherited from ancestor branches.\n\nbranch_id is a branch id (br-...), not a branch name. Call list_branches to resolve a name.","inputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"project_id":{"description":"Required for an unscoped connection. May be omitted when the connection is scoped to one project; if provided, it must match that project.","type":"string","pattern":"^[a-z0-9-]{1,60}$"},"branch_id":{"type":"string","pattern":"^[a-z0-9-]{1,60}$"}},"required":["branch_id"],"additionalProperties":false}},{"name":"list_storage_objects","title":"List objects in a bucket","scope":"storage","readOnlySafe":true,"description":"Lists objects visible in the named bucket on the specified branch, including those inherited from ancestor branches. Returns every page. Pass limit to cap how many.\n\nbranch_id is a branch id (br-...), not a branch name. Call list_branches to resolve a name.","inputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"project_id":{"description":"Required for an unscoped connection. May be omitted when the connection is scoped to one project; if provided, it must match that project.","type":"string","pattern":"^[a-z0-9-]{1,60}$"},"branch_id":{"type":"string","pattern":"^[a-z0-9-]{1,60}$"},"bucket_name":{"type":"string","minLength":1,"maxLength":255},"prefix":{"type":"string"},"delimiter":{"type":"string"},"limit":{"type":"integer","minimum":1,"maximum":1000}},"required":["branch_id","bucket_name"],"additionalProperties":false}},{"name":"get_realtime","title":"Retrieve Realtime state","scope":"realtime","readOnlySafe":true,"description":"Retrieves whether Realtime is enabled for the branch, whether a change is still being applied, and, once provisioned, its invocation URL and allowed origins.\n\nbranch_id is a branch id (br-...), not a branch name. Call list_branches to resolve a name.","inputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"project_id":{"description":"Required for an unscoped connection. May be omitted when the connection is scoped to one project; if provided, it must match that project.","type":"string","pattern":"^[a-z0-9-]{1,60}$"},"branch_id":{"type":"string","pattern":"^[a-z0-9-]{1,60}$"}},"required":["branch_id"],"additionalProperties":false}}]}