Skip to content

Placetel MCP by usefulapi

io.usefulapi/placetelusefulapi.iostreamable-httpv1.0.0Scanned

Read Placetel calls, recordings, numbers and routing; edit contacts, start calls, send SMS.

28 tools: 2 can delete or cancel things, 2 do something that can't be undone, 4 change things and 20 only read.

Tools: 2 delete, 2 irreversible, 4 write, 20 read.
  • Reads private data · 9
  • Reads text others write · 28
  • Can send data out · 3
  • 3 findings

Anlyon alternative

8 of these tools change something. Run those as governed actions.

Declare what an action changes, and Anlyon puts it under a shared limit, binds every approval to the exact request, and grades the outcome. It works on any HTTPS API you can describe as an action.

Anlyon does not run, proxy or govern this MCP server. A tool your own code calls directly is not routed through Anlyon and is not governed by it.

Import an OpenAPI spec →

Tools

Grouped by what each tool does, most consequential first. Open one for its reasons and full description; descriptions are the publisher's own words.

28 tools

Deletes or cancels 2Claude Code: deny
  • placetel_activate_number_profileWRITE: switch the active routing profile of a phone number (for example to Holiday or Night).Reads text others writeNo findings

    Why it is in this group

    • The description's first verb is "write": a word for a change.
    • The server marks it destructive (destructiveHint: true).

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    WRITE: switch the active routing profile of a phone number (for example to Holiday or Night). This changes LIVE call handling for that number immediately: callers are routed differently. Find ids with placetel_list_number_profiles. PUT /numbers/{number_id}/profiles.

    Annotations the server declares

    • title: Activate number profile
    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: true
    • openWorldHint: true
  • placetel_update_contactWRITE: update the given fields of a contact (omitted fields stay; an empty string clears a text field).Reads text others writeNo findings

    Why it is in this group

    • The name "placetel_update_contact" says "update": a word for a change.
    • The server marks it destructive (destructiveHint: true).

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    WRITE: update the given fields of a contact (omitted fields stay; an empty string clears a text field). tags replaces the whole tag list; blocked=true blocks the caller. PUT /contacts/{id}.

    Annotations the server declares

    • title: Update contact
    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: true
    • openWorldHint: true
