Integrations

Use Canonical with popular AI agent frameworks. The Python SDK works as a drop-in tool for LangChain, AutoGen, CrewAI, Agno, and any framework that supports Python functions.

LangChain

from langchain_core.tools import tool
from canonical_search import CanonicalClient

client = CanonicalClient(api_key="sk_your_key")

@tool
def search_companies(query: str, top_k: int = 20) -> str:
    """Search for companies using natural language."""
    return client.search(query, top_k).model_dump_json()

AutoGen

from autogen import register_function
from canonical_search import CanonicalClient

client = CanonicalClient(api_key="sk_your_key")

def search_companies(query: str, top_k: int = 20) -> str:
    """Search for companies using natural language."""
    return client.search(query, top_k).model_dump_json()

register_function(
    search_companies,
    caller=assistant,
    executor=executor,
    description="Search for companies using natural language",
)

CrewAI

from crewai.tools import tool
from canonical_search import CanonicalClient

client = CanonicalClient(api_key="sk_your_key")

@tool("Company Search")
def search_companies(query: str, top_k: int = 20) -> str:
    """Search for companies using natural language."""
    return client.search(query, top_k).model_dump_json()

Agno

from agno.tools import tool
from canonical_search import CanonicalClient

client = CanonicalClient(api_key="sk_your_key")

@tool
def search_companies(query: str, top_k: int = 20) -> str:
    """Search for companies using natural language."""
    return client.search(query, top_k).model_dump_json()

Any Python Framework

The SDK returns Pydantic models, so it works with any framework that accepts Python functions. Use .model_dump_json() for string output or .model_dump() for dict output.

from canonical_search import CanonicalClient

client = CanonicalClient(api_key="sk_your_key")

# As JSON string
json_str = client.search("fintech").model_dump_json()

# As Python dict
data = client.search("fintech").model_dump()

# Async version
results = await client.asearch("fintech")
companies = [c.model_dump() for c in results.results]