Skip to content

Propstack MCP by usefulapi

by usefulapi.io · remote · no sign-in to list tools · v1.3.3 · published by io.usefulapi

Read Propstack contacts, properties, projects, deals, tasks, events; create and update CRM records.

Deletes · 6

18 tools: 6 can delete or cancel things and 12 only read.

Scanned Oct 21, 2026

No check matched anything in the tool definitions. No finding is not a safety guarantee. How the checks work.

claude mcp add --transport http propstack https://propstack.usefulapi.io/mcp

Tools

Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.

18 tools

Deletes or cancels 6Claude Code: deny
  • propstack_create_contactWRITE: create a CRM contact.No findings

    Why it is in this group

    • The name "propstack_create_contact" says "create": a word for a change.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    WRITE: create a CRM contact. Propstack matches on the email address: if a contact with the same email already exists it is UPDATED with the given fields instead of creating a duplicate. Consent flags (newsletter, contact permission, GDPR status) cannot be set here. Returns the contact id. POST /contacts.

    Annotations the server declares

    • title: Create contact
    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: false
    • openWorldHint: true
  • propstack_create_dealWRITE: create a deal linking a contact to a property in a pipeline stage (see propstack_list_deal_pipelines for stage ids).No findings

    Why it is in this group

    • The name "propstack_create_deal" says "create": a word for a change.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    WRITE: create a deal linking a contact to a property in a pipeline stage (see propstack_list_deal_pipelines for stage ids). Returns the new deal. POST /client_properties.

    Annotations the server declares

    • title: Create deal
    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: false
    • openWorldHint: true
  • propstack_create_taskWRITE: create a note, a to-do (with due date) or an appointment (with start and end) in Propstack, linked to contacts, properties or projects.No findings

    Why it is in this group

    • The name "propstack_create_task" says "create": a word for a change.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    WRITE: create a note, a to-do (with due date) or an appointment (with start and end) in Propstack, linked to contacts, properties or projects. note_type_id is the activity type id (see propstack_get_reference_data activity_types). No e-mail or SMS is sent to the contact; the only mail is the reminder to the assignee when remind_at is set. Returns the new task id. POST /tasks.

    Annotations the server declares

    • title: Create note, to-do or appointment
    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: false
    • openWorldHint: true
  • propstack_update_contactWRITE: change the given fields of an existing contact; fields not given stay as they are.No findings

    Why it is in this group

    • The name "propstack_update_contact" says "update": a word for a change.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    WRITE: change the given fields of an existing contact; fields not given stay as they are. Returns the updated contact (business fields). PUT /contacts/{id}.

    Annotations the server declares

    • title: Update contact
    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: true
    • openWorldHint: true
  • propstack_update_dealWRITE: change the given fields of a deal, typically move it to another pipeline stage or update its note or price.No findings

    Why it is in this group

    • The name "propstack_update_deal" says "update": a word for a change.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    WRITE: change the given fields of a deal, typically move it to another pipeline stage or update its note or price. Fields not given stay as they are. PUT /client_properties/{id}.

    Annotations the server declares

    • title: Update deal
    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: true
    • openWorldHint: true
  • propstack_update_taskWRITE: change the given fields of an existing note, to-do or appointment (for example mark a to-do done, move its due date, or reschedule).No findings

    Why it is in this group

    • The name "propstack_update_task" says "update": a word for a change.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    WRITE: change the given fields of an existing note, to-do or appointment (for example mark a to-do done, move its due date, or reschedule). Fields not given stay as they are. PUT /tasks/{id}.

    Annotations the server declares

    • title: Update task
    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: true
    • openWorldHint: true