Can't be undone 2Claude Code: ask
  • placetel_list_recordingsCall recordings with direction, from, to, duration, time and the file URL.Reads private dataReads text others writeCan send data out1 finding

    Why it is in this group

    • The name "placetel_list_recordings" says "list": a word for reading.
    • The description's first verb is "call": a word for a change.
    • The input addresses people (input.to): what it sends cannot be taken back.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    What it can reach

    • private-dataThe description's first sentence says "file": it reads files.
    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    • untrusted-inputThe description's first sentence says "call" and "url": it reads web pages, which anyone can write.
    • outboundThe input takes a destination (input.to): what the tool writes goes there.

    Findings

    • Warn

      The server marks "placetel_list_recordings" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".

      Matched text

      annotations: {"readOnlyHint":true,"destructiveHint":false,"openWorldHint":true}; The name "placetel_list_recordings" says "list": a word for reading.

      What this check looks for
    Description, as the server wrote it
    Call recordings with direction, from, to, duration, time and the file URL. Filter by direction, number or day. GET /recordings.

    Annotations the server declares

    • title: List call recordings
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
  • placetel_send_smsWRITE: send a real SMS to a phone number from the Placetel account.Reads text others writeCan send data outNo findings

    Why it is in this group

    • The name "placetel_send_sms" says "send": a word for sending, and what is sent cannot be taken back.
    • The input addresses people (input.recipient): what it sends cannot be taken back.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    • outboundThe name "placetel_send_sms" says "send": it sends or publishes something to other people.
    • outboundThe input takes a destination (input.recipient): what the tool writes goes there.
    Description, as the server wrote it
    WRITE: send a real SMS to a phone number from the Placetel account. The recipient receives it immediately and SMS charges apply; it cannot be recalled. Do not use without the user's explicit request and exact text. POST /sms.

    Annotations the server declares

    • title: Send SMS
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: true
Changes things 4Claude Code: ask
  • placetel_create_contactWRITE: create a contact in the shared Placetel phone book.Reads text others writeCan send data outNo findings

    Why it is in this group

    • The name "placetel_create_contact" says "create": a word for a change.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    • outboundThe input takes a destination (input.phone): what the tool writes goes there.
    Description, as the server wrote it
    WRITE: create a contact in the shared Placetel phone book. Give at least a name, company or number. Nothing is sent to the contact. POST /contacts.

    Annotations the server declares

    • title: Create contact
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: true
  • placetel_initiate_callWRITE: start a real phone call.Reads text others writeNo findings

    Why it is in this group

    • The name "placetel_initiate_call" says "call": a word for a change.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    WRITE: start a real phone call. Placetel rings the given SIP user's phone first and, once answered, dials the target number. This places an actual call and call charges apply. Do not use without the user's explicit request. POST /calls.

    Annotations the server declares

    • title: Initiate call
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: true
  • placetel_list_call_center_callsCall-center calls of one day with queue, agent, from/to, answer status, start/end time and time spent in queue.Reads text others write1 finding

    Why it is in this group

    • The name "placetel_list_call_center_calls" says "list": a word for reading.
    • The description's first verb is "call": a word for a change.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.

    Findings

    • Warn

      The server marks "placetel_list_call_center_calls" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

      Matched text

      annotations: {"readOnlyHint":true,"destructiveHint":false,"openWorldHint":true}; The name "placetel_list_call_center_calls" says "list": a word for reading.

      What this check looks for
    Description, as the server wrote it
    Call-center calls of one day with queue, agent, from/to, answer status, start/end time and time spent in queue. date is required; narrow to queues with queue_ids. GET /call_center_calls.

    Annotations the server declares

    • title: List call center calls
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
  • placetel_list_call_detail_recordsCall detail records (billing view) for one day: from, to, answering SIP user, length in seconds, cost amount and description.Reads text others write1 finding

    Why it is in this group

    • The name "placetel_list_call_detail_records" says "list": a word for reading.
    • The description's first verb is "call": a word for a change.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.

    Findings

    • Warn

      The server marks "placetel_list_call_detail_records" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

      Matched text

      annotations: {"readOnlyHint":true,"destructiveHint":false,"openWorldHint":true}; The name "placetel_list_call_detail_records" says "list": a word for reading.

      What this check looks for
    Description, as the server wrote it
    Call detail records (billing view) for one day: from, to, answering SIP user, length in seconds, cost amount and description. date is required. GET /call_detail_records.

    Annotations the server declares

    • title: List call detail records
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
Only reads 20Show 20 read-only tools
  • placetel_get_accountThe Placetel account this API key belongs to: user id, name, email, company, platform (e.g.Reads private dataReads text others writeNo findings

    Why it is in this group

    • The name "placetel_get_account" says "get": a word for reading.

    What it can reach

    • private-dataThe description's first sentence says "email": it reads mail.
    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    • untrusted-inputThe description's first sentence says "email": it reads inbound email, which other people can write.
    Description, as the server wrote it
    The Placetel account this API key belongs to: user id, name, email, company, platform (e.g. PROFI), primary SIP user id and the numbers the key may use. GET /me.

    Annotations the server declares

    • title: Get account
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
  • placetel_get_callOne incoming call by id: caller, called number, type, duration, contact, voicemail file URL.Reads private dataReads text others writeNo findings

    Why it is in this group

    • The name "placetel_get_call" says "get": a word for reading.

    What it can reach

    • private-dataThe description's first sentence says "contact": it reads contacts.
    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    • untrusted-inputThe description's first sentence says "url": it reads web pages, which anyone can write.
    Description, as the server wrote it
    One incoming call by id: caller, called number, type, duration, contact, voicemail file URL. GET /calls/{id}.

    Annotations the server declares

    • title: Get call
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
  • placetel_get_contactOne contact by id with all its fields.Reads private dataReads text others writeNo findings

    Why it is in this group

    • The name "placetel_get_contact" says "get": a word for reading.

    What it can reach

    • private-dataThe name "placetel_get_contact" says "get" and "contact": it reads contacts.
    • private-dataThe description's first sentence says "contact": it reads contacts.
    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    One contact by id with all its fields. GET /contacts/{id}.

    Annotations the server declares

    • title: Get contact
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
  • placetel_get_faxOne fax by id: numbers, status, status info, pages, retries, report and file URL.Reads private dataReads text others writeNo findings

    Why it is in this group

    • The name "placetel_get_fax" says "get": a word for reading.

    What it can reach

    • private-dataThe description's first sentence says "file": it reads files.
    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    • untrusted-inputThe description's first sentence says "url": it reads web pages, which anyone can write.
    Description, as the server wrote it
    One fax by id: numbers, status, status info, pages, retries, report and file URL. GET /faxes/{id}.

    Annotations the server declares

    • title: Get fax
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
  • placetel_get_numberOne phone number by id: number, E.164, name, site, carrier, activation state and routing id.Reads text others writeNo findings

    Why it is in this group

    • The name "placetel_get_number" says "get": a word for reading.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    One phone number by id: number, E.164, name, site, carrier, activation state and routing id. GET /numbers/{id}.

    Annotations the server declares

    • title: Get phone number
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
  • placetel_get_routingOne routing object by its id or by the phone number it answers.Reads text others writeNo findings

    Why it is in this group

    • The name "placetel_get_routing" says "get": a word for reading.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    One routing object by its id or by the phone number it answers. GET /routings/{number_or_id}.

    Annotations the server declares

    • title: Get routing
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
  • placetel_get_sip_userOne SIP user (extension) by id: sipuid, extension, caller id, type, linked web user, online state and call settings.Reads text others writeNo findings

    Why it is in this group

    • The name "placetel_get_sip_user" says "get": a word for reading.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    • untrusted-inputThe description's first sentence says "web": it reads web pages, which anyone can write.
    Description, as the server wrote it
    One SIP user (extension) by id: sipuid, extension, caller id, type, linked web user, online state and call settings. The SIP password and PINs are never returned. GET /sip_users/{id}.

    Annotations the server declares

    • title: Get SIP user
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
  • placetel_list_call_center_agentsList call-center agents with name, status, extension, priority and last call time.Reads text others writeNo findings

    Why it is in this group

    • The name "placetel_list_call_center_agents" says "list": a word for reading.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    List call-center agents with name, status, extension, priority and last call time. GET /call_center_agents.

    Annotations the server declares

    • title: List call center agents
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
  • placetel_list_call_center_queuesList call-center queues with name, ring time, loops and prompts.Reads text others writeNo findings

    Why it is in this group

    • The name "placetel_list_call_center_queues" says "list": a word for reading.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    List call-center queues with name, ring time, loops and prompts. Use the ids to filter call-center calls. GET /call_center_queues.

    Annotations the server declares

    • title: List call center queues
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
  • placetel_list_callsIncoming calls (accepted, missed, blocked, voicemail) on one day, today by default: caller number, called number, duration, matching contact, voicemail file URL and unread flag.Reads private dataReads text others writeNo findings

    Why it is in this group

    • The name "placetel_list_calls" says "list": a word for reading.

    What it can reach

    • private-dataThe description's first sentence says "contact": it reads contacts.
    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    • untrusted-inputThe description's first sentence says "url": it reads web pages, which anyone can write.
    Description, as the server wrote it
    Incoming calls (accepted, missed, blocked, voicemail) on one day, today by default: caller number, called number, duration, matching contact, voicemail file URL and unread flag. For a different day pass date. GET /calls.

    Annotations the server declares

    • title: List incoming calls
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
  • placetel_list_contactsList the shared phone-book contacts with names, company, phone/mobile/fax numbers, emails, tags and blocked flag.Reads private dataReads text others writeNo findings

    Why it is in this group

    • The name "placetel_list_contacts" says "list": a word for reading.

    What it can reach

    • private-dataThe name "placetel_list_contacts" says "list" and "contact": it reads contacts.
    • private-dataThe description's first sentence says "list" and "contact": it reads contacts.
    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    • untrusted-inputThe description's first sentence says "list" and "email": it reads inbound email, which other people can write.
    Description, as the server wrote it
    List the shared phone-book contacts with names, company, phone/mobile/fax numbers, emails, tags and blocked flag. Filter by name, company, email, number or update time. search_number finds a contact by any of its numbers. GET /contacts.

    Annotations the server declares

    • title: List contacts
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
  • placetel_list_faxesIn- and outbound faxes with from/to number, status, pages, duration, type and the file URL.Reads private dataReads text others writeNo findings

    Why it is in this group

    • The name "placetel_list_faxes" says "list": a word for reading.

    What it can reach

    • private-dataThe description's first sentence says "file": it reads files.
    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    • untrusted-inputThe description's first sentence says "url": it reads web pages, which anyone can write.
    Description, as the server wrote it
    In- and outbound faxes with from/to number, status, pages, duration, type and the file URL. Filter by direction or number. GET /faxes.

    Annotations the server declares

    • title: List faxes
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
  • placetel_list_groupsList ring groups (ring_all, hunt, monitoring) with members.Reads text others writeNo findings

    Why it is in this group

    • The name "placetel_list_groups" says "list": a word for reading.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    List ring groups (ring_all, hunt, monitoring) with members. Filter by name, description or type. GET /groups.

    Annotations the server declares

    • title: List groups
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
  • placetel_list_number_profilesThe routing profiles of a phone number (for example Standard, Holiday, Night) and which one is active.Reads text others writeNo findings

    Why it is in this group

    • The name "placetel_list_number_profiles" says "list": a word for reading.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    The routing profiles of a phone number (for example Standard, Holiday, Night) and which one is active. Needs a Placetel plan with number profiles. GET /numbers/{number_id}/profiles.

    Annotations the server declares

    • title: List number profiles
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
  • placetel_list_numbersList the phone numbers of the account with number, E.164 form, name, description, site, activation state and the routing object id that answers them.Reads text others writeNo findings

    Why it is in this group

    • The name "placetel_list_numbers" says "list": a word for reading.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    List the phone numbers of the account with number, E.164 form, name, description, site, activation state and the routing object id that answers them. GET /numbers.

    Annotations the server declares

    • title: List phone numbers
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
  • placetel_list_routing_plansList routing plans (time-based call distribution plans) with name, description, ring duration and object counts.Reads text others writeNo findings

    Why it is in this group

    • The name "placetel_list_routing_plans" says "list": a word for reading.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    List routing plans (time-based call distribution plans) with name, description, ring duration and object counts. GET /routing_plans.

    Annotations the server declares

    • title: List routing plans
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
  • placetel_list_routingsList routing objects (what happens to an incoming call: forward, group, routing plan, IVR, queue, voicemail, API) with their settings and time settings.Reads text others writeNo findings

    Why it is in this group

    • The name "placetel_list_routings" says "list": a word for reading.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    List routing objects (what happens to an incoming call: forward, group, routing plan, IVR, queue, voicemail, API) with their settings and time settings. Filter by update time. GET /routings.

    Annotations the server declares

    • title: List routings
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
  • placetel_list_sip_usersList SIP users (phone extensions, softphones, fax and trunk lines) with extension number (did), caller id, type, online state and registrations.Reads text others writeNo findings

    Why it is in this group

    • The name "placetel_list_sip_users" says "list": a word for reading.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    List SIP users (phone extensions, softphones, fax and trunk lines) with extension number (did), caller id, type, online state and registrations. SIP passwords and PINs are never returned. GET /sip_users.

    Annotations the server declares

    • title: List SIP users
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
  • placetel_list_sitesList company sites (locations) with address and prefix.Reads text others writeNo findings

    Why it is in this group

    • The name "placetel_list_sites" says "list": a word for reading.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    List company sites (locations) with address and prefix. GET /sites.

    Annotations the server declares

    • title: List sites
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
  • placetel_list_usersList the web users of the account (main account and sub-users) with name, email, login, type, permissions and numbers.Reads private dataReads text others writeNo findings

    Why it is in this group

    • The name "placetel_list_users" says "list": a word for reading.

    What it can reach

    • private-dataThe description's first sentence says "list" and "email": it reads mail.
    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    • untrusted-inputThe description's first sentence says "list" and "web": it reads web pages, which anyone can write.
    Description, as the server wrote it
    List the web users of the account (main account and sub-users) with name, email, login, type, permissions and numbers. Filter by name, email, login or type. GET /users.

    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.

Exfil surface

Which tools read private data, which read text someone else can write, and which can send data out. One of each is a path a prompt injection can use.

756 paths in this server alone from private data, through text someone else wrote, to a way out. Denying 3 outbound tools breaks every one.

Can send data out3
Can carry data to people or systems: it sends, posts or publishes, or takes a recipient, channel or URL.
deny to break every path
{
  "permissions": {
    "deny": [
      "mcp__placetel__placetel_create_contact",
      "mcp__placetel__placetel_list_recordings",
      "mcp__placetel__placetel_send_sms"
    ]
  }
}

Other servers in the same agent add their own tools to these paths. Audit your whole setup to see them together.

Findings

Matches of fixed checks, with the text they matched.

3 warn
  • The server marks "placetel_list_call_detail_records" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

    Matched text

    annotations: {"readOnlyHint":true,"destructiveHint":false,"openWorldHint":true}; The name "placetel_list_call_detail_records" says "list": a word for reading.

    What this check looks for
  • The server marks "placetel_list_recordings" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".

    Matched text

    annotations: {"readOnlyHint":true,"destructiveHint":false,"openWorldHint":true}; The name "placetel_list_recordings" says "list": a word for reading.

    What this check looks for
  • The server marks "placetel_list_call_center_calls" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

    Matched text

    annotations: {"readOnlyHint":true,"destructiveHint":false,"openWorldHint":true}; The name "placetel_list_call_center_calls" says "list": a word for reading.

    What this check looks for

History

Changes to its tool definitions and to its remote endpoint, newest first.

No change seen yet. Its tools are rescanned every day, and a remote endpoint is looked at once a week.

Install

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

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

Run in a terminal.

Claude Code permissions

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

.claude/settings.json
{
  "permissions": {
    "allow": [
      "mcp__placetel__placetel_get_account",
      "mcp__placetel__placetel_list_users",
      "mcp__placetel__placetel_list_sip_users",
      "mcp__placetel__placetel_get_sip_user",
      "mcp__placetel__placetel_list_calls",
      "mcp__placetel__placetel_get_call",
      "mcp__placetel__placetel_list_contacts",
      "mcp__placetel__placetel_get_contact",
      "mcp__placetel__placetel_list_numbers",
      "mcp__placetel__placetel_get_number",
      "mcp__placetel__placetel_list_number_profiles",
      "mcp__placetel__placetel_list_routings",
      "mcp__placetel__placetel_get_routing",
      "mcp__placetel__placetel_list_routing_plans",
      "mcp__placetel__placetel_list_groups",
      "mcp__placetel__placetel_list_sites",
      "mcp__placetel__placetel_list_faxes",
      "mcp__placetel__placetel_get_fax",
      "mcp__placetel__placetel_list_call_center_queues",
      "mcp__placetel__placetel_list_call_center_agents"
    ],
    "ask": [
      "mcp__placetel__placetel_list_call_detail_records",
      "mcp__placetel__placetel_list_recordings",
      "mcp__placetel__placetel_list_call_center_calls",
      "mcp__placetel__placetel_create_contact",
      "mcp__placetel__placetel_initiate_call",
      "mcp__placetel__placetel_send_sms"
    ],
    "deny": [
      "mcp__placetel__placetel_update_contact",
      "mcp__placetel__placetel_activate_number_profile"
    ]
  }
}

Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. A read that can send data out (it takes a URL, say) asks first too. It assumes the server is installed as placetel. Review it before you use it.

Capability tags behind 28 rules
  • mcp__placetel__placetel_get_account private-data, untrusted-input
  • mcp__placetel__placetel_list_users private-data, untrusted-input
  • mcp__placetel__placetel_list_sip_users untrusted-input
  • mcp__placetel__placetel_get_sip_user untrusted-input
  • mcp__placetel__placetel_list_calls private-data, untrusted-input
  • mcp__placetel__placetel_get_call private-data, untrusted-input
  • mcp__placetel__placetel_list_call_detail_records untrusted-input
  • mcp__placetel__placetel_list_recordings private-data, untrusted-input, outbound
  • mcp__placetel__placetel_list_contacts private-data, untrusted-input
  • mcp__placetel__placetel_get_contact private-data, untrusted-input
  • mcp__placetel__placetel_list_numbers untrusted-input
  • mcp__placetel__placetel_get_number untrusted-input
  • mcp__placetel__placetel_list_number_profiles untrusted-input
  • mcp__placetel__placetel_list_routings untrusted-input
  • mcp__placetel__placetel_get_routing untrusted-input
  • mcp__placetel__placetel_list_routing_plans untrusted-input
  • mcp__placetel__placetel_list_groups untrusted-input
  • mcp__placetel__placetel_list_sites untrusted-input
  • mcp__placetel__placetel_list_faxes private-data, untrusted-input
  • mcp__placetel__placetel_get_fax private-data, untrusted-input
  • mcp__placetel__placetel_list_call_center_queues untrusted-input
  • mcp__placetel__placetel_list_call_center_agents untrusted-input
  • mcp__placetel__placetel_list_call_center_calls untrusted-input
  • mcp__placetel__placetel_create_contact untrusted-input, outbound
  • mcp__placetel__placetel_update_contact untrusted-input
  • mcp__placetel__placetel_activate_number_profile untrusted-input
  • mcp__placetel__placetel_initiate_call untrusted-input
  • mcp__placetel__placetel_send_sms untrusted-input, outbound

Pin

Keep the decision: fail CI when the tools change, follow every change, or show a badge.

Pin in CI

Fail a build when the tools you reviewed are not the tools the server serves today.

curl -s "https://anlyon.dev/api/v1/servers/io.usefulapi/placetel/verify?hash=ac6d831a8a055f921f4f99fae00b2b7ac2afff0251bf45a711e8a1d14f6f61bf" | jq -e '.changed == false'

Pinned hash ac6d831a8a05, from Oct 25, 2026, 07:17 UTC.

Watch

Get told when its tools change: a new tool, a new description, a new class.

https://anlyon.dev/servers/io.usefulapi/placetel/changes.xml

An Atom feed. Works in any feed reader or Slack's RSS app.

Badge

anlyon.dev badge for io.usefulapi/placetel
[![anlyon.dev](https://anlyon.dev/badge/io.usefulapi/placetel.svg)](https://anlyon.dev/servers/io.usefulapi/placetel)

Source: MCP Registry · repository. Synced Oct 25, 2026, 07:17 UTC.