drift.flanj.io / servers / neon
Server sheet · api · credentialed
Neon neon
5 change events over 51 comparison days: 2 breaking, 44 warning and 106 info findings, each with the two contracts as served behind it.
01 / the server
What the watch knows about it.
https://mcp.neon.tech/mcpendpoint
Neonoperator
apikind
credentialedauth posture
114tools listed
52days observed
2025-11-25MCP revision · floor, not ceiling
0 / 114outputSchema declared
This server answers tools/list only with a credential attached, so its findings cannot be reproduced anonymously; the watch attaches the credential the operator documents for machine access.
02 / event timeline — every event, expanded
5 change events, newest first.
2026-09-30 → 2026-10-01 1 warning 12 info 3 tools
7 input-optional-property-removed5 input-required-property-removed1 description-changedas served: 2026-09-30 → 2026-10-01on the index
info
input
input-optional-property-removed
Depending on whether the new schema forbids unknown fields, a caller still sending it is ignored or rejected; the row says which.
credentialed
#
create_trigger inputbodyenabled
their contract · 2026-09-30
{"type":"boolean"}
their contract · 2026-10-01
absent
location
input.body.enabled
info
input
input-optional-property-removed
Depending on whether the new schema forbids unknown fields, a caller still sending it is ignored or rejected; the row says which.
credentialed
#
create_trigger inputbodyfunction_path
their contract · 2026-09-30
{"maxLength":2048,"minLength":1,"type":"string"}
their contract · 2026-10-01
absent
location
input.body.function_path
info
input
input-required-property-removed
Callers can stop sending it; a server that rejects unknown fields rejects callers that do not.
credentialed
#
create_trigger inputbodyfunction_slug
their contract · 2026-09-30
{"pattern":"^[a-z0-9]{1,20}$","type":"string"}
their contract · 2026-10-01
absent
location
input.body.function_slug
info
input
input-required-property-removed
Callers can stop sending it; a server that rejects unknown fields rejects callers that do not.
credentialed
#
create_trigger inputbodyname
their contract · 2026-09-30
{"maxLength":256,"minLength":1,"type":"string"}
their contract · 2026-10-01
absent
location
input.body.name
info
input
input-required-property-removed
Callers can stop sending it; a server that rejects unknown fields rejects callers that do not.
credentialed
#
create_trigger inputbodyschedule
their contract · 2026-09-30
{"additionalProperties":false,"properties":{"cron":{…}},"required":["cron"],"type":"object"}
their contract · 2026-10-01
absent
location
input.body.schedule
full fragment
{"additionalProperties":false,"properties":{"cron":{"maxLength":1024,"minLength":1,"type":"string"}},"required":["cron"],"type":"object"}
info
input
input-required-property-removed
Callers can stop sending it; a server that rejects unknown fields rejects callers that do not.
credentialed
#
create_trigger inputbodytype
their contract · 2026-09-30
{"enum":["schedule"],"type":"string"}
their contract · 2026-10-01
absent
location
input.body.type
warning
wording
description-changed
The wording an agent reads to choose and call the tool changed; its behaviour may or may not have.
credentialed
#
explain_sql_statement description
info
input
input-optional-property-removed
Depending on whether the new schema forbids unknown fields, a caller still sending it is ignored or rejected; the row says which.
credentialed
#
update_trigger inputbodyenabled
their contract · 2026-09-30
{"type":"boolean"}
their contract · 2026-10-01
absent
location
input.body.enabled
info
input
input-optional-property-removed
Depending on whether the new schema forbids unknown fields, a caller still sending it is ignored or rejected; the row says which.
credentialed
#
update_trigger inputbodyfunction_path
their contract · 2026-09-30
{"maxLength":2048,"minLength":1,"type":"string"}
their contract · 2026-10-01
absent
location
input.body.function_path
info
input
input-optional-property-removed
Depending on whether the new schema forbids unknown fields, a caller still sending it is ignored or rejected; the row says which.
credentialed
#
update_trigger inputbodyfunction_slug
their contract · 2026-09-30
{"pattern":"^[a-z0-9]{1,20}$","type":"string"}
their contract · 2026-10-01
absent
location
input.body.function_slug
info
input
input-optional-property-removed
Depending on whether the new schema forbids unknown fields, a caller still sending it is ignored or rejected; the row says which.
credentialed
#
update_trigger inputbodyname
their contract · 2026-09-30
{"maxLength":256,"minLength":1,"type":"string"}
their contract · 2026-10-01
absent
location
input.body.name
info
input
input-optional-property-removed
Depending on whether the new schema forbids unknown fields, a caller still sending it is ignored or rejected; the row says which.
credentialed
#
update_trigger inputbodyschedule
their contract · 2026-09-30
{"additionalProperties":false,"properties":{"cron":{…}},"required":["cron"],"type":"object"}
their contract · 2026-10-01
absent
location
input.body.schedule
full fragment
{"additionalProperties":false,"properties":{"cron":{"maxLength":1024,"minLength":1,"type":"string"}},"required":["cron"],"type":"object"}
info
input
input-required-property-removed
Callers can stop sending it; a server that rejects unknown fields rejects callers that do not.
credentialed
#
update_trigger inputbodytype
their contract · 2026-09-30
{"enum":["schedule"],"type":"string"}
their contract · 2026-10-01
absent
location
input.body.type
2026-09-25 → 2026-09-26 1 warning 1 tool
warning
wording
description-changed
The wording an agent reads to choose and call the tool changed; its behaviour may or may not have.
credentialed
#
get_connection_string description
[…] `create_branch` do not return one; call this after they succeed. All parameters are optional; the tool resolves the project, branch, Branch, compute, and database are optional and resolved automatically if not specified. specified; `project_id` follows the connection scope. Requires write access: the connection string carries a privileged role […]
2026-09-11 → 2026-09-12 2 warning 2 tools
warning
wording
description-changed
The wording an agent reads to choose and call the tool changed; its behaviour may or may not have.
credentialed
#
create_project description
[…] Neon project and waits until the default compute is ready. Pass `org_id` with a is optional: organization API keys use their organization; personal API key. keys auto-select when unambiguous and otherwise return the IDs to choose from. Does not return a connection string; call `get_connection_string` with the […]
warning
wording
description-changed
The wording an agent reads to choose and call the tool changed; its behaviour may or may not have.
credentialed
#
list_projects description
[…] limit to cap how many. There is no `cursor` argument. Pass `org_id` with a is optional: organization API keys use their organization; personal API key keys auto-select when unambiguous and otherwise return the IDs to list that org's projects. choose from.
2026-08-28 → 2026-08-29 2 breaking 39 warning 94 info 35 tools
86 input-property-renamed33 description-changed6 input-required-property-added5 input-optional-property-removed2 input-required-property-removed2 operation-removed1 input-type-narrowedas served: 2026-08-28 → 2026-08-29on the index
warning
wording
description-changed
The wording an agent reads to choose and call the tool changed; its behaviour may or may not have.
credentialed
#
compare_database_schema description
info
input
input-property-renamed
Callers still sending the old name must switch to the new one; the parameter itself is unchanged.
credentialed
#
compare_database_schema inputbranchId
their contract · 2026-08-28
{"name":"branchId","schema":{"description":"The ID of the branch","type":"string"}}
their contract · 2026-08-29
{"name":"branch_id","schema":{"pattern":"^[a-z0-9-]{1,60}$","type":"string"}}
location
input.branchId
info
input
input-property-renamed
Callers still sending the old name must switch to the new one; the parameter itself is unchanged.
credentialed
#
compare_database_schema inputdatabaseName
their contract · 2026-08-28
{"name":"databaseName","schema":{"description":"The name of the database. If not provided, the d…","type":"string"}}
their contract · 2026-08-29
{"name":"database_name","schema":{"type":"string"}}
location
input.databaseName
full fragment
{"name":"databaseName","schema":{"description":"The name of the database. If not provided, the default neondb or first available database is used.","type":"string"}}{"name":"database_name","schema":{"type":"string"}}
info
input
input-property-renamed
Callers still sending the old name must switch to the new one; the parameter itself is unchanged.
credentialed
#
compare_database_schema inputprojectId
their contract · 2026-08-28
{"name":"projectId","schema":{"description":"The ID of the project","type":"string"}}
their contract · 2026-08-29
{"name":"project_id","schema":{"pattern":"^[a-z0-9-]{1,60}$","type":"string"}}
location
input.projectId
warning
wording
description-changed
The wording an agent reads to choose and call the tool changed; its behaviour may or may not have.
credentialed
#
complete_database_migration description
info
input
input-property-renamed
Callers still sending the old name must switch to the new one; the parameter itself is unchanged.
credentialed
#
complete_database_migration inputapplyChanges
their contract · 2026-08-28
{"name":"applyChanges","schema":{"default":true,"description":"Whether to apply the migration. Set to false to …","type":"boolean"}}
their contract · 2026-08-29
{"name":"apply_changes","schema":{"default":true,"description":"Whether to apply the migration. Set to false to …","type":"boolean"}}
location
input.applyChanges
full fragment
{"name":"applyChanges","schema":{"default":true,"description":"Whether to apply the migration. Set to false to just delete the temp branch without applying.","type":"boolean"}}{"name":"apply_changes","schema":{"default":true,"description":"Whether to apply the migration. Set to false to just delete the temp branch without applying.","type":"boolean"}}
info
input
input-property-renamed
Callers still sending the old name must switch to the new one; the parameter itself is unchanged.
credentialed
#
complete_database_migration inputdatabaseName
their contract · 2026-08-28
{"name":"databaseName","schema":{"description":"The database name. Pass the exact value from pre…","type":"string"}}
their contract · 2026-08-29
{"name":"database_name","schema":{"description":"The database name. Pass the exact value from pre…","type":"string"}}
location
input.databaseName
full fragment
{"name":"databaseName","schema":{"description":"The database name. Pass the exact value from prepare_database_migration.","type":"string"}}{"name":"database_name","schema":{"description":"The database name. Pass the exact value from prepare_database_migration.","type":"string"}}
info
input
input-property-renamed
Callers still sending the old name must switch to the new one; the parameter itself is unchanged.
credentialed
#
complete_database_migration inputmigrationId
their contract · 2026-08-28
{"name":"migrationId","schema":{"description":"The migration ID from prepare_database_migration…","type":"string"}}
their contract · 2026-08-29
{"name":"migration_id","schema":{"description":"The migration ID from prepare_database_migration…","type":"string"}}
location
input.migrationId
full fragment
{"name":"migrationId","schema":{"description":"The migration ID from prepare_database_migration.","type":"string"}}{"name":"migration_id","schema":{"description":"The migration ID from prepare_database_migration.","type":"string"}}
info
input
input-property-renamed
Callers still sending the old name must switch to the new one; the parameter itself is unchanged.
credentialed
#
complete_database_migration inputmigrationSql
their contract · 2026-08-28
{"name":"migrationSql","schema":{"description":"The SQL statements to apply. Pass the exact valu…","type":"string"}}
their contract · 2026-08-29
{"name":"migration_sql","schema":{"description":"The SQL statements to apply. Pass the exact valu…","type":"string"}}
location
input.migrationSql
full fragment
{"name":"migrationSql","schema":{"description":"The SQL statements to apply. Pass the exact value from prepare_database_migration.","type":"string"}}{"name":"migration_sql","schema":{"description":"The SQL statements to apply. Pass the exact value from prepare_database_migration.","type":"string"}}
info
input
input-property-renamed
Callers still sending the old name must switch to the new one; the parameter itself is unchanged.
credentialed
#
complete_database_migration inputparentBranchId
their contract · 2026-08-28
{"name":"parentBranchId","schema":{"description":"The parent branch ID where migration will be app…","type":"string"}}
their contract · 2026-08-29
{"name":"parent_branch_id","schema":{"description":"The parent branch ID where migration will be app…","type":"string"}}
location
input.parentBranchId
full fragment
{"name":"parentBranchId","schema":{"description":"The parent branch ID where migration will be applied.","type":"string"}}{"name":"parent_branch_id","schema":{"description":"The parent branch ID where migration will be applied.","type":"string"}}
info
input
input-property-renamed
Callers still sending the old name must switch to the new one; the parameter itself is unchanged.
credentialed
#
complete_database_migration inputprojectId
their contract · 2026-08-28
{"name":"projectId","schema":{"description":"The project ID. Pass the exact value from prepar…","type":"string"}}
their contract · 2026-08-29
{"name":"project_id","schema":{"description":"The project ID. Pass the exact value from prepar…","type":"string"}}
location
input.projectId
full fragment
{"name":"projectId","schema":{"description":"The project ID. Pass the exact value from prepare_database_migration.","type":"string"}}{"name":"project_id","schema":{"description":"The project ID. Pass the exact value from prepare_database_migration.","type":"string"}}
info
input
input-property-renamed
Callers still sending the old name must switch to the new one; the parameter itself is unchanged.
credentialed
#
complete_database_migration inputtemporaryBranchId
their contract · 2026-08-28
{"name":"temporaryBranchId","schema":{"description":"The temporary branch ID to delete after migratio…","type":"string"}}
their contract · 2026-08-29
{"name":"temporary_branch_id","schema":{"description":"The temporary branch ID to delete after migratio…","type":"string"}}
location
input.temporaryBranchId
full fragment
{"name":"temporaryBranchId","schema":{"description":"The temporary branch ID to delete after migration.","type":"string"}}{"name":"temporary_branch_id","schema":{"description":"The temporary branch ID to delete after migration.","type":"string"}}
warning
wording
description-changed
The wording an agent reads to choose and call the tool changed; its behaviour may or may not have.
credentialed
#
complete_query_tuning description
info
input
input-property-renamed
Callers still sending the old name must switch to the new one; the parameter itself is unchanged.
credentialed
#
complete_query_tuning inputapplyChanges
their contract · 2026-08-28
{"name":"applyChanges","schema":{"default":false,"description":"Whether to apply the suggested changes to the ma…","type":"boolean"}}
their contract · 2026-08-29
{"name":"apply_changes","schema":{"default":false,"description":"Whether to apply the suggested changes to the ma…","type":"boolean"}}
location
input.applyChanges
full fragment
{"name":"applyChanges","schema":{"default":false,"description":"Whether to apply the suggested changes to the main branch","type":"boolean"}}{"name":"apply_changes","schema":{"default":false,"description":"Whether to apply the suggested changes to the main branch","type":"boolean"}}
info
input
input-property-renamed
Callers still sending the old name must switch to the new one; the parameter itself is unchanged.
credentialed
#
complete_query_tuning inputbranchId
their contract · 2026-08-28
{"name":"branchId","schema":{"description":"The ID or name of the branch that receives the c…","type":"string"}}
their contract · 2026-08-29
{"name":"branch_id","schema":{"description":"The ID or name of the branch that receives the c…","type":"string"}}
location
input.branchId
full fragment
{"name":"branchId","schema":{"description":"The ID or name of the branch that receives the changes. If not provided, the default (main) branch will be used.","type":"string"}}{"name":"branch_id","schema":{"description":"The ID or name of the branch that receives the changes. If not provided, the default (main) branch will be used.","type":"string"}}
info
input
input-property-renamed
Callers still sending the old name must switch to the new one; the parameter itself is unchanged.
credentialed
#
complete_query_tuning inputdatabaseName
their contract · 2026-08-28
{"name":"databaseName","schema":{"description":"The name of the database to execute the query ag…","type":"string"}}
their contract · 2026-08-29
{"name":"database_name","schema":{"description":"The name of the database to execute the query ag…","type":"string"}}
location
input.databaseName
full fragment
{"name":"databaseName","schema":{"description":"The name of the database to execute the query against","type":"string"}}{"name":"database_name","schema":{"description":"The name of the database to execute the query against","type":"string"}}
info
input
input-property-renamed
Callers still sending the old name must switch to the new one; the parameter itself is unchanged.
credentialed
#
complete_query_tuning inputprojectId
their contract · 2026-08-28
{"name":"projectId","schema":{"description":"The ID of the project to execute the query again…","type":"string"}}
their contract · 2026-08-29
{"name":"project_id","schema":{"description":"The ID of the project to execute the query again…","type":"string"}}
location
input.projectId
full fragment
{"name":"projectId","schema":{"description":"The ID of the project to execute the query against","type":"string"}}{"name":"project_id","schema":{"description":"The ID of the project to execute the query against","type":"string"}}
info
input
input-property-renamed
Callers still sending the old name must switch to the new one; the parameter itself is unchanged.
credentialed
#
complete_query_tuning inputroleName
their contract · 2026-08-28
{"name":"roleName","schema":{"description":"The name of the role to connect with. If you hav…","type":"string"}}
their contract · 2026-08-29
{"name":"role_name","schema":{"description":"The name of the role to connect with. If you hav…","type":"string"}}
location
input.roleName
full fragment
{"name":"roleName","schema":{"description":"The name of the role to connect with. If you have used a specific role in prepare_query_tuning you MUST pass the same role again to this tool. If not provided, the default role (usually \"neondb_owner\") will be used.","type":"string"}}{"name":"role_name","schema":{"description":"The name of the role to connect with. If you have used a specific role in prepare_query_tuning you MUST pass the same role again to this tool. If not provided, the default role (usually \"neondb_owner\") will be used.","type":"string"}}
info
input
input-property-renamed
Callers still sending the old name must switch to the new one; the parameter itself is unchanged.
credentialed
#
complete_query_tuning inputshouldDeleteTemporaryBranch
their contract · 2026-08-28
{"name":"shouldDeleteTemporaryBranch","schema":{"default":true,"description":"Whether to delete the temporary branch after tun…","type":"boolean"}}
their contract · 2026-08-29
{"name":"should_delete_temporary_branch","schema":{"default":true,"description":"Whether to delete the temporary branch after tun…","type":"boolean"}}
location
input.shouldDeleteTemporaryBranch
full fragment
{"name":"shouldDeleteTemporaryBranch","schema":{"default":true,"description":"Whether to delete the temporary branch after tuning","type":"boolean"}}{"name":"should_delete_temporary_branch","schema":{"default":true,"description":"Whether to delete the temporary branch after tuning","type":"boolean"}}
info
input
input-property-renamed
Callers still sending the old name must switch to the new one; the parameter itself is unchanged.
credentialed
#
complete_query_tuning inputsuggestedSqlStatements
their contract · 2026-08-28
{"name":"suggestedSqlStatements","schema":{"description":"The SQL DDL statements to execute to improve per…","items":{…},"type":"array"}}
their contract · 2026-08-29
{"name":"suggested_sql_statements","schema":{"description":"The SQL DDL statements to execute to improve per…","items":{…},"type":"array"}}
location
input.suggestedSqlStatements
full fragment
{"name":"suggestedSqlStatements","schema":{"description":"The SQL DDL statements to execute to improve performance. These statements are the result of the prior steps, for example creating additional indexes.","items":{"type":"string"},"type":"array"}}{"name":"suggested_sql_statements","schema":{"description":"The SQL DDL statements to execute to improve performance. These statements are the result of the prior steps, for example creating additional indexes.","items":{"type":"string"},"type":"array"}}
info
input
input-property-renamed
Callers still sending the old name must switch to the new one; the parameter itself is unchanged.
credentialed
#
complete_query_tuning inputtemporaryBranchId
their contract · 2026-08-28
{"name":"temporaryBranchId","schema":{"description":"The ID of the temporary branch that needs to be …","type":"string"}}
their contract · 2026-08-29
{"name":"temporary_branch_id","schema":{"description":"The ID of the temporary branch that needs to be …","type":"string"}}
location
input.temporaryBranchId
full fragment
{"name":"temporaryBranchId","schema":{"description":"The ID of the temporary branch that needs to be deleted after tuning.","type":"string"}}{"name":"temporary_branch_id","schema":{"description":"The ID of the temporary branch that needs to be deleted after tuning.","type":"string"}}
info
input
input-property-renamed
Callers still sending the old name must switch to the new one; the parameter itself is unchanged.
credentialed
#
complete_query_tuning inputtuningId
their contract · 2026-08-28
{"name":"tuningId","schema":{"description":"The ID of the tuning to complete. This is NOT th…","type":"string"}}
their contract · 2026-08-29
{"name":"tuning_id","schema":{"description":"The ID of the tuning to complete. This is NOT th…","type":"string"}}
location
input.tuningId
full fragment
{"name":"tuningId","schema":{"description":"The ID of the tuning to complete. This is NOT the branch ID. Remember this ID from the prior step using tool prepare_query_tuning.","type":"string"}}{"name":"tuning_id","schema":{"description":"The ID of the tuning to complete. This is NOT the branch ID. Remember this ID from the prior step using tool prepare_query_tuning.","type":"string"}}
breaking
catalog
operation-removed
Every call to that tool now fails; an agent that learned it yesterday has nothing to call today.
credentialed
#
configure_neon_auth
their contract · 2026-08-28
"configure_neon_auth"
their contract · 2026-08-29
absent
warning
wording
description-changed
The wording an agent reads to choose and call the tool changed; its behaviour may or may not have.
credentialed
#
create_branch description
info
input
input-optional-property-removed
Depending on whether the new schema forbids unknown fields, a caller still sending it is ignored or rejected; the row says which.
credentialed
#
create_branch inputbranchName
their contract · 2026-08-28
{"description":"An optional name for the branch","type":"string"}
their contract · 2026-08-29
absent
location
input.branchName
info
input
input-optional-property-removed
Depending on whether the new schema forbids unknown fields, a caller still sending it is ignored or rejected; the row says which.
credentialed
#
create_branch inputexpiresAt
their contract · 2026-08-28
{"description":"An optional ISO 8601 timestamp after which Neon …","type":"string"}
their contract · 2026-08-29
absent
location
input.expiresAt
full fragment
{"description":"An optional ISO 8601 timestamp after which Neon automatically deletes the branch.","type":"string"}
info
input
input-property-renamed
Callers still sending the old name must switch to the new one; the parameter itself is unchanged.
credentialed
#
create_branch inputparentId
their contract · 2026-08-28
{"name":"parentId","schema":{"description":"An optional branch ID (e.g. 'br-...') to branch …","type":"string"}}
their contract · 2026-08-29
{"name":"parent_id","schema":{"pattern":"^[a-z0-9-]{1,60}$","type":"string"}}
location
input.parentId
full fragment
{"name":"parentId","schema":{"description":"An optional branch ID (e.g. 'br-...') to branch from. If omitted, the branch is created from the project's default branch. Use this to fork an existing non-default branch — for example, to make an isolated copy of a dev/staging branch for experimentation.","type":"string"}}{"name":"parent_id","schema":{"pattern":"^[a-z0-9-]{1,60}$","type":"string"}}
info
input
input-property-renamed
Callers still sending the old name must switch to the new one; the parameter itself is unchanged.
credentialed
#
create_branch inputprojectId
their contract · 2026-08-28
{"name":"projectId","schema":{"description":"The ID of the project to create the branch in","type":"string"}}
their contract · 2026-08-29
{"name":"project_id","schema":{"pattern":"^[a-z0-9-]{1,60}$","type":"string"}}
location
input.projectId
warning
wording
description-changed
The wording an agent reads to choose and call the tool changed; its behaviour may or may not have.
credentialed
#
create_project description
warning
wording
description-changed
The wording an agent reads to choose and call the tool changed; its behaviour may or may not have.
credentialed
#
delete_branch description
[…] data. NEVER run autonomously; always ask the user first. For deleting an entire the whole project, use `delete_project` instead. <notice> Notice: Write mode active. Destructive tools are exposed. For tools with `destructiveHint: true`, NEVER invoke autonomously; always ask the user first. </notice> `delete_project`. branch_id is a branch id (br-...), not a branch name. Call list_branches to resolve a name.
info
input
input-property-renamed
Callers still sending the old name must switch to the new one; the parameter itself is unchanged.
credentialed
#
delete_branch inputbranchId
their contract · 2026-08-28
{"name":"branchId","schema":{"description":"The ID of the branch to delete","type":"string"}}
their contract · 2026-08-29
{"name":"branch_id","schema":{"pattern":"^[a-z0-9-]{1,60}$","type":"string"}}
location
input.branchId
info
input
input-property-renamed
Callers still sending the old name must switch to the new one; the parameter itself is unchanged.
credentialed
#
delete_branch inputprojectId
their contract · 2026-08-28
{"name":"projectId","schema":{"description":"The ID of the project containing the branch","type":"string"}}
their contract · 2026-08-29
{"name":"project_id","schema":{"pattern":"^[a-z0-9-]{1,60}$","type":"string"}}
location
input.projectId
warning
wording
description-changed
The wording an agent reads to choose and call the tool changed; its behaviour may or may not have.
credentialed
#
delete_project description
[…] data. NEVER run autonomously; always ask the user first. For removing a single branches, branch, use `delete_branch` instead. <notice> Notice: Write mode active. Destructive tools are exposed. For tools with `destructiveHint: true`, NEVER invoke autonomously; always ask the user first. </notice> `delete_branch`.
info
input
input-property-renamed
Callers still sending the old name must switch to the new one; the parameter itself is unchanged.
credentialed
#
delete_project inputprojectId
their contract · 2026-08-28
{"name":"projectId","schema":{"description":"The ID of the project to delete","type":"string"}}
their contract · 2026-08-29
{"name":"project_id","schema":{"pattern":"^[a-z0-9-]{1,60}$","type":"string"}}
location
input.projectId
warning
wording
description-changed
The wording an agent reads to choose and call the tool changed; its behaviour may or may not have.
credentialed
#
describe_branch description
[…] names (use `get_database_tables` instead) or column detail (use `describe_table_schema` instead). <notice> Notice: Write mode active. Destructive tools are exposed. For tools with `destructiveHint: true`, NEVER invoke autonomously; always ask the user first. </notice>
info
input
input-property-renamed
Callers still sending the old name must switch to the new one; the parameter itself is unchanged.
credentialed
#
describe_branch inputbranchId
their contract · 2026-08-28
{"name":"branchId","schema":{"description":"An ID of the branch to describe","type":"string"}}
their contract · 2026-08-29
{"name":"branch_id","schema":{"description":"An ID of the branch to describe","type":"string"}}
location
input.branchId
info
input
input-property-renamed
Callers still sending the old name must switch to the new one; the parameter itself is unchanged.
credentialed
#
describe_branch inputdatabaseName
their contract · 2026-08-28
{"name":"databaseName","schema":{"description":"The name of the database. If not provided, the d…","type":"string"}}
their contract · 2026-08-29
{"name":"database_name","schema":{"description":"The name of the database. If not provided, the d…","type":"string"}}
location
input.databaseName
full fragment
{"name":"databaseName","schema":{"description":"The name of the database. If not provided, the default neondb or first available database is used.","type":"string"}}{"name":"database_name","schema":{"description":"The name of the database. If not provided, the default neondb or first available database is used.","type":"string"}}
info
input
input-property-renamed
Callers still sending the old name must switch to the new one; the parameter itself is unchanged.
credentialed
#
describe_branch inputprojectId
their contract · 2026-08-28
{"name":"projectId","schema":{"description":"The ID of the project","type":"string"}}
their contract · 2026-08-29
{"name":"project_id","schema":{"description":"The ID of the project","type":"string"}}
location
input.projectId
warning
wording
description-changed
The wording an agent reads to choose and call the tool changed; its behaviour may or may not have.
credentialed
#
describe_project description
info
input
input-property-renamed
Callers still sending the old name must switch to the new one; the parameter itself is unchanged.
credentialed
#
describe_project inputprojectId
their contract · 2026-08-28
{"name":"projectId","schema":{"description":"The ID of the project to describe","type":"string"}}
their contract · 2026-08-29
{"name":"project_id","schema":{"pattern":"^[a-z0-9-]{1,60}$","type":"string"}}
location
input.projectId
warning
wording
description-changed
The wording an agent reads to choose and call the tool changed; its behaviour may or may not have.
credentialed
#
describe_table_schema description
[…] you need all tables in a database (use `get_database_tables` instead). <notice> Notice: Write mode active. Destructive tools are exposed. For tools with `destructiveHint: true`, NEVER invoke autonomously; always ask the user first. </notice>
info
input
input-property-renamed
Callers still sending the old name must switch to the new one; the parameter itself is unchanged.
credentialed
#
describe_table_schema inputbranchId
their contract · 2026-08-28
{"name":"branchId","schema":{"description":"An optional ID of the branch to execute the quer…","type":"string"}}
their contract · 2026-08-29
{"name":"branch_id","schema":{"description":"An optional ID of the branch to execute the quer…","type":"string"}}
location
input.branchId
full fragment
{"name":"branchId","schema":{"description":"An optional ID of the branch to execute the query against. If not provided the default branch is used.","type":"string"}}{"name":"branch_id","schema":{"description":"An optional ID of the branch to execute the query against. If not provided the default branch is used.","type":"string"}}
info
input
input-property-renamed
Callers still sending the old name must switch to the new one; the parameter itself is unchanged.
credentialed
#
describe_table_schema inputdatabaseName
their contract · 2026-08-28
{"name":"databaseName","schema":{"description":"The name of the database. If not provided, the d…","type":"string"}}
their contract · 2026-08-29
{"name":"database_name","schema":{"description":"The name of the database. If not provided, the d…","type":"string"}}
location
input.databaseName
full fragment
{"name":"databaseName","schema":{"description":"The name of the database. If not provided, the default neondb or first available database is used.","type":"string"}}{"name":"database_name","schema":{"description":"The name of the database. If not provided, the default neondb or first available database is used.","type":"string"}}
info
input
input-property-renamed
Callers still sending the old name must switch to the new one; the parameter itself is unchanged.
credentialed
#
describe_table_schema inputprojectId
their contract · 2026-08-28
{"name":"projectId","schema":{"description":"The ID of the project to execute the query again…","type":"string"}}
their contract · 2026-08-29
{"name":"project_id","schema":{"description":"The ID of the project to execute the query again…","type":"string"}}
location
input.projectId
full fragment
{"name":"projectId","schema":{"description":"The ID of the project to execute the query against","type":"string"}}{"name":"project_id","schema":{"description":"The ID of the project to execute the query against","type":"string"}}
info
input
input-property-renamed
Callers still sending the old name must switch to the new one; the parameter itself is unchanged.
credentialed
#
describe_table_schema inputtableName
their contract · 2026-08-28
{"name":"tableName","schema":{"description":"The table name, optionally schema-qualified (for…","type":"string"}}
their contract · 2026-08-29
{"name":"table_name","schema":{"description":"The table name, optionally schema-qualified (for…","type":"string"}}
location
input.tableName
full fragment
{"name":"tableName","schema":{"description":"The table name, optionally schema-qualified (for example, crm.contacts)","type":"string"}}{"name":"table_name","schema":{"description":"The table name, optionally schema-qualified (for example, crm.contacts)","type":"string"}}
warning
wording
description-changed
The wording an agent reads to choose and call the tool changed; its behaviour may or may not have.
credentialed
#
explain_sql_statement description
[…] need to execute the query for results (use `run_sql` instead). <notice> Notice: Write mode active. Destructive tools are exposed. For tools with `destructiveHint: true`, NEVER invoke autonomously; always ask the user first. </notice>
info
input
input-property-renamed
Callers still sending the old name must switch to the new one; the parameter itself is unchanged.
credentialed
#
explain_sql_statement inputbranchId
their contract · 2026-08-28
{"name":"branchId","schema":{"description":"An optional ID of the branch to execute the quer…","type":"string"}}
their contract · 2026-08-29
{"name":"branch_id","schema":{"description":"An optional ID of the branch to execute the quer…","type":"string"}}
location
input.branchId
full fragment
{"name":"branchId","schema":{"description":"An optional ID of the branch to execute the query against. If not provided the default branch is used.","type":"string"}}{"name":"branch_id","schema":{"description":"An optional ID of the branch to execute the query against. If not provided the default branch is used.","type":"string"}}
info
input
input-property-renamed
Callers still sending the old name must switch to the new one; the parameter itself is unchanged.
credentialed
#
explain_sql_statement inputdatabaseName
their contract · 2026-08-28
{"name":"databaseName","schema":{"description":"The name of the database. If not provided, the d…","type":"string"}}
their contract · 2026-08-29
{"name":"database_name","schema":{"description":"The name of the database. If not provided, the d…","type":"string"}}
location
input.databaseName
full fragment
{"name":"databaseName","schema":{"description":"The name of the database. If not provided, the default neondb or first available database is used.","type":"string"}}{"name":"database_name","schema":{"description":"The name of the database. If not provided, the default neondb or first available database is used.","type":"string"}}
info
input
input-property-renamed
Callers still sending the old name must switch to the new one; the parameter itself is unchanged.
credentialed
#
explain_sql_statement inputprojectId
their contract · 2026-08-28
{"name":"projectId","schema":{"description":"The ID of the project to execute the query again…","type":"string"}}
their contract · 2026-08-29
{"name":"project_id","schema":{"description":"The ID of the project to execute the query again…","type":"string"}}
location
input.projectId
full fragment
{"name":"projectId","schema":{"description":"The ID of the project to execute the query against","type":"string"}}{"name":"project_id","schema":{"description":"The ID of the project to execute the query against","type":"string"}}
warning
wording
description-changed
The wording an agent reads to choose and call the tool changed; its behaviour may or may not have.
credentialed
#
fetch description
[…] or branch using the ID returned by the `search` tool. <notice> Notice: Write mode active. Destructive tools are exposed. For tools with `destructiveHint: true`, NEVER invoke autonomously; always ask the user first. </notice>
warning
wording
description-changed
The wording an agent reads to choose and call the tool changed; its behaviour may or may not have.
credentialed
#
get_connection_string description
Get a PostgreSQL connection string for a Neon database. The branch must have a compute endpoint. `create_project` and `create_branch` do not return one; call this after they succeed. All parameters are optional; the tool resolves the project, branch, […] who needs a DATABASE_URL must copy it from https://console.neon.tech manually. <notice> Notice: Write mode active. Destructive tools are exposed. For tools with `destructiveHint: true`, NEVER invoke autonomously; always ask the user first. </notice>
info
input
input-property-renamed
Callers still sending the old name must switch to the new one; the parameter itself is unchanged.
credentialed
#
get_connection_string inputbranchId
their contract · 2026-08-28
{"name":"branchId","schema":{"description":"The ID or name of the branch. If not provided, t…","type":"string"}}
their contract · 2026-08-29
{"name":"branch_id","schema":{"description":"The ID or name of the branch. If not provided, t…","type":"string"}}
location
input.branchId
full fragment
{"name":"branchId","schema":{"description":"The ID or name of the branch. If not provided, the default branch will be used.","type":"string"}}{"name":"branch_id","schema":{"description":"The ID or name of the branch. If not provided, the default branch will be used.","type":"string"}}
info
input
input-property-renamed
Callers still sending the old name must switch to the new one; the parameter itself is unchanged.
credentialed
#
get_connection_string inputcomputeId
their contract · 2026-08-28
{"name":"computeId","schema":{"description":"The ID of the compute/endpoint. If not provided,…","type":"string"}}
their contract · 2026-08-29
{"name":"compute_id","schema":{"description":"The ID of the compute/endpoint. If not provided,…","type":"string"}}
location
input.computeId
full fragment
{"name":"computeId","schema":{"description":"The ID of the compute/endpoint. If not provided, the read-write compute associated with the branch will be used.","type":"string"}}{"name":"compute_id","schema":{"description":"The ID of the compute/endpoint. If not provided, the read-write compute associated with the branch will be used.","type":"string"}}
info
input
input-property-renamed
Callers still sending the old name must switch to the new one; the parameter itself is unchanged.
credentialed
#
get_connection_string inputdatabaseName
their contract · 2026-08-28
{"name":"databaseName","schema":{"description":"The name of the database. If not provided, the d…","type":"string"}}
their contract · 2026-08-29
{"name":"database_name","schema":{"description":"The name of the database. If not provided, the d…","type":"string"}}
location
input.databaseName
full fragment
{"name":"databaseName","schema":{"description":"The name of the database. If not provided, the default neondb or first available database is used.","type":"string"}}{"name":"database_name","schema":{"description":"The name of the database. If not provided, the default neondb or first available database is used.","type":"string"}}
info
input
input-property-renamed
Callers still sending the old name must switch to the new one; the parameter itself is unchanged.
credentialed
#
get_connection_string inputprojectId
their contract · 2026-08-28
{"name":"projectId","schema":{"description":"The ID of the project. If not provided, the only…","type":"string"}}
their contract · 2026-08-29
{"name":"project_id","schema":{"description":"The ID of the project. If not provided, the only…","type":"string"}}
location
input.projectId
full fragment
{"name":"projectId","schema":{"description":"The ID of the project. If not provided, the only available project will be used.","type":"string"}}{"name":"project_id","schema":{"description":"The ID of the project. If not provided, the only available project will be used.","type":"string"}}
info
input
input-property-renamed
Callers still sending the old name must switch to the new one; the parameter itself is unchanged.
credentialed
#
get_connection_string inputroleName
their contract · 2026-08-28
{"name":"roleName","schema":{"description":"The name of the role to connect with. If not pro…","type":"string"}}
their contract · 2026-08-29
{"name":"role_name","schema":{"description":"The name of the role to connect with. If not pro…","type":"string"}}
location
input.roleName
full fragment
{"name":"roleName","schema":{"description":"The name of the role to connect with. If not provided, the database owner name will be used.","type":"string"}}{"name":"role_name","schema":{"description":"The name of the role to connect with. If not provided, the database owner name will be used.","type":"string"}}
warning
wording
description-changed
The wording an agent reads to choose and call the tool changed; its behaviour may or may not have.
credentialed
#
get_database_tables description
[…] need column-level detail for a specific table (use `describe_table_schema` instead). <notice> Notice: Write mode active. Destructive tools are exposed. For tools with `destructiveHint: true`, NEVER invoke autonomously; always ask the user first. </notice>
info
input
input-property-renamed
Callers still sending the old name must switch to the new one; the parameter itself is unchanged.
credentialed
#
get_database_tables inputbranchId
their contract · 2026-08-28
{"name":"branchId","schema":{"description":"An optional ID of the branch. If not provided th…","type":"string"}}
their contract · 2026-08-29
{"name":"branch_id","schema":{"description":"An optional ID of the branch. If not provided th…","type":"string"}}
location
input.branchId
full fragment
{"name":"branchId","schema":{"description":"An optional ID of the branch. If not provided the default branch is used.","type":"string"}}{"name":"branch_id","schema":{"description":"An optional ID of the branch. If not provided the default branch is used.","type":"string"}}
info
input
input-property-renamed
Callers still sending the old name must switch to the new one; the parameter itself is unchanged.
credentialed
#
get_database_tables inputdatabaseName
their contract · 2026-08-28
{"name":"databaseName","schema":{"description":"The name of the database. If not provided, the d…","type":"string"}}
their contract · 2026-08-29
{"name":"database_name","schema":{"description":"The name of the database. If not provided, the d…","type":"string"}}
location
input.databaseName
full fragment
{"name":"databaseName","schema":{"description":"The name of the database. If not provided, the default neondb or first available database is used.","type":"string"}}{"name":"database_name","schema":{"description":"The name of the database. If not provided, the default neondb or first available database is used.","type":"string"}}
info
input
input-property-renamed
Callers still sending the old name must switch to the new one; the parameter itself is unchanged.
credentialed
#
get_database_tables inputprojectId
their contract · 2026-08-28
{"name":"projectId","schema":{"description":"The ID of the project","type":"string"}}
their contract · 2026-08-29
{"name":"project_id","schema":{"description":"The ID of the project","type":"string"}}
location
input.projectId
warning
wording
description-changed
The wording an agent reads to choose and call the tool changed; its behaviour may or may not have.
credentialed
#
get_doc_resource description
warning
wording
description-changed
The wording an agent reads to choose and call the tool changed; its behaviour may or may not have.
credentialed
#
get_neon_auth_config description
Read full Neon Auth configuration for a branch. Do not use when you need to update config (use `configure_neon_auth` instead). Requires Neon Auth to be provisioned first (use `provision_neon_auth`). Returns Neon Auth (Better Auth) for a branch as one JSON object: integration metadata (base_url, jwks_url, db_name, auth_provider, branch_id, created_at, owned_by, transfer_status, auth_provider_project_id), branch_name from the Neon branch API, project_id and resolved branch_id, plus the same configurable fields as configure_neon_auth (trusted_origins, allow_localhost, auth_methods.email_password with enabled, allow_sign_up, verify_email_on_sign_up, verify_email_on_sign_in, email_verification_method, require_email_verification, auto_sign_in_after_verification, oauth_providers (id, type, client_id, client_secret), email_provider (discriminated by type)). Top-level base_url, jwks_url, and db_name duplicate integration for quick copy. Optional _errors records partial fetch failures for configurable slices. Secrets — OAuth client_secret and the SMTP password — are NEVER returned. When the upstream config indicates a secret is set, this endpoint surfaces it secrets redacted as the literal sentinel "***redacted***"; when no secret is set the field is null. Use the matching configure_neon_auth operations to write or rotate these values. <notice> Notice: Write mode active. Destructive tools are exposed. For tools with `destructiveHint: true`, NEVER invoke autonomously; always ask the user "***redacted***". Requires provision_neon_auth first. </notice>
info
input
input-property-renamed
Callers still sending the old name must switch to the new one; the parameter itself is unchanged.
credentialed
#
get_neon_auth_config inputbranchId
their contract · 2026-08-28
{"name":"branchId","schema":{"description":"Branch ID. If omitted, the project default branc…","type":"string"}}
their contract · 2026-08-29
{"name":"branch_id","schema":{"description":"Branch ID. If omitted, the project default branc…","type":"string"}}
location
input.branchId
full fragment
{"name":"branchId","schema":{"description":"Branch ID. If omitted, the project default branch is used (same as provision_neon_auth).","type":"string"}}{"name":"branch_id","schema":{"description":"Branch ID. If omitted, the project default branch is used (same as provision_neon_auth).","type":"string"}}
info
input
input-property-renamed
Callers still sending the old name must switch to the new one; the parameter itself is unchanged.
credentialed
#
get_neon_auth_config inputprojectId
their contract · 2026-08-28
{"name":"projectId","schema":{"description":"Neon project ID","type":"string"}}
their contract · 2026-08-29
{"name":"project_id","schema":{"description":"Neon project ID","type":"string"}}
location
input.projectId
warning
wording
description-changed
The wording an agent reads to choose and call the tool changed; its behaviour may or may not have.
credentialed
#
inspect_database description
info
input
input-property-renamed
Callers still sending the old name must switch to the new one; the parameter itself is unchanged.
credentialed
#
inspect_database inputbranchId
their contract · 2026-08-28
{"name":"branchId","schema":{"description":"An optional ID of the branch. If not provided th…","type":"string"}}
their contract · 2026-08-29
{"name":"branch_id","schema":{"description":"An optional ID of the branch. If not provided th…","type":"string"}}
location
input.branchId
full fragment
{"name":"branchId","schema":{"description":"An optional ID of the branch. If not provided the default branch is used.","type":"string"}}{"name":"branch_id","schema":{"description":"An optional ID of the branch. If not provided the default branch is used.","type":"string"}}
info
input
input-property-renamed
Callers still sending the old name must switch to the new one; the parameter itself is unchanged.
credentialed
#
inspect_database inputcomputeId
their contract · 2026-08-28
{"name":"computeId","schema":{"description":"The ID of the compute/endpoint. If not provided,…","type":"string"}}
their contract · 2026-08-29
{"name":"compute_id","schema":{"description":"The ID of the compute/endpoint. If not provided,…","type":"string"}}
location
input.computeId
full fragment
{"name":"computeId","schema":{"description":"The ID of the compute/endpoint. If not provided, the read-write compute associated with the branch will be used.","type":"string"}}{"name":"compute_id","schema":{"description":"The ID of the compute/endpoint. If not provided, the read-write compute associated with the branch will be used.","type":"string"}}
info
input
input-property-renamed
Callers still sending the old name must switch to the new one; the parameter itself is unchanged.
credentialed
#
inspect_database inputdatabaseName
their contract · 2026-08-28
{"name":"databaseName","schema":{"description":"Database to inspect. Omit to cover every databas…","minLength":1,"type":"string"}}
their contract · 2026-08-29
{"name":"database_name","schema":{"description":"For a database-scoped check, the database to ins…","minLength":1,"type":"string"}}
location
input.databaseName
full fragment
{"name":"databaseName","schema":{"description":"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. Compute-wide checks run once against the first listed database. The response `limit` applies to the combined rows after that.","minLength":1,"type":"string"}}{"name":"database_name","schema":{"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.","minLength":1,"type":"string"}}
info
input
input-property-renamed
Callers still sending the old name must switch to the new one; the parameter itself is unchanged.
credentialed
#
inspect_database inputprojectId
their contract · 2026-08-28
{"name":"projectId","schema":{"description":"The ID of the project to inspect","type":"string"}}
their contract · 2026-08-29
{"name":"project_id","schema":{"description":"The ID of the project to inspect","type":"string"}}
location
input.projectId
warning
wording
description-changed
The wording an agent reads to choose and call the tool changed; its behaviour may or may not have.
credentialed
#
list_branch_computes description
info
input
input-property-renamed
Callers still sending the old name must switch to the new one; the parameter itself is unchanged.
credentialed
#
list_branch_computes inputbranchId
their contract · 2026-08-28
{"name":"branchId","schema":{"description":"The ID of the branch. If provided, endpoints for…","type":"string"}}
their contract · 2026-08-29
{"name":"branch_id","schema":{"pattern":"^[a-z0-9-]{1,60}$","type":"string"}}
location
input.branchId
full fragment
{"name":"branchId","schema":{"description":"The ID of the branch. If provided, endpoints for this specific branch will be listed.","type":"string"}}{"name":"branch_id","schema":{"pattern":"^[a-z0-9-]{1,60}$","type":"string"}}
info
input
input-property-renamed
Callers still sending the old name must switch to the new one; the parameter itself is unchanged.
credentialed
#
list_branch_computes inputprojectId
their contract · 2026-08-28
{"name":"projectId","schema":{"description":"The ID of the project. If not provided, the only…","type":"string"}}
their contract · 2026-08-29
{"name":"project_id","schema":{"pattern":"^[a-z0-9-]{1,60}$","type":"string"}}
location
input.projectId
full fragment
{"name":"projectId","schema":{"description":"The ID of the project. If not provided, the only available project will be used.","type":"string"}}{"name":"project_id","schema":{"pattern":"^[a-z0-9-]{1,60}$","type":"string"}}
warning
wording
description-changed
The wording an agent reads to choose and call the tool changed; its behaviour may or may not have.
credentialed
#
list_docs_resources description
warning
wording
description-changed
The wording an agent reads to choose and call the tool changed; its behaviour may or may not have.
credentialed
#
list_log_field_values description
info
input
input-property-renamed
Callers still sending the old name must switch to the new one; the parameter itself is unchanged.
credentialed
#
list_log_field_values inputbranchId
their contract · 2026-08-28
{"name":"branchId","schema":{"description":"The ID of the branch. Defaults to the project's …","type":"string"}}
their contract · 2026-08-29
{"name":"branch_id","schema":{"pattern":"^[a-z0-9-]{1,60}$","type":"string"}}
location
input.branchId
full fragment
{"name":"branchId","schema":{"description":"The ID of the branch. Defaults to the project's default branch.","type":"string"}}{"name":"branch_id","schema":{"pattern":"^[a-z0-9-]{1,60}$","type":"string"}}
info
input
input-required-property-removed
Callers can stop sending it; a server that rejects unknown fields rejects callers that do not.
credentialed
#
list_log_field_values inputfield
their contract · 2026-08-28
{"description":"The log field (label) whose distinct values to l…","minLength":1,"type":"string"}
their contract · 2026-08-29
absent
location
input.field
full fragment
{"description":"The log field (label) whose distinct values to list, e.g. \"service_name\" or \"severity_text\". Use list_log_fields to discover valid field names.","minLength":1,"type":"string"}
info
input
input-property-renamed
Callers still sending the old name must switch to the new one; the parameter itself is unchanged.
credentialed
#
list_log_field_values inputprojectId
their contract · 2026-08-28
{"name":"projectId","schema":{"description":"The ID of the project. Defaults to your only pro…","type":"string"}}
their contract · 2026-08-29
{"name":"project_id","schema":{"pattern":"^[a-z0-9-]{1,60}$","type":"string"}}
location
input.projectId
full fragment
{"name":"projectId","schema":{"description":"The ID of the project. Defaults to your only project if unambiguous.","type":"string"}}{"name":"project_id","schema":{"pattern":"^[a-z0-9-]{1,60}$","type":"string"}}
warning
input
input-required-property-added
A caller that does not send the new field is rejected, with no change on its own side.
credentialed
#
list_log_field_values inputfield_name
their contract · 2026-08-28
absent
their contract · 2026-08-29
{"minLength":1,"type":"string"}
location
input.field_name
warning
wording
description-changed
The wording an agent reads to choose and call the tool changed; its behaviour may or may not have.
credentialed
#
list_log_fields description
info
input
input-property-renamed
Callers still sending the old name must switch to the new one; the parameter itself is unchanged.
credentialed
#
list_log_fields inputbranchId
their contract · 2026-08-28
{"name":"branchId","schema":{"description":"The ID of the branch. Defaults to the project's …","type":"string"}}
their contract · 2026-08-29
{"name":"branch_id","schema":{"pattern":"^[a-z0-9-]{1,60}$","type":"string"}}
location
input.branchId
full fragment
{"name":"branchId","schema":{"description":"The ID of the branch. Defaults to the project's default branch.","type":"string"}}{"name":"branch_id","schema":{"pattern":"^[a-z0-9-]{1,60}$","type":"string"}}
info
input
input-property-renamed
Callers still sending the old name must switch to the new one; the parameter itself is unchanged.
credentialed
#
list_log_fields inputprojectId
their contract · 2026-08-28
{"name":"projectId","schema":{"description":"The ID of the project. Defaults to your only pro…","type":"string"}}
their contract · 2026-08-29
{"name":"project_id","schema":{"pattern":"^[a-z0-9-]{1,60}$","type":"string"}}
location
input.projectId
full fragment
{"name":"projectId","schema":{"description":"The ID of the project. Defaults to your only project if unambiguous.","type":"string"}}{"name":"project_id","schema":{"pattern":"^[a-z0-9-]{1,60}$","type":"string"}}
warning
wording
description-changed
The wording an agent reads to choose and call the tool changed; its behaviour may or may not have.
credentialed
#
list_organizations description
[…] Supports optional `search` parameter to filter by name or ID. <notice> Notice: Write mode active. Destructive tools are exposed. For tools with `destructiveHint: true`, NEVER invoke autonomously; always ask the user first. </notice>
warning
wording
description-changed
The wording an agent reads to choose and call the tool changed; its behaviour may or may not have.
credentialed
#
list_projects description
List Neon projects in your account. Do not use for projects shared with you (use `list_shared_projects` instead). Supports optional `search` (filter by name or ID) and `limit` (default 10) parameters. <notice> Notice: Write mode active. Destructive tools are exposed. For tools own. Returns every page. Pass limit to cap how many. There is no `cursor` argument. Pass `org_id` with `destructiveHint: true`, NEVER invoke autonomously; always ask the user first. </notice> a personal API key to list that org's projects.
info
input
input-optional-property-removed
Depending on whether the new schema forbids unknown fields, a caller still sending it is ignored or rejected; the row says which.
credentialed
#
list_projects inputcursor
their contract · 2026-08-28
{"description":"Specify the cursor value from the previous respo…","type":"string"}
their contract · 2026-08-29
absent
location
input.cursor
full fragment
{"description":"Specify the cursor value from the previous response to retrieve the next batch of projects.","type":"string"}list_projects inputlimit
their contract · 2026-08-28
{"type":"number"}
their contract · 2026-08-29
{"type":"integer"}
location
input.limit
breaking
catalog
operation-removed
Every call to that tool now fails; an agent that learned it yesterday has nothing to call today.
credentialed
#
list_shared_projects
their contract · 2026-08-28
"list_shared_projects"
their contract · 2026-08-29
absent
warning
wording
description-changed
The wording an agent reads to choose and call the tool changed; its behaviour may or may not have.
credentialed
#
list_slow_queries description
info
input
input-property-renamed
Callers still sending the old name must switch to the new one; the parameter itself is unchanged.
credentialed
#
list_slow_queries inputbranchId
their contract · 2026-08-28
{"name":"branchId","schema":{"description":"An optional ID of the branch. If not provided th…","type":"string"}}
their contract · 2026-08-29
{"name":"branch_id","schema":{"description":"An optional ID of the branch. If not provided th…","type":"string"}}
location
input.branchId
full fragment
{"name":"branchId","schema":{"description":"An optional ID of the branch. If not provided the default branch is used.","type":"string"}}{"name":"branch_id","schema":{"description":"An optional ID of the branch. If not provided the default branch is used.","type":"string"}}
info
input
input-property-renamed
Callers still sending the old name must switch to the new one; the parameter itself is unchanged.
credentialed
#
list_slow_queries inputcomputeId
their contract · 2026-08-28
{"name":"computeId","schema":{"description":"The ID of the compute/endpoint. If not provided,…","type":"string"}}
their contract · 2026-08-29
{"name":"compute_id","schema":{"description":"The ID of the compute/endpoint. If not provided,…","type":"string"}}
location
input.computeId
full fragment
{"name":"computeId","schema":{"description":"The ID of the compute/endpoint. If not provided, the read-write compute associated with the branch will be used.","type":"string"}}{"name":"compute_id","schema":{"description":"The ID of the compute/endpoint. If not provided, the read-write compute associated with the branch will be used.","type":"string"}}
info
input
input-property-renamed
Callers still sending the old name must switch to the new one; the parameter itself is unchanged.
credentialed
#
list_slow_queries inputdatabaseName
their contract · 2026-08-28
{"name":"databaseName","schema":{"description":"The name of the database. If not provided, the d…","type":"string"}}
their contract · 2026-08-29
{"name":"database_name","schema":{"description":"The name of the database. If not provided, the d…","type":"string"}}
location
input.databaseName
full fragment
{"name":"databaseName","schema":{"description":"The name of the database. If not provided, the default neondb or first available database is used.","type":"string"}}{"name":"database_name","schema":{"description":"The name of the database. If not provided, the default neondb or first available database is used.","type":"string"}}
info
input
input-property-renamed
Callers still sending the old name must switch to the new one; the parameter itself is unchanged.
credentialed
#
list_slow_queries inputminExecutionTime
their contract · 2026-08-28
{"name":"minExecutionTime","schema":{"default":1000,"description":"Minimum execution time in milliseconds to consid…","type":"number"}}
their contract · 2026-08-29
{"name":"min_execution_time","schema":{"default":1000,"description":"Minimum execution time in milliseconds to consid…","type":"number"}}
location
input.minExecutionTime
full fragment
{"name":"minExecutionTime","schema":{"default":1000,"description":"Minimum execution time in milliseconds to consider a query as slow","type":"number"}}{"name":"min_execution_time","schema":{"default":1000,"description":"Minimum execution time in milliseconds to consider a query as slow","type":"number"}}
info
input
input-property-renamed
Callers still sending the old name must switch to the new one; the parameter itself is unchanged.
credentialed
#
list_slow_queries inputprojectId
their contract · 2026-08-28
{"name":"projectId","schema":{"description":"The ID of the project to list slow queries from","type":"string"}}
their contract · 2026-08-29
{"name":"project_id","schema":{"description":"The ID of the project to list slow queries from","type":"string"}}
location
input.projectId
warning
wording
description-changed
The wording an agent reads to choose and call the tool changed; its behaviour may or may not have.
credentialed
#
prepare_database_migration description
info
input
input-property-renamed
Callers still sending the old name must switch to the new one; the parameter itself is unchanged.
credentialed
#
prepare_database_migration inputdatabaseName
their contract · 2026-08-28
{"name":"databaseName","schema":{"description":"The name of the database. If not provided, the d…","type":"string"}}
their contract · 2026-08-29
{"name":"database_name","schema":{"description":"The name of the database. If not provided, the d…","type":"string"}}
location
input.databaseName
full fragment
{"name":"databaseName","schema":{"description":"The name of the database. If not provided, the default neondb or first available database is used.","type":"string"}}{"name":"database_name","schema":{"description":"The name of the database. If not provided, the default neondb or first available database is used.","type":"string"}}
info
input
input-property-renamed
Callers still sending the old name must switch to the new one; the parameter itself is unchanged.
credentialed
#
prepare_database_migration inputmigrationSql
their contract · 2026-08-28
{"name":"migrationSql","schema":{"description":"The SQL to execute to create the migration","type":"string"}}
their contract · 2026-08-29
{"name":"migration_sql","schema":{"description":"The SQL to execute to create the migration","type":"string"}}
location
input.migrationSql
info
input
input-property-renamed
Callers still sending the old name must switch to the new one; the parameter itself is unchanged.
credentialed
#
prepare_database_migration inputprojectId
their contract · 2026-08-28
{"name":"projectId","schema":{"description":"The ID of the project to execute the query again…","type":"string"}}
their contract · 2026-08-29
{"name":"project_id","schema":{"description":"The ID of the project to execute the query again…","type":"string"}}
location
input.projectId
full fragment
{"name":"projectId","schema":{"description":"The ID of the project to execute the query against","type":"string"}}{"name":"project_id","schema":{"description":"The ID of the project to execute the query against","type":"string"}}
warning
wording
description-changed
The wording an agent reads to choose and call the tool changed; its behaviour may or may not have.
credentialed
#
prepare_query_tuning description
info
input
input-property-renamed
Callers still sending the old name must switch to the new one; the parameter itself is unchanged.
credentialed
#
prepare_query_tuning inputdatabaseName
their contract · 2026-08-28
{"name":"databaseName","schema":{"description":"The name of the database to execute the query ag…","type":"string"}}
their contract · 2026-08-29
{"name":"database_name","schema":{"description":"The name of the database to execute the query ag…","type":"string"}}
location
input.databaseName
full fragment
{"name":"databaseName","schema":{"description":"The name of the database to execute the query against","type":"string"}}{"name":"database_name","schema":{"description":"The name of the database to execute the query against","type":"string"}}
info
input
input-property-renamed
Callers still sending the old name must switch to the new one; the parameter itself is unchanged.
credentialed
#
prepare_query_tuning inputprojectId
their contract · 2026-08-28
{"name":"projectId","schema":{"description":"The ID of the project to execute the query again…","type":"string"}}
their contract · 2026-08-29
{"name":"project_id","schema":{"description":"The ID of the project to execute the query again…","type":"string"}}
location
input.projectId
full fragment
{"name":"projectId","schema":{"description":"The ID of the project to execute the query against","type":"string"}}{"name":"project_id","schema":{"description":"The ID of the project to execute the query against","type":"string"}}
info
input
input-property-renamed
Callers still sending the old name must switch to the new one; the parameter itself is unchanged.
credentialed
#
prepare_query_tuning inputroleName
their contract · 2026-08-28
{"name":"roleName","schema":{"description":"The name of the role to connect with. If not pro…","type":"string"}}
their contract · 2026-08-29
{"name":"role_name","schema":{"description":"The name of the role to connect with. If not pro…","type":"string"}}
location
input.roleName
full fragment
{"name":"roleName","schema":{"description":"The name of the role to connect with. If not provided, the default role (usually \"neondb_owner\") will be used.","type":"string"}}{"name":"role_name","schema":{"description":"The name of the role to connect with. If not provided, the default role (usually \"neondb_owner\") will be used.","type":"string"}}
warning
wording
description-changed
The wording an agent reads to choose and call the tool changed; its behaviour may or may not have.
credentialed
#
provision_neon_auth description
info
input
input-property-renamed
Callers still sending the old name must switch to the new one; the parameter itself is unchanged.
credentialed
#
provision_neon_auth inputbranchId
their contract · 2026-08-28
{"name":"branchId","schema":{"description":"An optional ID of the branch to provision Neon A…","type":"string"}}
their contract · 2026-08-29
{"name":"branch_id","schema":{"pattern":"^[a-z0-9-]{1,60}$","type":"string"}}
location
input.branchId
full fragment
{"name":"branchId","schema":{"description":"An optional ID of the branch to provision Neon Auth for. If not provided, the default branch is used.","type":"string"}}{"name":"branch_id","schema":{"pattern":"^[a-z0-9-]{1,60}$","type":"string"}}
info
input
input-property-renamed
Callers still sending the old name must switch to the new one; the parameter itself is unchanged.
credentialed
#
provision_neon_auth inputdatabaseName
their contract · 2026-08-28
{"name":"databaseName","schema":{"description":"The database name to provision Neon Auth for. If…","type":"string"}}
their contract · 2026-08-29
{"name":"database_name","schema":{"type":"string"}}
location
input.databaseName
full fragment
{"name":"databaseName","schema":{"description":"The database name to provision Neon Auth for. If not provided, the default database is used.","type":"string"}}{"name":"database_name","schema":{"type":"string"}}
info
input
input-property-renamed
Callers still sending the old name must switch to the new one; the parameter itself is unchanged.
credentialed
#
provision_neon_auth inputprojectId
their contract · 2026-08-28
{"name":"projectId","schema":{"description":"The ID of the project to provision Neon Auth for","type":"string"}}
their contract · 2026-08-29
{"name":"project_id","schema":{"pattern":"^[a-z0-9-]{1,60}$","type":"string"}}
location
input.projectId
warning
input
input-required-property-added
A caller that does not send the new field is rejected, with no change on its own side.
credentialed
#
provision_neon_auth inputauth_provider
their contract · 2026-08-28
absent
their contract · 2026-08-29
{"enum":["mock","stack","better_auth"],"type":"string"}
location
input.auth_provider
warning
wording
description-changed
The wording an agent reads to choose and call the tool changed; its behaviour may or may not have.
credentialed
#
provision_neon_data_api description
warning
input
input-required-property-added
A caller that does not send the new field is rejected, with no change on its own side.
credentialed
#
provision_neon_data_api inputbranch_id
their contract · 2026-08-28
absent
their contract · 2026-08-29
{"pattern":"^[a-z0-9-]{1,60}$","type":"string"}
location
input.branch_id
warning
input
input-required-property-added
A caller that does not send the new field is rejected, with no change on its own side.
credentialed
#
provision_neon_data_api inputdatabase_name
their contract · 2026-08-28
absent
their contract · 2026-08-29
{"type":"string"}
location
input.database_name
warning
input
input-required-property-added
A caller that does not send the new field is rejected, with no change on its own side.
credentialed
#
provision_neon_data_api inputproject_id
their contract · 2026-08-28
absent
their contract · 2026-08-29
{"pattern":"^[a-z0-9-]{1,60}$","type":"string"}
location
input.project_id
warning
wording
description-changed
The wording an agent reads to choose and call the tool changed; its behaviour may or may not have.
credentialed
#
query_logs description
info
input
input-property-renamed
Callers still sending the old name must switch to the new one; the parameter itself is unchanged.
credentialed
#
query_logs inputbodyContains
their contract · 2026-08-28
{"name":"bodyContains","schema":{"description":"Return only logs whose rendered message contains…","minLength":1,"type":"string"}}
their contract · 2026-08-29
{"name":"body_contains","schema":{"minLength":1,"type":"string"}}
location
input.bodyContains
full fragment
{"name":"bodyContains","schema":{"description":"Return only logs whose rendered message contains this case-sensitive substring. Structured messages use compact JSON, so match JSON syntax such as `\"http_status\":200`, not prose such as `http_status: 200`.","minLength":1,"type":"string"}}{"name":"body_contains","schema":{"minLength":1,"type":"string"}}
info
input
input-property-renamed
Callers still sending the old name must switch to the new one; the parameter itself is unchanged.
credentialed
#
query_logs inputbranchId
their contract · 2026-08-28
{"name":"branchId","schema":{"description":"The ID of the branch whose logs to query. Defaul…","type":"string"}}
their contract · 2026-08-29
{"name":"branch_id","schema":{"pattern":"^[a-z0-9-]{1,60}$","type":"string"}}
location
input.branchId
full fragment
{"name":"branchId","schema":{"description":"The ID of the branch whose logs to query. Defaults to the project's default branch.","type":"string"}}{"name":"branch_id","schema":{"pattern":"^[a-z0-9-]{1,60}$","type":"string"}}
info
input
input-property-renamed
Callers still sending the old name must switch to the new one; the parameter itself is unchanged.
credentialed
#
query_logs inputendTime
their contract · 2026-08-28
{"name":"endTime","schema":{"description":"Absolute end of the window, RFC3339. Ends either…","type":"string"}}
their contract · 2026-08-29
{"name":"end_time","schema":{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]…","type":"string"}}
location
input.endTime
full fragment
{"name":"endTime","schema":{"description":"Absolute end of the window, RFC3339. Ends either a relative `since` window or an absolute `startTime` window; defaults to now.","type":"string"}}{"name":"end_time","schema":{"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))$","type":"string"}}
info
input
input-optional-property-removed
Depending on whether the new schema forbids unknown fields, a caller still sending it is ignored or rejected; the row says which.
credentialed
#
query_logs inputminSeverity
their contract · 2026-08-28
{"description":"Return only logs at this OTel severity level or …","enum":["trace","debug","info","warn","error","fatal"],"type":"string"}
their contract · 2026-08-29
absent
location
input.minSeverity
full fragment
{"description":"Return only logs at this OTel severity level or above (trace \u003c debug \u003c info \u003c warn \u003c error \u003c fatal). E.g. \"error\" returns ERROR and FATAL.","enum":["trace","debug","info","warn","error","fatal"],"type":"string"}
info
input
input-property-renamed
Callers still sending the old name must switch to the new one; the parameter itself is unchanged.
credentialed
#
query_logs inputprojectId
their contract · 2026-08-28
{"name":"projectId","schema":{"description":"The ID of the project whose logs to query. If om…","type":"string"}}
their contract · 2026-08-29
{"name":"project_id","schema":{"pattern":"^[a-z0-9-]{1,60}$","type":"string"}}
location
input.projectId
full fragment
{"name":"projectId","schema":{"description":"The ID of the project whose logs to query. If omitted and you have exactly one project, that project is used.","type":"string"}}{"name":"project_id","schema":{"pattern":"^[a-z0-9-]{1,60}$","type":"string"}}
info
input
input-optional-property-removed
Depending on whether the new schema forbids unknown fields, a caller still sending it is ignored or rejected; the row says which.
credentialed
#
query_logs inputquery
their contract · 2026-08-28
{"description":"Legacy compatibility alias for `logql`. Preserve…","minLength":1,"type":"string"}
their contract · 2026-08-29
absent
location
input.query
full fragment
{"description":"Legacy compatibility alias for `logql`. Preserves the previous behavior of overriding any structured filters. Do not supply both raw fields.","minLength":1,"type":"string"}
info
input
input-property-renamed
Callers still sending the old name must switch to the new one; the parameter itself is unchanged.
credentialed
#
query_logs inputserviceName
their contract · 2026-08-28
{"name":"serviceName","schema":{"description":"Filter to a specific OTel service name (service.…","minLength":1,"type":"string"}}
their contract · 2026-08-29
{"name":"service_name","schema":{"minLength":1,"type":"string"}}
location
input.serviceName
full fragment
{"name":"serviceName","schema":{"description":"Filter to a specific OTel service name (service.name).","minLength":1,"type":"string"}}{"name":"service_name","schema":{"minLength":1,"type":"string"}}
info
input
input-property-renamed
Callers still sending the old name must switch to the new one; the parameter itself is unchanged.
credentialed
#
query_logs inputseverityText
their contract · 2026-08-28
{"name":"severityText","schema":{"description":"Filter to an exact severity text (e.g. \"ERROR\").…","minLength":1,"type":"string"}}
their contract · 2026-08-29
{"name":"severity_text","schema":{"minLength":1,"type":"string"}}
location
input.severityText
full fragment
{"name":"severityText","schema":{"description":"Filter to an exact severity text (e.g. \"ERROR\"). Takes precedence over minSeverity.","minLength":1,"type":"string"}}{"name":"severity_text","schema":{"minLength":1,"type":"string"}}
info
input
input-property-renamed
Callers still sending the old name must switch to the new one; the parameter itself is unchanged.
credentialed
#
query_logs inputstartTime
their contract · 2026-08-28
{"name":"startTime","schema":{"description":"Absolute start of the window, RFC3339 (e.g. \"202…","type":"string"}}
their contract · 2026-08-29
{"name":"start_time","schema":{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]…","type":"string"}}
location
input.startTime
full fragment
{"name":"startTime","schema":{"description":"Absolute start of the window, RFC3339 (e.g. \"2026-07-16T09:00:00Z\"). Overrides `since`; the startTime/endTime window must not span more than seven days.","type":"string"}}{"name":"start_time","schema":{"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))$","type":"string"}}
info
input
input-property-renamed
Callers still sending the old name must switch to the new one; the parameter itself is unchanged.
credentialed
#
query_logs inputtraceId
their contract · 2026-08-28
{"name":"traceId","schema":{"description":"Correlate to a distributed trace: return only lo…","pattern":"^[0-9a-f]{32}$","type":"string"}}
their contract · 2026-08-29
{"name":"trace_id","schema":{"pattern":"^[0-9a-f]{32}$","type":"string"}}
location
input.traceId
full fragment
{"name":"traceId","schema":{"description":"Correlate to a distributed trace: return only logs with this trace_id.","pattern":"^[0-9a-f]{32}$","type":"string"}}{"name":"trace_id","schema":{"pattern":"^[0-9a-f]{32}$","type":"string"}}
warning
wording
description-changed
The wording an agent reads to choose and call the tool changed; its behaviour may or may not have.
credentialed
#
reset_from_parent description
Reset a branch to its parent's current state, discarding all changes made on HEAD. Discards every change the branch. branch has written since it diverged. NEVER run autonomously; always ask the user first. Use `preserveUnderName` to preserve `preserve_under_name` saves the current state under a new first and is required when the branch name before resetting. <notice> Notice: Write mode active. Destructive tools are exposed. For tools with `destructiveHint: true`, NEVER invoke autonomously; always ask has children; those children move to the user first. </notice> new branch. Point-in-time restore is `restore_snapshot`. branch_id is a branch id (br-...), not a branch name. Call list_branches to resolve a name.
info
input
input-required-property-removed
Callers can stop sending it; a server that rejects unknown fields rejects callers that do not.
credentialed
#
reset_from_parent inputbranchIdOrName
their contract · 2026-08-28
{"description":"The name or ID of the branch to reset from its p…","type":"string"}
their contract · 2026-08-29
absent
location
input.branchIdOrName
full fragment
{"description":"The name or ID of the branch to reset from its parent","type":"string"}
info
input
input-property-renamed
Callers still sending the old name must switch to the new one; the parameter itself is unchanged.
credentialed
#
reset_from_parent inputpreserveUnderName
their contract · 2026-08-28
{"name":"preserveUnderName","schema":{"description":"Optional name to preserve the current state unde…","type":"string"}}
their contract · 2026-08-29
{"name":"preserve_under_name","schema":{"description":"Name under which to save the current branch befo…","type":"string"}}
location
input.preserveUnderName
full fragment
{"name":"preserveUnderName","schema":{"description":"Optional name to preserve the current state under a new branch before resetting","type":"string"}}{"name":"preserve_under_name","schema":{"description":"Name under which to save the current branch before the reset. Required when the branch has children; those children move to the new branch.","type":"string"}}
info
input
input-property-renamed
Callers still sending the old name must switch to the new one; the parameter itself is unchanged.
credentialed
#
reset_from_parent inputprojectId
their contract · 2026-08-28
{"name":"projectId","schema":{"description":"The ID of the project containing the branch","type":"string"}}
their contract · 2026-08-29
{"name":"project_id","schema":{"pattern":"^[a-z0-9-]{1,60}$","type":"string"}}
location
input.projectId
warning
input
input-required-property-added
A caller that does not send the new field is rejected, with no change on its own side.
credentialed
#
reset_from_parent inputbranch_id
their contract · 2026-08-28
absent
their contract · 2026-08-29
{"pattern":"^[a-z0-9-]{1,60}$","type":"string"}
location
input.branch_id
warning
wording
description-changed
The wording an agent reads to choose and call the tool changed; its behaviour may or may not have.
credentialed
#
run_sql description
info
input
input-property-renamed
Callers still sending the old name must switch to the new one; the parameter itself is unchanged.
credentialed
#
run_sql inputbranchId
their contract · 2026-08-28
{"name":"branchId","schema":{"description":"An optional ID of the branch to execute the quer…","type":"string"}}
their contract · 2026-08-29
{"name":"branch_id","schema":{"description":"An optional ID of the branch to execute the quer…","type":"string"}}
location
input.branchId
full fragment
{"name":"branchId","schema":{"description":"An optional ID of the branch to execute the query against. If not provided the default branch is used.","type":"string"}}{"name":"branch_id","schema":{"description":"An optional ID of the branch to execute the query against. If not provided the default branch is used.","type":"string"}}
info
input
input-property-renamed
Callers still sending the old name must switch to the new one; the parameter itself is unchanged.
credentialed
#
run_sql inputdatabaseName
their contract · 2026-08-28
{"name":"databaseName","schema":{"description":"The name of the database. If not provided, the d…","type":"string"}}
their contract · 2026-08-29
{"name":"database_name","schema":{"description":"The name of the database. If not provided, the d…","type":"string"}}
location
input.databaseName
full fragment
{"name":"databaseName","schema":{"description":"The name of the database. If not provided, the default neondb or first available database is used.","type":"string"}}{"name":"database_name","schema":{"description":"The name of the database. If not provided, the default neondb or first available database is used.","type":"string"}}
info
input
input-property-renamed
Callers still sending the old name must switch to the new one; the parameter itself is unchanged.
credentialed
#
run_sql inputprojectId
their contract · 2026-08-28
{"name":"projectId","schema":{"description":"The ID of the project to execute the query again…","type":"string"}}
their contract · 2026-08-29
{"name":"project_id","schema":{"description":"The ID of the project to execute the query again…","type":"string"}}
location
input.projectId
full fragment
{"name":"projectId","schema":{"description":"The ID of the project to execute the query against","type":"string"}}{"name":"project_id","schema":{"description":"The ID of the project to execute the query against","type":"string"}}
warning
wording
description-changed
The wording an agent reads to choose and call the tool changed; its behaviour may or may not have.
credentialed
#
run_sql_transaction description
info
input
input-property-renamed
Callers still sending the old name must switch to the new one; the parameter itself is unchanged.
credentialed
#
run_sql_transaction inputbranchId
their contract · 2026-08-28
{"name":"branchId","schema":{"description":"An optional ID of the branch to execute the quer…","type":"string"}}
their contract · 2026-08-29
{"name":"branch_id","schema":{"description":"An optional ID of the branch to execute the quer…","type":"string"}}
location
input.branchId
full fragment
{"name":"branchId","schema":{"description":"An optional ID of the branch to execute the query against. If not provided the default branch is used.","type":"string"}}{"name":"branch_id","schema":{"description":"An optional ID of the branch to execute the query against. If not provided the default branch is used.","type":"string"}}
info
input
input-property-renamed
Callers still sending the old name must switch to the new one; the parameter itself is unchanged.
credentialed
#
run_sql_transaction inputdatabaseName
their contract · 2026-08-28
{"name":"databaseName","schema":{"description":"The name of the database. If not provided, the d…","type":"string"}}
their contract · 2026-08-29
{"name":"database_name","schema":{"description":"The name of the database. If not provided, the d…","type":"string"}}
location
input.databaseName
full fragment
{"name":"databaseName","schema":{"description":"The name of the database. If not provided, the default neondb or first available database is used.","type":"string"}}{"name":"database_name","schema":{"description":"The name of the database. If not provided, the default neondb or first available database is used.","type":"string"}}
info
input
input-property-renamed
Callers still sending the old name must switch to the new one; the parameter itself is unchanged.
credentialed
#
run_sql_transaction inputprojectId
their contract · 2026-08-28
{"name":"projectId","schema":{"description":"The ID of the project to execute the query again…","type":"string"}}
their contract · 2026-08-29
{"name":"project_id","schema":{"description":"The ID of the project to execute the query again…","type":"string"}}
location
input.projectId
full fragment
{"name":"projectId","schema":{"description":"The ID of the project to execute the query against","type":"string"}}{"name":"project_id","schema":{"description":"The ID of the project to execute the query against","type":"string"}}
info
input
input-property-renamed
Callers still sending the old name must switch to the new one; the parameter itself is unchanged.
credentialed
#
run_sql_transaction inputsqlStatements
their contract · 2026-08-28
{"name":"sqlStatements","schema":{"description":"The SQL statements to execute","items":{…},"type":"array"}}
their contract · 2026-08-29
{"name":"sql_statements","schema":{"description":"The SQL statements to execute","items":{…},"type":"array"}}
location
input.sqlStatements
full fragment
{"name":"sqlStatements","schema":{"description":"The SQL statements to execute","items":{"type":"string"},"type":"array"}}{"name":"sql_statements","schema":{"description":"The SQL statements to execute","items":{"type":"string"},"type":"array"}}
warning
wording
description-changed
The wording an agent reads to choose and call the tool changed; its behaviour may or may not have.
credentialed
#
search description
[…] not use when you need all projects (use `list_projects` instead). <notice> Notice: Write mode active. Destructive tools are exposed. For tools with `destructiveHint: true`, NEVER invoke autonomously; always ask the user first. </notice>
2026-08-24 → 2026-08-25 1 warning 1 tool
warning
wording
description-changed
The wording an agent reads to choose and call the tool changed; its behaviour may or may not have.
credentialed
#
inspect_database description
[…] Function logs (`query_logs`), or listing tables and columns (`get_database_tables`, `describe_table_schema`). Three Several checks read alike and are not: `long-running-queries` is what is running right now in the inspected database and has been for over five minutes, minutes; `stalled-queries` is a compute-wide snapshot of active queries running longer than 30 seconds with parallel-worker grouping, waits, and blockers; `outliers` is cumulative execution time since statistics were last reset, reset; and `calls` is call frequency over that same history. Omit […] database on the branch. The result adds a `database` column. `stalled-queries`, `lfc-hit-rate`, `working-set`, and `replication-slots` are compute-wide: they run once against the first listed database, database. For `lfc-hit-rate` and `working-set`, cache counters reset when the compute restarts. One failing database […]
03 / tool inventory · as served on 2026-10-15
114 tools in the latest contract.
From the snapshot as served; descriptions shortened to their first sentence. “Changes” counts this server’s findings on the tool.
| Tool | Description | Inputs | Required | outputSchema | Annotations | Changes |
|---|---|---|---|---|---|---|
| add_auth_oauth_provider | Adds an OAuth provider configuration to the specified branch's Neon Auth integration. | 6 | 2 | none | 0 | |
| add_auth_trusted_domain | Adds a domain to the redirect URI whitelist for the specified branch. | 4 | 3 | none | 0 | |
| compare_database_schema | Compare one database's SQL schema on a branch to another. | 8 | 2 | none | readOnly · idempotent | 4 |
| complete_database_migration | Apply or discard a prepared migration and delete the temporary branch. | 7 | 5 | none | destructive | 8 |
| complete_query_tuning | Apply or discard query-tuning changes and delete the temporary branch. | 9 | 4 | none | destructive | 10 |
| create_auth_user | Creates a new user in the Neon Auth user directory for the specified branch. | 4 | 2 | none | 0 | |
| create_branch | Creates a branch with a read-write compute and waits until it is ready. | 5 | 0 | none | 5 | |
| create_credential | Issues a new scoped service credential anchored to the specified branch. | 5 | 3 | none | 0 | |
| create_postgres_database | Creates a database in the specified branch. | 4 | 3 | none | 0 | |
| create_postgres_endpoint | Creates a compute endpoint on a branch. | 14 | 2 | none | 0 | |
| create_postgres_role | Creates a Postgres role in the specified branch. | 4 | 2 | none | 0 | |
| create_project | Creates a Neon project and waits until the default compute is ready. | 12 | 0 | none | 2 | |
| create_snapshot | Creates a snapshot from the specified branch. | 6 | 1 | none | 0 | |
| create_storage_bucket | Creates a new branchable object storage bucket on the specified branch. | 4 | 2 | none | openWorld | 0 |
| create_trigger | Creates a trigger for a Function visible on the branch. | 3 | 2 | none | 6 | |
| delete_auth_oauth_provider | Deletes an OAuth provider from the specified project. | 3 | 2 | none | destructive | 0 |
| delete_auth_trusted_domain | Removes a domain from the redirect URI whitelist for the specified branch. | 4 | 3 | none | destructive | 0 |
| delete_auth_user | Deletes the specified user from the Neon Auth user directory for the specified branch. | 3 | 2 | none | destructive | 0 |
| delete_branch | Delete a branch and all its data. | 2 | 1 | none | destructive | 3 |
| delete_data_api | Deletes the Neon Data API for the specified branch. | 3 | 2 | none | destructive | 0 |
| delete_function | Deletes the function identified by its slug. | 3 | 2 | none | destructive | 0 |
| delete_functions_custom_domain | Removes a custom domain registered on the branch and stops routing it. | 3 | 2 | none | destructive | 0 |
| delete_postgres_database | Deletes the specified database from the branch. | 3 | 2 | none | destructive | 0 |
| delete_postgres_endpoint | Deletes the specified compute endpoint. | 2 | 1 | none | destructive | 0 |
| delete_postgres_role | Deletes the specified Postgres role from the branch. | 3 | 2 | none | destructive | 0 |
| delete_project | Delete a Neon project and all its data. | 1 | 1 | none | destructive | 2 |
| delete_snapshot | Deletes the specified snapshot. | 2 | 1 | none | destructive | 0 |
| delete_storage_bucket | Deletes the named bucket from the specified branch. | 3 | 2 | none | destructive | 0 |
| delete_storage_object | Deletes the named object from the bucket on the specified branch. | 4 | 3 | none | destructive | 0 |
| delete_storage_objects_by_prefix | Soft-deletes every object on the specified branch whose key starts with `prefix`, in a single call. | 4 | 3 | none | destructive | 0 |
| delete_trigger | Deletes a branch-local trigger or writes a branch-local tombstone for an inherited trigger so it does not reappear. | 3 | 2 | none | destructive | 0 |
| deploy_function | Creates a deployment for the function. | 6 | 2 | none | destructive | 0 |
| describe_branch | Get a tree view of all objects in a branch, including databases, schemas, tables, views, and functions. | 3 | 1 | none | readOnly · idempotent | 4 |
| describe_project | Retrieves the project record (settings, compute, usage). | 1 | 0 | none | readOnly · idempotent | 2 |
| describe_table_schema | Get column definitions, data types, and constraints for a specific table. | 4 | 1 | none | readOnly · idempotent | 5 |
| disable_auth | Disables the Neon Auth integration for the specified branch, removing the connection to the authentication provider. | 3 | 1 | none | destructive | 0 |
| explain_sql_statement | Generate the execution plan for a SQL statement. | 5 | 1 | none | destructive | 5 |
| fetch | Fetch detailed information about a specific organization, project, or branch using the ID returned by the `search` tool. | 1 | 1 | none | readOnly · idempotent | 1 |
| finalize_branch_restore | Finalize a branch created with `restore_snapshot` and `finalize: false`: reassign computes (this restarts them) and swap names so it replaces the original branch. | 3 | 1 | none | destructive | 0 |
| get_ai_gateway | Returns the AI Gateway endpoint host for the specified branch, used to render code-snippet base URLs. | 2 | 1 | none | readOnly · idempotent | 0 |
| get_auth | Retrieves the Neon Auth integration details for the specified branch, including the auth provider type and integration status. | 2 | 1 | none | readOnly · idempotent | 0 |
| get_branch | Retrieves information about the specified branch. | 2 | 1 | none | readOnly · idempotent | 0 |
| get_connection_string | Get a PostgreSQL connection string for a Neon database. | 5 | 0 | none | readOnly · idempotent | 7 |
| get_data_api | Retrieves the Neon Data API configuration for the specified branch, including endpoint URL, enabled state, and database settings. | 3 | 2 | none | readOnly · idempotent | 0 |
| get_database_tables | List all tables in a Neon database. | 3 | 0 | none | readOnly · idempotent | 4 |
| get_default_branch | Resolve the project's default branch by the default flag, not by name. | 1 | 0 | none | readOnly · idempotent | 0 |
| get_doc_resource | Fetch one Neon documentation page as markdown. | 1 | 1 | none | readOnly · idempotent · openWorld | 1 |
| get_function | Returns the function identified by its slug. | 3 | 2 | none | readOnly · idempotent | 0 |
| get_neon_auth_config | Read Neon Auth config for a branch with OAuth and SMTP secrets redacted as "***redacted***". | 2 | 0 | none | readOnly · idempotent | 3 |
| get_operation | Retrieves details for the specified operation. | 2 | 1 | none | readOnly · idempotent | 0 |
| get_postgres_database | Retrieves information about the specified database. | 3 | 2 | none | readOnly · idempotent | 0 |
| get_postgres_endpoint | Retrieves information about the specified compute endpoint. | 2 | 1 | none | readOnly · idempotent | 0 |
| get_postgres_role | Retrieves details about the specified role. | 3 | 2 | none | readOnly · idempotent | 0 |
| get_snapshot_schedule | Returns the backup schedule for the specified branch, including the configured snapshot frequencies. | 2 | 1 | none | readOnly · idempotent | 0 |
| get_storage | Returns whether branchable object storage is usable for the specified branch. | 2 | 1 | none | readOnly · idempotent | 0 |
| get_trigger | Returns the trigger visible on the branch. | 3 | 2 | none | readOnly · idempotent | 0 |
| inspect_database | Run one read-only neon inspect db check (pick `check` from the input schema). | 6 | 1 | none | readOnly · idempotent | 6 |
| list_auth_oauth_providers | Lists the OAuth providers configured for the specified branch's Neon Auth integration. | 2 | 1 | none | readOnly | 0 |
| list_auth_trusted_domains | Lists the trusted domains in the redirect URI whitelist for the specified branch. | 2 | 1 | none | readOnly · idempotent | 0 |
| list_branch_computes | Retrieves a list of compute endpoints for the specified branch. | 2 | 1 | none | readOnly · idempotent | 3 |
| list_branches | Retrieves a list of branches for the specified project. | 6 | 0 | none | readOnly · idempotent | 0 |
| list_credentials | Returns metadata for customer-issued credentials on the branch. | 2 | 1 | none | readOnly · idempotent | 0 |
| list_docs_resources | List Neon documentation page slugs from neon.com/docs/llms.txt. | 0 | 0 | none | readOnly · idempotent · openWorld | 1 |
| list_functions | Lists functions on the specified branch. | 3 | 1 | none | readOnly · idempotent | 0 |
| list_functions_custom_domains | Lists all custom domains registered on the branch, across every target entity. | 3 | 1 | none | readOnly · idempotent | 0 |
| list_log_field_values | Lists distinct values for a low-cardinality log field. | 8 | 2 | none | readOnly · idempotent | 5 |
| list_log_fields | Lists the low-cardinality log fields observed on this branch. | 2 | 1 | none | readOnly · idempotent | 3 |
| list_operations | Lists operations for a project. | 2 | 0 | none | readOnly · idempotent | 0 |
| list_organizations | List all organizations the current user belongs to. | 1 | 0 | none | readOnly · idempotent | 1 |
| list_postgres_databases | Retrieves a list of databases for the specified branch. | 2 | 1 | none | readOnly · idempotent | 0 |
| list_postgres_endpoints | Retrieves a list of compute endpoints for the specified project. | 1 | 0 | none | readOnly · idempotent | 0 |
| list_postgres_roles | Retrieves a list of Postgres roles from the specified branch. | 2 | 1 | none | readOnly · idempotent | 0 |
| list_project_members | Lists organization members and their per-project roles for an org-owned project. | 2 | 0 | none | readOnly · idempotent | 0 |
| list_project_permissions | 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. | 1 | 0 | none | readOnly · idempotent | 0 |
| list_projects | List Neon projects you own. | 5 | 0 | none | readOnly · idempotent | 4 |
| list_regions | Lists Neon regions available to the authenticated account. | 0 | 0 | none | readOnly · idempotent | 0 |
| list_slow_queries | List queries from pg_stat_statements by execution time, slowest first. | 6 | 0 | none | readOnly | 6 |
| list_snapshots | Lists the snapshots for the specified project. | 1 | 0 | none | readOnly · idempotent | 0 |
| list_storage_buckets | Lists branchable object storage buckets visible on the specified branch, including those inherited from ancestor branches. | 2 | 1 | none | readOnly · idempotent | 0 |
| list_storage_objects | Lists objects visible in the named bucket on the specified branch, including those inherited from ancestor branches. | 6 | 2 | none | readOnly · idempotent | 0 |
| list_triggers | Lists the complete project-bounded set of triggers visible on the branch, ordered by `trigger_id`. | 2 | 1 | none | readOnly · idempotent | 0 |
| prepare_database_migration | Apply a schema change on a temporary branch and return a migration_id. | 3 | 1 | none | 4 | |
| prepare_query_tuning | Analyze a slow query on a temporary branch and return a tuning_id. | 4 | 2 | none | 4 | |
| presign_storage_object | Returns a presigned URL that transfers bytes directly to or from the object's bucket on the specified branch, without the caller ever handling S3 credentials. | 7 | 4 | none | destructive | 0 |
| provision_neon_auth | Enables Neon Auth for the specified branch by connecting it to an authentication provider. | 4 | 2 | none | 5 | |
| provision_neon_data_api | Creates a new instance of Neon Data API in the specified branch. | 10 | 2 | none | 4 | |
| query_logs | Returns logs for a branch. | 15 | 1 | none | readOnly · idempotent | 11 |
| recover_project | Recovers a deleted project within the 7-day deletion recovery period. | 1 | 0 | none | 0 | |
| register_functions_custom_domain | Registers a hostname on the branch and routes it to a function. | 5 | 4 | none | 0 | |
| reset_from_parent | Reset a branch to its parent's current HEAD. | 3 | 1 | none | destructive | 5 |
| reset_postgres_role_password | Resets the password for the specified Postgres role. | 3 | 2 | none | destructive | 0 |
| restart_postgres_endpoint | Restarts the specified compute endpoint by immediately suspending it and then starting it again. | 2 | 1 | none | destructive | 0 |
| restore_snapshot | Restore a snapshot onto a new or existing branch. | 5 | 1 | none | destructive | 0 |
| revoke_credential | Soft-deletes the credential. | 3 | 2 | none | destructive | 0 |
| rotate_credential | Replaces the secret material on an existing scoped credential in place. | 3 | 2 | none | destructive | 0 |
| run_sql | Execute one SQL statement on a Neon database. | 6 | 1 | none | destructive | 4 |
| run_sql_transaction | Execute multiple SQL statements as one transaction. | 6 | 1 | none | destructive | 5 |
| search | Search across all organizations, projects, and branches by keyword. | 1 | 1 | none | readOnly · idempotent | 1 |
| send_feedback | Send anonymous feedback about Neon or this MCP server to the Neon team. | 1 | 1 | none | openWorld | 0 |
| set_default_branch | Sets the specified branch as the project's default branch. | 2 | 1 | none | destructive | 0 |
| set_snapshot_schedule | Replace a branch's automatic snapshot schedule. | 3 | 2 | none | destructive | 0 |
| start_postgres_endpoint | Starts a compute endpoint. | 2 | 1 | none | 0 | |
| suspend_postgres_endpoint | Suspends the specified compute endpoint. | 2 | 1 | none | destructive | 0 |
| update_auth_config | Updates the auth configuration for the branch. | 3 | 2 | none | destructive | 0 |
| update_auth_oauth_provider | Updates an OAuth provider for the specified project. | 6 | 2 | none | destructive | 0 |
| update_auth_user_role | Updates the role of a user in the Neon Auth user directory for the specified branch. | 4 | 3 | none | destructive | 0 |
| update_branch | Updates the specified branch. | 5 | 1 | none | destructive | 0 |
| update_data_api | Updates the Neon Data API configuration for the specified branch. | 13 | 2 | none | destructive | 0 |
| update_function | Updates the function's mutable metadata — currently only the display `name`. | 4 | 3 | none | destructive | 0 |
| update_postgres_database | Updates the specified database in the branch. | 5 | 2 | none | destructive | 0 |
| update_postgres_endpoint | Updates the specified compute endpoint. | 13 | 1 | none | destructive | 0 |
| update_project | Updates the specified project. | 5 | 0 | none | destructive | 0 |
| update_snapshot | Updates the specified snapshot. | 4 | 1 | none | destructive | 0 |
| update_trigger | Applies a partial update. | 4 | 3 | none | destructive | 6 |