Dialyne

com.dialyne由 dialyne.com 发布官方发布者v1.0.0更新于 Nov 7, 2026

Real phone calls in France for AI agents: dial +33 numbers, menus, hold, AI disclosure.

已验证Streamable HTTP可网页运行效率与工作流沟通与协作

概览

AI 生成的概览

让助手通过语音代理向法国(+33)号码拨打真实电话,并取回书面结果、摘要和通话记录。

可以做什么
  • 用自然语言任务拨打、预约、取消和列出法国号码的通话,并读取状态、结果与摘要
  • 在通话中回答语音代理提出的问题、申请延长答复时间,或把通话转接到用户本人手机
  • 安排回拨,并在 Pro 和 Enterprise 方案下向一组号码批量拨打同一通电话,再查看批次进度
  • 查询账户剩余预付费通话分钟数和账户限额
  • 读取或修改语音代理的自我介绍方式,包括名称、语气和开场白
适用场景
适合用户希望由助手代为致电法国完成事务的场景,例如订餐位、改约、向商家咨询或跟进订单与索赔。也适合查看以往通话结果,或在付费方案下执行小规模同内容批量呼叫。
运行要求
远程 MCP 端点,无需本地安装。首次调用工具时通过 OAuth 2.1 登录,无浏览器的客户端可用 Authorization Bearer 头传 API 密钥。需要已充值的 Dialyne 账户(预付费或订阅分钟数),通话按分钟计费。
安装前请注意
通话是真实的,按通话分钟计费,预付费额度在每次充值后 30 天过期。助手可代用户拨打、转接、改期和取消通话,应先确认每次请求。传入通话的验证码或卡号会被掩码存储,但仍由用户自行决定是否提供;付款场景建议转接给用户本人。通话记录最多保留 90 天。营销、推销和批量呼叫会被拒绝。

安装

在 SourceWeft 中

  1. 打开 控制台中的 Dialyne,将其添加到工作区。
  2. 为需要使用其工具的对话启用该服务。

Web executable,通过 Streamable HTTP。 远程服务在工作区中配置后即可从网页运行时运行。

交给智能体安装

把这段提示词粘贴到 Claude Code、Codex、Cursor 等智能体,或 SourceWeft 对话中。智能体会读取该服务器的安装指南,先向你展示发布者、端点和登录方式,经你同意后再把它添加到你的客户端。密钥不会写进任何命令。

阅读 https://sourceweft.com/mcp/com.dialyne%2Fdialyne/install.md,并按其中说明把这个 MCP 服务器接入我的客户端。修改任何配置之前,先告诉我它的发布者、端点和登录方式,等我确认。不要把 API 密钥写进命令或我会提交的文件;问我密钥应从哪里获取。

查看智能体所依据的安装指南

其他 MCP 客户端

把它添加到你客户端的 mcpServers 配置中。

{
  "mcpServers": {
    "dialyne": {
      "type": "http",
      "url": "https://mcp.dialyne.com/mcp"
    }
  }
}

README

[Dialyne]

Dialyne — real phone calls in France for AI agents

Website: https://dialyne.com · MCP server: https://mcp.dialyne.com/mcp · API: https://api.dialyne.com · Dashboard: https://app.dialyne.com · Docs: https://dialyne.com/docs/ · For agents: https://dialyne.com/llms.txt

Dialyne gives an AI agent a phone line in France. The agent describes a task in plain language ("book a table for 4 on Friday around 8 pm for Martin"); Dialyne's voice agent calls the French number, introduces itself as the user's virtual assistant (an AI), navigates the phone menu, waits on hold, talks to the person, and returns a written result: outcome, summary and transcript.

This repository is the public showcase: MCP connection files for each client, an agent skill, examples and docs. The Dialyne service itself is hosted and closed-source; nothing here runs a server.

  • 🇫🇷 French numbers (+33): landlines and mobiles. Calls are placed whenever the user asks, day or night; automatic retries (busy line, no answer) stay within 08:00–21:00 in the callee's time zone; a callback time the callee asks for is kept as they said it.
  • 🤖 By default the agent says "Hello, this is Léa, 's virtual assistant" and answers yes if asked whether it is an AI (EU AI Act art. 50). The user can customise how it introduces itself; it never denies being an AI. No marketing, prospecting or mass calling.
  • ☎️ Phone menus (voice and keypad), hold time, questions to your agent during the call, hand-over to a human.
  • 📝 Text only: no audio is recorded or returned. Transcripts are deleted automatically (after 90 days, or sooner if the user chooses).

