Build, size, and purchase a Synter Audience from a plain-English B2B contact or US adult signal description — inspect schema vocabularies, size typed filters, discover behavioral traits, save reusable Signals definitions, and run approval-gated CSV exports. Use when the user wants to build, size, or purchase a B2B contact list, prospect list, lead list, contact data export, or US adult signal audience from a plain-English description.
88%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
Medium
Suggest reviewing before use
Turn a description of who to reach into a real audience. Use only the native
synter_audience tool exposed by this skill. Do not call backend/provider tool
names directly and do not switch to campaign planning when an audience call
fails.
This skill creates lists; it never activates them, launches campaigns, or recommends an unrelated channel or budget.
Use standard customer-facing terminology (Synter audience data, Synter Signals, and Synter Audience) and quote the standard Synter retail pricing defined in this skill rather than internal credit counters.
Use the connected Synter MCP's synter_audience directly. The key needs audiences:write and access to the
selected workspace/file. An authorization failure is not permission to switch
customers or call private supplier tools.
action="destinations". Follow next_cursor even when a page is empty
until the intended writable Synter file is found. campaign_id is that file's
UUID, not a Google/Meta campaign ID. Do not silently choose another file.campaign_id to schema, size, or discover_traits to refine
the audience without delivering paid rows.export (contact filter) or export_signals (reviewed expression)
with the same campaign_id and explicit max_rows. If the file has no
conversation, open it in Synter and start one; a supplied thread_id must
belong to this file.review_url. The human approves
that saved review in Synter. A chat "yes" is not an approval token.action="export_status", purchase_id="<returned ID>" for
either audience type. External polling does not accept export_id, filters,
or a different destination. Return the saved, authenticated CSV artifact.Never resubmit export to poll. An interrupted response is not proof nothing
happened: use the purchase ID when available. Pending identical requests reuse
the existing review; after approval, continue polling that ID. This tool does
not activate an ad audience or start outbound sending. Purchased third-party
data is not automatically eligible for every platform's customer-match policy.
Before export or activation, save the reviewed Signals recipe with
action="save_definition", definition={name, groups:[{name, traits:[{label,id}]}], exclusions:[], notes, max_rows, destinations} and the exact campaign_id for
external callers. This free action creates a project file; it does not purchase
or upload contacts. OR within each group, AND between groups; only verified
exclusion IDs are executable. Use human-readable trait labels in visible summaries.
Use action="read_definition", artifact_id=... to reuse it within the same
project. Then request an approved bounded export separately.
Do not begin with export. Build and verify the filter before taking paid delivery.
synter_audience(action="schema", entity="contact")action="schema" with column to inspect exact vocabularies.action="size" with a typed filter tree; refine until the count fits.action="export" with the approved filter and explicit max_rows from 1
through 100,000.action="export_status" with the returned export_id until completion.Every action that delivers paid records (export and export_signals) returns pending_review
with Synter, the destination project, row ceiling, and maximum record
charge at $0.15 per delivered record ($150 CPM), plus the disclosed flat
action fee. Show that review and ask the user to reply "I APPROVE". Stop there:
the authenticated approval flow executes the frozen request and owns its
durable purchase id. Never re-call or reconstruct the purchase yourself.
export_status polling is free and needs no new approval. Poll the same
returned export_id idempotently until it completes. To abort a bad in-flight
Synter export, call action="cancel_export"; cancellation is free but is
a state-changing write.
On completion, Synter consumes the private temporary URL server-side, creates a versioned CSV project artifact, and opens it in the right-hand Table view. The complete encrypted CSV remains downloadable; the editable Table is an explicit preview of the header plus the first 999 data rows. Never repeat or expose a signed download URL in chat. Re-polling the same completed export is safe: it reuses the same active project artifact and does not bill the audience twice.
If the user requests 500 prospects, export at most 500 unless they explicitly approve an oversample. After delivery, disclose the actual unique count. If one-contact-per-company is required and deduplication yields fewer than 500, offer (but never silently perform) a second oversampled purchase with its own estimated maximum charge.
The root and every child must include type:
{
"type": "group",
"op": "AND",
"negate": false,
"children": [
{
"type": "condition",
"column": "EMAIL_STATUS_PER",
"operator": "in",
"valueList": ["VALID"]
},
{
"type": "condition",
"column": "COUNTRY_CODE_ORG",
"operator": "in",
"valueList": ["US"]
},
{
"type": "condition",
"column": "JOB_TITLE_PER",
"operator": "contains",
"value": "engineering manager"
}
]
}Never guess column names. An invalid column is rejected rather than ignored.
EMPLOYEE_COUNT_MIN and EMPLOYEE_COUNT_MAX are band edges, not a numeric
range. For real lower/upper bounds, first verify and then use
EMPLOYEE_PROFILES_ON_LINKEDIN_ORG with gte and lte.JOB_TITLE_PER contains for customer deliverables. Semantic
score means fit, not buying intent, and may not narrow predictably.EMAIL_STATUS_PER = VALID is the verified-work-email filter.synter_audience(action="discover_traits", query="…", entity="person")
returns trait descriptors and sizes, not people.synter_audience(action="export_signals", expression="…", entity="person", domains=["email"], max_rows=…) with an explicit 1–100,000-row bound. Synter
saves the complete CSV and opens the same 999-row Table preview used for
the contact audience workflow.Signals audiences are US-only and adults-only. All purchased Synter audience records are billed at $150 CPM ($0.15 per delivered record), plus the disclosed flat call fee. Do not describe trait fit as active buying intent. If a request targets minors, explain that Synter cannot fulfill it and ask for an adults-only audience definition; do not substitute another audience or corpus.
Sizing, trait discovery, incomplete export polling, cancellation, service
errors, and withheld deliveries have no per-record charge. Completed CSV
delivery charges only the rows actually delivered. Before a bounded purchase, state the record
rate, disclosed flat fee and maximum total as currency amounts, never raw credit counts. A running Synter export can be
cancelled with action="cancel_export"; cancellation delivers no records.
The skill manifest capability is synter.audience; the callable wire name is
synter_audience. These are two names for the same tool, not separate tools.
Report the exact audience step that failed and its impact, then retry only a
safe equivalent within this workflow. Never substitute a Google SEM campaign,
media plan, budget, or another deliverable for a failed audience request. Never
claim a CSV exists until Synter export_status or export_signals
returns a project_artifact.
project_artifact returned and opened in the Table view