Metadata-Version: 2.4
Name: limma-ai
Version: 0.1.0
Summary: The Limma client: the Python SDK for Limma's agent verbs, and `limma sync`, which keeps a folder, an S3 / Azure / GCS bucket, a Google Drive folder or a SharePoint library equal to a workspace.
Author: Limma
License-Expression: LicenseRef-Proprietary
Project-URL: Homepage, https://limma.ai
Project-URL: Documentation, https://docs.limma.ai
Requires-Python: >=3.10
Description-Content-Type: text/markdown
Requires-Dist: httpx>=0.27
Provides-Extra: s3
Requires-Dist: boto3>=1.26; extra == "s3"
Provides-Extra: azure
Requires-Dist: azure-storage-blob>=12.14; extra == "azure"
Requires-Dist: azure-identity>=1.12; extra == "azure"
Provides-Extra: gcs
Requires-Dist: google-cloud-storage>=2.7; extra == "gcs"
Provides-Extra: gdrive
Requires-Dist: google-auth>=2.15; extra == "gdrive"
Provides-Extra: sharepoint
Requires-Dist: azure-identity>=1.12; extra == "sharepoint"

# limma-ai

The Limma client: the Python SDK for Limma's agent verbs, and the `limma` command.

Limma gets the right information to an AI agent: every fact at an address, with a
receipt that redeems to the exact bytes of the document it came from, and a count
that says whether you hold all of them.

## Install

```bash
pip install limma-ai                  # the SDK (import limma) and the `limma` command
pip install "limma-ai[s3]"            # + reading S3 buckets (also: [azure], [gcs])
pip install "limma-ai[gdrive]"        # + Google Drive      (also: [sharepoint])
```

The distribution is `limma-ai`; the package you import and the command are `limma`.

## Keep a folder, a bucket, a Drive folder or a SharePoint library in Limma

```bash
export LIMMA_API_KEY=<your key>
limma sync ./contracts --url https://api.limma.ai
limma sync s3://my-bucket/contracts --url https://api.limma.ai --delete --watch 300
limma sync gdrive://<folder-id> --url https://api.limma.ai
limma sync "sharepoint://contoso.sharepoint.com/sites/finance/Shared Documents" --url https://api.limma.ai
```

Without `--workspace` the files go to your key's default workspace (created on first
use); each pass prints its id. `limma sync --help` lists every option.

## Use it from Python

```python
from limma import LimmaClient

client = LimmaClient(api_key="<your key>", base_url="https://api.limma.ai")
client.ingest("Ingrid Solberg was appointed CFO on 1 March 2024.", filename="minutes.txt")
facts = client.facts("Who is the chief financial officer?")["facts"]
receipt = client.region(facts[0]["source_id"], facts[0]["char_start"], facts[0]["char_end"],
                        page=facts[0].get("page"))
```

Every method takes `workspace_id=` to name another workspace your key reaches.

## Attach an agent

Agents attach over MCP at `https://api.limma.ai/mcp` (or your own deployment's
`/mcp`) with the `X-API-Key` header — no package needed. Documentation:
<https://docs.limma.ai>.