Connect

The server uses OAuth 2.1 (dynamic client registration, PKCE). Paste the URL; your client opens a Dialyne sign-in page the first time a tool is called. Agents without a browser can send an API key as Authorization: Bearer <key> instead. Never put a key in a URL.

ClientHow
Claude (claude.ai, Desktop)Settings › Connectors › Add custom connector › https://mcp.dialyne.com/mcp
ChatGPTSettings › Connectors (developer mode) › Create › URL above, authentication OAuth
Claude Codeclaude mcp add --transport http dialyne https://mcp.dialyne.com/mcp — or install this repo as a plugin (.claude-plugin/)
CursorInstall this repo as a plugin (.cursor-plugin/), or ~/.cursor/mcp.json: {"mcpServers": {"dialyne": {"url": "https://mcp.dialyne.com/mcp"}}}
VS Code / Copilot.vscode/mcp.json: {"servers": {"dialyne": {"type": "http", "url": "https://mcp.dialyne.com/mcp"}}}
Codex / ChatGPT pluginsplugin.json + mcp.json at the root (Agent Plugins format) and .codex-plugin/plugin.json
Gemini CLIgemini extensions install https://github.com/dialyne/dialyne-mcp (gemini-extension.json)
OpenAI Responses API{"type": "mcp", "server_label": "dialyne", "server_url": "https://mcp.dialyne.com/mcp", "headers": {"Authorization": "Bearer <key>"}, "require_approval": "always"}
Hermes, OpenClawSkill in skills/dialyne-phone-call/ + API key in DIALYNE_API_KEY
n8nexamples/n8n/ (HTTP Request nodes), or the MCP Client tool with the URL above

Step-by-step instructions an agent can follow on its own: llms-install.md.

Tools

ToolWhat it does
place_phone_callCalls a French number with a task in plain language; returns a call_id immediately (the call runs 1–10 min in the background). Optional language, scheduled_at, voice, idempotency_key.
get_callStatus and written result; waits up to 50 s for news (answered, on hold, question, transfer, end). Repeat until done=true.
answer_call_questionRelays the user's answer when the voice agent asks something during the call (within ~45 s).
hold_call_questionAsks the callee for one more minute when the user needs time to answer a pending question (only if the callee agrees; never more than 2 minutes per question).
transfer_call_to_userHands the live call over to the user's phone.
schedule_callbackCalls the same number again later with the same task.
cancel_callCancels a scheduled call or hangs up a live one.
list_callsPast and scheduled calls, searchable.
get_account_balanceMinutes of conversation left and account limits.
configure_agent_identityReads or changes how the voice agent introduces itself (name, tone, opening line, answer to "who is calling?", AI mention in the opening). Name and tone change freely; any other change needs the user's explicit, logged acceptance of the warning it returns.
place_batch_callsPlaces the same call to a list of French numbers (Pro and Enterprise plans, 100 numbers at most); returns a batch_id and one call_id per number. Never for marketing or mass calling.
get_batch_callsProgress and results of a batch: counts by status, successes, refused numbers, and each call's outcome and summary.

Typical flow: place_phone_call → get_call(wait_seconds=25) until done → answer_call_question if a pending_question appears → report outcome and summary. Full reference: https://dialyne.com/docs/mcp

Example

User: Call Le Lys on 05 34 00 11 22 and book a table for 4 on Friday around 8 pm, name Martin. I prefer indoors.

Agent: place_phone_call(phone_number="+33534001122", task="Book a table for 4 on Friday around 8 pm for Martin. 7:30-9 pm is fine. Indoors preferred.") → get_call(...) → the restaurant asks "terrace or indoors?" → answer_call_question(call_id, "Indoors, please") → get_call(...)

Agent: Done: table for 4 on Friday at 7:45 pm, indoors, under Martin. 20:00 was full.

Code examples: curl, Python, TypeScript, n8n.

