Rinkel MCP by usefulapi

Read Rinkel calls, voicemails, contacts and numbers; add call notes, edit contacts, block numbers.

我该使用它吗

质量与安全性

A
描述质量
100%
模式完整度
89%
命名质量
80%
投毒风险
100%
权限匹配度
100%
协议合规性
100%

基于对工具定义和协议合规性的自动分析。

上下文开销

~5,957token 数(工具定义)
~1.5 KB典型响应大小
对注意力有显著影响(占 128k 上下文窗口的 4.65%)

这是每次将服务器的工具加载到模型上下文窗口时所消耗的大致 token 数。数值越高,可用于其他任务的注意力就越少。

安装

一键安装

将以下内容添加到你的 `claude_desktop_config.json` 文件中:

{
  "mcpServers": {
    "rinkel": {
      "url": "https://rinkel.usefulapi.io/mcp"
    }
  }
}

远程端点

https://rinkel.usefulapi.io/mcpstreamable-http

它能做什么

工具清单

工具(27)

🟢 只读🟡 写入🔴 删除⚪ 未知
🟢rinkel_list_calls(filter, internal_numbers, external_number, date_preset, start_date, ...)

List call detail records (inbound and outbound calls) with date, direction, status (ANSWERED, MISSED, VOICEMAIL, ANSWERING_SERVICE), duration, external and internal number, the users involved, notes, and (when the account has Rinkel AI insights) the AI summary and sentiment. Use for 'who called today', 'which calls did we miss this week', 'calls longer than 5 minutes'. Newest first by default. Rinkel API: GET /call-detail-records.

输入模式

