Skip to main content

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 identifier
  • content: Text content for RAG indexing
  • name: Display name for the document
  • url: URL to view document in source tool
  • scope: "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 query
  • filters: Filter dict (e.g., {"type": ["meeting_transcript"]})
  • time_range_days: Limit to recent documents
  • max_results: Maximum results
  • user_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 share
  • shared_by_email: Email of the user sharing
  • shared_with_email: Email of the recipient
  • document_name: Display name for the shared document
  • content: Document content
  • external_url: URL to view the document
  • metadata: 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

lyzr_cortex_sdk-0.1.1.tar.gz (14.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

lyzr_cortex_sdk-0.1.1-py3-none-any.whl (13.1 kB view details)

Uploaded Python 3

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

Hashes for lyzr_cortex_sdk-0.1.1.tar.gz
Algorithm Hash digest
SHA256 87a7daf5889d308680c44cd380b008e5e5850e6de63511965d34f1e69ab8f753
MD5 e916b100fa1318b16999f110433cf2bb
BLAKE2b-256 795b461859fac0c55b6d2a0c3107537dae1e20ef5074bdab14856d1f53f2aa1f

See more details on using hashes here.

File details

Details for the file lyzr_cortex_sdk-0.1.1-py3-none-any.whl.

File metadata

File hashes

Hashes for lyzr_cortex_sdk-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 c8b2f3bf4282996d1540b7890485fbb5379b738c1bbccad38921a3de51d73aae
MD5 29d4489efc9e22bfcf3e344f6ceacc40
BLAKE2b-256 3dc589005061a370680c350768139d70eed27f766458f12d0695650e84199074

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page