---
title: "mindsdb-execute-sql"
type: docs
weight: 1
description: >
  A "mindsdb-execute-sql" tool executes a SQL statement against a MindsDB
  federated database.
---

## About

A `mindsdb-execute-sql` tool executes a SQL statement against a MindsDB
federated database.

`mindsdb-execute-sql` takes one input parameter `sql` and runs the SQL
statement against the `source`. This tool enables you to:

- **Query Multiple Datasources**: Execute SQL across hundreds of connected
  datasources
- **Cross-Datasource Joins**: Perform joins between different databases, APIs,
  and file systems
- **ML Model Predictions**: Query ML models as virtual tables for real-time
  predictions
- **Unstructured Data**: Query documents, images, and other unstructured data as
  structured tables
- **Federated Analytics**: Perform analytics across multiple datasources
  simultaneously
- **API Translation**: Automatically translate SQL queries into REST APIs,
  GraphQL, and native protocols

## Compatible Sources

{{< compatible-sources >}}

## Example

```yaml
kind: tool
name: execute_sql_tool
type: mindsdb-execute-sql
source: my-mindsdb-instance
description: Use this tool to execute SQL statements across multiple datasources and ML models.
```

### Example Queries

#### Cross-Datasource Analytics

```sql
-- Join Salesforce opportunities with GitHub activity
SELECT 
    s.opportunity_name,
    s.amount,
    g.repository_name,
    COUNT(g.commits) as commit_count
FROM salesforce.opportunities s
JOIN github.repositories g ON s.account_id = g.owner_id
WHERE s.stage = 'Closed Won'
GROUP BY s.opportunity_name, s.amount, g.repository_name;
```

#### Email & Communication Analysis

```sql
-- Analyze email patterns with Slack activity
SELECT 
    e.sender,
    e.subject,
    s.channel_name,
    COUNT(s.messages) as message_count
FROM gmail.emails e
JOIN slack.messages s ON e.sender = s.user_name
WHERE e.date >= '2024-01-01'
GROUP BY e.sender, e.subject, s.channel_name;
```

#### ML Model Predictions

```sql
-- Use ML model to predict customer churn
SELECT 
    customer_id,
    customer_name,
    predicted_churn_probability,
    recommended_action
FROM customer_churn_model
WHERE predicted_churn_probability > 0.8;
```

#### MongoDB Query

```sql
-- Query MongoDB collections as structured tables
SELECT 
    name,
    email,
    department,
    created_at
FROM mongodb.users
WHERE department = 'Engineering'
ORDER BY created_at DESC;
```

> **Note:** This tool is intended for developer assistant workflows with
> human-in-the-loop and shouldn't be used for production agents.


### Working Configuration Example

Here's a working configuration that has been tested:

```yaml
kind: source
name: my-pg-source
type: mindsdb
host: 127.0.0.1
port: 47335
database: files
user: mindsdb
---
kind: tool
name: mindsdb-execute-sql
type: mindsdb-execute-sql
source: my-pg-source
description: |
  Execute SQL queries directly on MindsDB database.
  Use this tool to run any SQL statement against your MindsDB instance.
  Example: SELECT * FROM my_table LIMIT 10
```

## Reference

| **field**   | **type** | **required** | **description**                                    |
|-------------|:--------:|:------------:|----------------------------------------------------|
| type        |  string  |     true     | Must be "mindsdb-execute-sql".                     |
| source      |  string  |     true     | Name of the source the SQL should execute on.      |
| description |  string  |     true     | Description of the tool that is passed to the LLM. |
