ai.plyto/crm

MCPcommunityattivo
v1.1.0ai.plytoUnknownAggiornato 3 g fa

AI that makes and runs your Google and Facebook ads from your own account, with a CRM behind it.

Stato dell’endpointattivo
verificato 12 h fa · 1113 ms
100 % degli ultimi 4 controlli hanno raggiunto questo endpoint
Funziona in
ClaudeCursorCopilotChatGPTGemini

Dedotto dai trasporti dichiarati da questo annuncio (streamable-http). Un client che non compare qui non è escluso — semplicemente Forge non è in grado di confermarlo.

Indicizzato automaticamente da fonti pubbliche. Non ancora verificato dal suo sviluppatore su Forge.Rivendica questo annuncio →
3 g faUltimo aggiornamento
Pacchetto
Autoreai.plyto
LicenzaUnknown
Versione1.1.0
Fontemcp-registry
Stato di fiducia
B
60/100Buono
Presente nell’indice di Forge+10/10
Identità del publisher verificata+0/30
Publisher: per questo annuncio non risulta alcun repository, quindi `forge publish` non può verificare la proprietà automaticamente. Usa «Rivendica questo annuncio» qui sopra — Forge li esamina a mano.
Verifica del dominio+0/10
Al momento non disponibile per questo tipo di annuncio — oggi il controllo del dominio viene eseguito solo per i pacchetti su npm, quindi questa riga non può ancora essere ottenuta qui, indipendentemente da cosa sia ospitato sul dominio.
Analisi prompt injection · pulita+30/30
Analisi offuscamento / esfiltrazione · pulita+20/20
StatoIndicizzato dalla community
PublisherNon verificato
FirmaNon firmato
Dominio
Provenienza
DipendenzeNon verificate
Superficie di strumenti172 strumenti · 11 privilegiati
Analisi di sicurezza✓ Pulitovlive · oggiQuanto è efficace questa analisi?
PROMPTtool:business__update#websiteUrlLinks to undeclared domain:
PROMPTtool:email__signature__setLinks to undeclared domain: url
ValutazioniNessuna
Indicizzato11 ago 2026

La verifica conferma l’identità del publisher (la proprietà del repo), non la sicurezza del codice. L’analisi di sicurezza copre i CVE noti e gli script di installazione sospetti.

Strumenti

172 strumenti · 11 privilegiati
Osservato in tempo reale dall’endpoint del fornitore12h ago

Letto da un vero handshake MCP initialize → tools/list verso l’endpoint dichiarato. Nessuno strumento è stato invocato — tools/list è la chiamata di introspezione in sola lettura che il protocollo prevede a questo scopo. Riflette ciò che il server annunciava in quel momento; un endpoint ospitato non è vincolato ad alcuna versione e può cambiare senza preavviso.

  • https://plyto.ai/api/mcp172 strumenti · 1113 ms
memory__saveSave (or update) a durable memory: a standing preference, playbook rule, correction, or business fact that should hold across ALL future conversations. Use when the user says "remember…", "always…", "never…", "from now on…", states a lasting preference, or corrects how you did something. One distil…

Save (or update) a durable memory: a standing preference, playbook rule, correction, or business fact that should hold across ALL future conversations. Use when the user says "remember…", "always…", "never…", "from now on…", states a lasting preference, or corrects how you did something. One distil…

