Coverage
Coverage records represent published results -- articles, interviews, awards, segments, and other media appearances. Coverage can be linked to outlets, contacts, channels, and opportunities via the coverage_outlet junction table.
create_coverage
Record a piece of coverage.
Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| title | string | Yes | Headline or title |
| description | string | No | Summary |
| url | string | No | Link to original |
| published_date | string | No | Published date (YYYY-MM-DD) |
| coverage_type | string | No | article, interview, review, opinion, listicle, roundup, segment, appearance, award_win, other |
| depth | string | No | mention, quote, feature, dedicated, cover_story |
| sentiment | string | No | positive, neutral, negative, mixed |
| share_of_voice | string | No | sole_focus, shared, competitor_included |
| spokesperson_quoted | boolean | No | Whether a spokesperson was quoted |
| initiated_by | string | No | pitched or organic |
| full_text | string | No | Full text of the article/transcript |
| notes | string | No | Free-form notes |
Example
json
{
"name": "create_coverage",
"arguments": {
"title": "How Catena Labs is Reinventing PR with AI Agents",
"url": "https://techcrunch.com/2026/05/01/catena-labs-pr-ai",
"published_date": "2026-05-01",
"coverage_type": "feature",
"depth": "dedicated",
"sentiment": "positive",
"initiated_by": "pitched"
}
}get_coverage
Get a coverage item by ID with linked outlets, contacts, opportunities, and media.
Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| id | string (UUID) | Yes | Coverage ID |
Example
json
{
"name": "get_coverage",
"arguments": {
"id": "550e8400-e29b-41d4-a716-446655440000"
}
}list_coverage
List coverage with optional filters.
Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| coverage_type | string | No | Filter by coverage type |
| sentiment | string | No | Filter by sentiment: positive, neutral, negative, mixed |
| initiated_by | string | No | Filter by origin: pitched or organic |
| include_archived | boolean | No | Include archived coverage (default: false) |
| limit | number | No | Max results (default: 50) |
| offset | number | No | Offset for pagination (default: 0) |
Example
json
{
"name": "list_coverage",
"arguments": {
"sentiment": "positive",
"initiated_by": "pitched",
"limit": 10
}
}update_coverage
Update coverage fields.
Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| id | string (UUID) | Yes | Coverage ID |
| title | string | No | Headline or title |
| description | string | No | Summary |
| url | string | No | Link to original |
| published_date | string | No | Published date (YYYY-MM-DD) |
| coverage_type | string | No | Coverage type |
| depth | string | No | Depth of coverage |
| sentiment | string | No | positive, neutral, negative, mixed |
| share_of_voice | string | No | sole_focus, shared, competitor_included |
| spokesperson_quoted | boolean | No | Whether a spokesperson was quoted |
| initiated_by | string | No | pitched or organic |
| full_text | string | No | Full text |
| notes | string | No | Free-form notes |
Example
json
{
"name": "update_coverage",
"arguments": {
"id": "550e8400-e29b-41d4-a716-446655440000",
"sentiment": "positive",
"depth": "dedicated"
}
}archive_coverage
Soft-delete coverage.
Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| id | string (UUID) | Yes | Coverage ID |
Example
json
{
"name": "archive_coverage",
"arguments": {
"id": "550e8400-e29b-41d4-a716-446655440000"
}
}restore_coverage
Restore archived coverage.
Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| id | string (UUID) | Yes | Coverage ID |
Example
json
{
"name": "restore_coverage",
"arguments": {
"id": "550e8400-e29b-41d4-a716-446655440000"
}
}link_coverage
Link coverage to an outlet, contact, channel, and/or opportunity. At least one entity ID should be provided.
Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| coverage_id | string (UUID) | Yes | Coverage ID |
| outlet_id | string (UUID) | No | Outlet to link |
| contact_id | string (UUID) | No | Contact to link (e.g. the journalist who wrote it) |
| channel_id | string (UUID) | No | Channel to link |
| opportunity_id | string (UUID) | No | Opportunity to link |
Example
json
{
"name": "link_coverage",
"arguments": {
"coverage_id": "550e8400-e29b-41d4-a716-446655440000",
"outlet_id": "660e8400-e29b-41d4-a716-446655440000",
"contact_id": "770e8400-e29b-41d4-a716-446655440000",
"opportunity_id": "880e8400-e29b-41d4-a716-446655440000"
}
}unlink_coverage
Remove a coverage link.
Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| id | string (UUID) | Yes | coverage_outlet record ID |
Example
json
{
"name": "unlink_coverage",
"arguments": {
"id": "990e8400-e29b-41d4-a716-446655440000"
}
}recent_coverage
Get coverage from the last N days. Includes linked outlet and contact names.
Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| days | number | No | Number of days to look back (default: 30) |
| sentiment | string | No | Filter by sentiment: positive, neutral, negative, mixed |
Example
json
{
"name": "recent_coverage",
"arguments": {
"days": 7,
"sentiment": "positive"
}
}