{
  "type": "object",
  "properties": {
    "filter": {
      "description": "Free-text search over calls.",
      "type": "string"
    },
    "internal_numbers": {
      "description": "Only calls on these internal (Rinkel) numbers, as listed by rinkel_list_numbers.",
      "maxItems": 50,
      "type": "array",
      "items": {
        "type": "string",
        "minLength": 1
      }
    },
    "external_number": {
      "description": "Only calls with this external (caller or callee) number.",
      "type": "string"
    },
    "date_preset": {
      "description": "A relative period. It overrides start_date and end_date.",
      "type": "string",
      "enum": [
        "TODAY",
        "THIS-WEEK",
        "LAST-TWO-WEEKS",
        "LAST-MONTH"
      ]
    },
    "start_date": {
      "description": "Only calls on or after this date (yyyy-mm-dd, or an ISO date-time with timezone). Sent as a Unix timestamp.",
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}(T\\d{2}:\\d{2}(:\\d{2}(\\.\\d+)?)?(Z|[+-]\\d{2}:\\d{2}))?$"
    },
    "end_date": {
      "description": "Only calls on or before this date (yyyy-mm-dd = end of that day UTC, or an ISO date-time with timezone).",
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}(T\\d{2}:\\d{2}(:\\d{2}(\\.\\d+)?)?(Z|[+-]\\d{2}:\\d{2}))?$"
    },
    "has_notes": {
      "description": "Only calls that have (true) or lack (false) notes.",
      "type": "boolean"
    },
    "is_anonymous": {
      "description": "Only calls from a hidden number (true) or not (false).",
      "type": "boolean"
    },
    "contact_lookup": {
      "description": "Include the matching contact in each record.",
      "type": "boolean"
    },
    "page": {
      "description": "Page number (default 1).",
      "type": "integer",
      "minimum": 1,
      "maximum": 9007199254740991
    },
    "per_page": {
      "description": "Items per page (default 10, max 50).",
      "type": "integer",
      "minimum": 1,
      "maximum": 50
    },
    "directions": {
      "description": "Only these directions.",
      "type": "array",
      "items": {
        "type": "string",
        "enum": [
          "INBOUND",
          "OUTBOUND"
        ]
      }
    },
    "statuses": {
      "description": "Only these call outcomes.",
      "type": "array",
      "items": {
        "type": "string",
        "enum": [
          "MISSED",
          "ANSWERED",
          "VOICEMAIL"
        ]
      }
    },
    "user_ids": {
      "description": "Only calls handled by these user ids (rinkel_list_users).",
      "maxItems": 50,
      "type": "array",
      "items": {
        "type": "string",
        "minLength": 1
      }
    },
    "sentiments": {
      "description": "Only calls with this AI-insights sentiment.",
      "type": "array",
      "items": {
        "type": "string",
        "enum": [
          "POSITIVE",
          "NEGATIVE",
          "NEUTRAL"
        ]
      }
    },
    "duration_preset": {
      "description": "Duration buckets in minutes ('30-0' = 30 minutes or more). Overrides min/max duration.",
      "type": "array",
      "items": {
        "type": "string",
        "enum": [
          "1-5",
          "5-15",
          "15-30",
          "30-0"
        ]
      }
    },
    "min_duration_seconds": {
      "description": "Minimum duration in seconds (ignored with duration_preset).",
      "type": "integer",
      "minimum": 0,
      "maximum": 9007199254740991
    },
    "max_duration_seconds": {
      "description": "Maximum duration in seconds (ignored with duration_preset).",
      "type": "integer",
      "minimum": 0,
      "maximum": 9007199254740991
    },
    "has_transcription": {
      "description": "Only calls that have a transcription.",
      "type": "boolean"
    },
    "has_insights": {
      "description": "Only calls that have AI insights.",
      "type": "boolean"
    },
    "include_details": {
      "description": "Include insights and notes in each record.",
      "type": "boolean"
    },
    "contact": {
      "description": "Only calls with this contact (id).",
      "type": "string"
    },
    "sort": {
      "description": "Sort field (default date).",
      "type": "string",
      "enum": [
        "date",
        "duration",
        "status",
        "internalNumber",
        "externalNumber",
        "user"
      ]
    },
    "sort_order": {
      "description": "Sort order (default DESC).",
      "type": "string",
      "enum": [
        "ASC",
        "DESC"
      ]
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢rinkel_get_call(call_record_id)

Get one call detail record by its Rinkel id (the `id` field of rinkel_list_calls): numbers, users, status, duration, notes, voicemail and call-recording ids, AI insights. Rinkel API: GET /call-detail-records/{id}.

输入模式

{
  "type": "object",
  "properties": {
    "call_record_id": {
      "type": "string",
      "minLength": 1,
      "description": "The call detail record id (`id`)."
    }
  },
  "required": [
    "call_record_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢rinkel_get_call_by_network_id(network_call_id, include_details)

Get one call detail record by its network `callId` (the id Rinkel sends in webhook events), optionally with insights and notes. Rinkel API: GET /call-detail-records/by-call-id/{callId}.

输入模式

{
  "type": "object",
  "properties": {
    "network_call_id": {
      "type": "string",
      "minLength": 1,
      "description": "The network call id (`callId` field)."
    },
    "include_details": {
      "description": "Include insights and notes.",
      "type": "boolean"
    }
  },
  "required": [
    "network_call_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢rinkel_get_call_transcription(network_call_id)

Get the raw transcription of a call by its network `callId` (needs Rinkel AI insights on the account; 404 when the call has none). Rinkel API: GET /call-detail-records/by-call-id/{callId}/transcription.

输入模式

{
  "type": "object",
  "properties": {
    "network_call_id": {
      "type": "string",
      "minLength": 1,
      "description": "The network call id (`callId` field of the call record)."
    }
  },
  "required": [
    "network_call_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢rinkel_get_call_recording_url(call_recording_id)

Get a temporary URL (valid 3 hours) to stream or download a call recording. The id is `callRecording.id` of a call record. Append `download` as a query parameter to the URL to download instead of stream. Rinkel API: GET /call-recordings/{id}/stream.

输入模式

{
  "type": "object",
  "properties": {
    "call_recording_id": {
      "type": "string",
      "minLength": 1,
      "description": "The call recording id (`callRecording.id` of a call record)."
    }
  },
  "required": [
    "call_recording_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢rinkel_list_voicemails(filter, internal_numbers, external_number, date_preset, start_date, ...)

List voicemail messages (call records with status VOICEMAIL): caller, date, duration, whether new, and the voicemail id. Newest first. With is_new=true Rinkel ignores every other filter and returns only unplayed voicemails. Rinkel API: GET /voicemails.

输入模式

{
  "type": "object",
  "properties": {
    "filter": {
      "description": "Free-text search over calls.",
      "type": "string"
    },
    "internal_numbers": {
      "description": "Only calls on these internal (Rinkel) numbers, as listed by rinkel_list_numbers.",
      "maxItems": 50,
      "type": "array",
      "items": {
        "type": "string",
        "minLength": 1
      }
    },
    "external_number": {
      "description": "Only calls with this external (caller or callee) number.",
      "type": "string"
    },
    "date_preset": {
      "description": "A relative period (overrides start_date and end_date).",
      "type": "string",
      "enum": [
        "TODAY",
        "THIS-WEEK",
        "LAST-TWO-WEEKS",
        "LAST-MONTH"
      ]
    },
    "start_date": {
      "description": "Only calls on or after this date (yyyy-mm-dd, or an ISO date-time with timezone). Sent as a Unix timestamp.",
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}(T\\d{2}:\\d{2}(:\\d{2}(\\.\\d+)?)?(Z|[+-]\\d{2}:\\d{2}))?$"
    },
    "end_date": {
      "description": "Only calls on or before this date (yyyy-mm-dd = end of that day UTC, or an ISO date-time with timezone).",
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}(T\\d{2}:\\d{2}(:\\d{2}(\\.\\d+)?)?(Z|[+-]\\d{2}:\\d{2}))?$"
    },
    "has_notes": {
      "description": "Only calls that have (true) or lack (false) notes.",
      "type": "boolean"
    },
    "is_anonymous": {
      "description": "Only calls from a hidden number (true) or not (false).",
      "type": "boolean"
    },
    "contact_lookup": {
      "description": "Include the matching contact in each record.",
      "type": "boolean"
    },
    "page": {
      "description": "Page number (default 1).",
      "type": "integer",
      "minimum": 1,
      "maximum": 9007199254740991
    },
    "per_page": {
      "description": "Items per page (default 10, max 50).",
      "type": "integer",
      "minimum": 1,
      "maximum": 50
    },
    "is_new": {
      "description": "Only unplayed voicemails (true). All other filters are ignored then.",
      "type": "boolean"
    },
    "topics": {
      "description": "Only voicemails with these AI topic ids.",
      "maxItems": 50,
      "type": "array",
      "items": {
        "type": "string",
        "minLength": 1
      }
    },
    "sort_order": {
      "description": "Sort order by date (default DESC).",
      "type": "string",
      "enum": [
        "ASC",
        "DESC"
      ]
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢rinkel_count_new_voicemails

Number of voicemails that have not been played yet. Rinkel API: GET /voicemails/new-count.

输入模式

{
  "type": "object",
  "properties": {},
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢rinkel_get_voicemail_url(voicemail_id)

Get a temporary URL (valid 3 hours) to stream or download a voicemail. The id is `voicemail.id` of a call or voicemail record. Rinkel API: GET /voicemails/{id}/stream.

输入模式

{
  "type": "object",
  "properties": {
    "voicemail_id": {
      "type": "string",
      "minLength": 1,
      "description": "The voicemail id (`voicemail.id`)."
    }
  },
  "required": [
    "voicemail_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢rinkel_list_contacts(filter, letter, page, per_page)

List the contacts shared with everyone in the account (plus the Rinkel system contact, tag 'system'): names, company, phone numbers, email. Rinkel API: GET /contacts.

输入模式

{
  "type": "object",
  "properties": {
    "filter": {
      "description": "Search by name, company or number.",
      "type": "string"
    },
    "letter": {
      "description": "Only contacts whose name starts with this letter.",
      "type": "string",
      "minLength": 1,
      "maxLength": 1
    },
    "page": {
      "description": "Page number (default 1).",
      "type": "integer",
      "minimum": 1,
      "maximum": 9007199254740991
    },
    "per_page": {
      "description": "Items per page (default 10, max 50).",
      "type": "integer",
      "minimum": 1,
      "maximum": 50
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢rinkel_get_contact(contact_id)

Get one contact by id. Rinkel API: GET /contacts/{id}.

输入模式

{
  "type": "object",
  "properties": {
    "contact_id": {
      "type": "string",
      "minLength": 1,
      "description": "The contact id."
    }
  },
  "required": [
    "contact_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢rinkel_find_contact_by_number(phone_number)

Find the contact that owns a phone number (E.164 such as +31612345678 works best). 404 when there is none. Rinkel API: GET /contacts/find-by-number/{number}.

输入模式

{
  "type": "object",
  "properties": {
    "phone_number": {
      "type": "string",
      "minLength": 3,
      "maxLength": 40,
      "description": "The phone number, preferably in E.164 format (+31612345678)."
    }
  },
  "required": [
    "phone_number"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢rinkel_list_users(include_avatars)

List the account's users: name, email, phone number, role (ADMIN, USER, ANSWERINGSERVICE), availability schedule and status, and `fixed`/device info (`deviceId` is needed to start a call). Rinkel API: GET /users.

输入模式

{
  "type": "object",
  "properties": {
    "include_avatars": {
      "description": "Include avatar URLs.",
      "type": "boolean"
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢rinkel_get_user(user_id, include_avatar)

Get one user by id, including preferences, notification settings, schedule and `deviceId`. Rinkel API: GET /users/{id}.

输入模式

{
  "type": "object",
  "properties": {
    "user_id": {
      "type": "string",
      "minLength": 1,
      "description": "The user id (rinkel_list_users)."
    },
    "include_avatar": {
      "description": "Include avatar URLs.",
      "type": "boolean"
    }
  },
  "required": [
    "user_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢rinkel_list_numbers

List the account's Rinkel phone numbers: id, label, number, status (ACTIVE, SUSPENDED, PENDING_PORTING_IN ...), activation date and the users assigned. Rinkel API: GET /numbers.

输入模式

{
  "type": "object",
  "properties": {},
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢rinkel_get_number(number_id)

Get one Rinkel number with its full dial plan: greeting, business hours schedule, call forwarding targets and ring logic, voice menu, call recording and caller-id settings. Rinkel API: GET /numbers/{id}.

输入模式

{
  "type": "object",
  "properties": {
    "number_id": {
      "type": "string",
      "minLength": 1,
      "description": "The number id (rinkel_list_numbers)."
    }
  },
  "required": [
    "number_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢rinkel_list_recordings(page, per_page, sort, sort_order)

List the uploaded audio recordings used in the dial plan (greetings, announcements, voice-over scripts): name, description, duration and where each is used. Not call recordings. Rinkel API: GET /recordings.

输入模式

{
  "type": "object",
  "properties": {
    "page": {
      "description": "Page number (default 1).",
      "type": "integer",
      "minimum": 1,
      "maximum": 9007199254740991
    },
    "per_page": {
      "description": "Items per page (default 10, max 999).",
      "type": "integer",
      "minimum": 1,
      "maximum": 999
    },
    "sort": {
      "description": "Sort field (default date).",
      "type": "string",
      "enum": [
        "date",
        "duration",
        "name",
        "description"
      ]
    },
    "sort_order": {
      "description": "Sort order (default DESC).",
      "type": "string",
      "enum": [
        "ASC",
        "DESC"
      ]
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢rinkel_list_webhooks

List the webhook subscriptions (events incomingCall, outgoingCall, callStart, callEnd, callInsights) with URL and active flag. Webhooks need the Expert plan. Rinkel API: GET /webhooks.

输入模式

{
  "type": "object",
  "properties": {},
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢rinkel_validate_phone_number(country_iso_code, number, check_inventory)

Check a phone number for a country and return its normalised form. With check_inventory=true Rinkel also checks whether the number is available to order. Rinkel API: GET /misc/validate-phone-number.

输入模式

{
  "type": "object",
  "properties": {
    "country_iso_code": {
      "type": "string",
      "pattern": "^[A-Za-z]{2}$",
      "description": "Country code such as NL or BE."
    },
    "number": {
      "type": "string",
      "minLength": 3,
      "maxLength": 40,
      "description": "The number without the country calling code."
    },
    "check_inventory": {
      "description": "Also check availability to order.",
      "type": "boolean"
    }
  },
  "required": [
    "country_iso_code",
    "number"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟡rinkel_add_call_note(call_record_id, content)

WRITE: add a note to a call record (visible to everyone in the account who sees the call). The id is the call record's `id`; if Rinkel answers 404, retry with the record's `callId`. Rinkel API: PUT /call-detail-records/{callId}/note.

输入模式

{
  "type": "object",
  "properties": {
    "call_record_id": {
      "type": "string",
      "minLength": 1,
      "description": "The call record id (`id` of rinkel_list_calls)."
    },
    "content": {
      "type": "string",
      "minLength": 1,
      "maxLength": 5000,
      "description": "The note text."
    }
  },
  "required": [
    "call_record_id",
    "content"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🔴rinkel_update_call_note(call_record_id, note_id, content)

WRITE: replace the text of an existing note on a call record (the note id is in `notes[].id` of the call record). Rinkel API: PATCH /call-detail-records/{callId}/note/{noteId}.

输入模式

{
  "type": "object",
  "properties": {
    "call_record_id": {
      "type": "string",
      "minLength": 1,
      "description": "The call record id (`id`)."
    },
    "note_id": {
      "type": "string",
      "minLength": 1,
      "description": "The note id (`notes[].id`)."
    },
    "content": {
      "type": "string",
      "minLength": 1,
      "maxLength": 5000,
      "description": "The new note text."
    }
  },
  "required": [
    "call_record_id",
    "note_id",
    "content"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🔴rinkel_delete_call_note(call_record_id, note_id, confirm)

WRITE, irreversible: delete one note from a call record. Needs confirm=true after the user approved it. Rinkel API: DELETE /call-detail-records/{callId}/note/{noteId}.

输入模式

{
  "type": "object",
  "properties": {
    "call_record_id": {
      "type": "string",
      "minLength": 1,
      "description": "The call record id (`id`)."
    },
    "note_id": {
      "type": "string",
      "minLength": 1,
      "description": "The note id (`notes[].id`)."
    },
    "confirm": {
      "description": "Must be true, set only after the user explicitly approved this exact action.",
      "type": "boolean"
    }
  },
  "required": [
    "call_record_id",
    "note_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟡rinkel_create_contact(first_name, last_name, company_name, email, numbers, ...)

WRITE: create a contact. It is shared with everyone in the Rinkel account (all users see it and calls from its numbers show its name). Rinkel API: POST /contacts.

输入模式

{
  "type": "object",
  "properties": {
    "first_name": {
      "type": "string",
      "maxLength": 100
    },
    "last_name": {
      "type": "string",
      "maxLength": 100
    },
    "company_name": {
      "type": "string",
      "maxLength": 200
    },
    "email": {
      "type": "string",
      "maxLength": 200
    },
    "numbers": {
      "minItems": 1,
      "maxItems": 10,
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "label": {
            "type": "string",
            "minLength": 1,
            "maxLength": 40,
            "description": "Label such as Mobile or Work."
          },
          "country_iso_code": {
            "type": "string",
            "pattern": "^[A-Za-z]{2}$",
            "description": "Country code such as NL."
          },
          "number": {
            "type": "string",
            "minLength": 3,
            "maxLength": 40,
            "description": "The number without the country calling code."
          }
        },
        "required": [
          "label",
          "country_iso_code",
          "number"
        ]
      },
      "description": "Phone numbers of the contact (Rinkel requires at least one)."
    },
    "default_outbound_number_id": {
      "description": "Id of the Rinkel number to call this contact from (rinkel_list_numbers).",
      "type": "string"
    }
  },
  "required": [
    "numbers"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🔴rinkel_update_contact(contact_id, first_name, last_name, company_name, email, ...)

WRITE: update a contact (PUT semantics). `numbers` is required and REPLACES all stored numbers, and an omitted default_outbound_number_id CLEARS it; omitted names, company and email keep their stored value. Read the contact first (rinkel_get_contact) and resend what must stay. The system contact cannot be changed. Rinkel API: PUT /contacts/{id}.

输入模式

{
  "type": "object",
  "properties": {
    "contact_id": {
      "type": "string",
      "minLength": 1,
      "description": "The contact id."
    },
    "first_name": {
      "type": "string",
      "maxLength": 100
    },
    "last_name": {
      "type": "string",
      "maxLength": 100
    },
    "company_name": {
      "type": "string",
      "maxLength": 200
    },
    "email": {
      "type": "string",
      "maxLength": 200
    },
    "numbers": {
      "minItems": 1,
      "maxItems": 10,
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "label": {
            "type": "string",
            "minLength": 1,
            "maxLength": 40,
            "description": "Label such as Mobile or Work."
          },
          "country_iso_code": {
            "type": "string",
            "pattern": "^[A-Za-z]{2}$",
            "description": "Country code such as NL."
          },
          "number": {
            "type": "string",
            "minLength": 3,
            "maxLength": 40,
            "description": "The number without the country calling code."
          }
        },
        "required": [
          "label",
          "country_iso_code",
          "number"
        ]
      },
      "description": "The COMPLETE list of numbers (replaces the stored ones; Rinkel requires at least one, so read the contact first and resend the ones to keep)."
    },
    "default_outbound_number_id": {
      "description": "Resend the current value to keep it; omit to clear it.",
      "type": "string"
    }
  },
  "required": [
    "contact_id",
    "numbers"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🔴rinkel_delete_contact(contact_id, confirm)

WRITE, irreversible: delete a contact for the whole account. Needs confirm=true after the user approved it. The Rinkel system contact cannot be deleted. Rinkel API: DELETE /contacts/{id}.

输入模式

{
  "type": "object",
  "properties": {
    "contact_id": {
      "type": "string",
      "minLength": 1,
      "description": "The contact id."
    },
    "confirm": {
      "description": "Must be true, set only after the user explicitly approved this exact action.",
      "type": "boolean"
    }
  },
  "required": [
    "contact_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟡rinkel_block_number(number, reason)

WRITE: block a number from calling ANY of the account's numbers. Accepts an E.164 number, 'anonymous', or a prefix wildcard such as '+31*' (a wildcard must end the value and include a country code; a broad wildcard blocks every caller from that country). Undo with rinkel_unblock_number. Rinkel API: POST /privacy/block-number.

输入模式

{
  "type": "object",
  "properties": {
    "number": {
      "type": "string",
      "minLength": 1,
      "maxLength": 40,
      "description": "E.164 number (+31612345678), 'anonymous', or a prefix wildcard like '+3161*'."
    },
    "reason": {
      "description": "Why it is blocked (for example Spam).",
      "type": "string",
      "maxLength": 200
    }
  },
  "required": [
    "number"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🔴rinkel_unblock_number(number)

WRITE: remove a number (or the same wildcard pattern that was blocked) from the block list so it can call again. Rinkel API: DELETE /privacy/unblock-number.

输入模式

{
  "type": "object",
  "properties": {
    "number": {
      "type": "string",
      "minLength": 1,
      "maxLength": 40,
      "description": "The blocked entry exactly as it was blocked."
    }
  },
  "required": [
    "number"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🔴rinkel_start_call(device_id, to, number_id, anonymous, confirm)

WRITE, COSTS CALL MINUTES: starts a real phone call. Rinkel rings the given user device first and, once it is answered, dials `to` using the chosen Rinkel number as caller id, so call charges apply to the account and the person called sees the number. Needs confirm=true, set only after the user explicitly asked to place this call. Get device_id from rinkel_list_users (`fixed`/device info or `deviceId`) and number_id from rinkel_list_numbers. Rinkel API: POST /dial.

输入模式

{
  "type": "object",
  "properties": {
    "device_id": {
      "type": "string",
      "minLength": 1,
      "description": "The id of the user device that starts the call (`deviceId` of a user)."
    },
    "to": {
      "type": "string",
      "pattern": "^\\+[1-9]\\d{6,14}$",
      "description": "The number to call, in E.164 format (+31612345678)."
    },
    "number_id": {
      "type": "string",
      "minLength": 1,
      "description": "The id of the Rinkel number used as caller id (rinkel_list_numbers)."
    },
    "anonymous": {
      "description": "Hide the caller id (default false).",
      "type": "boolean"
    },
    "confirm": {
      "description": "Must be true, set only after the user explicitly approved this exact action.",
      "type": "boolean"
    }
  },
  "required": [
    "device_id",
    "to",
    "number_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}

社区

评价此服务器

证据

最近观测

已验证未记录版本27 个工具