Metadata-Version: 2.4
Name: puffin-local
Version: 0.3.0
Summary: Puffin SDK, CLI and MCP server for AI agent identity and communications
Home-page: https://www.justpuffin.tech
Author: Puffin
License: MIT
Keywords: puffin,ai agents,email,sms,mcp,cli
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3
Requires-Python: >=3.10
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: requests
Requires-Dist: cryptography<51,>=50
Provides-Extra: mcp
Requires-Dist: mcp<2,>=1.12; extra == "mcp"
Provides-Extra: tunnel
Requires-Dist: websockets<17,>=15; extra == "tunnel"
Dynamic: author
Dynamic: classifier
Dynamic: description
Dynamic: description-content-type
Dynamic: home-page
Dynamic: keywords
Dynamic: license
Dynamic: license-file
Dynamic: provides-extra
Dynamic: requires-dist
Dynamic: requires-python
Dynamic: summary

# puffin-local

Python SDK, `puffin` command line and local MCP server for [Puffin](https://www.justpuffin.tech), the identity and communications layer for AI agents.

## Install

```bash
pip install puffin-local
# With the local MCP server and tunnel worker:
pip install "puffin-local[mcp,tunnel]"
```

## Configure

Create an agent and a scoped agent key in the Puffin dashboard, then set:

```bash
export PUFFIN_API_URL=https://puffin-api.onrender.com
export PUFFIN_API_KEY=pf_...          # keep this secret
export PUFFIN_IDENTITY_ID=<agent id>
```

## Python

```python
from puffin import Puffin

client = Puffin(api_key, "https://puffin-api.onrender.com")
agent = client.agent(identity_id)
print(agent.identity())
agent.send("someone@example.com", "Hello", "Subject", transport="resend")  # waits for approval
print(agent.search("invoice"))
```

## Command line

```bash
puffin identity
puffin email search invoice
puffin email draft --to someone@example.com --subject Hi --body "Draft text"
puffin contacts list
puffin events watch
```

Every outgoing message waits for a workspace administrator's approval.

## MCP

`puffin-mcp` runs a local stdio MCP server with the same tools as the hosted endpoint (`<API URL>/mcp`).
