Metadata-Version: 2.4
Name: klawsearch
Version: 0.1.0
Summary: Python SDK for KlawSearch — AI-native search API for agents
Project-URL: Homepage, https://klawsearch.com
Project-URL: Documentation, https://klawsearch.com/docs
Project-URL: Changelog, https://klawsearch.com/docs
Author: KlawSearch
License: MIT
License-File: LICENSE
Keywords: agents,ai,edgar,langchain,llm,rag,retrieval,search,search-api,sec,vector-search
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Topic :: Internet :: WWW/HTTP :: Indexing/Search
Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Classifier: Typing :: Typed
Requires-Python: >=3.9
Requires-Dist: httpx>=0.27
Provides-Extra: dev
Requires-Dist: pytest-asyncio>=0.23; extra == 'dev'
Requires-Dist: pytest>=8.0; extra == 'dev'
Description-Content-Type: text/markdown

# klawsearch (Python SDK)

```bash
pip install klawsearch
```

## Quick start

```python
from klawsearch import KlawSearch

client = KlawSearch(api_key="ks-live-...")  # or set KLAWSEARCH_API_KEY env var

r = client.search("latest LLM benchmarks", max_results=5)
print(r.answer)
for hit in r:
    print(hit.score, hit.url, hit.title)
```

## Async

```python
import asyncio
from klawsearch import AsyncKlawSearch

async def main():
    async with AsyncKlawSearch(api_key="ks-live-...") as client:
        r = await client.search("hacker news api")
        print(r.answer)

asyncio.run(main())
```

## LangChain integration

A drop-in `KlawSearchResults` tool with the standard LangChain web-search
interface (string/dict input → `list[dict]` output):

```python
from klawsearch.langchain_compat import KlawSearchResults

tool = KlawSearchResults(max_results=5, api_key="ks-live-...")
result = tool.invoke("AAPL 10-K risk factors")
# [{"url": ..., "title": ..., "content": ..., "score": ..., "raw_content": ...}, ...]
```

## Self-hosted endpoint

```python
client = KlawSearch(api_key="...", base_url="https://klaw.your-domain.dev")
# or set KLAWSEARCH_BASE_URL env var
```

## Errors

```python
from klawsearch import KlawSearch, AuthError, QuotaExceededError, RateLimitError

try:
    client.search("...")
except QuotaExceededError:
    ...  # bump plan
except RateLimitError:
    ...  # back off
except AuthError:
    ...  # bad key
```