Only reads 12Claude Code: allow
  • propstack_get_contactOne contact by id with address, salutation, language, notes, GDPR status, owner, status, source, tags, sub-contacts and owned properties.No findings

    Why it is in this group

    • The name "propstack_get_contact" says "get": a word for reading.
    Description, as the server wrote it
    One contact by id with address, salutation, language, notes, GDPR status, owner, status, source, tags, sub-contacts and owned properties. Birth data, identity and tax numbers, income and the portal token are never returned. GET /contacts/{id}.

    Annotations the server declares

    • title: Get contact
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
  • propstack_get_propertyOne property (Objekt) by id: address, type, rooms, areas, prices, status and the description, location and furnishing texts (clipped).No findings

    Why it is in this group

    • The name "propstack_get_property" says "get": a word for reading.
    Description, as the server wrote it
    One property (Objekt) by id: address, type, rooms, areas, prices, status and the description, location and furnishing texts (clipped). No images or owner. GET /units/{id}.

    Annotations the server declares

    • title: Get property
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
  • propstack_get_reference_dataLook up the ids used by other tools: property_statuses, activity_types (note/task/appointment types, needed as note_type_id), contact_sources, reservation_reasons (rejection reason…No findings

    Why it is in this group

    • The name "propstack_get_reference_data" says "get": a word for reading.
    Description, as the server wrote it
    Look up the ids used by other tools: property_statuses, activity_types (note/task/appointment types, needed as note_type_id), contact_sources, reservation_reasons (rejection reasons), contact_tags or property_tags. GET /property_statuses, /activity_types, /contact_sources, /reservation_reasons or /groups.

    Annotations the server declares

    • title: Get reference data
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
  • propstack_get_taskOne task by id (a note, to-do or appointment): title, body text (clipped), type, linked contacts, properties and projects (id and name only), due date or start/end.No findings

    Why it is in this group

    • The name "propstack_get_task" says "get": a word for reading.
    Description, as the server wrote it
    One task by id (a note, to-do or appointment): title, body text (clipped), type, linked contacts, properties and projects (id and name only), due date or start/end. GET /tasks/{id}.

    Annotations the server declares

    • title: Get task
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
  • propstack_list_activitiesList the activity timeline (notes, tasks, appointments, e-mails, SMS, letters, rejections, inquiries) with title, linked contacts and properties, state and dates.No findings

    Why it is in this group

    • The name "propstack_list_activities" says "list": a word for reading.
    Description, as the server wrote it
    List the activity timeline (notes, tasks, appointments, e-mails, SMS, letters, rejections, inquiries) with title, linked contacts and properties, state and dates. Message and note bodies are not returned. Filter by type, contact, property, project, owner, category or date. GET /activities.

    Annotations the server declares

    • title: List activities
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
  • propstack_list_contactsList or search CRM contacts (Kontakte).No findings

    Why it is in this group

    • The name "propstack_list_contacts" says "list": a word for reading.
    Description, as the server wrote it
    List or search CRM contacts (Kontakte). Returns business fields only (name, company, email, phone numbers, status, source, tags, owner, dates), never birth data, identity or tax numbers, income or portal tokens. Search by free text (name, email, address, phone), exact email, exact phone number, or filter by status, source, tag, owner and dates. Archived contacts are excluded unless archived is set. GET /contacts.

    Annotations the server declares

    • title: List or search contacts
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
  • propstack_list_deal_pipelinesList the deal pipelines with their stages (id, name, position, win chance).No findings

    Why it is in this group

    • The name "propstack_list_deal_pipelines" says "list": a word for reading.
    Description, as the server wrote it
    List the deal pipelines with their stages (id, name, position, win chance). Use the stage ids to filter deals or to move a deal. GET /deal_pipelines.

    Annotations the server declares

    • title: List deal pipelines
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
  • propstack_list_dealsList deals (a deal links a contact to a property and sits in a pipeline stage).No findings

    Why it is in this group

    • The name "propstack_list_deals" says "list": a word for reading.
    Description, as the server wrote it
    List deals (a deal links a contact to a property and sits in a pipeline stage). Filter by pipeline, stage, category (qualified/unqualified/lost), contact, property, project or owner. Use propstack_list_deal_pipelines for stage ids. GET /client_properties.

    Annotations the server declares

    • title: List deals
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
  • propstack_list_eventsList calendar appointments (Termine, e.g.No findings

    Why it is in this group

    • The name "propstack_list_events" says "list": a word for reading.
    Description, as the server wrote it
    List calendar appointments (Termine, e.g. viewings) in a time window, with title, place, start/end, state and the linked contact, property and project (id and name only). Paged: follow next_page. GET /events.

    Annotations the server declares

    • title: List calendar events
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
  • propstack_list_projectsList projects (Projekte: a project groups several property units): title, project id, status, address, owner.No findings

    Why it is in this group

    • The name "propstack_list_projects" says "list": a word for reading.
    Description, as the server wrote it
    List projects (Projekte: a project groups several property units): title, project id, status, address, owner. Not paged; at most 200 are returned. GET /projects.

    Annotations the server declares

    • title: List projects
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
  • propstack_list_propertiesList or search properties (Objekte / units): address, type, marketing type (buy/rent), rooms, areas, prices, status.No findings

    Why it is in this group

    • The name "propstack_list_properties" says "list": a word for reading.
    Description, as the server wrote it
    List or search properties (Objekte / units): address, type, marketing type (buy/rent), rooms, areas, prices, status. Images and owners are not returned. Filter by free text, status, tag, project, marketing type, object type, price and area ranges. GET /units.

    Annotations the server declares

    • title: List or search properties
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
  • propstack_list_usersList the users (staff, Nutzer) of the Propstack account: id, name, work email, position, phone, team.No findings

    Why it is in this group

    • The name "propstack_list_users" says "list": a word for reading.
    Description, as the server wrote it
    List the users (staff, Nutzer) of the Propstack account: id, name, work email, position, phone, team. Use the ids as owner/broker filters. GET /brokers.

    Annotations the server declares

    • title: List users
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true

This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.

Install

Pinned to version 1.3.3. Values in angle brackets are yours to fill in.

claude mcp add --transport http propstack https://propstack.usefulapi.io/mcp

Run in a terminal.

Claude Code permissions

Allow the reads, ask before a change, deny the deletes. Paste into .claude/settings.json.

.claude/settings.json
{
  "permissions": {
    "allow": [
      "mcp__propstack__propstack_list_contacts",
      "mcp__propstack__propstack_get_contact",
      "mcp__propstack__propstack_list_properties",
      "mcp__propstack__propstack_get_property",
      "mcp__propstack__propstack_list_projects",
      "mcp__propstack__propstack_list_deals",
      "mcp__propstack__propstack_list_deal_pipelines",
      "mcp__propstack__propstack_list_activities",
      "mcp__propstack__propstack_get_task",
      "mcp__propstack__propstack_list_events",
      "mcp__propstack__propstack_list_users",
      "mcp__propstack__propstack_get_reference_data"
    ],
    "ask": [],
    "deny": [
      "mcp__propstack__propstack_create_contact",
      "mcp__propstack__propstack_update_contact",
      "mcp__propstack__propstack_create_task",
      "mcp__propstack__propstack_update_task",
      "mcp__propstack__propstack_create_deal",
      "mcp__propstack__propstack_update_deal"
    ]
  }
}

Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. It assumes the server is installed as propstack. Review it before you use it.