> **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 AWS Redshift

The AWS Redshift connector lets your AI agent work with AWS Redshift. Scalekit handles authentication for every call, so your agent never handles credentials. It comes with 10 tools.

**Authentication:** Trusted IDP
**Categories:** Analytics, Databases
**Tools:** 10: 7 read, 2 write, 1 destructive
**Users sign in with:** Trusted identity provider
**Built by:** Scalekit connector
**Try it:** [Playground in the Scalekit dashboard](https://app.scalekit.com/ws/signup?sk_intent=playground&provider=REDSHIFT)

## 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 AWS Redshift connection

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

## 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: 'redshift_describe_statement',
  toolInput: {
    statement_id: '<statement_id>',
  },
  connector: 'redshift',
  identifier: 'user_123',
})
```

**Python**

```python
result = actions.execute_tool(
    tool_name="redshift_describe_statement",
    tool_input={
        "statement_id": "<statement_id>",
    },
    connection_name="redshift",
    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.

### `redshift_describe_statement`

Describe Statement · Read-only

Get the status, duration, and row count of a previously submitted statement without fetching result rows. This is the only way to poll or confirm success/failure of DDL/DML statements (CREATE/INSERT/UPDATE) that cannot be passed to redshift_get_query_result, which requires a statement that returns a result set. redshift_list_statements lists many statements at once but doesn't substitute for checking one specific statement's full status detail (e.g. its error message on failure).

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

Inputs:

- `statement_id` (`string`, required): The ID of the statement to describe. Must be non-empty.

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

### `redshift_describe_table`

Describe Table · Read-only

Describe the schema of a table in Amazon Redshift using the Redshift Data API, including column names, types, and metadata.

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

Inputs:

- `table` (`string`, required): Name of the table to describe. Must be non-empty.
- `connected_database` (`string`, optional): Override the connected account's default database for this request.
- `max_results` (`integer`, optional): Maximum number of columns to return per page.
- `next_token` (`string`, optional): Pagination cursor from a previous redshift_describe_table response.
- `schema` (`string`, optional): Schema name that contains the table.

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

### `redshift_get_query_result`

Get Query Result · Read-only

Retrieve the results of a previously executed Redshift SQL statement using the statement ID returned by redshift_execute_sql. Supports pagination via next_token.

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

Inputs:

- `statement_id` (`string`, required): The statement ID returned by redshift_execute_sql. Must be non-empty.
- `next_token` (`string`, optional): Pagination token from a prior redshift_get_query_result response when results spanned multiple pages.

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

### `redshift_list_databases`

List Databases · Read-only

List the databases available in the connected Amazon Redshift cluster or serverless workgroup, using the Redshift Data API. Mirrors redshift_list_schemas / redshift_list_tables one level up the hierarchy.

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

Inputs:

- `connected_database` (`string`, optional): Override the connected account's default database for this request.
- `max_results` (`integer`, optional): Maximum number of databases to return.
- `next_token` (`string`, optional): Pagination cursor from a previous redshift_list_databases response.

Example input: `{}`

### `redshift_list_schemas`

List Schemas · Read-only

List schemas in an Amazon Redshift database using the Redshift Data API. Supports filtering by schema name pattern with pagination.

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

Inputs:

- `connected_database` (`string`, optional): Override the connected account's default database for this request.
- `max_results` (`integer`, optional): Maximum number of schemas to return.
- `next_token` (`string`, optional): Pagination cursor from a previous redshift_list_schemas response.
- `schema_pattern` (`string`, optional): LIKE pattern to filter schemas (e.g., public, my_schema%).

Example input: `{}`

### `redshift_list_statements`

List Statements · Read-only

List previously executed SQL statements in Amazon Redshift using the Redshift Data API. Supports filtering by name, status, and role level with pagination.

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

Inputs:

- `max_results` (`integer`, optional): Maximum number of statements to return.
- `next_token` (`string`, optional): Pagination cursor from a previous redshift_list_statements response.
- `role_level` (`boolean`, optional): When true, lists all statements run by the IAM role rather than just the current session.
- `statement_name` (`string`, optional): Filter statements by name label.
- `status` (`string`, optional): Filter by execution status (e.g., FINISHED, FAILED, ABORTED, PICKED, STARTED, SUBMITTED). One of: `SUBMITTED`, `PICKED`, `STARTED`, `FINISHED`, `ABORTED`, `FAILED`, `ALL`.

Example input: `{}`

### `redshift_list_tables`

List Tables · Read-only

List tables in an Amazon Redshift database using the Redshift Data API. Supports filtering by schema and table name patterns with pagination.

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

Inputs:

- `connected_database` (`string`, optional): Override the connected account's default database for this request.
- `max_results` (`integer`, optional): Maximum number of tables to return.
- `next_token` (`string`, optional): Pagination cursor from a previous redshift_list_tables response.
- `schema_pattern` (`string`, optional): LIKE pattern to filter schemas (e.g., public, my_schema%).
- `table_pattern` (`string`, optional): LIKE pattern to filter tables (e.g., orders, user%).

Example input: `{}`

### `redshift_batch_execute_sql`

Batch Execute SQL · Write

Run multiple SQL statements serially in a single call against Amazon Redshift using the Redshift Data API's BatchExecuteStatement action, returning one batch statement ID. Distinct from redshift_execute_sql, which only accepts a single statement. If any statement in the batch fails, remaining statements are not run.

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

Inputs:

- `sqls` (`array`, required): The SQL statements to run, in order. Each must be non-empty.
- `statement_name` (`string`, optional): Optional label for the batch, echoed back by DescribeStatement for tracking purposes.
- `with_event` (`boolean`, optional): If true, AWS publishes an EventBridge event when the batch completes. Default: `false`.

Example input: `{"sqls":[]}`

### `redshift_execute_sql`

Execute SQL · Write

Execute a SQL statement against Amazon Redshift using the Redshift Data API. Returns a statement ID that can be used with redshift_get_query_result to fetch results.

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

Inputs:

- `sql` (`string`, required): SQL statement to execute. Must be non-empty.
- `statement_name` (`string`, optional): Optional label for the statement, echoed back by DescribeStatement for tracking purposes.
- `with_event` (`boolean`, optional): If true, AWS publishes an EventBridge event when the statement completes. Default: `false`.

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

### `redshift_cancel_query`

Cancel Query · Destructive

Cancel a running Amazon Redshift SQL statement using its statement ID.

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

Inputs:

- `statement_id` (`string`, required): The ID of the statement to cancel. Must be non-empty.

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

## Related

Other Analytics connectors ([all 95](/agentkit/connectors/?category=analytics)):

- [Microsoft 365](/agentkit/connectors/microsoft365/): Scalekit connector, OAuth, 317 tools
- [HubSpot](/agentkit/connectors/hubspot/): Scalekit connector, OAuth, 457 tools
- [Snowflake](/agentkit/connectors/snowflake/): Scalekit connector, OAuth, 42 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 |