Rules built into the service

  • Recommended identity by default: the agent introduces itself as the user's virtual assistant and says it is an AI whenever asked. The user can change this with configure_agent_identity; a change away from the recommended settings only applies after the user accepts a warning, which is logged, and the user is then responsible for those settings. One rule never changes: the agent never denies being an AI. Agents must show the warning to their user and never accept it on their behalf.
  • Calls are placed whenever the user asks, day or night; automatic retries (busy line, no answer) stay within 08:00–21:00 in the callee's time zone; a callback time the callee asks for is kept as they said it.
  • Only what French law forbids is refused: marketing, prospecting, surveys, mass calling (French Consumer Code art. L223-1 forbids phone canvassing of consumers without consent), threats, harassment and impersonation.
  • Codes and card details: the user decides. Write a value as [secret: value] and Dialyne masks it in what it stores (card numbers are masked automatically); for a payment, prefer handing the call to the user.
  • At most 5 calls per number per day across all customers; a person who asks not to be called again is blocked for every customer.
  • Emergency, short and premium-rate numbers are refused.

Details: https://dialyne.com/legal/cgu

Pricing

Same call quality on every plan; busy and unanswered calls are free; billed per second; hold time 0.04 € per minute.

  • Starter: 0.20 € per minute of conversation, prepaid top-ups from 10 € (50 minutes). Credits are valid 30 days after each top-up. 5 test minutes after sign-up.
  • Pro: 99 € per month + 0.17 € per minute, team and higher limits.
  • Enterprise: on quote — [email protected].

Your phone number is free while your account is active. Details: https://dialyne.com/tarifs/

Repository layout

assets/                          Dialyne logo (light, dark) and app iconserver.json                      MCP Registry entry (com.dialyne/dialyne, remote only)plugin.json, mcp.json            Agent Plugins manifest (Cursor, Codex/ChatGPT).claude-plugin/plugin.json       Claude Code plugin (+ .mcp.json).cursor-plugin/plugin.json       Cursor plugin.codex-plugin/plugin.json        Codex / ChatGPT presentation overlaygemini-extension.json            Gemini CLI extensionskills/dialyne-phone-call/      Agent skill (Claude Code, Codex, Cursor, Copilot, Gemini CLI, Hermes, OpenClaw)llms-install.md                  Install steps for AI agentsexamples/                        curl, Python, TypeScript, n8n

Support and security

License

MIT for everything in this repository (see LICENSE). The Dialyne service is subject to its own terms of service.

来源:README.md,提交 ce47ab1

工具

12

place_phone_call

Place a phone call in France