ParametroTipoDescrizione
content*stringThe rule itself, self-contained and imperative.
kind*stringpreference = how they like things done; fact = stable business fact; playbook = how to run a recurring task; correction = a fix after you got something wrong.
scopestringbusiness (default) = applies to everyone; personal = only the current user's own preference (e.g. how THEY want summaries).
sourcestringuser_told (default) = the user explicitly said it; learned = you inferred it from a correction or repeated behavior.
memoryIdstringUpdate this existing memory instead of creating a new one.
memory__listList every durable memory you hold for this business (business-wide plus the current user's personal ones), with ids and when each was last confirmed. Use before consolidating, when the user asks what you remember, or to find a memoryId to update/forget.

List every durable memory you hold for this business (business-wide plus the current user's personal ones), with ids and when each was last confirmed. Use before consolidating, when the user asks what you remember, or to find a memoryId to update/forget.

Per questo strumento non è stato pubblicato alcuno schema di input.

memory__forgetPermanently delete a saved memory. Destructive: confirm with the user first unless they just explicitly asked you to forget exactly this. Users can also remove memories themselves under Settings → Business profile.

Permanently delete a saved memory. Destructive: confirm with the user first unless they just explicitly asked you to forget exactly this. Users can also remove memories themselves under Settings → Business profile.

ParametroTipoDescrizione
memoryId*string
business__updateSave what you learn about the business the moment the owner says it: real name, website, industry, who their customers are, what sets them apart, the phone to show on pages, where an ad's click should go (clickTarget page or url, and conversionUrl: their signup, booking or checkout link), and durab…

Save what you learn about the business the moment the owner says it: real name, website, industry, who their customers are, what sets them apart, the phone to show on pages, where an ad's click should go (clickTarget page or url, and conversionUrl: their signup, booking or checkout link), and durab…

NOTANel parametro websiteUrl: Links to undeclared domain:
ParametroTipoDescrizione
namestringThe business's real name, exactly as the owner gave it.
websiteUrlstringTheir website, with or without https://.
industrystringWhat kind of business, in their words: 'mobile dog grooming', 'roofing contractor', 'boutique fitness studio'.
audiencestringWho they sell to, as they described it: 'homeowners in Austin with dogs', 'B2B SaaS founders under 20 employees'.
valuePropstringWhat sets them apart, in one or two sentences, from the owner's own words.
addClaimsarrayDurable facts the owner just stated that copy may rely on, one per entry, in their words: an offer ('Free roof inspections'), a price ('Shingle repair from $35…
contactPhonestringThe phone number pages and landing pages should show, as the owner gave it.
clickTargetstringWhere an ad's click goes, only as the OWNER answered it (prefer ads.destination.set, which also builds the page or points the ads). page: Plyto builds a landin…
conversionUrlstringTheir own signup, booking, checkout or landing page link, as the owner gave it. Pass an empty string to clear it.
crm__contacts__createCreate a contact (or find-and-update if one with the same email already exists in this business). Returns the created/updated contact. Use when the user mentions adding, capturing, or tracking a new person. Email is the natural dedup key; if you have an email, always pass it.

Create a contact (or find-and-update if one with the same email already exists in this business). Returns the created/updated contact. Use when the user mentions adding, capturing, or tracking a new person. Email is the natural dedup key; if you have an email, always pass it.

ParametroTipoDescrizione
emailstringPrimary email, used as dedup key.
firstNamestring
lastNamestring
phonestring
companyIdstringExisting company id to link this contact to.
titlestring
lifecycleStagestring
leadStatusstring
sourcestringWhere this contact came from: 'manual', 'import', 'form', 'ad', etc.
sourceDetailstring
crm__contacts__updateUpdate fields on an existing contact. Only pass fields you want to change. No-op fields are silently skipped.

Update fields on an existing contact. Only pass fields you want to change. No-op fields are silently skipped.

ParametroTipoDescrizione
contactId*string
email
firstName
lastName
phone
companyId
title
lifecycleStagestring
leadStatus
ownerUserId
crm__contacts__getFetch a single contact by id, with where they came from: the ad campaign and search keyword that brought them (when an ad did), where they were and on what device, what they asked for on the landing page, how many forms they submitted, and whether they have created an account. Use this, not source_…

Fetch a single contact by id, with where they came from: the ad campaign and search keyword that brought them (when an ad did), where they were and on what device, what they asked for on the landing page, how many forms they submitted, and whether they have created an account. Use this, not source_…

ParametroTipoDescrizione
contactId*string
crm__contacts__listList contacts in this business with simple filters. For free-text search use crm.contacts.search. For complex filters use crm.contacts.query (W3).

List contacts in this business with simple filters. For free-text search use crm.contacts.search. For complex filters use crm.contacts.query (W3).

ParametroTipoDescrizione
limitinteger
offsetinteger
ownerUserIdstring
lifecycleStagestring
hasEmailboolean
crm__contacts__searchFree-text search across contact email, first/last name, and phone. Case-insensitive substring match. Returns up to 20 contacts by default.

Free-text search across contact email, first/last name, and phone. Case-insensitive substring match. Returns up to 20 contacts by default.

ParametroTipoDescrizione
query*string
limitinteger
crm__contacts__get_propertiesReturn all custom property values for a contact as a {key: value} map.

Return all custom property values for a contact as a {key: value} map.

ParametroTipoDescrizione
contactId*string
crm__companies__createCreate a company (or find-and-update if one with the same domain already exists). Domain is the natural dedup key; always pass the bare domain like 'acme.com' (not the full URL).

Create a company (or find-and-update if one with the same domain already exists). Domain is the natural dedup key; always pass the bare domain like 'acme.com' (not the full URL).

ParametroTipoDescrizione
name*string
domainstring
industrystring
sizestring
annualRevenueCentsinteger
descriptionstring
crm__companies__updateUpdate fields on an existing company. Only pass fields you want to change.

Update fields on an existing company. Only pass fields you want to change.

ParametroTipoDescrizione
companyId*string
namestring
domain
industry
size
annualRevenueCents
description
ownerUserId
crm__companies__getFetch a single company by id. Returns null if not found.

Fetch a single company by id. Returns null if not found.

ParametroTipoDescrizione
companyId*string
crm__companies__listList companies in this business. For text search use crm.companies.search.

List companies in this business. For text search use crm.companies.search.

ParametroTipoDescrizione
limitinteger
offsetinteger
ownerUserIdstring
crm__companies__searchFree-text search across company name, domain, and industry. Case-insensitive substring match.

Free-text search across company name, domain, and industry. Case-insensitive substring match.

ParametroTipoDescrizione
query*string
limitinteger
crm__companies__get_propertiesReturn all custom property values for a company as a {key: value} map.

Return all custom property values for a company as a {key: value} map.

ParametroTipoDescrizione
companyId*string
crm__tags__createCreate a new tag (or find one with the same name; idempotent). Tags are lightweight orthogonal categories like 'VIP', 'Newsletter-only', 'Cold'.

Create a new tag (or find one with the same name; idempotent). Tags are lightweight orthogonal categories like 'VIP', 'Newsletter-only', 'Cold'.

ParametroTipoDescrizione
name*string
colorstring
crm__tags__listList all tags defined in this business.

List all tags defined in this business.

Per questo strumento non è stato pubblicato alcuno schema di input.

crm__tags__add_to_contactApply a tag to a contact. Idempotent: adding an already-applied tag is a no-op.

Apply a tag to a contact. Idempotent: adding an already-applied tag is a no-op.

ParametroTipoDescrizione
contactId*string
tagId*string
crm__tags__remove_from_contactprivilegiatoRemove a tag from a contact. Idempotent.

Remove a tag from a contact. Idempotent.

ParametroTipoDescrizione
contactId*string
tagId*string
crm__tags__list_for_contactList all tags applied to a contact.

List all tags applied to a contact.

ParametroTipoDescrizione
contactId*string
crm__tags__add_to_companyApply a tag to a company. Idempotent.

Apply a tag to a company. Idempotent.

ParametroTipoDescrizione
companyId*string
tagId*string
crm__tags__remove_from_companyprivilegiatoRemove a tag from a company. Idempotent.

Remove a tag from a company. Idempotent.

ParametroTipoDescrizione
companyId*string
tagId*string
crm__tags__list_for_companyList all tags applied to a company.

List all tags applied to a company.

ParametroTipoDescrizione
companyId*string
crm__properties__defineDefine a new custom property on contact or company. Keys must be lowercase snake_case (e.g. 'plan_tier'). For single_select / multi_select, options is required.

Define a new custom property on contact or company. Keys must be lowercase snake_case (e.g. 'plan_tier'). For single_select / multi_select, options is required.

ParametroTipoDescrizione
entityType*string
key*string
label*string
propertyType*string
optionsarray
isRequiredboolean
displayOrderinteger
descriptionstring
crm__properties__listList custom property definitions for an entity type. Excludes archived by default.

List custom property definitions for an entity type. Excludes archived by default.

ParametroTipoDescrizione
entityType*string
includeArchivedboolean
crm__properties__archiveArchive a custom property. Existing values are preserved but the property is hidden from UI and rejected for new value sets. To 'rename', archive + redefine.

Archive a custom property. Existing values are preserved but the property is hidden from UI and rejected for new value sets. To 'rename', archive + redefine.

ParametroTipoDescrizione
propertyDefinitionId*string
crm__properties__set_contact_valueSet the value of a custom property on a contact. Value type must match property type. For multi_select pass an array of option values.

Set the value of a custom property on a contact. Value type must match property type. For multi_select pass an array of option values.

ParametroTipoDescrizione
contactId*string
propertyDefinitionId*string
value*
crm__properties__set_company_valueSet the value of a custom property on a company.

Set the value of a custom property on a company.

ParametroTipoDescrizione
companyId*string
propertyDefinitionId*string
value*
crm__properties__set_deal_valueSet the value of a custom property on a deal.

Set the value of a custom property on a deal.

ParametroTipoDescrizione
dealId*string
propertyDefinitionId*string
value*
crm__properties__clear_contact_valueRemove a custom property value from a contact.

Remove a custom property value from a contact.

ParametroTipoDescrizione
contactId*string
propertyDefinitionId*string
crm__properties__clear_company_valueRemove a custom property value from a company.

Remove a custom property value from a company.

ParametroTipoDescrizione
companyId*string
propertyDefinitionId*string
crm__properties__clear_deal_valueRemove a custom property value from a deal.

Remove a custom property value from a deal.

ParametroTipoDescrizione
dealId*string
propertyDefinitionId*string
crm__properties__get_deal_valuesReturn all custom property values for a deal as a {key: value} map.

Return all custom property values for a deal as a {key: value} map.

ParametroTipoDescrizione
dealId*string
crm__pipelines__listList all pipelines in this business (excludes archived by default).

List all pipelines in this business (excludes archived by default).

ParametroTipoDescrizione
includeArchivedboolean
crm__pipelines__list_stagesList the ordered stages in a pipeline. Use to look up stageIds for crm.deals.move_stage.

List the ordered stages in a pipeline. Use to look up stageIds for crm.deals.move_stage.

ParametroTipoDescrizione
pipelineId*string
crm__pipelines__get_defaultGet the default pipeline for this business (the one new deals land in by default). Returns null if no default is set.

Get the default pipeline for this business (the one new deals land in by default). Returns null if no default is set.

Per questo strumento non è stato pubblicato alcuno schema di input.

crm__deals__createCreate a deal in a pipeline. If pipelineId/stageId omitted, lands in the business's default pipeline at the first open stage. Attach to a contact and/or company for full context. valueCents is the deal size in cents (e.g. $5,000 = 500000).

Create a deal in a pipeline. If pipelineId/stageId omitted, lands in the business's default pipeline at the first open stage. Attach to a contact and/or company for full context. valueCents is the deal size in cents (e.g. $5,000 = 500000).

ParametroTipoDescrizione
name*string
pipelineIdstring
stageIdstring
contactIdstring
companyIdstring
valueCentsinteger
currencystringISO 4217 code, default USD.
expectedCloseAtstringISO 8601 timestamp.
ownerUserIdstring
sourcestring
crm__deals__updateUpdate fields on a deal. Use crm.deals.move_stage to change stage (it handles close events). Use crm.deals.close_won / close_lost for the won/lost transitions.

Update fields on a deal. Use crm.deals.move_stage to change stage (it handles close events). Use crm.deals.close_won / close_lost for the won/lost transitions.

ParametroTipoDescrizione
dealId*string
namestring
contactId
companyId
valueCents
currencystring
expectedCloseAt
ownerUserId
source
crm__deals__move_stageprivilegiatoMove a deal to a different stage in the same pipeline. If the target stage is a won/lost stage, this auto-sets closedAt and emits the appropriate close event.

Move a deal to a different stage in the same pipeline. If the target stage is a won/lost stage, this auto-sets closedAt and emits the appropriate close event.

ParametroTipoDescrizione
dealId*string
targetStageId*string
crm__deals__close_wonClose a deal as won: moves it to the won stage in its pipeline. Sets closedAt and emits deal.won.

Close a deal as won: moves it to the won stage in its pipeline. Sets closedAt and emits deal.won.

ParametroTipoDescrizione
dealId*string
crm__deals__close_lostClose a deal as lost: moves it to the lost stage in its pipeline. Records lostReason and emits deal.lost.

Close a deal as lost: moves it to the lost stage in its pipeline. Records lostReason and emits deal.lost.

ParametroTipoDescrizione
dealId*string
reasonstring
crm__deals__getFetch a single deal by id.

Fetch a single deal by id.

ParametroTipoDescrizione
dealId*string
crm__deals__listList deals with simple filters. Filter by pipeline/stage for Kanban view, or by contact/company for deal history. `open: true` returns only open-stage deals; omit for all.

List deals with simple filters. Filter by pipeline/stage for Kanban view, or by contact/company for deal history. `open: true` returns only open-stage deals; omit for all.

ParametroTipoDescrizione
pipelineIdstring
stageIdstring
ownerUserIdstring
contactIdstring
companyIdstring
openboolean
limitinteger
crm__deals__searchFree-text search across deal names.

Free-text search across deal names.

ParametroTipoDescrizione
query*string
limitinteger
crm__activities__logLog an activity: something that happened (past or scheduled). Distinguished from tasks (future intent) and notes (no structure). Use 'log a 30-min discovery call with Jane' style prompts. happenedAt defaults to now if omitted.

Log an activity: something that happened (past or scheduled). Distinguished from tasks (future intent) and notes (no structure). Use 'log a 30-min discovery call with Jane' style prompts. happenedAt defaults to now if omitted.

ParametroTipoDescrizione
type*string
title*string
bodystring
happenedAtstringISO 8601. Default: now.
durationMinutesinteger
contactIdstring
companyIdstring
dealIdstring
ownerUserIdstring
crm__activities__listList activities, optionally filtered by entity (contact/company/deal) or owner. Returned in reverse chronological order by happenedAt.

List activities, optionally filtered by entity (contact/company/deal) or owner. Returned in reverse chronological order by happenedAt.

ParametroTipoDescrizione
contactIdstring
companyIdstring
dealIdstring
ownerUserIdstring
typestring
limitinteger
crm__activities__getFetch a single activity by id.

Fetch a single activity by id.

ParametroTipoDescrizione
activityId*string
crm__tasks__createCreate a task: future intent ('follow up with Acme by Friday'). Distinguished from activities (past event) and notes (no structure). Auto-assigns to the calling user if assignedToUserId omitted.

Create a task: future intent ('follow up with Acme by Friday'). Distinguished from activities (past event) and notes (no structure). Auto-assigns to the calling user if assignedToUserId omitted.

ParametroTipoDescrizione
title*string
descriptionstring
dueAtstringISO 8601 timestamp.
prioritystring
assignedToUserIdstring
contactIdstring
companyIdstring
dealIdstring
crm__tasks__completeMark a task as completed. Sets completedAt to now.

Mark a task as completed. Sets completedAt to now.

ParametroTipoDescrizione
taskId*string
crm__tasks__cancelMark a task as cancelled (rejected, different from completed). Use when the user decides a task is no longer relevant.

Mark a task as cancelled (rejected, different from completed). Use when the user decides a task is no longer relevant.

ParametroTipoDescrizione
taskId*string
crm__tasks__listList tasks. Open tasks sort by due date (closest first). Completed tasks sort by completion (most recent first).

List tasks. Open tasks sort by due date (closest first). Completed tasks sort by completion (most recent first).

ParametroTipoDescrizione
assignedToUserIdstring
statusstring
contactIdstring
companyIdstring
dealIdstring
limitinteger
crm__tasks__getFetch a single task by id.

Fetch a single task by id.

ParametroTipoDescrizione
taskId*string
reports__previewRun a report config WITHOUT saving. Use it to answer analytical questions ('deals by stage', 'contacts added per month', 'email opens last 30 days') and to sanity-check a config before reports.create. Returns rows + totals. Money values are in cents.

Run a report config WITHOUT saving. Use it to answer analytical questions ('deals by stage', 'contacts added per month', 'email opens last 30 days') and to sanity-check a config before reports.create. Returns rows + totals. Money values are in cents.

ParametroTipoDescrizione
config*object
crm__sources__performanceMarketing-source attribution: for every source (ad campaigns, UTM-tagged traffic, forms, inbound webhook, manual, import…; the webhook also accepts POST {email, outcome: qualified|customer} at /outcome so an external system of record can report when a lead pays) the full funnel (leads acquired, dea…

Marketing-source attribution: for every source (ad campaigns, UTM-tagged traffic, forms, inbound webhook, manual, import…; the webhook also accepts POST {email, outcome: qualified|customer} at /outcome so an external system of record can report when a lead pays) the full funnel (leads acquired, dea…

ParametroTipoDescrizione
windowDaysintegerLook-back window in days; each funnel stage is windowed independently (leads created / deals opened / deals won inside it). Default 90.
reports__createSave a custom report as a live card on the user's Reports dashboard. Use when the user asks for a report or says yes to saving an analysis. The config is re-executed on every dashboard view (always live). Validates by running once; returns the saved report + current data.

Save a custom report as a live card on the user's Reports dashboard. Use when the user asks for a report or says yes to saving an analysis. The config is re-executed on every dashboard view (always live). Validates by running once; returns the saved report + current data.

ParametroTipoDescrizione
name*stringCard title, e.g. 'Deals won by month'
descriptionstring
config*object
reports__listList the saved custom reports on the Reports dashboard.

List the saved custom reports on the Reports dashboard.

Per questo strumento non è stato pubblicato alcuno schema di input.

crm__notes__addAdd a freeform note attached to a contact, company, deal, or any combination. Use for 'remember that Jane prefers email over phone' style facts.

Add a freeform note attached to a contact, company, deal, or any combination. Use for 'remember that Jane prefers email over phone' style facts.

ParametroTipoDescrizione
body*string
contactIdstring
companyIdstring
dealIdstring
crm__notes__listList notes, optionally filtered by attached entity.

List notes, optionally filtered by attached entity.

ParametroTipoDescrizione
contactIdstring
companyIdstring
dealIdstring
limitinteger
crm__lists__createCreate a contact list. Manual lists are curated by hand; dynamic lists have a filter DSL (DNF: {or:[{and:[conditions]}]}) that defines membership. For dynamic, pass `criteria`. For manual, omit it.

Create a contact list. Manual lists are curated by hand; dynamic lists have a filter DSL (DNF: {or:[{and:[conditions]}]}) that defines membership. For dynamic, pass `criteria`. For manual, omit it.

ParametroTipoDescrizione
name*string
type*string
descriptionstring
criteriaobject
crm__lists__getFetch a single list by id.

Fetch a single list by id.

ParametroTipoDescrizione
listId*string
crm__lists__listList all contact lists in this business.

List all contact lists in this business.

ParametroTipoDescrizione
includeArchivedboolean
crm__lists__membersReturn the contacts that are members of a list. For manual lists this returns explicit memberships; for dynamic lists it evaluates the criteria filter against contacts (lazy recompute).

Return the contacts that are members of a list. For manual lists this returns explicit memberships; for dynamic lists it evaluates the criteria filter against contacts (lazy recompute).

ParametroTipoDescrizione
listId*string
limitinteger
crm__lists__add_contactAdd a contact to a MANUAL list. Idempotent.

Add a contact to a MANUAL list. Idempotent.

ParametroTipoDescrizione
listId*string
contactId*string
crm__lists__remove_contactprivilegiatoRemove a contact from a manual list.

Remove a contact from a manual list.

ParametroTipoDescrizione
listId*string
contactId*string
crm__lists__archiveArchive a list. Membership rows are preserved but the list is hidden from default queries.

Archive a list. Membership rows are preserved but the list is hidden from default queries.

ParametroTipoDescrizione
listId*string
forms__createCreate a form. Slug becomes the URL: /forms/<slug>. Fields are JSON-defined with type matching the contact property type system (text/email/url/number/date/checkbox/select/multi_select/textarea/phone). If captureToListId is set, every submission is auto-added to that list (use crm.lists.create firs…

Create a form. Slug becomes the URL: /forms/<slug>. Fields are JSON-defined with type matching the contact property type system (text/email/url/number/date/checkbox/select/multi_select/textarea/phone). If captureToListId is set, every submission is auto-added to that list (use crm.lists.create firs…

ParametroTipoDescrizione
name*string
slug*string
fields*array
themeobjectPer-form appearance; omitted values inherit the business brand
submitButtonTextstring
thankYouMessagestring
thankYouRedirectUrlstring
captureToListIdstring
forms__updateUpdate a form: rename it, replace its fields, change appearance (theme), button text, thank-you behavior, or the capture list. Omitted properties keep their current value; `fields` and `theme` replace wholesale when provided, so send the COMPLETE new array/object (use forms.get first). Keep existin…

Update a form: rename it, replace its fields, change appearance (theme), button text, thank-you behavior, or the capture list. Omitted properties keep their current value; `fields` and `theme` replace wholesale when provided, so send the COMPLETE new array/object (use forms.get first). Keep existin…

ParametroTipoDescrizione
formId*string
namestring
fieldsarray
themeReplaces the whole theme; null clears it back to brand defaults
submitButtonTextstring
thankYouMessage
thankYouRedirectUrl
captureToListId
forms__getFetch a form by id.

Fetch a form by id.

ParametroTipoDescrizione
formId*string
forms__listList all forms in this business.

List all forms in this business.

ParametroTipoDescrizione
includeArchivedboolean
forms__list_submissionsList submissions for a form, newest first.

List submissions for a form, newest first.

ParametroTipoDescrizione
formId*string
limitinteger
forms__get_embed_codeGenerate the JS embed snippet and iframe alternative for a form. Returns both; the user picks whichever fits their site.

Generate the JS embed snippet and iframe alternative for a form. Returns both; the user picks whichever fits their site.

ParametroTipoDescrizione
formId*string
crm__contacts__queryQuery contacts with a structured filter DSL. Use this for complex 'show me contacts where X and Y but not Z' queries. Simpler cases prefer crm.contacts.search (free text) or crm.contacts.list (single filter). Field reference forms: email, firstName, ... = stock fields custom:<key> = custom prope…

Query contacts with a structured filter DSL. Use this for complex 'show me contacts where X and Y but not Z' queries. Simpler cases prefer crm.contacts.search (free text) or crm.contacts.list (single filter). Field reference forms: email, firstName, ... = stock fields custom:<key> = custom prope…

ParametroTipoDescrizione
filter*object
limitinteger
offsetinteger
ads__campaign__draftCreate a draft ad campaign on Meta (Facebook and Instagram) or Google, the only two platforms Plyto can actually launch and manage. Drafts are NOT live: they require user approval and a UI launch action before spending money. Use when the user asks to create, generate, or set up a new ad campaign.

Create a draft ad campaign on Meta (Facebook and Instagram) or Google, the only two platforms Plyto can actually launch and manage. Drafts are NOT live: they require user approval and a UI launch action before spending money. Use when the user asks to create, generate, or set up a new ad campaign.

ParametroTipoDescrizione
name*stringCampaign name shown in dashboards.
objective*stringCampaign objective. OUTCOME_SALES is the typical default for paid conversion campaigns.
dailyBudgetCents*integerDaily budget in US cents (e.g. 5000 = $50/day).
audienceDescriptionstringWho the ads should reach, in one or two plain sentences (the trade's customers, where they are, what they are dealing with); translated into platform targeting…
contactListIdstringTarget an existing CRM list instead of a described audience: at launch the list is pushed to Meta as a hashed-email Custom Audience (find ids via crm.lists.lis…
locationsarrayWhere the ads run. For a local business list the places, e.g. ["Denver, Colorado"] or ["Mesa, Arizona", "Gilbert, Arizona"]. Omitted, targeting defaults to the…
radiusMilesintegerRadius around each city, in miles. Typical local service business: 15 to 25.
platformsarrayPlatforms to draft a campaign on; one campaign row per platform.
ads__campaign__listList ad campaigns for the active business, optionally filtered by status and/or platform. Use when the user asks to see their campaigns or get an overview. The status of a launched campaign here is what Plyto last read from the ad platform (nightly, or the last refresh); before saying whether a cam…

List ad campaigns for the active business, optionally filtered by status and/or platform. Use when the user asks to see their campaigns or get an overview. The status of a launched campaign here is what Plyto last read from the ad platform (nightly, or the last refresh); before saying whether a cam…

ParametroTipoDescrizione
statusarrayFilter by status. Omit to get all statuses.
platformsarrayFilter by platforms. Omit for all.
limitinteger
ads__performance__summaryTHE authoritative source for a campaign's spend, impressions, clicks and conversions: use this for any question about how much a campaign has spent or how it is performing. Defaults to last 7 days. Numbers are aggregated from daily snapshots written by the performance poller, and `asOf` says when t…

THE authoritative source for a campaign's spend, impressions, clicks and conversions: use this for any question about how much a campaign has spent or how it is performing. Defaults to last 7 days. Numbers are aggregated from daily snapshots written by the performance poller, and `asOf` says when t…

ParametroTipoDescrizione
campaignId*stringPlyto campaign id (returned from ads.campaign.list).
dateRangeobjectInclusive date range in YYYY-MM-DD. Defaults to the last 7 days.
ads__performance__analyzeAnalyze recent performance for the active business: surface ads/ad sets that aren't getting impressions, ones spending without converting, and concentration patterns where a small slice drives most results. Also returns CRM attribution per campaign: leads captured (via stamped UTMs), cost per lead,…

Analyze recent performance for the active business: surface ads/ad sets that aren't getting impressions, ones spending without converting, and concentration patterns where a small slice drives most results. Also returns CRM attribution per campaign: leads captured (via stamped UTMs), cost per lead,…

ParametroTipoDescrizione
campaignIdstringLimit analysis to a single campaign. Omit to analyze the whole business.
dateRangeobjectInclusive date range in YYYY-MM-DD. Defaults to the last 14 days.
ads__creative__draftCreate a draft ad creative attached to an existing ad set. Combines an uploaded image with copy + CTA + landing URL. The creative goes live with the ad set when the campaign is launched. Use after ads.campaign.draft and after the user has uploaded at least one image. PLACEMENT SIZES: a campaign nee…

Create a draft ad creative attached to an existing ad set. Combines an uploaded image with copy + CTA + landing URL. The creative goes live with the ad set when the campaign is launched. Use after ads.campaign.draft and after the user has uploaded at least one image. PLACEMENT SIZES: a campaign nee…

ParametroTipoDescrizione
adSetId*stringID of an existing ad set in this business (returned from ads.campaign.draft).
name*stringInternal name shown in the dashboard.
headline*stringShort headline for the ad. Meta limits to ~40 chars.
body*stringPrimary ad copy shown above the image. Keep it under 125 characters: Facebook hides the rest behind "See more" and Instagram shows even less. One idea, the hoo…
descriptionstringOptional secondary description shown under the headline.
ctaTypestringCall-to-action button type.
destinationUrl*stringWhere the ad clicks land (your website, landing page, etc.).
destinationSourcestringSet to "user" ONLY when the owner typed this exact URL in this conversation. Otherwise omit: the link must be on the website on file or a Plyto-hosted page, an…
creativeAssetId*stringID of an uploaded creative asset (image) for this business. Use ads.assets.list to find one.
ads__creative__generate_imagesGenerate AI ad photographs from a prompt + the business's brand profile, sized for Meta placements, and save them to the creative library. For a physical business the picture is the work or the product, and a REAL photo from the library (ads.creative.compose_from_photo) comes first when one exists;…

Generate AI ad photographs from a prompt + the business's brand profile, sized for Meta placements, and save them to the creative library. For a physical business the picture is the work or the product, and a REAL photo from the library (ads.creative.compose_from_photo) comes first when one exists;…

ParametroTipoDescrizione
prompt*stringThe scene, briefed like an art director, not a category label. Brand profile (name, industry, audience, voice, colors) is added automatically; don't repeat it.…
namestringBase name for the set shown in the library (e.g. "Summer promo"). Defaults to a prompt excerpt.
stylestringVisual treatment. photo (default): photorealistic scene, best for trades and local services. graphic: bold designed flat graphic with shapes and brand color, b…
ratiosarrayPlacement sizes to generate. Defaults to all four. 1:1 is required and always included.
adCreativeIdstringA draft ad to attach the generated 1:1 to automatically. When generating for a campaign's ads, call once PER AD with each ad's id so every image lands on its a…
headlinestringHeadline to composite onto the image in real type (with the real logo). ALWAYS pass the ad's headline: if generation falls back to the brand template, a tile w…
sublinestringSmaller supporting line under the headline. Optional.
ads__creative__compose_graphicCompose a DESIGNED ad graphic deterministically: real type, the real logo, the real product image, proof from the claims on file. No AI image model, no credits. To EDIT an existing designed graphic, pass revisionOf (its asset id) plus only the fields that change: the rest is kept, the old set is ar…

Compose a DESIGNED ad graphic deterministically: real type, the real logo, the real product image, proof from the claims on file. No AI image model, no credits. To EDIT an existing designed graphic, pass revisionOf (its asset id) plus only the fields that change: the rest is kept, the old set is ar…

ParametroTipoDescrizione
revisionOfstringEDITING an existing designed graphic: the asset id of any size in the set (the library card names it). Everything not passed is kept from it: headline, accent…
headlinestringThe line set in real type: 3 to 8 words in the buyer's own words, with one specific. Required unless revisionOf is set.
accentPhrasestringcomplete layout: the phrase that ENDS the headline, set in the brand accent on its own line. "Know which ads make money." with accentPhrase "make money."
sublinestringThe mechanism line under the headline: how it works, with the concrete nouns (services, platforms, city, season). Up to 12 words.
proofTilesarraycomplete layout: up to three short proof tiles for the strip ("8+ tools in one loop", "Licensed and insured", "12 years in Bend"). Each must come from the bran…
ctaLabelstringcomplete layout: the painted button text. Defaults to the attached ad's own call to action so the picture and the real button agree; never a second, different…
ctaNotestringcomplete layout: one short line under the button, only from facts on file ("No credit card. Unlimited seats.").
annotationstringcomplete layout: two to four handwritten words with an arrow at the product ("From clicks to revenue"). A fact from the profile, never an offer or a number.
platformMarksbooleancomplete layout: draw the official Meta/Google marks in the platform chips. Defaults to yes on Meta campaigns and no on Google campaigns; leave unset.
layoutstringcomplete: the finished ad, and the layout for EVERY ad in a set unless the person asks for something else. Headline with an accent phrase, mechanism line, the…
heroAssetIdstringcomplete and screenshot layouts: a library image asset (a real product screenshot, the site capture, or a real photo) to frame as the hero. Use ads.assets.list…
namestring
ratiosarray
adCreativeIdstringDraft ad to auto-attach the 1:1 to. The set it replaces is archived out of the library.
ads__creative__compose_from_photoTurn a REAL photo from the library into a finished ad set: the photo cropped for every placement size, the headline in real type, the real logo. No image model, no credits, nothing invented. THE FIRST CHOICE for a physical business whenever the owner has uploaded photos or the website scan saved so…

Turn a REAL photo from the library into a finished ad set: the photo cropped for every placement size, the headline in real type, the real logo. No image model, no credits, nothing invented. THE FIRST CHOICE for a physical business whenever the owner has uploaded photos or the website scan saved so…

ParametroTipoDescrizione
assetId*stringA REAL photo from the library (ads.assets.list): uploaded by the owner or saved from their website. Never a generated image.
headline*stringComposited in real type under the photo. Always the ad's headline.
sublinestring
namestring
ratiosarray
adCreativeIdstringDraft ad to auto-attach the 1:1 to. One call per ad.
ads__creative__generate_videoRender a short video clip (4, 6 or 8 seconds, vertical 9:16 or wide 16:9) for Reels, Stories, TikTok-style and feed placements. Use for ANY request for a video, promo clip, reel or animated ad. It renders in the background for a few minutes; the finished clip lands in Creative studio (Marketing, Cr…

Render a short video clip (4, 6 or 8 seconds, vertical 9:16 or wide 16:9) for Reels, Stories, TikTok-style and feed placements. Use for ANY request for a video, promo clip, reel or animated ad. It renders in the background for a few minutes; the finished clip lands in Creative studio (Marketing, Cr…

ParametroTipoDescrizione
prompt*stringWhat happens in the clip: shot type, subject, action, setting, light. One continuous moment, one subject. Describe the SCENE only. No words, captions, logos or…
namestringLibrary name for the clip.
aspectRatiostring9:16 for Reels, Stories and TikTok-style placements. 16:9 for feed and YouTube.
durationSecondsClip length. 8 suits most ads; 4 for a single beat; 6 in between.
hookstringThe one line shown over the opening seconds of the FINISHED ad. Pass it whenever the clip is for an ad (it almost always is): the moment the clip lands, Plyto…
captionstringOne lower-third line for the clip in the finished ad.
ctastringButton label on the closing brand card, e.g. "Get a quote", "Start free". Default "Learn more".
enginestringLeave unset: the workspace default renders. Only when the person names the engine (a side-by-side of Veo against Gemini Omni Flash).
fromAssetIdstringA library IMAGE to open on: a real photo of the place or product beats an invented scene. When the person attached photos, pick the clearest product or place s…
ads__creative__compose_videoTurn library clips and images into a FINISHED video ad: a hook line over the opening seconds, an optional caption per clip, and a closing brand card with the real logo and a button, at 9:16 for Reels, Stories and TikTok (or 16:9, 1:1). A raw clip from ads.creative.generate_video is footage, not an…

Turn library clips and images into a FINISHED video ad: a hook line over the opening seconds, an optional caption per clip, and a closing brand card with the real logo and a button, at 9:16 for Reels, Stories and TikTok (or 16:9, 1:1). A raw clip from ads.creative.generate_video is footage, not an…

ParametroTipoDescrizione
assetIdsarrayLibrary clips and images IN ORDER (1 to 4). Clips play up to 12 seconds each; images hold for a few seconds with a slow push-in. Omit to use the newest generat…
hook*stringThe one line shown large over the first two to three seconds. The reason to keep watching, in the customer's words: a pain, a promise or a question. Under 60 c…
captionsarrayOne short caption per clip, in the same order as assetIds (null to leave a clip clean). Lower third, one idea each.
clipSecondsnumberTrim every clip to this many seconds. Default: each clip's own length, up to 12.
endHeadlinestringHeadline on the closing brand card. Default: the hook.
endSublinestringSupporting line on the closing card. Default: the business's value proposition.
ctastringButton label on the closing card, e.g. "Get a quote", "Book now", "Start free". Default "Learn more".
noEndCardbooleanSkip the closing brand card.
aspectstring9:16 for Reels, Stories and TikTok (the default). 16:9 for feed and YouTube. 1:1 for square feed.
muteClipsbooleanDrop the clips' own sound.
namestringLibrary name for the finished ad.
ads__ads__listList every ad on a campaign with its ID, grouped by ad group. Run this BEFORE ads.creative.update or ads.creative.delete: those tools take the ad's id, never its headline text. Also the honest way to answer 'what ads does this campaign have'.

List every ad on a campaign with its ID, grouped by ad group. Run this BEFORE ads.creative.update or ads.creative.delete: those tools take the ad's id, never its headline text. Also the honest way to answer 'what ads does this campaign have'.

ParametroTipoDescrizione
campaignId*stringThe campaign whose ads to list.
ads__assets__listList the creative library (images, videos) for the active business, with what each asset IS: role 'site-capture' is the real picture of their website the scan saved (the hero for ads.creative.compose_graphic layout screenshot on software), role 'reference' is a real photo of the business, source 'u…

List the creative library (images, videos) for the active business, with what each asset IS: role 'site-capture' is the real picture of their website the scan saved (the hero for ads.creative.compose_graphic layout screenshot on software), role 'reference' is a real photo of the business, source 'u…

ParametroTipoDescrizione
typestringFilter by asset type. Omit for all.
ads__assets__deleteprivilegiatoPermanently delete an UNUSED image or video from the creative library (the file and its record). Refused when the asset — or any of its placement-size siblings (same name, different ratio) — is attached to an ad, because launch resolves sibling sizes by name. Use for library hygiene: failed or supe…

Permanently delete an UNUSED image or video from the creative library (the file and its record). Refused when the asset — or any of its placement-size siblings (same name, different ratio) — is attached to an ad, because launch resolves sibling sizes by name. Use for library hygiene: failed or supe…

ParametroTipoDescrizione
assetId*stringThe creative asset to delete permanently.
ads__campaign__updateEdit an existing ad campaign: name, objective, daily budget, plain-English audience, or Google search keywords. Draft campaigns are freely editable. For LIVE campaigns only the budget can change and an increase requires the user's explicit approval first (then pass confirmSpendIncrease: true). Neve…

Edit an existing ad campaign: name, objective, daily budget, plain-English audience, or Google search keywords. Draft campaigns are freely editable. For LIVE campaigns only the budget can change and an increase requires the user's explicit approval first (then pass confirmSpendIncrease: true). Neve…

ParametroTipoDescrizione
campaignId*stringThe campaign to edit.
namestring
objectivestring
dailyBudgetDollarsnumber
audienceDescriptionstringPlain-English audience; replaces the first ad set's audience.
googleKeywordsarraySearch keywords (google campaigns only). Cover EVERY intent in the audience description: when it names competitors or 'alternatives to X', include those altern…
adSetIdstringWhich ad group (ad set) the audience/keyword change targets. Campaigns can have several ad groups, each with its own keyword theme; ads.campaign.get lists them…
confirmSpendIncreasebooleanREQUIRED true when raising the budget of a live campaign. Only set after the user explicitly approved the new amount in chat. Never state a live campaign's cur…
ads__campaign__locations__getWhere a campaign's ads show: the location targeting as the ad platform itself reports it for a live or paused campaign (Google: the places plus whether only people physically there see the ads; Meta: the places on every ad set), or what the draft holds. Use before changing locations, when someone a…

Where a campaign's ads show: the location targeting as the ad platform itself reports it for a live or paused campaign (Google: the places plus whether only people physically there see the ads; Meta: the places on every ad set), or what the draft holds. Use before changing locations, when someone a…

ParametroTipoDescrizione
campaignId*stringThe campaign to inspect.
ads__campaign__changesThe change history of a campaign: every edit made through Plyto (budget, locations, keywords, bidding, status, ads), by whom and when, plus, for a live Google campaign, Google's own change log including edits made directly in Google Ads by a person. Use before explaining why results changed, before…

The change history of a campaign: every edit made through Plyto (budget, locations, keywords, bidding, status, ads), by whom and when, plus, for a live Google campaign, Google's own change log including edits made directly in Google Ads by a person. Use before explaining why results changed, before…

ParametroTipoDescrizione
campaignId*stringThe campaign whose history to read.
daysintegerHow far back to look. Google's own history covers 30 days at most.
ads__landing_pages__buildBuild a landing page for every ad group in a campaign (or one ad group): a Plyto-hosted page whose headline says the ad's promise back in the visitor's words, brand-grounded bullets, proof only from the claims on file, and the business's lead form. Draft campaigns: the ads' links are set to the pag…

Build a landing page for every ad group in a campaign (or one ad group): a Plyto-hosted page whose headline says the ad's promise back in the visitor's words, brand-grounded bullets, proof only from the claims on file, and the business's lead form. Draft campaigns: the ads' links are set to the pag…

ParametroTipoDescrizione
campaignId*stringThe campaign whose ad groups get pages.
adSetIdstringOne ad group only. Omit for every ad group in the campaign.
repointLiveAdsbooleanMove the SERVING ads of a live Google campaign onto the new pages. Leave this out unless the user has read the pages and said in this conversation to send thei…
ads__landing_pages__listThe landing pages Plyto hosts for this business's ads, with their links, which campaign and ad group each belongs to, and how many people have viewed each. Use before building pages (to reuse), and when someone asks where an ad sends people.

The landing pages Plyto hosts for this business's ads, with their links, which campaign and ad group each belongs to, and how many people have viewed each. Use before building pages (to reuse), and when someone asks where an ad sends people.

ParametroTipoDescrizione
campaignIdstringLimit to one campaign. Omit for every page in the business.
ads__landing_pages__getEverything on one landing page, for reading back or editing: every line of copy, the photo, the accent color, whether it collects details (form) or sends people to a link, which ad it belongs to and whether traffic is reaching it, what the owner has edited by hand. Call it before ads.landing_pages.…

Everything on one landing page, for reading back or editing: every line of copy, the photo, the accent color, whether it collects details (form) or sends people to a link, which ad it belongs to and whether traffic is reaching it, what the owner has edited by hand. Call it before ads.landing_pages.…

ParametroTipoDescrizione
pageId*stringThe page's id or slug, from ads.landing_pages.list or the address the owner pasted.
ads__landing_pages__updateEdit one landing page: pass ONLY what changes and everything else stays. 'Change the headline to X' is headline alone; 'I don't like the color' is accent alone; 'send people to my booking link' is destination link plus ctaUrl; 'put my Calendly (or my Typeform, my HubSpot form) on the page' is desti…

Edit one landing page: pass ONLY what changes and everything else stays. 'Change the headline to X' is headline alone; 'I don't like the color' is accent alone; 'send people to my booking link' is destination link plus ctaUrl; 'put my Calendly (or my Typeform, my HubSpot form) on the page' is desti…

ParametroTipoDescrizione
pageId*stringThe page's id or slug.
headlinestring
subheadlinestring
bulletsarrayReplaces the whole list when passed. Each is a bold lead sentence then one detail sentence.
stepsarrayWhat happens after they get in touch, from their side. Replaces the whole list when passed.
heroCaptionstringOne true line under the photo. Never a job, street or outcome that was not stated.
proofarrayTrust lines under the form. Only claims on file.
ctaLabelstring
destinationstringform: the page collects details with the Plyto lead form (leads become contacts tied to the ad). link: the button goes to ctaUrl (their booking page, shop, tel…
ctaUrlstringWhere the button goes when destination is link.
embedstringThe share link or the embed code of their form or calendar, as the owner pasted it, when destination is embed.
heroImageUrlstringA url from ads.assets.list. The library only; never an outside address.
accentstringHex like #1f5f3b. Buttons, the top bar, the step numbers. Omit to keep; unset to go back to the brand color.
tagsarrayThe owner's own labels. Replaces the list.
unsetarrayFields to clear.
ads__landing_pages__createMake ANOTHER landing page for an ad group: a second angle to test against the page ads.landing_pages.build made, a page for a new offer, a variant the owner asked for. You give the ANGLE; Plyto's copywriter writes the page from the ad's words, the brand profile and the claims on file, through the s…

Make ANOTHER landing page for an ad group: a second angle to test against the page ads.landing_pages.build made, a page for a new offer, a variant the owner asked for. You give the ANGLE; Plyto's copywriter writes the page from the ad's words, the brand profile and the claims on file, through the s…

ParametroTipoDescrizione
adSetId*stringThe ad group this page answers (ads.campaign.get lists ad groups with ids).
angle*stringThe pitch this page leads with, different from the ad group's existing page: 'lead with the insurance claim', 'proof first', 'the owner's own voice', 'the spri…
ownerNotesstringFacts the owner stated in this conversation that the page may use, in their words (an offer, a price, a timeframe, a credential). Never anything they did not s…
headlinestringONLY when the owner dictated the exact headline. Otherwise leave it to the copywriter.
ctaLabelstringOnly when the owner named the button.
destinationstringform (default for a business that calls people back), link to ctaUrl (the signup or checkout page for self-serve software), or embed their own form or calendar.
ctaUrlstring
embedstring
heroImageUrlstringA url from ads.assets.list. Omit and the ad's own picture, or the newest real photo of the business, is used.
accentstring
tagsarray
pointDraftAdsbooleanOn a DRAFT campaign only: make this the page the ad group's ads link to. Live ads never move here; the owner does that from the page's screen.
ads__campaign__launchLaunch a DRAFT campaign on Facebook and Instagram or Google Ads, the same way the Run it button does: checks that the ad account, payment method, Page and lead capture are in place, then starts the launch in the background. Money moves after this, so call it once WITHOUT confirmLaunch to get the ex…

Launch a DRAFT campaign on Facebook and Instagram or Google Ads, the same way the Run it button does: checks that the ad account, payment method, Page and lead capture are in place, then starts the launch in the background. Money moves after this, so call it once WITHOUT confirmLaunch to get the ex…

ParametroTipoDescrizione
campaignId*stringThe DRAFT campaign to launch.
confirmLaunchbooleanREQUIRED true to launch. Set it only after the user explicitly said to launch THIS campaign at the daily budget the first call reported. Never on the same turn…
ads__campaign__status__setPause a live campaign or resume a paused one on the ad platform, the same path as the page's pause and resume buttons (platform call, audit row, undoable). Pausing needs no confirmation and stops spend at once. Resuming restarts spend, so it needs confirmResume: true after the user asked. To pause…

Pause a live campaign or resume a paused one on the ad platform, the same path as the page's pause and resume buttons (platform call, audit row, undoable). Pausing needs no confirmation and stops spend at once. Resuming restarts spend, so it needs confirmResume: true after the user asked. To pause…

ParametroTipoDescrizione
campaignId*stringA LIVE or PAUSED campaign.
to*string"paused" stops spend on the platform; "live" resumes it.
confirmResumebooleanREQUIRED true when to is "live": resuming restarts spend. Set only after the user explicitly asked to resume this campaign.
ads__campaign__refreshPull the current state of launched campaigns, their ad groups and their ads straight from Google Ads and Facebook, and match Plyto's records to it: live or paused at every level, the campaign's daily budget, each ad's review state, and any delivery problem the platform reports. Plyto otherwise lear…

Pull the current state of launched campaigns, their ad groups and their ads straight from Google Ads and Facebook, and match Plyto's records to it: live or paused at every level, the campaign's daily budget, each ad's review state, and any delivery problem the platform reports. Plyto otherwise lear…

ParametroTipoDescrizione
campaignIdstringOne launched campaign. Omit to check every launched campaign in the business.
ads__destination__getWhere this business's ad clicks go, or, when nobody has decided yet, the numbered question to ask the owner (their site's real pages checked live, a recommendation and why). A draft's result already carries this as destinationAsk; call this when you need it again or before launching. Never decide i…

Where this business's ad clicks go, or, when nobody has decided yet, the numbered question to ask the owner (their site's real pages checked live, a recommendation and why). A draft's result already carries this as destinationAsk; call this when you need it again or before launching. Never decide i…

ParametroTipoDescrizione
campaignIdstringThe draft in question, so a Facebook draft also offers the instant form and the answer can be checked against its ads.
ads__destination__setRecord where the owner wants ad clicks to go, then do what that implies: build and host the landing page (page, or an embeddable link), point the campaign's draft ads at their site or link (site, link), or mark a Facebook draft for an instant form. Call it the moment they answer the destination que…

Record where the owner wants ad clicks to go, then do what that implies: build and host the landing page (page, or an embeddable link), point the campaign's draft ads at their site or link (site, link), or mark a Facebook draft for an instant form. Call it the moment they answer the destination que…

ParametroTipoDescrizione
campaignIdstringThe draft this decides for: pages are built for it and its draft ads are pointed. Omit to record the choice for future drafts only.
choice*stringpage: Plyto builds and hosts a landing page per ad group (a lead form, or a button to url when pageAction is link). site: a page on the owner's own website; pa…
urlstringFor site and link: the address the owner gave, as they gave it. For page with pageAction link: the link the page's button opens.
pageActionstringFor page: what the page ends in. form (default): a short lead form we host, leads land in the CRM. link: a button to url.
domainstringFor page, only when the owner asked to host it on their own domain: a subdomain of theirs (go.theirsite.com). DNS comes after and never blocks the launch.
decidedBystringowner (default) when they answered. agent when they said 'you pick' and you took the recommendation; say which you chose.
ads__funnel__summaryThe funnel behind the ad spend, by campaign, for the last N days: spend, clicks, and every stage after the click through to a paying customer, with cost per stage. Call this BEFORE judging a campaign, proposing a budget change, or answering 'what should we change about our ads': the platform's conv…

The funnel behind the ad spend, by campaign, for the last N days: spend, clicks, and every stage after the click through to a paying customer, with cost per stage. Call this BEFORE judging a campaign, proposing a budget change, or answering 'what should we change about our ads': the platform's conv…

ParametroTipoDescrizione
daysintegerWindow in days, default 30.
ads__campaign__locations__setSet or replace the location targeting on a campaign, DRAFT or LIVE: plain place names, applied to every ad group, plus (Google) whether the ads reach only people physically in those places. Use when the checklist warns about missing locations, when targeting defaulted to the business's country and…

Set or replace the location targeting on a campaign, DRAFT or LIVE: plain place names, applied to every ad group, plus (Google) whether the ads reach only people physically in those places. Use when the checklist warns about missing locations, when targeting defaulted to the business's country and…

ParametroTipoDescrizione
campaignId*stringThe campaign whose targeting to set.
locationNames*arrayPlain place names: cities, regions, or countries ("United States", "Toronto", "England"). Replaces the campaign's current locations on every ad group.
radiusMilesOptional radius around each place, for local businesses.
presencestringGoogle only. "presence" = people in or regularly in the places (the right choice almost always: it stops searchers in other countries seeing the ads). "presenc…
confirmLiveEditbooleanREQUIRED true for a LIVE or paused campaign: the change reaches Google or Meta immediately. Set true only after the user explicitly asked to change where this…
ads__creative__addAdd one ad (headline + primary text + CTA, plus a link except on a Meta leads campaign, where the instant form is the destination and no link is needed) to a campaign's ad set. On a DRAFT it is saved and launches with the campaign. On a LIVE Google campaign it publishes a new responsive search ad i…

Add one ad (headline + primary text + CTA, plus a link except on a Meta leads campaign, where the instant form is the destination and no link is needed) to a campaign's ad set. On a DRAFT it is saved and launches with the campaign. On a LIVE Google campaign it publishes a new responsive search ad i…

ParametroTipoDescrizione
campaignId*string
headline*string
body*string
ctaTypestring
destinationUrlstring
destinationSourcestringSet to "user" ONLY when the owner typed this exact URL in this conversation. Otherwise omit: the link must be on the website on file or a Plyto-hosted page, an…
adGroupNamestringFor campaigns with several ad groups: a fragment of the ad group's name to add the ad into. Defaults to the first ad group.
confirmLiveEditbooleanRequired to publish an ad into a LIVE Google campaign (it reaches Google immediately). Omit for drafts. Set true only after the user explicitly asked to edit t…
ads__creative__attach_imageAttach a creative-library image OR video clip to a draft ad (sets it as the ad's media; for image sets, launch resolves the other placement sizes by the asset's name-siblings; a video clip launches as a Meta video ad that plays in Reels, Stories and the feed). Use right after ads.creative.generate_…

Attach a creative-library image OR video clip to a draft ad (sets it as the ad's media; for image sets, launch resolves the other placement sizes by the asset's name-siblings; a video clip launches as a Meta video ad that plays in Reels, Stories and the feed). Use right after ads.creative.generate_…

ParametroTipoDescrizione
adCreativeId*stringThe ad to attach the image to (from the campaign's ads list).
assetId*stringThe creative-library image or video clip to attach (from ads.creative.generate_images, ads.creative.generate_video or the library).
ads__audience__listList the Meta custom audiences and lookalikes on the connected ad account, with their approximate sizes. Use when the user asks what audiences they have, or before targeting or building one.

List the Meta custom audiences and lookalikes on the connected ad account, with their approximate sizes. Use when the user asks what audiences they have, or before targeting or building one.

ParametroTipoDescrizione
refreshbooleanRe-pull from Meta instead of using the cached list. Use when the user just created an audience elsewhere.
ads__audience__createCreate a Meta audience for the business: either a custom audience from one of their Plyto contact lists, or a lookalike of an audience they already have. Use when the user wants to target their customers, or reach 'people like' their best customers. Creating an audience spends nothing and changes n…

Create a Meta audience for the business: either a custom audience from one of their Plyto contact lists, or a lookalike of an audience they already have. Use when the user wants to target their customers, or reach 'people like' their best customers. Creating an audience spends nothing and changes n…

ParametroTipoDescrizione
userAskedToCreate*booleanTrue only if the user explicitly asked you to build this audience on Meta. Discussing who to target, or being asked what audiences exist, is not asking you to…
name*stringName for the new audience, as it will appear in Meta.
fromListIdstringBuild a custom audience from this Plyto contact list (emails are hashed before upload). Use crm.list.* tools to find the id.
lookalikeOfAudienceIdstringBuild a lookalike seeded from this existing Meta audience id (from ads.audience.list).
lookalikePercentnumberLookalike breadth as a percent of the country's population. 1 is the closest match and usually performs best; 10 is broadest.
countrystringTwo-letter country code the lookalike is built in.
ads__audience__interestsSearch Meta's interest and behavior catalog for detailed targeting, with approximate audience sizes. Use when the user wants to target people by interest, or asks what interests they could target. Returns ids that can be attached to an ad set.

Search Meta's interest and behavior catalog for detailed targeting, with approximate audience sizes. Use when the user wants to target people by interest, or asks what interests they could target. Returns ids that can be attached to an ad set.

ParametroTipoDescrizione
query*stringWhat to search for, e.g. 'home improvement' or 'yoga'.
limitinteger
ads__search_terms__listShow what people actually searched for before seeing the business's Google ads, with spend, clicks and conversions per term, and which terms are wasting money (spend with zero conversions). Use when asked where the ad budget is going, why costs are high, or what to block. This report is PARTIAL: Go…

Show what people actually searched for before seeing the business's Google ads, with spend, clicks and conversions per term, and which terms are wasting money (spend with zero conversions). Use when asked where the ad budget is going, why costs are high, or what to block. This report is PARTIAL: Go…

ParametroTipoDescrizione
campaignIdstringLimit to one Plyto campaign. Omit for the whole account.
daysReporting window.
onlyWastefulbooleanReturn just the zero-conversion terms worth blocking, instead of everything.
ads__negative_keywords__addBlock search terms on a Google campaign by adding them as negative keywords, so the ads stop showing for that traffic. Use after finding wasteful terms. This lowers wasted spend and never raises a budget.

Block search terms on a Google campaign by adding them as negative keywords, so the ads stop showing for that traffic. Use after finding wasteful terms. This lowers wasted spend and never raises a budget.

ParametroTipoDescrizione
campaignId*stringThe Plyto campaign to block them on.
terms*arraySearch terms to stop showing ads for.
matchTypestringBROAD blocks the whole family of that phrasing (right for junk traffic); EXACT blocks only that precise spelling.
ads__negative_keywords__listList the negative keywords already blocking traffic on a Google campaign. Use before adding more, so nothing is added twice.

List the negative keywords already blocking traffic on a Google campaign. Use before adding more, so nothing is added twice.

ParametroTipoDescrizione
campaignId*stringThe Plyto campaign to read.
ads__delivery__diagnoseExplain why live campaigns are or aren't delivering: learning phase, budget too small to enter the auction, rejected ads, audience too narrow, payment problems. Use whenever the user asks why a campaign has low or zero spend, impressions, or results.

Explain why live campaigns are or aren't delivering: learning phase, budget too small to enter the auction, rejected ads, audience too narrow, payment problems. Use whenever the user asks why a campaign has low or zero spend, impressions, or results.

ParametroTipoDescrizione
campaignIdstringLimit to one campaign. Omit to check every live campaign.
ads__google_audience__listList the Customer Match and remarketing audiences on the connected Google Ads account, with their sizes. Use when the user asks what Google audiences they have or before targeting one.

List the Customer Match and remarketing audiences on the connected Google Ads account, with their sizes. Use when the user asks what Google audiences they have or before targeting one.

Per questo strumento non è stato pubblicato alcuno schema di input.

ads__google_audience__createTEMPORARILY UNAVAILABLE: Google approved Plyto for conversion reporting, and approval for customer list uploads is still pending, so this tool currently refuses with an explanation. When a user asks for a Google audience, say that plainly and offer keyword targeting on Google or the same audience o…

TEMPORARILY UNAVAILABLE: Google approved Plyto for conversion reporting, and approval for customer list uploads is still pending, so this tool currently refuses with an explanation. When a user asks for a Google audience, say that plainly and offer keyword targeting on Google or the same audience o…

ParametroTipoDescrizione
userAskedToCreate*booleanTrue only if the user explicitly asked you to upload this list to Google as an audience. Discussing targeting, or listing existing audiences, is not asking you…
listId*stringPlyto contact list to push to Google as an audience.
namestringName for the audience in Google Ads.
ads__lead_form__listList the Facebook instant forms (lead forms) on the connected page, with how many leads each has collected. Use when the user asks about their lead forms or before pointing a campaign at one.

List the Facebook instant forms (lead forms) on the connected page, with how many leads each has collected. Use when the user asks about their lead forms or before pointing a campaign at one.

Per questo strumento non è stato pubblicato alcuno schema di input.

ads__lead_form__createCreate a real instant form on the business's Facebook page. It becomes a live asset on their page that collects strangers' names, emails and phone numbers, and Facebook does not let you delete forms that have submissions. Submissions land in Contacts automatically.

Create a real instant form on the business's Facebook page. It becomes a live asset on their page that collects strangers' names, emails and phone numbers, and Facebook does not let you delete forms that have submissions. Submissions land in Contacts automatically.

ParametroTipoDescrizione
userAskedToCreate*booleanTrue only if the user explicitly asked you to create this lead form on their Facebook page. Discussing form fields, or drafting one, is not asking you to creat…
name*stringInternal name for the form.
headline*stringShown at the top of the form, e.g. 'Get a free roof estimate'.
descriptionstringOne short supporting line under the headline.
fieldsarrayFields to ask for beyond email, which is always included. Every extra field costs submissions.
websiteUrl*stringWhere the thank-you screen sends people.
privacyPolicyUrl*stringRequired by Meta. Use the business website if there's no policy page.
qualitystringHIGHER_INTENT adds a review step: fewer leads, better ones. Suggest it for high-ticket services.
ads__google__conversion_tracking__repairSet up Google conversion tracking for a business that is missing it, and move live Google campaigns from bidding on clicks to bidding on conversions. Use when a campaign launched without conversion tracking, or when the campaign page reports that setup failed. Changes how the campaign bids; it does…

Set up Google conversion tracking for a business that is missing it, and move live Google campaigns from bidding on clicks to bidding on conversions. Use when a campaign launched without conversion tracking, or when the campaign page reports that setup failed. Changes how the campaign bids; it does…

ParametroTipoDescrizione
campaignIdstringLimit the repair to one campaign. Omit to fix every live Google campaign on this business.
ads__destinations__syncPush the landing page URLs shown in Plyto to the live ads on Google, for a campaign whose destinations were changed after launch. Use when ads are sending traffic somewhere other than what the campaign page shows. Changes where clicks land; it does not change budget or spend.

Push the landing page URLs shown in Plyto to the live ads on Google, for a campaign whose destinations were changed after launch. Use when ads are sending traffic somewhere other than what the campaign page shows. Changes where clicks land; it does not change budget or spend.

ParametroTipoDescrizione
campaignId*stringThe live Google campaign to sync.
ads__google__search_partners__setTurn Google Search Partners on or off for a live campaign. Partner sites deliver cheap clicks with high click-through rates and far worse conversion than Google Search, so turning them off is the standard fix when a campaign shows an implausible click-through rate and no results. Changes where ads…

Turn Google Search Partners on or off for a live campaign. Partner sites deliver cheap clicks with high click-through rates and far worse conversion than Google Search, so turning them off is the standard fix when a campaign shows an implausible click-through rate and no results. Changes where ads…

ParametroTipoDescrizione
campaignId*stringThe live Google campaign to change.
enabled*booleanfalse turns Google's partner sites off, which is the usual fix for cheap clicks that never convert. true opts back in.
ads__google__bidding__setSwitch a live Google campaign between clicks bidding and conversions bidding. Use maximize_clicks when a campaign shows zero or near-zero impressions on Google Search because it is optimizing toward conversions that never get recorded. Spends the same daily budget either way; does not raise it.

Switch a live Google campaign between clicks bidding and conversions bidding. Use maximize_clicks when a campaign shows zero or near-zero impressions on Google Search because it is optimizing toward conversions that never get recorded. Spends the same daily budget either way; does not raise it.

ParametroTipoDescrizione
campaignId*stringThe live Google campaign to change.
mode*stringmaximize_clicks buys as many clicks as the budget allows, capped per click; the right mode while conversion tracking has no data. maximize_conversions hands bi…
maxCpcDollarsnumberCeiling per click in dollars for maximize_clicks, defaulting to 4. Ignored for maximize_conversions.
ads__google__ads__strengthenFill every live responsive search ad in a Google campaign up to the full 15-headline / 4-description asset counts, keeping all existing lines and pins and adding brand and ad-group-themed lines. Use when Google rates the ads' Ad strength Poor: thin asset lists cap Ad strength, and Poor strength cos…

Fill every live responsive search ad in a Google campaign up to the full 15-headline / 4-description asset counts, keeping all existing lines and pins and adding brand and ad-group-themed lines. Use when Google rates the ads' Ad strength Poor: thin asset lists cap Ad strength, and Poor strength cos…

ParametroTipoDescrizione
campaignId*stringThe live Google campaign whose ads to strengthen.
ads__creative__updateEdit an existing ad's headline, description, or destination link. Drafts update in place. A live Google search ad gets a replacement version published and the old one paused, because Google does not allow editing published ad copy; destination-only changes update in place. Live Meta ads cannot be e…

Edit an existing ad's headline, description, or destination link. Drafts update in place. A live Google search ad gets a replacement version published and the old one paused, because Google does not allow editing published ad copy; destination-only changes update in place. Live Meta ads cannot be e…

ParametroTipoDescrizione
creativeId*stringThe ad (creative) to edit.
headlinestringNew headline. Google search ads fit 30 characters.
bodystringNew description (Google, 90 characters) or primary text (Meta).
destinationUrlstringNew landing page link, starting with https://
ads__creative__deleteprivilegiatoDelete a DRAFT ad outright (its images stay in the library), or PAUSE a live Google search ad (published ads can't be deleted, but a paused ad stops serving immediately). Use when a pre-launch check flags an ad the user wants gone — a trademarked competitor name in a headline, off-brand copy — inst…

Delete a DRAFT ad outright (its images stay in the library), or PAUSE a live Google search ad (published ads can't be deleted, but a paused ad stops serving immediately). Use when a pre-launch check flags an ad the user wants gone — a trademarked competitor name in a headline, off-brand copy — inst…

ParametroTipoDescrizione
creativeId*stringThe ad (creative) to delete.
ads__funnel__testSend a tagged test lead through a campaign's whole funnel: landing page, form, CRM contact, conversion attribution, and a dry-run Google upload check. The test lead uses an undeliverable address, is removed afterwards, and no ads or budgets change. Use when someone asks whether their tracking or fu…

Send a tagged test lead through a campaign's whole funnel: landing page, form, CRM contact, conversion attribution, and a dry-run Google upload check. The test lead uses an undeliverable address, is removed afterwards, and no ads or budgets change. Use when someone asks whether their tracking or fu…

ParametroTipoDescrizione
campaignId*stringThe live campaign whose funnel to test.
ads__google__keywords__addAdd keywords to a live Google campaign's ad group, phrase match by default. Use to feed phrasing families that are converting, for example when winning search terms are not yet covered by the keyword list. Does not change budget; new keywords compete inside the existing daily cap.

Add keywords to a live Google campaign's ad group, phrase match by default. Use to feed phrasing families that are converting, for example when winning search terms are not yet covered by the keyword list. Does not change budget; new keywords compete inside the existing daily cap.

ParametroTipoDescrizione
campaignId*stringThe live Google campaign.
adGroupName*stringWhich ad group to add to, matched by name fragment.
keywords*arrayKeywords to add. Plain text becomes phrase match.
ads__google__ads__add_landing_variantStart a landing page A/B test on the live Google campaign. In ad groups with room it adds a copy of the strongest ad pointing at the new URL; in groups already at Google's 3-ad cap it repoints the weakest ad instead, keeping the strongest on the incumbent page. Google's ad rotation splits the traff…

Start a landing page A/B test on the live Google campaign. In ad groups with room it adds a copy of the strongest ad pointing at the new URL; in groups already at Google's 3-ad cap it repoints the weakest ad instead, keeping the strongest on the incumbent page. Google's ad rotation splits the traff…

ParametroTipoDescrizione
variantUrl*stringFull landing page URL for the B side, e.g. https://plyto.ai/go/new-era
adGroupNameContainsstringOnly add the variant ad to ad groups whose name contains this text (case-insensitive). Omit to cover every enabled ad group.
ads__query_pages__buildThe query-to-page engine: cluster what people actually searched on a live Google campaign, generate one landing page per intent cluster (headline that speaks the search back, brand-grounded copy, the business's live form embedded), and point variant ads at each page. Charges AI credits for the copy…

The query-to-page engine: cluster what people actually searched on a live Google campaign, generate one landing page per intent cluster (headline that speaks the search back, brand-grounded copy, the business's live form embedded), and point variant ads at each page. Charges AI credits for the copy…

ParametroTipoDescrizione
campaignId*stringA LIVE Google campaign with recorded search terms.
maxPagesinteger
ads__google__ad_groups__addAdd a complete search ad group (keywords phrase-match by default, RSA copy) to a SPECIFIC Google campaign by id. Where its clicks go follows the owner's decision on file (a page Plyto builds for the group, or their own link); undecided, the result carries the question to ask. Pass 8-12 VARIED headl…

Add a complete search ad group (keywords phrase-match by default, RSA copy) to a SPECIFIC Google campaign by id. Where its clicks go follows the owner's decision on file (a page Plyto builds for the group, or their own link); undecided, the result carries the question to ask. Pass 8-12 VARIED headl…

ParametroTipoDescrizione
campaignId*stringREQUIRED: the exact campaign this group belongs to. A draft id adds a draft group (nothing touches Google until launch); a live id is refused unless confirmLiv…
confirmLiveEditbooleanSet true ONLY when the user explicitly asked to edit this specific LIVE campaign. Never set it while building a new campaign.
name*stringShort intent-family name, e.g. 'Agencies'. The campaign name is prefixed automatically.
keywords*arraySearch keywords for this intent. Bare strings become phrase match; [brackets] force exact.
landingUrlstringOnly when the owner named the link in this conversation (then also pass destinationSource "user") or the business has already decided where clicks go (business…
destinationSourcestringSet to "user" ONLY when the owner typed this exact URL in this conversation. Otherwise omit: the link must be on the website on file or a Plyto-hosted page, an…
headlines*arrayRSA headlines, 30 characters max each. Aim for 10 or more so Ad strength starts healthy.
descriptions*arrayRSA descriptions, 90 characters max each.
ads__google__ad_groups__removeprivilegiatoRemove an ad group you (or the user) no longer want. Draft groups are deleted outright along with their draft ads. Groups on a LIVE campaign are PAUSED in Google instead: delivery stops immediately, history is kept, and the pause is reversible in Google Ads. Use this to clean up groups created by m…

Remove an ad group you (or the user) no longer want. Draft groups are deleted outright along with their draft ads. Groups on a LIVE campaign are PAUSED in Google instead: delivery stops immediately, history is kept, and the pause is reversible in Google Ads. Use this to clean up groups created by m…

ParametroTipoDescrizione
campaignId*stringThe campaign the ad group belongs to.
adSetId*stringThe ad group's id (from the campaign page or ads.campaign.list).
ads__campaign__deleteprivilegiatoDelete a campaign that never launched (draft or failed): the campaign, its ad groups, and its draft ads are removed permanently; images stay in the creative library. A campaign that has reached the ad platform is archived instead of deleted, and a LIVE campaign is refused until it is paused. Two-st…

Delete a campaign that never launched (draft or failed): the campaign, its ad groups, and its draft ads are removed permanently; images stay in the creative library. A campaign that has reached the ad platform is archived instead of deleted, and a LIVE campaign is refused until it is paused. Two-st…

ParametroTipoDescrizione
campaignId*stringThe draft campaign to delete.
confirmbooleanMust be true to actually delete. Call WITHOUT it first: the tool returns what would be deleted so you can confirm with the user. Set true only after the user h…
ads__google__extensions__generateDraft sitelinks, callouts, and a structured snippet for a DRAFT Google campaign from the brand profile and the campaign's own keywords, and save them onto the draft. They are applied to Google at launch. URL VERIFICATION IS BUILT IN: sitelink destinations are chosen from the site's own sitemap and…

Draft sitelinks, callouts, and a structured snippet for a DRAFT Google campaign from the brand profile and the campaign's own keywords, and save them onto the draft. They are applied to Google at launch. URL VERIFICATION IS BUILT IN: sitelink destinations are chosen from the site's own sitemap and…

ParametroTipoDescrizione
campaignId*stringThe DRAFT Google campaign to draft extensions for.
landingUrlstringBase URL for sitelinks: the website on file or a Plyto-hosted page. Defaults to the campaign's ad destination. Never a guessed domain.
destinationSourcestringSet to "user" ONLY when the owner typed this exact URL in this conversation. Otherwise omit: the link must be on the website on file or a Plyto-hosted page, an…
sitelinksarrayEXPLICIT sitelinks that override generation. Pass these whenever the user names specific pages: each URL is still live-verified, and dead ones are dropped with…
calloutsarrayEXPLICIT callouts (max 25 chars each) that override generation, saved verbatim. Pass these to change callouts, or to pin the current ones unchanged during a si…
email__create_templateCreate a reusable email template. Body and subject are plain text and support merge tags: {{contact.firstName}}, {{contact.lastName}}, {{contact.fullName}}, {{contact.email}}, {{business.name}}, with fallbacks like {{contact.firstName|there}}.

Create a reusable email template. Body and subject are plain text and support merge tags: {{contact.firstName}}, {{contact.lastName}}, {{contact.fullName}}, {{contact.email}}, {{business.name}}, with fallbacks like {{contact.firstName|there}}.

ParametroTipoDescrizione
name*string
subject*string
body*string
email__list_templatesList email templates for this business.

List email templates for this business.

ParametroTipoDescrizione
includeArchivedboolean
email__list_sendsList recent email sends, optionally filtered to one contact or template. Shows delivery status per send.

List recent email sends, optionally filtered to one contact or template. Shows delivery status per send.

ParametroTipoDescrizione
contactIdstring
templateIdstring
limitinteger
email__get_send_statsAggregate send counts by status (queued/sent/delivered/opened/clicked/bounced/failed), optionally for one template and/or a recent window. Use to answer 'how did that email do?'

Aggregate send counts by status (queued/sent/delivered/opened/clicked/bounced/failed), optionally for one template and/or a recent window. Use to answer 'how did that email do?'

ParametroTipoDescrizione
templateIdstring
sinceDaysinteger
email__domain__statusCheck the business's custom sending domain: current status, and when it is still pending, exactly which DNS records have not been found yet (record type, host name, and value to add). Calling this also asks the email provider to re-check DNS right now, so it doubles as a manual re-verify. Use whene…

Check the business's custom sending domain: current status, and when it is still pending, exactly which DNS records have not been found yet (record type, host name, and value to add). Calling this also asks the email provider to re-check DNS right now, so it doubles as a manual re-verify. Use whene…

Per questo strumento non è stato pubblicato alcuno schema di input.

email__signature__setSet or clear the CURRENT USER's personal email signature for this business (their Gmail-style sign-off, appended when they compose one-to-one emails from a contact page). ONE-TO-ONE ONLY: marketing campaigns and automation emails never include it, by design; their sign-off is part of the campaign c…

Set or clear the CURRENT USER's personal email signature for this business (their Gmail-style sign-off, appended when they compose one-to-one emails from a contact page). ONE-TO-ONE ONLY: marketing campaigns and automation emails never include it, by design; their sign-off is part of the campaign c…

NOTALinks to undeclared domain: url
ParametroTipoDescrizione
signature*stringThe full signature block, e.g. 'Best, Ross Gray Plyto'. Empty string clears it.
email__campaign__listList email marketing campaigns with status, type, subject, and audience size. Use to answer 'what campaigns do we have' or find a campaign to edit.

List email marketing campaigns with status, type, subject, and audience size. Use to answer 'what campaigns do we have' or find a campaign to edit.

ParametroTipoDescrizione
statusstring
limitinteger
email__campaign__getGet one email campaign's full draft: subject, preview text, body, audience, schedule, A/B test setup and (once it has sent) its per-variant results and winner, plus the current eligible-recipient breakdown. Call before editing so changes are targeted, and call it to answer 'which version won'.

Get one email campaign's full draft: subject, preview text, body, audience, schedule, A/B test setup and (once it has sent) its per-variant results and winner, plus the current eligible-recipient breakdown. Call before editing so changes are targeted, and call it to answer 'which version won'.

ParametroTipoDescrizione
campaignId*string
email__campaign__createCreate a DRAFT email marketing campaign (never sends anything). Write subject/preview/body in the brand voice; the user reviews in the composer and nothing goes out without an explicit send confirmation. Returns the campaign URL to share with the user.

Create a DRAFT email marketing campaign (never sends anything). Write subject/preview/body in the brand voice; the user reviews in the composer and nothing goes out without an explicit send confirmation. Returns the campaign URL to share with the user.

ParametroTipoDescrizione
name*string
campaignTypestring
subjectstring
previewTextstring
bodyMdstringMarkdown body. Merge tags: {{contact.firstName|there}}, {{business.name}}. The unsubscribe footer is added automatically at send.
contactListIdstringOmit to target all subscribed contacts.
email__campaign__updateEdit a draft or scheduled email campaign: name, subject, preview text, body, audience list, schedule, or A/B test. Plyto DOES support A/B testing on email campaigns: set abVariable plus the matching B-side copy and every recipient is assigned a side at send time, then the campaign page reports open…

Edit a draft or scheduled email campaign: name, subject, preview text, body, audience list, schedule, or A/B test. Plyto DOES support A/B testing on email campaigns: set abVariable plus the matching B-side copy and every recipient is assigned a side at send time, then the campaign page reports open…

ParametroTipoDescrizione
campaignId*string
namestring
subjectstring
previewTextstring
bodyMdstring
contactListIdstringA list id, or "" to target all subscribed contacts.
scheduleTypestring
scheduledAtstringISO 8601; required when scheduleType is scheduled.
abVariablestringRun an A/B test on one variable. "subject" tests subjectB against subject, "body" tests bodyMdB against bodyMd, "off" ends the test and sends the A side to eve…
subjectBstringThe B-side subject line. Required when abVariable is subject.
bodyMdBstringThe B-side body. Required when abVariable is body.
abSplitPercentintegerPercentage of the audience that receives the B side. Defaults to 50 for a straight split. Below 50 holds B back as the challenger.
automations__createCreate an automation: a trigger + a linear chain of steps. Created in DRAFT and it stays that way. Do NOT activate it as part of building it: tell the user what it does and let them ask for it to be turned on. Steps run in order; a branch step exits contacts that don't match (its false path can be…

Create an automation: a trigger + a linear chain of steps. Created in DRAFT and it stays that way. Do NOT activate it as part of building it: tell the user what it does and let them ask for it to be turned on. Steps run in order; a branch step exits contacts that don't match (its false path can be…

ParametroTipoDescrizione
name*string
descriptionstring
trigger*object
exitCriteriaobjectJourney-level early exit, checked before EVERY step: a contact who matches leaves the automation immediately. Use for goal completion: billing reminders should…
steps*arrayLinear chain, executed in order.
automations__pausePause an active automation: no new enrollments. In-flight enrollments finish their current step and then hold (W7 executor checks status).

Pause an active automation: no new enrollments. In-flight enrollments finish their current step and then hold (W7 executor checks status).

ParametroTipoDescrizione
automationId*string
automations__listList automations with status and trigger.

List automations with status and trigger.

Per questo strumento non è stato pubblicato alcuno schema di input.

automations__getFetch one automation with its full step graph (ordered), for inspection or before editing.

Fetch one automation with its full step graph (ordered), for inspection or before editing.

ParametroTipoDescrizione
automationId*string
automations__connect_stepsRewire the step graph: point a step's `next` or `branch_false` slot at another step (or null to make that path exit). Use after automations.get to see current wiring.

Rewire the step graph: point a step's `next` or `branch_false` slot at another step (or null to make that path exit). Use after automations.get to see current wiring.

ParametroTipoDescrizione
automationId*string
fromStepId*string
toStepId*
slotstring
automations__list_enrollmentsList enrollments (who's in an automation and where they are), filterable by automation and state.

List enrollments (who's in an automation and where they are), filterable by automation and state.

ParametroTipoDescrizione
automationIdstring
statestring
limitinteger
automations__get_step_runsStep-by-step execution log for one enrollment: what ran, when, with what outcome/error. The debugging tool for 'why didn't Jane get the email?'

Step-by-step execution log for one enrollment: what ran, when, with what outcome/error. The debugging tool for 'why didn't Jane get the email?'

ParametroTipoDescrizione
enrollmentId*string
automations__exit_contactForce-exit an active enrollment: the contact stops at the next step boundary and receives nothing further from this automation. Use when someone asks to be left alone or was enrolled by mistake.

Force-exit an active enrollment: the contact stops at the next step boundary and receives nothing further from this automation. Use when someone asks to be left alone or was enrolled by mistake.

ParametroTipoDescrizione
enrollmentId*string
automations__test_runStatic dry-run: validates every step of an automation WITHOUT executing anything: action tools exist and accept their arguments (with templates resolved against dummy values), delays/waits are in bounds, the graph reaches an exit. Run before activate; report problems to the user.

Static dry-run: validates every step of an automation WITHOUT executing anything: action tools exist and accept their arguments (with templates resolved against dummy values), delays/waits are in bounds, the graph reaches an exit. Run before activate; report problems to the user.

ParametroTipoDescrizione
automationId*string
automations__restoreRestore an archived automation. It comes back PAUSED (never auto-active). Activate it separately to resume enrolling. Previously-exited contacts are not re-enrolled.

Restore an archived automation. It comes back PAUSED (never auto-active). Activate it separately to resume enrolling. Previously-exited contacts are not re-enrolled.

ParametroTipoDescrizione
automationId*string
websites__create_siteCreate a WEBSITE: the business's home on the web, multi-section, with a nav. NOT for landing pages: the page an ad sends people to is ads.landing_pages.build, under Marketing, Landing pages. HOW TO BUILD ONE. (1) Call websites.photos first; a site with no photo of the real place, work or people is…

Create a WEBSITE: the business's home on the web, multi-section, with a nav. NOT for landing pages: the page an ad sends people to is ads.landing_pages.build, under Marketing, Landing pages. HOW TO BUILD ONE. (1) Call websites.photos first; a site with no photo of the real place, work or people is…

ParametroTipoDescrizione
name*string
subdomain*string
seoTitlestring
seoDescriptionstring
primaryColorstringAccent color. Defaults to the brand color on file.
pairingstringFont pairing, chosen for the trade. workshop: Barlow Condensed + Inter, sturdy, direct, for trades, contractors, auto, landscaping, anything with a truck. edit…
radiusstringHow rounded buttons and cards are. sharp for trades and professional services, soft is the default, round for hospitality and consumer.
darkbooleanDark background. Rare: only when the brand is dark or the owner asks.
blocks*array
websites__list_sitesList this business's websites with status and URLs.

List this business's websites with status and URLs.

Per questo strumento non è stato pubblicato alcuno schema di input.

websites__get_siteGet a site with its theme and every section (block ids, kinds, content) for editing. Call it before any edit so you change the right block, and read the current content back to the person in plain words when they ask what is on the site.

Get a site with its theme and every section (block ids, kinds, content) for editing. Call it before any edit so you change the right block, and read the current content back to the person in plain words when they ask what is on the site.

ParametroTipoDescrizione
siteId*string
websites__update_siteChange a site's settings: name, SEO title and description, accent color, font pairing, corner radius, dark or light. Omitted settings keep their value, so 'make it darker' is dark: true and nothing else. Owners can also edit these and every section themselves under Site.

Change a site's settings: name, SEO title and description, accent color, font pairing, corner radius, dark or light. Omitted settings keep their value, so 'make it darker' is dark: true and nothing else. Owners can also edit these and every section themselves under Site.

ParametroTipoDescrizione
siteId*string
namestring
seoTitle
seoDescription
primaryColorstringAccent color. Defaults to the brand color on file.
pairingstringFont pairing, chosen for the trade. workshop: Barlow Condensed + Inter, sturdy, direct, for trades, contractors, auto, landscaping, anything with a truck. edit…
radiusstringHow rounded buttons and cards are. sharp for trades and professional services, soft is the default, round for hospitality and consumer.
darkbooleanDark background. Rare: only when the brand is dark or the owner asks.
websites__update_blockEdit part of a section. Pass ONLY the fields that change; everything else in the section is kept, so 'shorten the headline' touches the headline and nothing else. Arrays (items, steps, images) are replaced whole when passed, so to change one service, pass the full items list with that one changed.…

Edit part of a section. Pass ONLY the fields that change; everything else in the section is kept, so 'shorten the headline' touches the headline and nothing else. Arrays (items, steps, images) are replaced whole when passed, so to change one service, pass the full items list with that one changed.…

ParametroTipoDescrizione
blockId*string
contentobjectFields to set or replace.
unsetarrayTop-level fields to remove.
websites__add_blockAdd a section to a site, at the end or at a position (0 is the top; later sections shift down). Same shapes and photo rules as websites.create_site. 'Add pricing' means: ask nothing if the prices are on file or in the conversation, otherwise ask for the prices first, then add it.

Add a section to a site, at the end or at a position (0 is the top; later sections shift down). Same shapes and photo rules as websites.create_site. 'Add pricing' means: ask nothing if the prices are on file or in the conversation, otherwise ask for the prices first, then add it.

ParametroTipoDescrizione
siteId*string
block*object
positioninteger
websites__remove_blockprivilegiatoRemove a section from a site. Do it the moment they ask ('take off the pricing', 'remove the gallery'): photos stay in the library, the section can be added back, and nothing is public until they publish, so never ask 'are you sure'. Confirm first only when it is unclear which section they mean.

Remove a section from a site. Do it the moment they ask ('take off the pricing', 'remove the gallery'): photos stay in the library, the section can be added back, and nothing is public until they publish, so never ask 'are you sure'. Confirm first only when it is unclear which section they mean.

ParametroTipoDescrizione
blockId*string
websites__reorder_blocksReorder a site's sections ('move pricing above the FAQ'). Pass the COMPLETE list of block ids in the new top-to-bottom order (websites.get_site returns them). Partial lists are rejected so blocks can't be silently dropped.

Reorder a site's sections ('move pricing above the FAQ'). Pass the COMPLETE list of block ids in the new top-to-bottom order (websites.get_site returns them). Partial lists are rejected so blocks can't be silently dropped.

ParametroTipoDescrizione
siteId*string
blockIds*array
websites__photosWhat this business can put on a website, newest first: real photos the owner added or attached in chat (what: photo), product screenshots (product-screen), and scenes Plyto generated for ads (generated-scene, hero or about only, and only when nothing real exists). Ad graphics with headlines baked i…

What this business can put on a website, newest first: real photos the owner added or attached in chat (what: photo), product screenshots (product-screen), and scenes Plyto generated for ads (generated-scene, hero or about only, and only when nothing real exists). Ad graphics with headlines baked i…

Per questo strumento non è stato pubblicato alcuno schema di input.

websites__analyze_websiteFetch and analyze an existing website (theirs or a competitor's). Returns title, description, headings, navigation links, and the page's visible text so YOU can rebuild it as a much better Plyto site. Keep the real business facts (services, hours, locations, offers), upgrade the copy and structure.…

Fetch and analyze an existing website (theirs or a competitor's). Returns title, description, headings, navigation links, and the page's visible text so YOU can rebuild it as a much better Plyto site. Keep the real business facts (services, hours, locations, offers), upgrade the copy and structure.…

ParametroTipoDescrizione
url*string
websites__check_custom_domainVerify a site's custom domain DNS. If the records point at us, the domain goes active and the site serves on it (TLS is automatic).

Verify a site's custom domain DNS. If the records point at us, the domain goes active and the site serves on it (TLS is automatic).

ParametroTipoDescrizione
siteId*string
seo__run_auditRun an SEO + GEO (generative engine optimization) audit on a URL. Fetches the page, robots.txt, sitemap.xml and llms.txt, runs ~15 deterministic checks (title, meta description, headings, alt text, structured data, FAQ content, llms.txt, mobile viewport…), stores the result, and returns the scored…

Run an SEO + GEO (generative engine optimization) audit on a URL. Fetches the page, robots.txt, sitemap.xml and llms.txt, runs ~15 deterministic checks (title, meta description, headings, alt text, structured data, FAQ content, llms.txt, mobile viewport…), stores the result, and returns the scored…

ParametroTipoDescrizione
urlstringDefaults to the business website.
seo__list_auditsList recent SEO/GEO audits with scores.

List recent SEO/GEO audits with scores.

ParametroTipoDescrizione
limitinteger
seo__blog__create_draftSave a blog post draft. YOU write the post (600-1200 words of genuinely useful, non-generic content in the brand voice, markdown with ## headings) and pass it here. Include a meta description (<=155 chars) and 3-6 keywords.

Save a blog post draft. YOU write the post (600-1200 words of genuinely useful, non-generic content in the brand voice, markdown with ## headings) and pass it here. Include a meta description (<=155 chars) and 3-6 keywords.

ParametroTipoDescrizione
title*string
contentMd*string
excerptstring
seoDescriptionstring
keywordsarray
seo__blog__listList blog posts (drafts and published).

List blog posts (drafts and published).

ParametroTipoDescrizione
limitinteger
seo__blog__update_settingsConfigure the automatic blog writer: posts per week (0 disables, max 3), topic list to rotate through, and whether posts auto-publish or wait as drafts. HARD CEILING: 3 posts per week and 10 per day, enforced by the system, no exceptions. When someone asks for more ("120 a week"), do NOT attempt it…

Configure the automatic blog writer: posts per week (0 disables, max 3), topic list to rotate through, and whether posts auto-publish or wait as drafts. HARD CEILING: 3 posts per week and 10 per day, enforced by the system, no exceptions. When someone asks for more ("120 a week"), do NOT attempt it…

ParametroTipoDescrizione
postsPerWeek*integer0 to 3 only. 0 pauses. Requests above 3 must be clamped to 3 with an explanation, never passed through.
topicsarray
autopublishboolean
booking__pages__listList the business's booking pages with their public URLs, durations, and weekly availability. A booking page is where a lead picks a call time; a booked call automatically qualifies the lead (sales_qualified) and, when the lead came from an ad, reports that qualification back to the ad platform.

List the business's booking pages with their public URLs, durations, and weekly availability. A booking page is where a lead picks a call time; a booked call automatically qualifies the lead (sales_qualified) and, when the lead came from an ad, reports that qualification back to the ad platform.

Per questo strumento non è stato pubblicato alcuno schema di input.

booking__pages__createCreate a booking page and return its public URL, ready to share, link from the website, or put in a form's thank-you message. Availability is weekly windows in 24h HH:MM, keyed by weekday number (0=Sunday..6=Saturday). Times are in the page timezone (default America/Los_Angeles). Example availabili…

Create a booking page and return its public URL, ready to share, link from the website, or put in a form's thank-you message. Availability is weekly windows in 24h HH:MM, keyed by weekday number (0=Sunday..6=Saturday). Times are in the page timezone (default America/Los_Angeles). Example availabili…

ParametroTipoDescrizione
name*stringShown to the booker, e.g. "Intro call"
descriptionstring
durationMinutesinteger
bufferMinutesinteger
minNoticeHoursinteger
maxDaysAheadinteger
timezonestring
availability*objectWeekly windows; at least one weekday required.
booking__bookings__listUpcoming booked calls: who, when, their note, and the show-up task. Use for questions like "what calls do I have" or "who booked this week".

Upcoming booked calls: who, when, their note, and the show-up task. Use for questions like "what calls do I have" or "who booked this week".

ParametroTipoDescrizione
includePastboolean
pitches__createGenerate a branded pitch deck: a full slide presentation built from the brand kit (colors, logo, voice, approved claims) and, when a deal/company/contact id is given, grounded in that CRM record — who they are, what the deal is worth. Returns a hosted share link the user sends to their prospect. Ta…

Generate a branded pitch deck: a full slide presentation built from the brand kit (colors, logo, voice, approved claims) and, when a deal/company/contact id is given, grounded in that CRM record — who they are, what the deal is worth. Returns a hosted share link the user sends to their prospect. Ta…

ParametroTipoDescrizione
brief*stringWhat the pitch should accomplish and for whom, in plain language: the offer, the angle, anything the user said about the audience or meeting. The deck grounds…
titlestringDeck title. Defaults to the deal/company pairing.
dealIdstringGround the pitch in this deal (pulls its company, contact, and value).
companyIdstringGround the pitch in this CRM company.
contactIdstringGround the pitch in this contact.
pitches__listList this business's pitch decks with status, share links, and view counts. The honest source for 'has anyone opened the deck'. Status 'generating' means the deck is still building; 'failed' means the build errored and it should be recreated.

List this business's pitch decks with status, share links, and view counts. The honest source for 'has anyone opened the deck'. Status 'generating' means the deck is still building; 'failed' means the build errored and it should be recreated.

Per questo strumento non è stato pubblicato alcuno schema di input.

pitches__edit_slideprivilegiatoEdit one slide of an existing pitch deck with an AI rewrite that keeps the deck's design. The share link updates instantly. Use when the user wants to tweak a deck: change wording, adjust a slide's angle, fix an error. Charges a small AI credit amount.

Edit one slide of an existing pitch deck with an AI rewrite that keeps the deck's design. The share link updates instantly. Use when the user wants to tweak a deck: change wording, adjust a slide's angle, fix an error. Charges a small AI credit amount.

ParametroTipoDescrizione
deckId*stringThe pitch deck to edit.
slideNumber*integerWhich slide to change, 1-based. Get the order from pitches.list or the deck itself.
instruction*stringWhat to change on that slide, in plain language (rewrite the headline, soften the pricing framing, swap the layout emphasis). One slide per call. Never instruc…
pitches__deleteprivilegiatoDelete a pitch deck permanently. Its share link stops working immediately. Two-step: first call returns the deck title to confirm with the user; call again with confirm:true to delete (the same two-step as deleting a deck in the UI).

Delete a pitch deck permanently. Its share link stops working immediately. Two-step: first call returns the deck title to confirm with the user; call again with confirm:true to delete (the same two-step as deleting a deck in the UI).

ParametroTipoDescrizione
deckId*stringThe pitch deck to delete permanently.
confirmbooleanMust be true to actually delete. Call WITHOUT it first: the tool returns the deck's title so you can confirm with the user. Set true only after the user approv…

172 strumenti su 172 hanno pubblicato una descrizione.

I nomi e le descrizioni degli strumenti sono scritti dal publisher e mostrati alla lettera come testo inerte. Sono le stringhe che un client MCP passa a un modello, quindi Forge vi cerca schemi di prompt injection — ogni rilievo compare insieme all’analisi di sicurezza qui sopra. «Privilegiato» è una corrispondenza di parola chiave sul nome dello strumento, non una verifica di ciò che fa: un nome innocuo può comunque fare qualsiasi cosa.

Descrizione

AI that makes and runs your Google and Facebook ads from your own account, with a CRM behind it.

Parole chiave
mcp
Alternative
Confronto delle superfici di strumenti…

Nessuna copertura delle dipendenze

Questa voce non pubblica alcun pacchetto npm, quindi Forge non ha un albero delle dipendenze per essa. È una lacuna di copertura, non l'affermazione che non abbia dipendenze.