> **Building with AI coding agents?** Install the authstack plugin with one command. This equips your agent with accurate Scalekit implementation patterns.
>
> **Recommended** (the `-y` flags skip prompts, so the command runs without an interactive terminal):
> ```bash
> npx -y @scalekit-inc/cli setup -y
> ```
>
> Global:
> ```bash
> npm install -g @scalekit-inc/cli
> scalekit setup -y
> ```
>
> Supports Claude Code, Cursor, GitHub Copilot, Codex + skills for other Agent Skills-compatible agents in `~/.agents/skills`.
> Skills: integrate-agentkit, implement-saaskit, add-mcp-oauth, implement-sso, implement-scim.
> [Full setup guide](https://docs.scalekit.com/dev-kit/build-with-ai/)

---

# Connect AI agents to the Neon MCP server

The Neon MCP connector routes your AI agent's tool calls to Neon's own MCP server through Scalekit. Each user signs in to Neon once, and Scalekit stores and refreshes their tokens, so your agent never handles credentials. It comes with 35 tools.

**Authentication:** OAuth 2.1/DCR
**Categories:** Databases, Developer Tools, AI
**Tools:** 35: 21 read, 6 write, 8 destructive
**Users sign in with:** OAuth
**OAuth app:** Scalekit's or your own
**Built by:** Vendor MCP
**Try it:** [Playground in the Scalekit dashboard](https://app.scalekit.com/ws/signup?sk_intent=playground&provider=NEONMCP)

## Setup

1. ### Install the SDK

   **Node.js**

   ```bash
   npm install @scalekit-sdk/node dotenv
   ```

   **Python**

   ```bash
   pip install scalekit-sdk-python python-dotenv
   ```

2. ### Set your credentials

   Add your Scalekit credentials to your `.env` file. Find values in **[app.scalekit.com](https://app.scalekit.com)** > **Developers** > **API Credentials**.

   ```sh title=".env"
   SCALEKIT_ENVIRONMENT_URL=<your-environment-url>
   SCALEKIT_CLIENT_ID=<your-client-id>
   SCALEKIT_CLIENT_SECRET=<your-client-secret>
   ```

3. ### Create the Neon MCP connection

   In **AgentKit > Connections**, create a Neon MCP connection. The name you give it is the `connection_name` your code passes. See [Configure connections](/agentkit/connections/).

   Scalekit credentials are available for Neon MCP server, so you don't need to register an OAuth app.

4. ### Authorize a user and make your first call

   **Node.js** (`quickstart.mts`)

   ```typescript
   import { ScalekitClient } from '@scalekit-sdk/node'
   import 'dotenv/config'
   import { createInterface } from 'node:readline/promises'

   const scalekit = new ScalekitClient(
     process.env.SCALEKIT_ENVIRONMENT_URL,
     process.env.SCALEKIT_CLIENT_ID,
     process.env.SCALEKIT_CLIENT_SECRET,
   )
   const actions = scalekit.actions

   const connector = 'neonmcp'
   const identifier = 'user_123'

   // Generate an authorization link for the user
   const { link } = await actions.getAuthorizationLink({ connectionName: connector, identifier })
   console.log('Authorize Neon MCP:', link)
   const rl = createInterface({ input: process.stdin, output: process.stdout })
   await rl.question('Press Enter after authorizing...')
   rl.close()

   // Make your first call
   const result = await actions.executeTool({
     connector,
     identifier,
     toolName: 'neonmcp_list_branch_computes',
     toolInput: {},
   })
   console.log(result)
   ```

   ```bash
   npx tsx quickstart.mts
   ```

   **Python** (`quickstart.py`)

   ```python
   import os
   from scalekit import ScalekitClient
   from dotenv import load_dotenv
   load_dotenv()

   scalekit_client = ScalekitClient(
       env_url=os.getenv("SCALEKIT_ENVIRONMENT_URL"),
       client_id=os.getenv("SCALEKIT_CLIENT_ID"),
       client_secret=os.getenv("SCALEKIT_CLIENT_SECRET"),
   )
   actions = scalekit_client.actions

   connection_name = "neonmcp"
   identifier = "user_123"

   # Generate an authorization link for the user
   link_response = actions.get_authorization_link(
       connection_name=connection_name,
       identifier=identifier,
   )
   print("Authorize Neon MCP:", link_response.link)
   input("Press Enter after authorizing...")

   # Make your first call
   result = actions.execute_tool(
       tool_input={},
       tool_name="neonmcp_list_branch_computes",
       connection_name=connection_name,
       identifier=identifier,
   )
   print(result)
   ```

   ```bash
   python quickstart.py
   ```

   Each user signs in once. See [Authorize a user](/agentkit/tools/authorize/) for the full flow and statuses.

## Tools

Pass the exact name to `execute_tool`, with an input like each tool's example. To ask for a tool that's missing, use the [request form](https://scalekitsupport.portal.usepylon.com/forms/request-a-connector-tool).

**Node.js**

```typescript
const result = await actions.executeTool({
  toolName: 'neonmcp_compare_database_schema',
  toolInput: {
    branchId: '<branchId>',
    databaseName: '<databaseName>',
    projectId: '<projectId>',
  },
  connector: 'neonmcp',
  identifier: 'user_123',
})
```

**Python**

```python
result = actions.execute_tool(
    tool_name="neonmcp_compare_database_schema",
    tool_input={
        "branchId": "<branchId>",
        "databaseName": "<databaseName>",
        "projectId": "<projectId>",
    },
    connection_name="neonmcp",
    identifier="user_123",
)
```

`result.data` is the app's response as JSON, and `result.execution_id` (`executionId` in Node.js) is the ID of the call.

### `neonmcp_compare_database_schema`

Compare Database Schema · Read-only

Compare the database schema between two branches to identify differences in tables, columns, and constraints.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `branchId` (`string`, required): The ID of the branch. Leave blank to use the default branch.
- `databaseName` (`string`, required): The name of the database. Defaults to `neondb` if not provided.
- `projectId` (`string`, required): The ID of the Neon project.

Example input: `{"branchId":"<branchId>","databaseName":"<databaseName>","projectId":"<projectId>"}`

### `neonmcp_describe_branch`

Describe Branch · Read-only

Get a tree view of all objects in a branch including databases, schemas, tables, views, and functions.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `branchId` (`string`, required): The ID of the branch. Leave blank to use the default branch.
- `projectId` (`string`, required): The ID of the Neon project.
- `databaseName` (`string`, optional): The name of the database. Defaults to `neondb` if not provided.

Example input: `{"branchId":"<branchId>","projectId":"<projectId>"}`

### `neonmcp_describe_project`

Describe Project · Read-only

Get details and configuration of a specific Neon project by its ID.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `projectId` (`string`, required): The ID of the Neon project.

Example input: `{"projectId":"<projectId>"}`

### `neonmcp_describe_table_schema`

Describe Table Schema · Read-only

Get column definitions, data types, and constraints for a specific table in a Neon database.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `projectId` (`string`, required): The ID of the Neon project.
- `tableName` (`string`, required): The name of the table
- `branchId` (`string`, optional): The ID of the branch. Leave blank to use the default branch.
- `databaseName` (`string`, optional): The name of the database. Defaults to `neondb` if not provided.

Example input: `{"projectId":"<projectId>","tableName":"<tableName>"}`

### `neonmcp_explain_sql_statement`

Explain Sql Statement · Read-only

Analyze the query execution plan for a SQL statement using EXPLAIN ANALYZE.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `projectId` (`string`, required): The ID of the Neon project.
- `sql` (`string`, required): The SQL statement to execute.
- `analyze` (`boolean`, optional): Set to `true` to include ANALYZE in EXPLAIN. Default is `true`. Default: `true`.
- `branchId` (`string`, optional): The ID of the branch. Leave blank to use the default branch.
- `databaseName` (`string`, optional): The name of the database. Defaults to `neondb` if not provided.

Example input: `{"projectId":"<projectId>","sql":"<sql>"}`

### `neonmcp_fetch`

Fetch · Read-only

Fetch detailed information about a specific organization, project, or branch using its ID.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `id` (`string`, required): The entity ID returned by the `search` tool.

Example input: `{"id":"<id>"}`

### `neonmcp_get_connection_string`

Get Connection String · Read-only

Get a PostgreSQL connection string for a Neon database, resolving project, branch, and database automatically.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `projectId` (`string`, required): The ID of the Neon project.
- `branchId` (`string`, optional): The ID of the branch. Leave blank to use the default branch.
- `computeId` (`string`, optional): The ID of the compute endpoint. Defaults to the branch's read-write compute if not provided.
- `databaseName` (`string`, optional): The name of the database. Defaults to `neondb` if not provided.
- `roleName` (`string`, optional): The database role to connect with. Defaults to `neondb_owner` if not provided.

Example input: `{"projectId":"<projectId>"}`

### `neonmcp_get_database_tables`

Get Database Tables · Read-only

List all tables in a Neon database on a specific branch.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `projectId` (`string`, required): The ID of the Neon project.
- `branchId` (`string`, optional): The ID of the branch. Leave blank to use the default branch.
- `databaseName` (`string`, optional): The name of the database. Defaults to `neondb` if not provided.

Example input: `{"projectId":"<projectId>"}`

### `neonmcp_get_doc_resource`

Get Doc Resource · Read-only

Fetch a specific Neon documentation page as markdown content by its URL.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `slug` (`string`, required): The docs page slug (path) to fetch, e.g. 'docs/guides/prisma.md'. Slugs use .md file endings matching the URLs in the documentation index. Use the list_docs_resources tool first to discover available slugs.

Example input: `{"slug":"docs/guides/prisma.md"}`

### `neonmcp_get_neon_auth_config`

Get Neon Auth Config · Read-only

Read the full Neon Auth configuration for a specific branch.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `projectId` (`string`, required): The ID of the Neon project.
- `branchId` (`string`, optional): The ID of the branch. Leave blank to use the default branch.

Example input: `{"projectId":"<projectId>"}`

### `neonmcp_inspect_database`

Inspect Database · Read-only

Run a predefined, read-only Postgres diagnostic check (table sizes, unused indexes, locks, bloat, etc.) against a Neon branch.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `check` (`string`, required): Which diagnostic to run: table-sizes, index-sizes, unused-indexes, seq-scans, long-running-queries, locks, outliers, calls, lfc-hit-rate, working-set, vacuum-stats, bloat, replication-slots, or subscriptions. One of: `table-sizes`, `index-sizes`, `unused-indexes`, `seq-scans`, `long-running-queries`, `locks`, `outliers`, `calls`, `lfc-hit-rate`, `working-set`, `vacuum-stats`, `bloat`, `replication-slots`, `subscriptions`.
- `projectId` (`string`, required): The ID of the project to inspect.
- `branchId` (`string`, optional): An optional ID of the branch. If not provided the default branch is used.
- `computeId` (`string`, optional): The ID of the compute/endpoint. If not provided, the read-write compute associated with the branch will be used.
- `databaseName` (`string`, optional): Database to inspect. Omit to cover every database on the branch.
- `limit` (`integer`, optional): Maximum number of rows to return from the combined result (1-1000). Default is 50. Default: `50`.

Example input: `{"check":"table-sizes","projectId":"<projectId>"}`

### `neonmcp_list_branch_computes`

List Branch Computes · Read-only

List all compute endpoints for a project or branch.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `branchId` (`string`, optional): The ID of the branch. Leave blank to use the default branch.
- `projectId` (`string`, optional): The ID of the Neon project.

Example input: `{}`

### `neonmcp_list_docs_resources`

List Docs Resources · Read-only

List all available Neon documentation pages from the Neon docs index.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs: none.

Example input: `{}`

### `neonmcp_list_log_field_values`

List Log Field Values · Read-only

List the distinct values of a log field (e.g. service_name or severity_text) within a branch and time window.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `field` (`string`, required): 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.
- `branchId` (`string`, optional): The ID of the branch. Defaults to the project's default branch.
- `projectId` (`string`, optional): The ID of the project. Defaults to your only project if unambiguous.
- `since` (`string`, optional): Relative lookback window as a duration (e.g. "6h", "24h"). If omitted, the server default lookback (6 hours) applies; the maximum supported window is "7d".

Example input: `{"field":"service_name"}`

### `neonmcp_list_log_fields`

List Log Fields · Read-only

List the log fields whose values list_log_field_values can enumerate for a branch (e.g. service_name, severity_text, scope_name, entity_type).

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `branchId` (`string`, optional): The ID of the branch. Defaults to the project's default branch.
- `projectId` (`string`, optional): The ID of the project. Defaults to your only project if unambiguous.

Example input: `{}`

### `neonmcp_list_organizations`

List Organizations · Read-only

List all organizations the current user belongs to, with optional name or ID filter.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `search` (`string`, optional): Filter results by partial name or ID.

Example input: `{}`

### `neonmcp_list_projects`

List Projects · Read-only

List Neon projects in your account with optional search and pagination.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `cursor` (`string`, optional): The cursor value from the previous response for pagination.
- `limit` (`number`, optional): Maximum number of results to return (1–400). Default is 10. Default: `10`.
- `org_id` (`string`, optional): The organization ID to associate the project with.
- `search` (`string`, optional): Filter results by partial name or ID.

Example input: `{}`

### `neonmcp_list_shared_projects`

List Shared Projects · Read-only

List projects shared with the current user for collaboration.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `cursor` (`string`, optional): The cursor value from the previous response for pagination.
- `limit` (`number`, optional): Maximum number of results to return (1–400). Default is 10. Default: `10`.
- `search` (`string`, optional): Filter results by partial name or ID.

Example input: `{}`

### `neonmcp_list_slow_queries`

List Slow Queries · Read-only

List slow queries from a Neon database to identify performance bottlenecks.

Read only: yes. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `projectId` (`string`, required): The ID of the Neon project.
- `branchId` (`string`, optional): The ID of the branch. Leave blank to use the default branch.
- `computeId` (`string`, optional): The ID of the compute endpoint. Defaults to the branch's read-write compute if not provided.
- `databaseName` (`string`, optional): The name of the database. Defaults to `neondb` if not provided.
- `limit` (`number`, optional): Maximum number of results to return (1–400). Default is 10. Default: `10`.
- `minExecutionTime` (`number`, optional): Minimum query execution time in milliseconds to flag as slow. Default is 1000 ms. Default: `1000`.

Example input: `{"projectId":"<projectId>"}`

### `neonmcp_query_logs`

Query Logs · Read-only

Query logs emitted by Neon serverless functions and other services (structured filters or raw LogQL), correlated by trace ID and time window.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `bodyContains` (`string`, optional): Return only logs whose rendered message contains this case-sensitive substring.
- `branchId` (`string`, optional): The ID of the branch whose logs to query. Defaults to the project's default branch.
- `endTime` (`string`, optional): Absolute end of the window, RFC3339. Ends either a relative since window or an absolute startTime window; defaults to now.
- `limit` (`integer`, optional): Maximum number of log lines to return (1-1000, default 100). Large results are truncated server-side. Default: `100`.
- `logql` (`string`, optional): Advanced: a raw LogQL expression to run instead of the structured filters above. Only stream selectors and line filters are supported. Do not combine it with structured filters.
- `minSeverity` (`string`, optional): Return only logs at this OTel severity level or above (trace < debug < info < warn < error < fatal). E.g. "error" returns ERROR and FATAL. One of: `trace`, `debug`, `info`, `warn`, `error`, `fatal`.
- `projectId` (`string`, optional): The ID of the project whose logs to query. If omitted and you have exactly one project, that project is used.
- `query` (`string`, optional): Legacy compatibility alias for logql. Preserves the previous behavior of overriding any structured filters. Do not supply both raw fields.
- `serviceName` (`string`, optional): Filter to a specific OTel service name (service.name).
- `severityText` (`string`, optional): Filter to an exact severity text (e.g. "ERROR"). Takes precedence over minSeverity.
- `since` (`string`, optional): Relative lookback window ending at endTime, or now when omitted, as a duration (e.g. "30m", "1h", "24h"). Defaults to the last hour; the maximum supported window is "7d". Ignored when startTime is set.
- `source` (`string`, optional): Which service produced the logs. "function" (serverless functions) is the default; "storage" and "pg_endpoint" are also available. One of: `function`, `storage`, `pg_endpoint`.
- `startTime` (`string`, optional): 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.
- `traceId` (`string`, optional): Correlate to a distributed trace: return only logs with this trace_id.

Example input: `{}`

### `neonmcp_search`

Search · Read-only

Search across all organizations, projects, and branches by keyword, returning matching items with IDs and URLs.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `query` (`string`, required): The search keyword. Must be at least 3 characters.

Example input: `{"query":"<query>"}`

### `neonmcp_create_branch`

Create Branch · Write

Create a new branch in a Neon project for isolated development or testing.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `projectId` (`string`, required): The ID of the Neon project.
- `branchName` (`string`, optional): An optional name for the new branch.
- `parentId` (`string`, optional): 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.

Example input: `{"projectId":"<projectId>"}`

### `neonmcp_create_project`

Create Project · Write

Create a new Neon project with a default database and branch, returning the connection string.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `name` (`string`, optional): An optional name for the new project.
- `org_id` (`string`, optional): The organization ID to associate the project with.

Example input: `{}`

### `neonmcp_prepare_database_migration`

Prepare Database Migration · Write

Prepare a database schema migration by generating and executing DDL statements on a temporary branch.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `migrationSql` (`string`, required): The SQL DDL statement(s) to apply as a migration.
- `projectId` (`string`, required): The ID of the Neon project.
- `databaseName` (`string`, optional): The name of the database. Defaults to `neondb` if not provided.

Example input: `{"migrationSql":"<migrationSql>","projectId":"<projectId>"}`

### `neonmcp_prepare_query_tuning`

Prepare Query Tuning · Write

Start a query tuning session by analyzing execution plans and suggesting optimizations on a temporary branch.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `databaseName` (`string`, required): The name of the database. Defaults to `neondb` if not provided.
- `projectId` (`string`, required): The ID of the Neon project.
- `sql` (`string`, required): The SQL statement to execute.
- `roleName` (`string`, optional): The database role to connect with. Defaults to `neondb_owner` if not provided.

Example input: `{"databaseName":"<databaseName>","projectId":"<projectId>","sql":"<sql>"}`

### `neonmcp_provision_neon_auth`

Provision Neon Auth · Write

Provision Neon Auth for a branch, enabling managed authentication backed by Better Auth.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `projectId` (`string`, required): The ID of the Neon project.
- `branchId` (`string`, optional): The ID of the branch. Leave blank to use the default branch.
- `databaseName` (`string`, optional): The name of the database. Defaults to `neondb` if not provided.

Example input: `{"projectId":"<projectId>"}`

### `neonmcp_provision_neon_data_api`

Provision Neon Data Api · Write

Provision the Neon Data API for HTTP-based access to a Postgres database with JWT authentication.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `projectId` (`string`, required): The ID of the Neon project.
- `branchId` (`string`, optional): The ID of the branch. Leave blank to use the default branch.
- `databaseName` (`string`, optional): The name of the database. Defaults to neondb if not provided.

Example input: `{"projectId":"<projectId>"}`

### `neonmcp_complete_database_migration`

Complete Database Migration · Destructive

Apply a database migration to the main branch and clean up the temporary migration branch.

Read only: no. Destructive: yes. Idempotent (safe to retry): no.

Inputs:

- `databaseName` (`string`, required): The name of the database. Defaults to `neondb` if not provided.
- `migrationId` (`string`, required): The migration ID returned by `prepare_database_migration`.
- `migrationSql` (`string`, required): The SQL DDL statement(s) to apply as a migration.
- `parentBranchId` (`string`, required): The ID of the parent branch to apply the migration to.
- `projectId` (`string`, required): The ID of the Neon project.
- `temporaryBranchId` (`string`, required): The ID of the temporary branch created during the prepare step.
- `applyChanges` (`boolean`, optional): Set to `true` to apply changes, `false` to discard and only clean up. Default: `true`.

Example input: `{"databaseName":"<databaseName>","migrationId":"<migrationId>","migrationSql":"<migrationSql>","parentBranchId":"<parentBranchId>","projectId":"<projectId>","temporaryBranchId":"<temporaryBranchId>"}`

### `neonmcp_complete_query_tuning`

Complete Query Tuning · Destructive

Finish a query tuning session by applying or discarding changes from the temporary tuning branch.

Read only: no. Destructive: yes. Idempotent (safe to retry): no.

Inputs:

- `databaseName` (`string`, required): The name of the database. Defaults to `neondb` if not provided.
- `projectId` (`string`, required): The ID of the Neon project.
- `suggestedSqlStatements` (`array`, required): The DDL statements suggested by `prepare_query_tuning` (e.g. CREATE INDEX).
- `temporaryBranchId` (`string`, required): The ID of the temporary branch created during the prepare step.
- `tuningId` (`string`, required): The tuning ID returned by `prepare_query_tuning`. Not the branch ID.
- `applyChanges` (`boolean`, optional): Set to `true` to apply changes, `false` to discard and only clean up. Default: `false`.
- `branchId` (`string`, optional): The ID of the branch. Leave blank to use the default branch.
- `roleName` (`string`, optional): 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.
- `shouldDeleteTemporaryBranch` (`boolean`, optional): Set to `true` to delete the temporary branch after tuning. Default is `true`. Default: `true`.

Example input: `{"databaseName":"<databaseName>","projectId":"<projectId>","suggestedSqlStatements":[],"temporaryBranchId":"<temporaryBranchId>","tuningId":"<tuningId>"}`

### `neonmcp_configure_neon_auth`

Configure Neon Auth · Destructive

Configure Neon Auth settings for a branch by specifying the desired operation.

Read only: no. Destructive: yes. Idempotent (safe to retry): no.

Inputs:

- `branchId` (`string`, required): The ID of the branch to configure Neon Auth for.
- `operation` (`string`, required): The configuration operation to perform on Neon Auth. One of: `add_trusted_origin`, `remove_trusted_origin`, `set_allow_localhost`, `update_auth_methods`, `add_oauth_provider`, `update_oauth_provider`, `remove_oauth_provider`, `update_email_provider`, `send_test_email`.
- `projectId` (`string`, required): The ID of the Neon project.
- `allowLocalhost` (`boolean`, optional): Whether to allow localhost as a trusted origin. Used with set_allow_localhost operation.
- `trusted_origin` (`string`, optional): The origin URL to add or remove from trusted origins. Required for add_trusted_origin and remove_trusted_origin operations.

Example input: `{"branchId":"<branchId>","operation":"add_trusted_origin","projectId":"<projectId>"}`

### `neonmcp_delete_branch`

Delete Branch · Destructive

Permanently delete a branch and all its data from a Neon project.

Read only: no. Destructive: yes. Idempotent (safe to retry): no.

Inputs:

- `branchId` (`string`, required): The ID of the branch. Leave blank to use the default branch.
- `projectId` (`string`, required): The ID of the Neon project.

Example input: `{"branchId":"<branchId>","projectId":"<projectId>"}`

### `neonmcp_delete_project`

Delete Project · Destructive

Permanently delete a Neon project and all its branches and data.

Read only: no. Destructive: yes. Idempotent (safe to retry): no.

Inputs:

- `projectId` (`string`, required): The ID of the Neon project.

Example input: `{"projectId":"<projectId>"}`

### `neonmcp_reset_from_parent`

Reset From Parent · Destructive

Reset a branch to its parent branch state, discarding all changes made on the branch.

Read only: no. Destructive: yes. Idempotent (safe to retry): no.

Inputs:

- `branchIdOrName` (`string`, required): The ID or name of the branch to reset.
- `projectId` (`string`, required): The ID of the Neon project.
- `preserveUnderName` (`string`, optional): Optional name to preserve the current branch state before resetting.

Example input: `{"branchIdOrName":"<branchIdOrName>","projectId":"<projectId>"}`

### `neonmcp_run_sql`

Run Sql · Destructive

Execute a single SQL statement against a Neon database and return the results.

Read only: no. Destructive: yes. Idempotent (safe to retry): no.

Inputs:

- `projectId` (`string`, required): The ID of the Neon project.
- `sql` (`string`, required): The SQL statement to execute.
- `branchId` (`string`, optional): The ID of the branch. Leave blank to use the default branch.
- `databaseName` (`string`, optional): The name of the database. Defaults to `neondb` if not provided.

Example input: `{"projectId":"<projectId>","sql":"<sql>"}`

### `neonmcp_run_sql_transaction`

Run Sql Transaction · Destructive

Execute multiple SQL statements as a single transaction against a Neon database.

Read only: no. Destructive: yes. Idempotent (safe to retry): no.

Inputs:

- `projectId` (`string`, required): The ID of the Neon project.
- `sqlStatements` (`array`, required): The SQL statements to execute as a single transaction.
- `branchId` (`string`, optional): The ID of the branch. Leave blank to use the default branch.
- `databaseName` (`string`, optional): The name of the database. Defaults to `neondb` if not provided.

Example input: `{"projectId":"<projectId>","sqlStatements":[]}`

## Related

Other Databases connectors ([all 18](/agentkit/connectors/?category=databases)):

- [Snowflake](/agentkit/connectors/snowflake/): Scalekit connector, OAuth, 42 tools
- [AWS Redshift](/agentkit/connectors/redshift/): Scalekit connector, Trusted identity provider, 10 tools
- [Google BigQuery](/agentkit/connectors/bigquery/): Scalekit connector, OAuth, 47 tools


---

## More Scalekit documentation

| Resource | What it contains | When to use it |
|----------|-----------------|----------------|
| [/llms.txt](/llms.txt) | Structured index with routing hints per product area | Start here — find which documentation set covers your topic before loading full content |
| [/llms-full.txt](/llms-full.txt) | Complete documentation for all Scalekit products in one file | Use when you need exhaustive context across multiple products or when the topic spans several areas |
| [sitemap-0.xml](https://docs.scalekit.com/sitemap-0.xml) | Full URL list of every documentation page | Use to discover specific page URLs you can fetch for targeted, page-level answers |
