Data source: ICIJ Offshore Leaks Database (Reconciliation API)
Overview
ICIJ Offshore Leaks wraps ICIJ Offshore Leaks Database (Reconciliation API), handling authentication, pagination, and rate limits for you. This tutorial covers all 3 tools with working code examples you can copy and run.
Prerequisites
- Sign up at https://context.gnist.ai/signup for a free API key (100 calls/day).
- Choose your integration method: MCP protocol or REST API.
Connect via MCP
Add to your MCP client config (Claude Desktop, Cursor, etc.):
{
"mcpServers": {
"gnist-offshore-leaks": {
"url": "https://context.gnist.ai/mcp/offshore-leaks/",
"headers": {
"Gnist-API-Key": "YOUR_API_KEY"
}
}
}
}
Tools (3)
search_offshore_leaks
Search the ICIJ Offshore Leaks Database for entities, officers, and intermediaries. Covers data from Panama Papers, Paradise Papers, Pandora Papers, Offshore Leaks, and Bahamas Leaks — over 800,000 offshore entities, their officers, and intermediaries. Use this to investigate offshore company structures, identify connected parties, or verify entities appearing in leaked financial documents. Examples: search_offshore_leaks("Mossack Fonseca") → Entities matching the law firm search_offshore_leaks("Smith", node_type="Officer", country="GB") → UK-linked officers search_offshore_leaks("trust", source="pandora-papers") → Trusts in Pandora Papers Returns: List of matches with node_id, name, type, description, and match score.
| Parameter | Type | Required | Description |
|---|---|---|---|
query | string | required | Search query — name of entity, person, or intermediary. Example: 'Mossack Fonseca'. |
node_type | string | optional | Node type to search: Entity (companies/trusts), Officer (directors/shareholders), Address, Intermediary (law firms/agents), Other, Node (all). (default: Entity) |
country | any | optional | ISO country code filter. Example: 'PA' for Panama, 'VGB' for British Virgin Islands. |
source | string | optional | Investigation to search: all, panama-papers, paradise-papers, pandora-papers, offshore-leaks, bahamas-leaks. (default: all) |
limit | integer | optional | Max results (1-25). (default: 10) |
curl -X POST "https://context.gnist.ai/mcp/offshore-leaks/" \
-H "Content-Type: application/json" \
-H "Gnist-API-Key: YOUR_API_KEY" \
-d '{"jsonrpc": "2.0", "method": "tools/call", "id": 1, "params": {"name": "search_offshore_leaks", "arguments": {"query": "renewable energy"}}}'
import httpx
resp = httpx.post(
"https://context.gnist.ai/mcp/offshore-leaks/",
headers={"Gnist-API-Key": "YOUR_API_KEY"},
json={'id': 1,
'jsonrpc': '2.0',
'method': 'tools/call',
'params': {'arguments': {'query': 'renewable energy'},
'name': 'search_offshore_leaks'}},
)
print(resp.json())
get_offshore_entity
Get detailed properties for an offshore leaks node by ID. Returns structured data including name, country, jurisdiction, status, incorporation/dissolution dates, data source, and related notes. Entity nodes include additional fields like IBC/RUC numbers. Use node_ids from search_offshore_leaks results. Returns: Detailed node properties including data source investigation name.
| Parameter | Type | Required | Description |
|---|---|---|---|
node_id | string | required | Node ID from a search result. Example: '10022201'. |
node_type | string | optional | Node type: Entity, Officer, Address, Intermediary, Other. (default: Entity) |
curl -X POST "https://context.gnist.ai/mcp/offshore-leaks/" \
-H "Content-Type: application/json" \
-H "Gnist-API-Key: YOUR_API_KEY" \
-d '{"jsonrpc": "2.0", "method": "tools/call", "id": 1, "params": {"name": "get_offshore_entity", "arguments": {"node_id": "12345"}}}'
import httpx
resp = httpx.post(
"https://context.gnist.ai/mcp/offshore-leaks/",
headers={"Gnist-API-Key": "YOUR_API_KEY"},
json={'id': 1,
'jsonrpc': '2.0',
'method': 'tools/call',
'params': {'arguments': {'node_id': '12345'}, 'name': 'get_offshore_entity'}},
)
print(resp.json())
report_feedback
Report a bug, feature request, or general feedback for this data source. Use this when something doesn't work as expected, when you'd like a new feature, or when you have suggestions for improvement. Args: feedback: Describe the issue or suggestion. feedback_type: One of 'bug', 'feature_request', or 'general'.
| Parameter | Type | Required | Description |
|---|---|---|---|
feedback | string | required | |
feedback_type | string | optional | (default: general) |
curl -X POST "https://context.gnist.ai/mcp/offshore-leaks/" \
-H "Content-Type: application/json" \
-H "Gnist-API-Key: YOUR_API_KEY" \
-d '{"jsonrpc": "2.0", "method": "tools/call", "id": 1, "params": {"name": "report_feedback", "arguments": {"feedback": "example"}}}'
import httpx
resp = httpx.post(
"https://context.gnist.ai/mcp/offshore-leaks/",
headers={"Gnist-API-Key": "YOUR_API_KEY"},
json={'id': 1,
'jsonrpc': '2.0',
'method': 'tools/call',
'params': {'arguments': {'feedback': 'example'}, 'name': 'report_feedback'}},
)
print(resp.json())
Common Patterns
Use
search_offshore_leaks to find items, then get_offshore_entity to get full details. This two-step pattern is common for exploring data before drilling down.Several tools support
limit, offset, or page parameters. Start with small limits during development, then increase for production queries.FAQ
What data does ICIJ Offshore Leaks provide?
Search the ICIJ Offshore Leaks Database — Panama Papers, Paradise Papers, Pandora Papers. 800K+ offshore entities, officers, intermediaries, and addresses from leaked financial documents. It exposes 3 tools: search_offshore_leaks, get_offshore_entity, report_feedback.
What do I need to get started?
A Gnist API key (free tier: 100 calls/day). Sign up at https://context.gnist.ai/signup.
What format does the ICIJ Offshore Leaks API return?
JSON, via either MCP protocol (JSON-RPC 2.0) or REST API.