Metadata-Version: 2.4
Name: crewai-synoppy
Version: 1.0.0
Summary: CrewAI tools for the Synoppy web-data API — read, search, crawl, map, extract, classify, enrich, images, and screenshot the live web from your crew.
Project-URL: Homepage, https://synoppy.com
Project-URL: Documentation, https://synoppy.com/docs
Project-URL: Repository, https://github.com/Synoppy/synoppy-crewai
Author-email: Saanora <support@synoppy.com>
License: MIT
License-File: LICENSE
Keywords: agents,crewai,llm,rag,synoppy,tools,web-scraping,web-search
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3
Requires-Python: >=3.10
Requires-Dist: crewai>=0.70
Requires-Dist: pydantic>=2
Requires-Dist: synoppy>=1.1.1
Description-Content-Type: text/markdown

# crewai-synoppy

[![PyPI](https://img.shields.io/pypi/v/crewai-synoppy.svg)](https://pypi.org/project/crewai-synoppy/) [![license](https://img.shields.io/pypi/l/crewai-synoppy.svg)](./LICENSE)

**Give your CrewAI agents the whole web.** [Synoppy](https://synoppy.com) tools for [CrewAI](https://www.crewai.com) — read, search, crawl, map, extract, classify, enrich, screenshot, and pull images from the live web, all on one key.

[**Get a free key →**](https://synoppy.com/dashboard) · [Docs](https://synoppy.com/docs) · [synoppy.com](https://synoppy.com)

## Install

```bash
pip install crewai-synoppy
```

## Quickstart

```python
from crewai import Agent, Task, Crew
from crewai_synoppy import synoppy_tools

tools = synoppy_tools(api_key="syn_live_...")

researcher = Agent(
    role="Web researcher",
    goal="Find and summarize current information from the web",
    backstory="You use Synoppy to read and search the live web.",
    tools=tools,
)

task = Task(description="Find the top HN story and summarize it in 3 bullets.", agent=researcher, expected_output="3 bullets")
print(Crew(agents=[researcher], tasks=[task]).kickoff())
```

`synoppy_tools()` returns a list of CrewAI `BaseTool`s. Want a subset? Import the individual tool classes (`SynoppyReadTool`, `SynoppySearchTool`, …) and instantiate them with `api_key=`.

## Tools

| Tool | Endpoint | What it does |
| --- | --- | --- |
| `synoppy_read` | `/api/scrape` | URL → clean markdown (nav/ads stripped) |
| `synoppy_search` | `/api/search` | Ranked live-web results, optionally read to markdown |
| `synoppy_crawl` | `/api/crawl` | Crawl a site → markdown per page (RAG ingest) |
| `synoppy_map` | `/api/map` | Every URL on a domain |
| `synoppy_extract` | `/api/extract` | Page → structured JSON from a prompt |
| `synoppy_classify` | `/api/classify` | NAICS/SIC industry codes, or custom labels |
| `synoppy_enrich` | `/api/brand` | Domain / email → brand profile (logo, colors, fonts, socials) |
| `synoppy_images` | `/api/images` | Every image on a page + alt text |
| `synoppy_screenshot` | `/api/screenshot` | URL → PNG (base64 data URL) for vision models |

Each tool returns a compact JSON string plus `creditsUsed`, and hands back `{"error", "code"}` on failure so the agent can recover.

For typed extraction (a JSON Schema), custom timeouts, or raw responses, use the [`synoppy`](https://pypi.org/project/synoppy/) client directly.

MIT licensed · built by [Saanora](https://synoppy.com)
