Pull data from 8 sources with db.connect().
Every connector returns a standard ConnectorResult.
Credentials can be encrypted and persisted with save=True.
# Connect, fetch, ingest — one pattern for everything conn = db.connect("slack", token="xoxb-...", save=True) result = conn.run(db) print(f"Ingested {result.claims_ingested} claims")
Chat connectors (Slack, Teams) call db.ingest_chat() — messages are grouped by channel.
Text connectors (Gmail, Google Docs, Notion, Confluence) call db.ingest_text() — each document is extracted as claims.
SQL connectors (PostgreSQL, MySQL) run a query and map columns to claim fields — each row becomes one claim.
Live Slack channels via Bot Token (not an export). Requires requests.
conn = db.connect("slack", token="xoxb-...", channels=["general", "engineering"], extraction="heuristic", ) result = conn.run(db)
| Param | Required | Description |
|---|---|---|
token | Yes | Slack Bot Token (xoxb-...) |
channels | No | List of channel names to fetch (default: all) |
extraction | No | heuristic, smart, or llm (default: heuristic) |
Microsoft Teams channels via Graph API. Requires requests and an Azure AD app token.
conn = db.connect("teams", token=os.environ["TEAMS_ACCESS_TOKEN"], team_id="...", channels=["general"], extraction="heuristic", ) result = conn.run(db)
| Param | Required | Description |
|---|---|---|
token | Yes | Azure AD access token with ChannelMessage.Read.All |
team_id | Yes | Microsoft Teams team ID |
channels | No | List of channel names to fetch (default: all) |
extraction | No | heuristic, smart, or llm (default: heuristic) |
Fetch recent email threads via Gmail API. Requires requests.
conn = db.connect("gmail", token="ya29.a0...", labels=["INBOX"], max_results=50, ) result = conn.run(db)
| Param | Required | Description |
|---|---|---|
token | Yes | Google OAuth2 access token |
labels | No | Gmail labels to filter (default: INBOX) |
max_results | No | Max threads to fetch (default: 50) |
Fetch documents by ID via Google Docs API. Requires requests.
conn = db.connect("gdocs", token="ya29.a0...", document_ids=["1BxiMVs0...", "1CyiNWt1..."], ) result = conn.run(db)
| Param | Required | Description |
|---|---|---|
token | Yes | Google OAuth2 access token |
document_ids | Yes | List of Google Docs document IDs |
Fetch pages from a Notion database. Requires requests.
conn = db.connect("notion", token="ntn_...", database_id="abc123...", ) result = conn.run(db)
| Param | Required | Description |
|---|---|---|
token | Yes | Notion integration token |
database_id | Yes | Notion database ID to query |
Fetch pages from a Confluence space. Requires requests.
conn = db.connect("confluence", url="https://your-org.atlassian.net", token="ATATT3x...", space_key="ENG", ) result = conn.run(db)
| Param | Required | Description |
|---|---|---|
url | Yes | Confluence base URL |
token | Yes | Atlassian API token |
space_key | Yes | Confluence space key (e.g. ENG) |
Query a Postgres database and map rows to claims. Requires psycopg2-binary.
conn = db.connect("postgres", dsn="postgresql://user:pass@host/db", query="SELECT gene, relation, target FROM interactions", mapping={"subject": "gene", "predicate": "relation", "object": "target"}, ) result = conn.run(db)
| Param | Required | Description |
|---|---|---|
dsn | Yes | PostgreSQL connection string |
query | Yes | SQL query to execute |
mapping | Yes | Column-to-claim mapping (subject, predicate, object) |
Query a MySQL database and map rows to claims. Requires pymysql.
conn = db.connect("mysql", dsn="mysql://user:pass@host/db", query="SELECT src, rel, dst FROM edges", mapping={"subject": "src", "predicate": "rel", "object": "dst"}, ) result = conn.run(db)
| Param | Required | Description |
|---|---|---|
dsn | Yes | MySQL connection string |
query | Yes | SQL query to execute |
mapping | Yes | Column-to-claim mapping (subject, predicate, object) |
Pass save=True to any db.connect() call to encrypt and persist the token
alongside your database file. Next time, connect without passing the token:
# First time — save encrypted conn = db.connect("slack", token="xoxb-...", save=True) # Next time — token loaded automatically conn = db.connect("slack")
Tokens are encrypted with Fernet (AES-128-CBC) and stored at {db_path}.tokens.
Requires the optional cryptography package (pip install cryptography).
| Connector | Package | Install |
|---|---|---|
| Slack, Teams, Gmail, Google Docs, Notion, Confluence | requests | pip install requests |
| PostgreSQL | psycopg2-binary | pip install psycopg2-binary |
| MySQL | pymysql | pip install pymysql |
| Token Store (encrypted) | cryptography | pip install cryptography |