Place a real outbound phone call to a number in France (+33) and get back a written result: a voice agent carries out the task you describe (book a table, move an appointment, ask a business a question, follow up on an order or a claim). Compliance: the service's rules require the voice agent to disclose it is an AI assistant at the start of every call (EU AI Act art. 50), and calls are placed only on the user's explicit request. The only exception is a callee the user confirms already knows an AI will call (ai_disclosure; not recommended). The voice agent opens by saying it is an AI assistant calling on behalf of the user; if the callee objects to the call, it ends the call politely and the number is never called again by this service. It navigates phone menus (voice or keypad), waits on hold and talks with the person who answers. No audio is returned or recorded: you get a written outcome, a summary and, on request, the transcript (text kept 90 days at most). When to use: the user explicitly asked you to phone a specific French business or person, and the number and the task are confirmed. Number found by you: if the number did not come from the user (you found it by web search, in memory or in a document), STOP before calling: show the number to the user, ask "Shall I call this number?" and call only after they confirm in a later message. Missing details: do not quiz the user for every detail before calling. Give the facts you already have in task; if the callee asks for something the user did not give, get_call shows it as pending_question and you ask the user then. When not to use: marketing, sales prospecting, surveys, debt collection, mass or repeated calling (unlawful in France and refused); impersonating another person, an authority or a bank; threats or harassment; asking the callee for their codes, passwords, card details or a money transfer, gift cards or crypto (claiming money owed to the user is fine); dictating a payment code (3-

输入参数task必填voicelanguagephone_number必填scheduled_atai_disclosureoutside_hoursvoice_settingsidempotency_keycallee_informed_confirmation

get_call

Get call status and result

Get the status and written result of a call placed with place_phone_call (outcome, summary, pending question, transcript on request), optionally waiting for news. Compliance: read-only; transcripts are text only (no audio is recorded) and are kept 90 days at most. Use it to follow a call in progress (repeat until done=true), to see whether the voice agent is waiting for the user's answer (pending_question), and to read the final outcome and summary to report to the user. Read-only: it never places, changes or ends a call. Returns: status (scheduled, in_progress, retry_scheduled, completed, cancelled, failed), done, outcome (success, failed, voicemail, no_answer, busy, callback_requested, callee_objected), summary, pending_question {question_id, text}, new events since after_event_id, last_event_id and next_step. A call that is busy or not answered is retried automatically (status retry_scheduled), except on lines where every call needs a new request from the user (event callback_suggested: ask the user). callee_objected means the person asked not to be called again: the transcript was deleted and the number can no longer be called; tell the user.

输入参数call_id必填wait_secondsafter_event_idresponse_format

answer_call_question

Answer the voice agent's question during a call

Send the user's answer to a question the voice agent asked during a live call (shown by get_call as pending_question) and get confirmation that it was relayed. Compliance: the same rules as the task apply; an answer that threatens, impersonates someone, asks the callee for codes, card details or a transfer, or dictates a payment code or a full card with its security code is refused before anything is sent. Use it only when get_call shows a pending_question. The answer is spoken to the person on the line, so it must be the user's real information or decision: if you do not know it, ask the user and relay their words; never invent personal details. If the callee asks for a code (SMS, verification, delivery), a password or a card detail, ask the user: they decide whether to give it (write it as [secret: value] so it is masked in stored transcripts) or to decline, or to take the call themselves with transfer_call_to_user. During a live call, answer quickly: after about 45 seconds without an answer (pending_question.seconds_left) the voice agent offers the callee a callback; if you need to ask your human, call hold_call_question first (one extra minute, only if the callee agrees). If the call then ended with the question still open and a callback is scheduled (get_call shows status retry_scheduled with a pending_question), the answer is still accepted: it is kept and given at the start of the callback (sending the same answer again is harmless). Any other ended call fails with wrong_call_state. Then continue with get_call.

输入参数answer必填call_id必填question_id

transfer_call_to_user

Transfer a live call to the user

Transfer a live call to the user's own phone so they can talk to the callee themselves, and get the transfer request confirmed. Compliance: the voice agent tells the callee it is handing over to the person it calls for; recommended whenever a payment or sensitive data is needed. The voice agent tells the callee it is passing the call over, rings user_phone_number, connects both sides without hanging up, then leaves the call. Use it only when the user asked to take over the conversation (or accepted when you offered) and can pick up their phone now. Fails if the call is not in progress. Follow progress with get_call: transfer events go requested → ringing → connected (or failed, in which case the voice agent stays on the line).

输入参数call_id必填user_phone_number必填

schedule_callback

Schedule a callback of a finished call

Schedule a new attempt of a finished call (same number, same task) at the time the user chose and get the scheduled time back, for instance when the callee said 'call back tomorrow after 3 pm'. Compliance: only on the user's request; limited to 3 callbacks within 14 days, at the exact time the user chose (no calling-hours window); turned off on lines where every call needs a new request from the user (error callbacks_disabled). Use it only after get_call shows done=true. To call another number or do a different task, use place_phone_call instead. The time is kept as given (at least 2 minutes from now); at most 14 days ahead and 3 callbacks per call. A real call will be placed at that time and paid like any call; cancel it with cancel_call.

输入参数call_id必填callback_at必填

cancel_call

Cancel a scheduled or live call

Cancel a call that is scheduled or in progress (including a scheduled callback or automatic retry) and get the cancelled status back. Compliance: stops any further attempt to that number for this call; nothing is charged beyond the time already spoken. A live call is hung up immediately; only the time already spoken is paid and the reserved credit is released. A scheduled call will not be placed. Use it when the user changes their mind or the task is no longer needed. Cannot be undone. Cancelling an already cancelled call has no further effect; a call that already ended cannot be cancelled.

输入参数call_id必填

list_calls

List calls

List this account's calls, newest first, and get for each one its call_id, phone number, status, outcome, task and one-line summary. Compliance: read-only, limited to this account's own calls; transcripts older than 90 days are deleted. Use it to find a call_id, to check whether a number was already called recently before placing a new call, or to answer questions such as 'what happened with my call to the garage?'. Read-only. For the full result and transcript of one call, use get_call with response_format='detailed'.

输入参数limitqueryoutcome

get_account_balance

Get remaining call time

Read the remaining call time on this account and get the minutes of conversation left on the prepaid credit (subscription minutes included, with their expiry date) and the account limits (simultaneous calls, calls per day). Compliance: read-only; no payment can be made from here (only the account owner adds credit, in the web app). Use it before a long call (e.g. one with a long hold) or after place_phone_call failed for insufficient credit. Read-only. Credit cannot be added from here: if it is low, tell the user to add credit from their account in the web app.

无需输入参数。

hold_call_question

Ask the callee for one more minute to answer the agent's question

Get one more minute to answer the voice agent's pending question: the request is passed to the voice agent, which asks the callee. Compliance: the extension happens ONLY if the callee agrees; the voice agent asks them politely and never makes anyone wait more than 2 minutes in total for one question. Use it as soon as get_call shows a pending_question you cannot answer yourself (you need to ask your human): call hold_call_question first, then ask your human. Once per question (+60 seconds). The voice agent asks the callee "can you hold for another minute, or shall I call you back?": if they agree, pending_question.seconds_left grows by 60; if they would rather be called back, the agent arranges a callback and your answer, sent later with answer_call_question, is given at the callback. Follow it with get_call (event question_hold: accepted, callee_prefers_callback or not_possible). Not for a finished call, nor when you already know the answer (just answer).

输入参数call_id必填question_id

place_batch_calls

Place the same call to a list of numbers in France

Place the same call to a list of numbers in France (Pro and Enterprise plans) and get back a batch_id with one call_id per number. Compliance: the AI disclosure is always made; marketing, prospecting, surveys and mass calling of people who did not expect it are unlawful and refused; anti-harassment limits per number apply. Use it when the user explicitly asks to make the same kind of call to several numbers they provide (e.g. confirm tomorrow's appointments with their own customers, ask several garages for a quote). The account's limits apply: calls run a few at a time (simultaneous-call limit; the rest wait their turn), the batch is refused if it exceeds the calls left for the last 24 hours, automatic retries and calls still waiting 15 minutes after the requested time stay within 08:00-21:00 callee's time. Each call is paid like a single call. Returns immediately; follow it with get_batch_calls, or each call with get_call. Starter accounts get plan_feature_required: tell the user.

输入参数nametask必填voicelanguagescheduled_atphone_numbers必填

get_batch_calls

Get the progress of a batch of calls

Get the progress and results of a batch of calls: counts by status, successes, refused numbers and, for each call, its call_id, status, outcome and summary. Compliance: read-only, limited to this account's own batches. Use it after place_batch_calls to report results to the user. Read-only. For one call's transcript, use get_call with response_format='detailed'. To stop a single call, use cancel_call.

输入参数batch_id必填

configure_agent_identity

Read or change how the voice agent introduces itself

Read or change how the voice agent introduces itself on the user's calls: name, tone, opening line, answer to "who is calling?", introduction and the AI mention in the opening. Compliance: the recommended settings (default) say "Hello, this is Léa, <user>'s virtual assistant. I'm calling about…" and answer yes when asked if it is an AI (EU AI Act art. 50); the agent never denies being an AI, whatever the settings. Call it with no argument to read the current identity, a preview of what the agent will say, and the warning. Name and tone can be changed freely. Any other change is a deviation from the recommended settings: the first attempt returns the warning (error responsibility_acceptance_required) and changes nothing. Show the warning text to the user word for word; only if the user explicitly accepts, call again with the same changes plus accept_responsibility=true and warning_version. The acceptance is logged with a timestamp and the user becomes responsible for those settings. Refused whatever the acceptance: texts claiming the agent is human, or presenting it as police, government or a bank. When to use: the user asks to rename the agent, change how it introduces itself or its tone. When not to use: a one-off greeting for a single call (put it in place_phone_call's task instead). Side effects: changes the settings for every new call of the account (calls already scheduled keep their identity). Idempotent.

输入参数tonefirst_nameintroductionopening_linewarning_versionreset_to_recommendedaccept_responsibilityai_mention_in_openingwho_is_calling_answer

版本历史

1
  1. v1.0.0最新Nov 7, 2026

评分

已满足适用检查项的 100%

该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。

  • 近 30 天内可连通必需25 分
  • 已声明认证方式必需10 分
  • 已列出工具必需15 分
  • 描述必需15 分
  • 图标10 分
  • 文档15 分
  • 许可证10 分