Skip to content
Plyto logo

Plyto MCP server

Which servers in the official MCP registry are Plyto's own, whether they answer, and what they offer. A program checked each of these, nobody copied them from a product page.

read 2026-10-13

← Back to Plyto

Whose server it is
  • Registry nameai.plyto/crmverified in the MCP registry

The registry name sits under plyto.ai. The registry only lets a publisher use that namespace after proving control of the domain through DNS or HTTP.

When we asked itchecked 2026-10-13
  • Stateanswerschecked 2026-10-13
  • Tools195
  • Server calls itselfplyto
  • Server version0.2.0
  • Protocol version2025-06-18

On 2026-10-13 the server answered initialize and tools/list without a sign-in. First answer in 127 ms.

Tools it offers195 tools · read 2026-10-13
  • 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…

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

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

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

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

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

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

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

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

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

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

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

The first 60 of 195, as the server listed them.

How to connect

Add the server to your MCP client config. Claude Desktop, Cursor and most other clients read this shape:

{
  "mcpServers": {
    "crm": {
      "type": "http",
      "url": "https://plyto.ai/api/mcp"
    }
  }
}

Each line is something a program found when it went looking: the registry entry, the server's own answer, a spec that parses. A missing line means we did not find it, not that it does not exist.