NestDaddy

Plyto

ai.plyto/crm · v1.1.0

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

Connect Remote server

Terminal
claude mcp add --transport http crm https://plyto.ai/api/mcp --header "Authorization: Bearer <YOUR_API_KEY>"
~/.cursor/mcp.json
{
  "mcpServers": {
    "crm": {
      "url": "https://plyto.ai/api/mcp",
      "headers": {
        "Authorization": "Bearer <YOUR_API_KEY>"
      }
    }
  }
}
.vscode/mcp.json
{
  "servers": {
    "crm": {
      "type": "http",
      "url": "https://plyto.ai/api/mcp",
      "headers": {
        "Authorization": "Bearer <YOUR_API_KEY>"
      }
    }
  }
}
Claude Desktop
Settings > Connectors > Add custom connector
URL: https://plyto.ai/api/mcp

Replace the values in angle brackets with your own. Keys stay on your machine; we never see them.

Tools 80 found in our last check

  • memory__save

    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 s…

  • memory__list

    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.

  • memory__forget

    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.

  • business__update

    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 check…

  • brand__scan__wait

    Wait for the website scan business.update started (up to 45 seconds) and get what it read: industry, audience, value proposition, claims. Call it right after saving a website on a first draft, then build from the result. Returns what is on file even when the scan is still runnin…

  • account__profile

    Return the Plyto profile this connection is signed in as: an opaque id that stays the same across token refresh and reconnection, the person's name and email for display, and the business the connection manages as a label. Takes no arguments.

  • documents__list

    List the documents the owner has given you, newest first: files attached in the chat (PDF, Word, text), long messages kept as documents, and links you read and kept. Each has an id to read it with documents.read. Use it when the owner refers to something they sent before ("the b…

  • documents__read

    Read a document the owner gave you (an attached PDF, Word or text file, a long message kept as a document, or a link you kept), 30,000 characters at a time; pass offset to go on. Read before you answer about it: never describe a document from memory.

  • brand__colors__set

    Save the brand colors the owner names in chat, as hex codes: the primary (what graphics build on) and, when they give one, an accent. They replace the colors on file (a website scan's guess, a logo's extraction), so pass both when the owner names both. Returns what the next grap…

  • brand__logo__set

    Make an image the business's logo: the one on file for ads, pages, emails and pitch decks, replacing whatever logo is there (a website scan's find or an older upload). Pass the library asset id of a logo the owner uploaded, or the logo's web address. Nothing already drawn is red…

  • business__claims__remove

    Take claims off the business profile once the owner says they no longer hold: the business moved and no longer serves the old area, an offer ended, a credential lapsed. Pass each claim as it is on file (a draft's placeClaimsNote quotes it). Only on the owner's word in this conve…

  • crm__contacts__create

    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.

  • crm__contacts__update

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

  • crm__contacts__get

    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. U…

  • crm__contacts__list

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

  • crm__contacts__search

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

  • crm__contacts__get_properties

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

  • crm__companies__create

    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).

  • crm__companies__update

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

  • crm__companies__get

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

  • crm__companies__list

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

  • crm__companies__search

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

  • crm__companies__get_properties

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

  • crm__tags__create

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

  • crm__tags__list

    List all tags defined in this business.

  • crm__tags__add_to_contact

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

  • crm__tags__remove_from_contact

    Remove a tag from a contact. Idempotent.

  • crm__tags__list_for_contact

    List all tags applied to a contact.

  • crm__tags__add_to_company

    Apply a tag to a company. Idempotent.

  • crm__tags__remove_from_company

    Remove a tag from a company. Idempotent.

  • crm__tags__list_for_company

    List all tags applied to a company.

  • crm__properties__define

    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.

  • crm__properties__list

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

  • crm__properties__archive

    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.

  • crm__properties__set_contact_value

    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.

  • crm__properties__set_company_value

    Set the value of a custom property on a company.

  • crm__properties__set_deal_value

    Set the value of a custom property on a deal.

  • crm__properties__clear_contact_value

    Remove a custom property value from a contact.

  • crm__properties__clear_company_value

    Remove a custom property value from a company.

  • crm__properties__clear_deal_value

    Remove a custom property value from a deal.

  • crm__properties__get_deal_values

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

  • crm__pipelines__list

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

  • crm__pipelines__list_stages

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

  • crm__pipelines__get_default

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

  • crm__deals__create

    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).

  • crm__deals__update

    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.

  • crm__deals__move_stage

    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.

  • crm__deals__close_won

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

  • crm__deals__close_lost

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

  • crm__deals__get

    Fetch a single deal by id.

  • crm__deals__list

    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.

  • crm__deals__search

    Free-text search across deal names.

  • crm__activities__log

    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.

  • crm__activities__list

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

  • crm__activities__get

    Fetch a single activity by id.

  • crm__tasks__create

    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.

  • crm__tasks__complete

    Mark a task as completed. Sets completedAt to now.

  • crm__tasks__cancel

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

  • crm__tasks__list

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

  • crm__tasks__get

    Fetch a single task by id.

  • reports__preview

    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.

  • crm__sources__performance

    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…

  • reports__create

    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.

  • reports__list

    List the saved custom reports on the Reports dashboard.

  • crm__notes__add

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

  • crm__notes__list

    List notes, optionally filtered by attached entity.

  • crm__lists__create

    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.

  • crm__lists__get

    Fetch a single list by id.

  • crm__lists__list

    List all contact lists in this business.

  • crm__lists__members

    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).

  • crm__lists__add_contact

    Add a contact to a MANUAL list. Idempotent.

  • crm__lists__remove_contact

    Remove a contact from a manual list.

  • crm__lists__archive

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

  • forms__create

    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 c…

  • forms__update

    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…

  • forms__get

    Fetch a form by id.

  • forms__list

    List all forms in this business.

  • forms__list_submissions

    List submissions for a form, newest first.

  • forms__get_embed_code

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

  • crm__contacts__query

    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:<ke…

Headers

NameDescription
Authorization
Required, secret
Bearer <your Plyto API key>. Create one in Plyto under Settings, then API keys.

Details

Endpointhttps://plyto.ai/api/mcp (Streamable HTTP)
First published15 Sep 2026
Last updated15 Sep 2026
Registry nameai.plyto/crm

More marketing and seo servers See all

Listing data from the official MCP registry. Status and tools from NestDaddy's daily check. Browse all MCP servers.