SDK for building tools that integrate with Lyzr Cortex Platform
Project description
Lyzr Cortex SDK for Python
Build tools that integrate with the Lyzr Cortex Platform for bidirectional knowledge flow.
Installation
pip install lyzr-cortex-sdk
# With FastAPI support
pip install lyzr-cortex-sdk[fastapi]
Quick Start
from cortex_sdk import CortexClient
# Auto-configured from environment variables
client = CortexClient()
# Push a document to Knowledge Graph
await client.push(
type="meeting_transcript",
id="transcript_123",
content="Alice: Let's discuss the Q1 roadmap...",
name="Product Sync - Jan 15",
scope="team",
teams=["team_product"],
metadata={
"participants": ["alice@example.com", "bob@example.com"],
"duration_minutes": 45
}
)
# Query the Knowledge Graph
result = await client.query(
question="What decisions were made about Q1?",
filters={"type": ["meeting_transcript"]},
time_range_days=30
)
print(result.answer)
print(result.sources)
Environment Variables
| Variable | Description | Required |
|---|---|---|
CORTEX_ENABLED |
Enable/disable integration | No (default: true) |
CORTEX_API_URL |
Cortex gateway URL | Yes |
CORTEX_API_KEY |
Tool's API key | Yes |
CORTEX_TOOL_ID |
Tool identifier | Yes |
CORTEX_JWT_PUBLIC_KEY |
RSA public key for JWT validation | For embedded mode |
FastAPI Integration
from fastapi import FastAPI, Depends
from cortex_sdk import CortexClient
from cortex_sdk.auth import get_current_cortex_user, require_cortex_user
from cortex_sdk.models import CortexUser
app = FastAPI()
cortex = CortexClient()
@app.get("/data")
async def get_data(user: CortexUser | None = Depends(get_current_cortex_user)):
"""Works in both standalone and embedded mode."""
if user:
# Embedded mode - use Cortex context
result = await cortex.query(
f"Get data for {user.email}",
user_email=user.email
)
return {"data": result.answer, "user": user.email}
# Standalone mode
return {"data": "default data"}
@app.get("/protected")
async def protected_endpoint(user: CortexUser = Depends(require_cortex_user)):
"""Only works in embedded mode - requires Cortex auth."""
return {"email": user.email, "teams": user.team_names}
Graceful Degradation
The SDK operates in no-op mode when Cortex is not available:
client = CortexClient()
if client.enabled:
# Cortex is available - full functionality
await client.push(...)
else:
# Cortex disabled - operations are no-ops
result = await client.push(...) # Returns None
result = await client.query(...) # Returns empty result
Access Scopes
| Scope | Who Can See | Use For |
|---|---|---|
global |
Everyone in organization | Announcements, shared resources |
team |
Specified team members | Projects, deals, team docs |
personal |
Only the creator | Notes, drafts, personal items |
API Reference
CortexClient
push(type, id, content, scope="global", teams=None, metadata=None)
Push a document to the Knowledge Graph.
type: Document type (e.g., "meeting_transcript")id: Unique identifiercontent: Text content for RAG indexingname: Display name for the documenturl: URL to view document in source toolscope: "global", "team", or "personal"teams: Team IDs if scope is "team"metadata: Additional metadata dict
query(question, filters=None, time_range_days=None, max_results=10, user_email=None)
Query the Knowledge Graph.
question: Natural language queryfilters: Filter dict (e.g.,{"type": ["meeting_transcript"]})time_range_days: Limit to recent documentsmax_results: Maximum resultsuser_email: User email for access-scoped queries
Returns CortexQueryResult with answer and sources.
get_user_context(user_email)
Get user context for access control.
Returns CortexUser with teams, permissions, etc.
share_document(document_external_id, shared_by_email, shared_with_email, ...)
Share a document with another user in the organization.
document_external_id: External ID of the document to shareshared_by_email: Email of the user sharingshared_with_email: Email of the recipientdocument_name: Display name for the shared documentcontent: Document contentexternal_url: URL to view the documentmetadata: Additional metadata dict
get_org_users(exclude_email=None)
Get list of users in the tool's organization.
exclude_email: Email to exclude from results (typically the current user)
Returns list of user dicts with id, email, full_name, avatar_url.
License
MIT
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file lyzr_cortex_sdk-0.1.1.tar.gz.
File metadata
- Download URL: lyzr_cortex_sdk-0.1.1.tar.gz
- Upload date:
- Size: 14.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
87a7daf5889d308680c44cd380b008e5e5850e6de63511965d34f1e69ab8f753
|
|
| MD5 |
e916b100fa1318b16999f110433cf2bb
|
|
| BLAKE2b-256 |
795b461859fac0c55b6d2a0c3107537dae1e20ef5074bdab14856d1f53f2aa1f
|
File details
Details for the file lyzr_cortex_sdk-0.1.1-py3-none-any.whl.
File metadata
- Download URL: lyzr_cortex_sdk-0.1.1-py3-none-any.whl
- Upload date:
- Size: 13.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c8b2f3bf4282996d1540b7890485fbb5379b738c1bbccad38921a3de51d73aae
|
|
| MD5 |
29d4489efc9e22bfcf3e344f6ceacc40
|
|
| BLAKE2b-256 |
3dc589005061a370680c350768139d70eed27f766458f12d0695650e84199074
|