From polecat-x
Query the PolecatX API (x.polecat.com) for media monitoring data — events, entities, companies, and theme sets. Use when the user asks about PolecatX data, media or reputational events for a company/person/topic, entity or company search, or wants to call the PolecatX API directly.
How this skill is triggered — by the user, by Claude, or both
Slash command
/polecat-x:apiThis skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
Use this skill to query the PolecatX API for media monitoring data — events, entities, companies, and theme sets.
Use this skill to query the PolecatX API for media monitoring data — events, entities, companies, and theme sets.
Before any API call, verify the key is available:
if [ -z "$POLECATX_API_KEY" ]; then
echo "POLECATX_API_KEY is not set"
exit 1
fi
If unset, tell the user to add it to .claude/settings.local.json:
{
"env": {
"POLECATX_API_KEY": "<your-token>"
}
}
Tokens are created in PolecatX via API → Tokens.
BASE="https://x.polecat.com/beta"
AUTH="Authorization: Bearer $POLECATX_API_KEY"
curl -s -H "$AUTH" "$BASE/whoami"
curl -s -X POST -H "$AUTH" -H "Content-Type: application/json" \
-d '{"name": "Apple", "limit": 5}' \
"$BASE/entities/search"
Returns [{id, name, type, ticker, isin}]. Get entity IDs here before fetching events.
curl -s -H "$AUTH" "$BASE/companies/search?name=Apple&limit=5"
POST /events triggers a scan and returns fresh data. Always prefer this over GET /events unless the same params were already scanned recently.
curl -s -X POST -H "$AUTH" -H "Content-Type: application/json" \
-d '{
"entity": ["entity-id-1"],
"start": "2024-01-01T00:00:00Z",
"end": "2024-03-31T23:59:59Z"
}' \
"$BASE/events"
Optional filters in the body: sentiment (positive/concerning/unclear), esg_controversies (environmental/social/governance), source_categories (international/national/industry/local/other), locations (country or region name), summary_include, summary_exclude, source_allow, source_deny, themeset (theme set ID).
Response shape: { data: { events: [...], timeSeries: [...] } }
Event fields: id, summary, sentiment, score, scoringFactors, entity, esgControversy, entityRelevance, dateRange, sources, sampleLinks, themes.
Only use this when POST /events was already called with the same params. Array params must be repeated:
curl -s -H "$AUTH" \
"$BASE/events?entity=id1&entity=id2&start=2024-01-01T00:00:00Z&end=2024-03-31T23:59:59Z"
curl -s -H "$AUTH" "$BASE/entities/<id>"
curl -s -X POST -H "$AUTH" -H "Content-Type: application/json" \
-d '{"name": "Acme Corp", "type": "organization", "description": "...", "url": "https://acme.example.com", "industry": "Technology"}' \
"$BASE/entities"
curl -s -X PUT -H "$AUTH" -H "Content-Type: application/json" \
-d '{"name": "Acme Corporation"}' \
"$BASE/entities/<id>"
curl -s -X DELETE -H "$AUTH" "$BASE/entities/<id>"
curl -s -X POST -H "$AUTH" -H "Content-Type: application/json" \
-d '{"title": "ESG", "limit": 10}' \
"$BASE/themesets/search"
curl -s -X POST -H "$AUTH" -H "Content-Type: application/json" \
-d '{
"title": "ESG Themes",
"themes": [
{"title": "Climate", "description": "Environmental and climate-related events."},
{"title": "Governance", "description": "Corporate governance events."}
],
"multi_theme": true
}' \
"$BASE/themesets"
curl -s -H "$AUTH" "$BASE/themesets/<id>"
curl -s -X PUT -H "$AUTH" -H "Content-Type: application/json" -d '{"title": "Updated"}' "$BASE/themesets/<id>"
curl -s -X DELETE -H "$AUTH" "$BASE/themesets/<id>"
POST /entities/search or GET /companies/searchPOST /events with entity IDs + date rangeGET /events with same params2024-01-01T00:00:00Z?entity=id1&entity=id2 (not comma-separated)POST /events returns 502 when some providers failed but still includes partial resultsCreates, edits, and optimizes skills for Claude Code, including drafting, evaluating with test prompts, iterating on performance, and improving skill descriptions for better triggering accuracy.
npx claudepluginhub polecat-dev/polecat-claude-plugins --plugin polecat-x