Documentation Index
Fetch the complete documentation index at: https://docs.shoal.xyz/llms.txt
Use this file to discover all available pages before exploring further.
Overview
Before outreach, know what a prospect’s company has been doing. Shoal enrichment matches company names against 5,000+ tracked organizations and surfaces recent radar and signal events — filtered to where the org is the primary event owner, not just mentioned as a participant.How It Works
- You provide a list of contacts (name + company)
- Each company is matched against Shoal’s tracked organizations
- Matched orgs get recent radar and signal events attached
- Events are filtered to primary ownership (not just mentioned as participant)
Quick Start (CLI)
Input Format
A JSON array where each object needs at minimum acompany field. The name field is optional and passed through to the output.
contacts.json
shoal enrich --example.
Full Example Output
Below is a realistic enriched result for 4 of the contacts above. Each contact getsmatched, shoal_org, and filtered radar/signal arrays appended.
- Uniswap has 2 radar events where it is the
eventOwner - Chainlink has 1 radar + 1 signal event — the signal includes a score and narrative summary
- Aave has 1 radar event — even though Chainlink and Arbitrum are participants, Aave is the owner so it surfaces here
- EigenLayer returned
matched: falsebecause it isn’t in Shoal’s tracked org database yet
Using with AI Agents (MCP)
You can build the same enrichment workflow through Shoal MCP by resolving each company with organization lookup tools, then fetching briefs or embedded event data for the matched orgs. Typical tool flow:“Enrich these 20 contacts and tell me which companies have the most recent activity. Suggest an outreach angle for the top 3.”See MCP Server for configuration.
API-Only Approach
For custom pipelines, use two API calls per company: resolve the name, then fetch events.cURL
Python
JavaScript
Tips
- The CLI deduplicates by company name automatically — duplicates don’t cost extra credits
- Use
--limitto control event depth vs credit cost (default 5) - Pipe to jq for filtering:
shoal enrich contacts.json | jq '[.[] | select(.matched)]' - Combine with
shoal brief org <id>for deeper dives on high-value prospects - For large lists (100+ contacts), consider the API-only approach with your own rate limiting