Skip to main content

Database Support

Complete reference of database systems supported by DgiDgi AI agents.

Fully Supported Databases

PostgreSQL

Primary database with full executor support.

ToolDescription
database.queryExecute SQL with parameterized queries
database.migrateRun migrations with transaction support
database.schemaApply schema changes

Features:

  • Row-Level Security (RLS) enforcement
  • Multi-tenant isolation via app.tenant_id
  • Transaction-wrapped operations
  • Dangerous query detection
  • Connection pooling

Example:

-- Queries automatically respect tenant isolation
SELECT * FROM projects WHERE tenant_id = current_setting('app.tenant_id')

MongoDB

Full document database support.

ToolDescription
mongodb.insert_oneInsert single document
mongodb.insert_manyBulk insert
mongodb.findQuery documents
mongodb.find_oneFind single document
mongodb.update_oneUpdate single document
mongodb.update_manyBulk update
mongodb.delete_oneDelete single document
mongodb.delete_manyBulk delete
mongodb.aggregateAggregation pipeline
mongodb.countCount documents
mongodb.distinctGet distinct values
mongodb.create_indexCreate index
mongodb.list_indexesList indexes
mongodb.drop_indexDrop index
mongodb.create_collectionCreate collection
mongodb.list_collectionsList collections
mongodb.drop_collectionDrop collection
mongodb.collection_statsCollection statistics
mongodb.bulk_writeBulk operations

Redis

In-memory data store with 50+ operations.

String Operations

ToolDescription
redis.getGet string value
redis.setSet string value
redis.mgetGet multiple values
redis.msetSet multiple values
redis.incrIncrement integer
redis.decrDecrement integer
redis.appendAppend to string

Hash Operations

ToolDescription
redis.hgetGet hash field
redis.hsetSet hash field
redis.hmgetGet multiple fields
redis.hmsetSet multiple fields
redis.hgetallGet all fields
redis.hdelDelete field
redis.hincrbyIncrement field

List Operations

ToolDescription
redis.lpushPush to head
redis.rpushPush to tail
redis.lpopPop from head
redis.rpopPop from tail
redis.lrangeGet range
redis.llenGet length
redis.lindexGet by index

Set Operations

ToolDescription
redis.saddAdd member
redis.sremRemove member
redis.smembersGet all members
redis.sismemberCheck membership
redis.scardGet cardinality
redis.sdiffSet difference
redis.sinterSet intersection
redis.sunionSet union

Sorted Set Operations

ToolDescription
redis.zaddAdd with score
redis.zremRemove member
redis.zrangeGet range by rank
redis.zscoreGet score
redis.zrankGet rank
redis.zincrbyIncrement score

Pub/Sub

ToolDescription
redis.publishPublish message
redis.subscribeSubscribe to channel

Streams

ToolDescription
redis.xaddAdd to stream
redis.xreadRead from stream
redis.xrangeGet range
redis.xlenGet length

Transactions

ToolDescription
redis.multiStart transaction
redis.execExecute transaction
redis.watchWatch keys

Key Operations

ToolDescription
redis.keysFind keys by pattern
redis.existsCheck existence
redis.delDelete key
redis.expireSet TTL
redis.ttlGet TTL
redis.typeGet type
redis.scanIterate keys

Cassandra

Wide-column store support.

ToolDescription
cassandra.queryExecute CQL query
cassandra.create_keyspaceCreate keyspace
cassandra.use_keyspaceSwitch keyspace
cassandra.describe_keyspaceDescribe keyspace
cassandra.create_tableCreate table
cassandra.describe_tableDescribe table
cassandra.truncate_tableTruncate table
cassandra.drop_tableDrop table

Provisioning Support

Databases that can be provisioned but have limited query support.

ProviderTypeFeatures
SupabasePostgreSQL + AuthFull provisioning, connection strings
NeonServerless PostgreSQLBranching, scaling
PlanetScaleMySQL compatibleBranching, schema changes

Planned Database Support

High Priority

DatabaseTypeUse Case
MySQL/MariaDBRelationalMost common web database
SQLiteEmbeddedLocal/mobile apps
ElasticsearchSearchFull-text search, analytics

Medium Priority

DatabaseTypeUse Case
SQL ServerEnterpriseMicrosoft ecosystem
OracleEnterpriseLegacy systems
DynamoDBDocument/KVAWS serverless
Firebase/FirestoreDocumentMobile/web apps

Specialized

DatabaseTypeUse Case
Neo4jGraphRelationships, networks
InfluxDBTime-seriesMetrics, IoT
CockroachDBDistributed SQLGlobal scale
SnowflakeData warehouseAnalytics
ClickHouseAnalyticsReal-time analytics
PineconeVectorAI embeddings
WeaviateVectorSemantic search
QdrantVectorML applications

ORM Support

Currently Used

ORMLanguageStatus
DrizzleTypeScriptInternal use

Planned Integration

ORMLanguageStatus
PrismaTypeScriptPlanned
TypeORMTypeScriptPlanned
SQLAlchemyPythonPlanned
Django ORMPythonPlanned
GORMGoPlanned
DieselRustPlanned

Connection Security

Supported Features

FeatureStatus
SSL/TLS connectionsSupported
Connection poolingSupported
Credential rotationSupported
Secret managementSupported

Multi-Tenant Isolation

// PostgreSQL RLS enforcement
await client.query("SELECT set_config('app.tenant_id', $1, true)", [tenantId]);
await client.query("SELECT set_config('app.user_id', $1, true)", [userId]);

Database Migrations

PostgreSQL Migrations

# Migrations stored in supabase/migrations/
supabase/migrations/
├── 20240101000000_initial.sql
├── 20240102000000_add_users.sql
└── 20240103000000_add_projects.sql

Features:

  • Transaction-wrapped execution
  • Rollback on failure
  • Migration tracking table
  • Idempotent operations

Query Safety

Dangerous Query Detection

The following patterns require explicit allowDangerous: true:

-- Blocked by default
DROP DATABASE ...
TRUNCATE ...
DELETE FROM table -- (without WHERE)

Parameterized Queries

// Safe: parameterized
await database.query({
query: "SELECT * FROM users WHERE id = $1",
params: [userId]
});

// Unsafe: string interpolation (rejected)
await database.query({
query: `SELECT * FROM users WHERE id = '${userId}'` // DON'T DO THIS
});