برای ایجنتهای هوش مصنوعی
سرور MCP SendHQ
به یک ایجنت هوش مصنوعی کنترل کامل و امن یک فضای کاری SendHQ را بدهید: ارسال و دریافت ایمیل، تأیید دامنهها، انتشار قالبها و بررسی تحویلپذیری از طریق 59 ابزار با نوعدهی سختگیرانه. در درجه اول برای ایجنتها نوشته شده است؛ انسانها هم خوش آمدند.
curl -fsSL https://downloads.sendhq.cc/install.sh | sh
claude mcp add sendhq --env SENDHQ_API_KEY=re_your_key -- sendhq mcpاین سرور چیست
سرور MCP SendHQ به یک ایجنت هوش مصنوعی اجازه میدهد یک فضای کاری SendHQ را از طریق Model Context Protocol اداره کند: ارسال ایمیل (تکی، دستهای، مبتنی بر قالب، پاسخ، پیوست، تلاش مجدد idempotent)، خواندن و جستجوی ایمیلهای ارسالی و دریافتی (موضوع، متن و نام پیوستها) و رویدادهای تحویل آنها، سازماندهی ایمیلها در برچسبها با قوانین بایگانی خودکار، مدیریت پیشنویسها و پیوستهای خصوصی، نوشتن و انتشار قالبهای میزبانیشده، افزودن و تأیید دامنهها و DNS آنها، راهاندازی دریافت ایمیل ورودی و نشانیهای ورودی، بررسی تحویلپذیری، برگشتها، گزارشهای اسپم و فهرست توقف ارسال، و خواندن میزان مصرف حساب، وضعیت صورتحساب، analytics و فراداده کلیدهای API.
این یک سرور محلی stdio است که در فایل اجرایی CLI sendhq تعبیه شده است. کلاینت MCP شما sendhq mcp را بهعنوان یک پردازه فرزند اجرا میکند و از طریق stdin/stdout با JSON-RPC ارتباط برقرار میکند. هر فراخوانی ابزار به یک درخواست مستند به REST API SendHQ در https://sendhq.cc/api/v1 تبدیل میشود که با کلید API فضای کاری شما احراز هویت شده است؛ بنابراین سرور MCP دقیقاً مجوزهای همان کلید را دارد و نه بیشتر.
- 59 ابزار در 8 گروه، تولیدشده از یک کاتالوگ واحد که بهصورت tools.json نیز منتشر شده است.
- JSON Schemaهای سختگیرانه: آرگومانهای ناشناخته، نوعهای اشتباه و فیلدهای الزامی جاافتاده پیش از رسیدن هر چیزی به SendHQ، بهصورت محلی رد میشوند.
- خطاهای ساختاریافته با یک
codeپایدار،statusHTTP، یکexplanation، یکremedyمشخص و اینکه آیا تلاش مجدد کمکی میکند یا نه. - هر ابزاری که ایمیل واقعی ارسال میکند یا دادهای را از بین میبرد، این موضوع را در نخستین کلمات توضیح خود اعلام میکند و annotationهای ایمنی MCP دارد.
- حالت
--read-onlyهمه ابزارهای ارسال و تغییردهنده را پنهان میکند. - هیچ چیزی لاگ نمیشود. stdout فقط پیامهای پروتکل را حمل میکند؛ کلید API و محتوای پیام هرگز به هیچ لاگی نمیرسند.
https://sendhq.cc/api/mcp میزبانی میکند (جستجوی قیمتها و مستندات، بدون دسترسی به حساب). سروری که در این صفحه معرفی میشود، نسخه کامل و محدود به حساب است؛ بهصورت محلی یا بهعنوان connector میزبانیشده زیر اجرا میشود.استفاده از SendHQ در Claude و ChatGPT
بدون نیاز به نصب: SendHQ این سرور را با همان ابزارها بهعنوان یک connector میزبانیشده در https://mcp.sendhq.cc/mcp نیز اجرا میکند. بهجای چسباندن کلید، با حساب SendHQ خود وارد میشوید.
Claude
- Settings → Connectors را باز کنید و SendHQ را در فهرست پیدا کنید، یا Add custom connector را انتخاب کنید و
https://mcp.sendhq.cc/mcpرا بچسبانید. - روی Connect کلیک کنید، وارد SendHQ شوید، دسترسیها را بازبینی کنید و روی Allow کلیک کنید.
- از Claude بخواهید صندوق ورودی شما را بررسی کند، از دامنه تأییدشدهتان ایمیل بفرستد یا یک برگشت ایمیل را توضیح دهد.
ChatGPT
- Open Settings → Security and login and turn on Developer mode.
- Go to chatgpt.com/plugins, click Create MCP app, name it SendHQ and enter
https://mcp.sendhq.cc/mcp. - Sign in to SendHQ and click Allow, then pick SendHQ from the tools menu in a new chat.
Muse by Meta
In Muse, open Connectors and search for SendHQ. Click Connect, sign in to SendHQ and click Allow.
تأیید و قطع اتصال
- The
request_featuretool sends a feature request to the SendHQ team with your account details, so we can follow up by email. - ابزارهایی که ایمیل واقعی ارسال میکنند یا داده حذف میکنند به همین صورت برچسب خوردهاند. اینکه دستیار پیش از اجرا از شما بپرسد یا نه، برای هر ابزار در خود دستیار تنظیم میشود: در Claude، برای این ابزارها در Settings → Connectors → SendHQ گزینه Needs approval را انتخاب کنید.
- connector کلید API مخصوص خود را دریافت میکند که به نام دستیار نامگذاری میشود (برای مثال “Claude (AI connector)”). برای قطع فوری اتصال، آن را در بخش API Keys حذف کنید.
- این connector نمیتواند کلید API بسازد یا باطل کند یا صورتحساب را تغییر دهد. پیوستها بهصورت base64 ارسال و بازگردانده میشوند؛ هیچ دسترسیای به فایلهای محلی وجود ندارد.
- فضاهای کاری پرداختنشده (دوره آزمایشی یکپارچهسازی) فقط میتوانند به ایمیل حساب یا یک نشانی شبیهساز AWS SES تحویل دهند.
پرسشها: postmaster@sendhq.cc. حریم خصوصی: sendhq.cc/privacy.
نصب
فایل اجرایی sendhq را نصب کنید (Linux، macOS و Windows روی x86-64 و arm64). نصبکننده checksum نسخه را بررسی میکند و فایل اجرایی را بهطور پیشفرض در ~/.local/bin قرار میدهد.
curl -fsSL https://downloads.sendhq.cc/install.sh | shirm https://downloads.sendhq.cc/install.ps1 | iexsendhq version
SENDHQ_API_KEY=re_your_key sendhq doctorیک کلید API در داشبورد به نشانی https://sendhq.cc/app#/keys بسازید. سرور MCP نمیتواند کلید بسازد. تنها دستوری که سرور را اجرا میکند این است:
SENDHQ_API_KEY=re_your_key sendhq mcpمعمولاً هرگز لازم نیست آن را دستی اجرا کنید: کلاینت MCP آن را راهاندازی میکند. اگر در ترمینال اجرا شود، منتظر JSON-RPC روی stdin میماند.
پیکربندی کلاینت
Claude Code
claude mcp add sendhq --env SENDHQ_API_KEY=re_your_key -- sendhq mcp
# read-only variant
claude mcp add sendhq-readonly --env SENDHQ_API_KEY=re_your_key -- sendhq mcp --read-onlyبرای در دسترس بودن در همه پروژهها --scope user را اضافه کنید، یا --scope project را اضافه کنید تا در .mcp.json پروژه نوشته شود. برای یک .mcp.json مشترک، بهجای commit کردن کلید، از متغیر محیطی به آن ارجاع دهید؛ Claude Code عبارت ${VAR} را در .mcp.json جایگذاری میکند.
{
"mcpServers": {
"sendhq": {
"command": "sendhq",
"args": [
"mcp"
],
"env": {
"SENDHQ_API_KEY": "${SENDHQ_API_KEY}"
}
}
}
}OpenAI Codex
[mcp_servers.sendhq]
command = "sendhq"
args = ["mcp"]
env = { SENDHQ_API_KEY = "re_your_key" }یا از خط فرمان: codex mcp add sendhq --env SENDHQ_API_KEY=re_your_key -- sendhq mcp.
Claude Desktop
فایل claude_desktop_config.json را ویرایش کنید (macOS: ~/Library/Application Support/Claude/، Windows: %APPDATA%\Claude\) و برنامه را دوباره راهاندازی کنید. برنامههای دسکتاپ PATH شل شما را به ارث نمیبرند، پس از مسیر مطلق فایل اجرایی (which sendhq) استفاده کنید.
{
"mcpServers": {
"sendhq": {
"command": "/Users/you/.local/bin/sendhq",
"args": [
"mcp"
],
"env": {
"SENDHQ_API_KEY": "re_your_key"
}
}
}
}هر کلاینت MCP دیگر
یک سرور stdio با دستور sendhq، آرگومانهای ["mcp"] (و بهصورت اختیاری "--read-only") و متغیرهای محیطی زیر پیکربندی کنید. سرور از نسخههای پروتکل MCP 2024-11-05، 2025-03-26، 2025-06-18 و 2025-11-25 پشتیبانی میکند و initialize، ping، tools/list و tools/call را پیادهسازی میکند. نتایج ابزارها هم یک بلوک متنی JSON و هم structuredContent دارند.
{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-06-18","capabilities":{},"clientInfo":{"name":"probe","version":"1"}}}
{"jsonrpc":"2.0","method":"notifications/initialized"}
{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"get_service_health","arguments":{}}}برای سرور محدود به حساب، انتقال HTTP میزبانیشده وجود ندارد. یک endpoint راه دور MCP با قابلیت نوشتن به OAuth برای هر کاربر نیاز دارد که SendHQ ارائه نمیکند؛ فایل اجرایی محلی کلید را روی همان ماشینی نگه میدارد که از قبل آن را در اختیار دارد.
متغیرهای محیطی و flagها
| متغیر یا flag | الزامی | معنا |
|---|---|---|
SENDHQ_API_KEY | بله | کلید API فضای کاری (re_…). همه ابزارها بهجز get_service_health به آن نیاز دارند. بدون آن سرور همچنان اجرا میشود و هر فراخوانی یک auth_error ساختاریافته برمیگرداند که روش رفع مشکل را توضیح میدهد. |
SENDHQ_API_BASE_URL | خیر | URL پایه API. پیشفرض https://sendhq.cc/api/v1. فقط برای استقرار محلی یا staging از آن استفاده کنید. SENDHQ_BASE_URL بهعنوان نام مستعار قدیمیتر پذیرفته میشود. |
SENDHQ_MCP_READ_ONLY | خیر | 1، true یا yes مانند --read-only عمل میکند. |
--read-only | خیر | فقط ابزارهایی را در اختیار بگذارید که نه ایمیل ارسال میکنند و نه وضعیت را تغییر میدهند. ابزارهای پنهان اگر با نام فراخوانی شوند نیز رد میشوند. |
SENDHQ_PROFILE / --profile | خیر | بهجای SENDHQ_API_KEY از کلیدی استفاده کنید که sendhq auth login در keyring سیستمعامل ذخیره کرده است. اگر هر دو وجود داشته باشند، متغیر محیطی اولویت دارد. |
کلید فقط بهصورت هدر Authorization: Bearer به URL پایه پیکربندیشده ارسال میشود. هرگز چاپ، لاگ، در خطاها تکرار یا در نتایج ابزارها گنجانده نمیشود.
مدل ایمنی برای ایجنتها
- ایمیل واقعی ارسال میکند.
send_email،send_batchوsend_template_testایمیل را به افراد واقعی تحویل میدهند و اعتبار تحویل مصرف میکنند. توضیح آنها باSENDS REAL EMAILشروع میشود. فقط زمانی آنها را فراخوانی کنید که کاربر صراحتاً ارسال همان پیام مشخص را خواسته باشد و گیرندگان، فرستنده و محتوا تأیید شده باشند. - مخرب.
delete_email،delete_draft،delete_attachment،delete_domain،delete_inboxوremove_suppressionباdestructiveHint: trueعلامتگذاری شدهاند و توضیحشان باDESTRUCTIVEشروع میشود. ابتدا از کاربر تأیید بگیرید.remove_suppressionیک مانع ایمنی را تضعیف میکند و فقط زمانی مناسب است که انسانی تأیید کند آن نشانی دوباره کار میکند. - تغییر وضعیت میدهد. ساخت یا بهروزرسانی پیشنویسها، قالبها، دامنهها و صندوقهای ورودی، انتشار قالبها و آغاز تأیید، فضای کاری را تغییر میدهند اما ایمیلی ارسال نمیکنند.
- فقطخواندنی. همه موارد دیگر
readOnlyHint: trueهستند و فراخوانی آزادانه آنها امن است. - این سرور هرگز DNS را تغییر نمیدهد.
add_domainرکوردهایی را برمیگرداند که یک انسان باید منتشر کند؛get_domain_connect_linkیک URL رضایت برمیگرداند که یک شخص باید آن را باز کند و نزد ارائهدهنده DNS خود تأیید کند. - این سرور هرگز صورتحساب را تغییر نمیدهد.
get_accountفقط پلن، میزان مصرف و وضعیت اشتراک را میخواند. - فضاهای کاری پرداختنشده (دوره آزمایشی یکپارچهسازی) فقط میتوانند به ایمیل مالک حساب (
get_account→user.email) یا یک نشانی شبیهساز AWS SES مانندsuccess@simulator.amazonses.comتحویل دهند و نمیتوانند پیوست ارسال کنند. - پذیرفتهشده به معنای تحویلشده نیست. ارسال موفق یک شناسه برمیگرداند؛ شواهد تحویل، برگشت و گزارش اسپم بعداً در
list_email_eventsمیرسند. هرگز ادعا نکنید ایمیل به صندوق ورودی رسیده یا شخصی پیام را خوانده است. - برای دور زدن توقف
423به نشانی From دیگری تغییر ندهید و هرگز گیرندگانی را که لغو اشتراک کرده یا گزارش اسپم دادهاند دوباره اضافه نکنید.
کلیدهای API خارج از محدودهاند
طبق طراحی، هیچ ابزاری برای ساخت، تغییر، چرخش، ابطال یا حذف کلیدهای API وجود ندارد. ایجنت نباید اعتبارنامه بسازد یا از بین ببرد. list_api_keys فقط نامها، پیشوندهای غیرمحرمانه و زمان آخرین استفاده را برمیگرداند. مدیریت کلیدها در داشبورد و توسط انسانی که وارد شده باقی میماند.
گردشکارها
1. اولین ارسال
get_service_healthدر دسترس بودن API را تأیید میکند (بدون کلید هم کار میکند).get_accountپلن (access.tier)، سهمیه باقیمانده وuser.emailرا نشان میدهد. در دوره آزمایشی، همین ایمیل تنها گیرنده واقعی مجاز است.list_sending_identitiesنشانیهای From قابلاستفاده را فهرست میکند. اگر خالی بود، ابتدا گردشکار دامنه را انجام دهید.- فرستنده، گیرنده، موضوع و متن را با کاربر تأیید کنید، سپس
send_emailرا با یکidempotency_keyفراخوانی کنید. list_email_eventsباidبرگشتی، پس از گزارش ارائهدهنده (معمولاً چند ثانیه تا چند دقیقه)delivery،bounce،complaintیاrejectرا نشان میدهد.
{
"name": "send_email",
"arguments": {
"from": "Acme <hello@example.com>",
"to": [
"owner@example.com"
],
"subject": "SendHQ is connected",
"text": "It works.",
"idempotency_key": "first-send-2026-09-26"
}
}2. تأیید دامنه از ابتدا تا انتها
add_domainرا باname: "example.com"فراخوانی کنید. نتیجه شامل رکوردهای DNS است (CNAMEهای DKIM، تأیید SES، SPF، DMARC پیشنهادی).get_dns_providerباdomain_idارائهدهنده DNS معتبر (authoritative) را تشخیص میدهد و host نسبی دقیقی را که باید برای هر رکورد نزد آن ارائهدهنده وارد شود برمیگرداند.- اگر
providers.domainConnect.availableبرابر true باشد،get_domain_connect_linkیک URL رضایت برمیگرداند. آن را به انسان بدهید؛ تا زمانی که او نزد ارائهدهنده تأیید نکند، چیزی تغییر نمیکند. در غیر این صورت، رکوردها را برای انتشار به انسان بدهید. هرگز رکورد SPF دوم منتشر نکنید:include:amazonses.comرا در مقدار موجودv=spf1ادغام کنید. verify_domainدوباره DNS و SES را بررسی میکند. وضعیت ازpending،checkingوpropagatingبهverifiedمیرسد. هر 30 تا 60 ثانیهverify_domainیاget_domainرا فراخوانی کنید؛ DNS ممکن است چند دقیقه تا چند ساعت طول بکشد.- وقتی
statusبرابرverifiedشد، نشانیهای دامنه درlist_sending_identitiesظاهر میشوند.
3. برگشتها، گزارشهای اسپم و فهرست توقف ارسال
list_blocked_recipientsهمه نشانیهای مسدودشده را همراه با دلیل (bounce،complaint،unsubscribe) و یک شمارش خلاصه برمیگرداند.list_suppressionsموارد توقف ارسال ناشی از برگشت دائمی و گزارش اسپم را برمیگرداند؛deliverability_statsنرخهای 30 روزه تحویل، برگشت و گزارش اسپم را میدهد؛list_sender_reputationنشان میدهد کدام نشانیهای From محدود یا متوقف شدهاند.- ارسالی که شامل گیرندهای در فهرست توقف ارسال باشد با
422 recipient_suppressedشکست میخورد. آن گیرنده را حذف کنید و دوباره ارسال کنید. - فقط وقتی انسانی تأیید کند که صندوق ایمیلی که برگشت خورده اکنون کار میکند،
remove_suppressionرا فراخوانی کنید. موارد توقف ارسال ناشی از گزارش اسپم دائمیاند (409 complaint_suppression_locked).
4. دریافت ایمیل ورودی
- دامنه (اغلب یک زیردامنه مانند
inbound.example.com) باید تأیید شده باشد. setup_inboundدریافت را راهاندازی میکند و یک رکورد MX برمیگرداند. یک انسان آن را منتشر میکند.verify_inboundرا تا زمانی کهstatusبرابرreadyشود فراخوانی کنید.create_inboxباdomain_idوlocal_part(برای مثالsupport) نشانیsupport@inbound.example.comرا میسازد.list_emailsرا باdirection: "in"وunread: true(و بهصورت اختیاریinbox_id) بهطور دورهای فراخوانی کنید. پیام را باget_email، مکالمه آن را باget_threadو پیوستها را باdownload_attachmentبخوانید و باmark_email(read: true) آن را رسیدگیشده علامت بزنید.- با
send_emailوreply_to_email_idدر همان رشته گفتگو پاسخ دهید؛ SendHQ هدرهای In-Reply-To و References و رشته گفتگو را تنظیم میکند.
5. وبهوکها و اعلان رویدادها
SendHQ در حال حاضر وبهوک قابلپیکربندی برای مشتری ارائه نمیکند، بنابراین ابزاری برای وبهوک وجود ندارد. اعلانهای ارائهدهنده درون SendHQ پردازش و از طریق عملیات خواندن در دسترس قرار میگیرند. بهجای آن بهطور دورهای پرسوجو کنید: list_email_events برای نتیجه یک پیام، list_emails با status (برای مثال bounced) یا after برای تغییرات اخیر، list_emails با direction: "in" و unread: true برای ایمیلهای ورودی جدید و list_blocked_recipients برای موارد جدید توقف ارسال. برای هر پرسش بیش از حدود یک بار در دقیقه پرسوجو نکنید.
6. عیبیابی شکست تحویل
- پیام را پیدا کنید:
list_emailsباdirection: "out"وtoیاquery، یاget_emailاگر شناسه را دارید.status: failedیعنی SendHQ یا ارائهدهنده آن را هنگام ارسال رد کرده است؛ خطای ثبتشده در ایمیل دلیل آن را توضیح میدهد. list_email_events:bounce(دائمی یا گذرا، همراه با پیام تشخیصی ارائهدهنده)،complaint،rejectیاdelivery. نبود رویداد یعنی ارائهدهنده هنوز گزارشی نداده است؛ صبر کنید و دوباره بررسی کنید.- اگر خود فراخوانی ارسال شکست خورده است،
codeخطا را بخوانید:sender_domain_unverified← تأیید دامنه را کامل کنید؛recipient_suppressed← آن نشانی پیشتر برگشت دائمی خورده یا گزارش اسپم داده است؛sender_paused→list_sender_reputationرا بررسی کنید و منبع فهرست را اصلاح کنید؛trial_recipient_restricted← محدودیتهای دوره آزمایشی؛quota_exhausted← میزان مصرف درget_account. get_domainبررسی میکند که DKIM، SPF و DMARC همچنان منتشر شده باشند؛deliverability_statsنشان میدهد مشکل مربوط به یک پیام است یا یک روند.- آنچه را شواهد نشان میدهند گزارش کنید. رویداد
deliveryیعنی سرور گیرنده پیام را پذیرفته است، نه اینکه به صندوق ورودی رسیده یا خوانده شده است.
7. مالکیت یک bucket کاری (برچسبها)
create_labelرا باname(برای مثالAgent/Orders) وskip_inbox: trueفراخوانی کنید. این کار برچسب را به یک bucket تبدیل میکند: ایمیل دریافتیای که این برچسب را بگیرد بایگانی میشود، پس فقط در آن برچسب نمایش داده میشود و هرگز در صندوق ورودی انسان نمیآید.- ایمیلهای کاری را با
send_email(یاsend_batch) وlabels: ["Agent/Orders"]ارسال کنید. پاسخها به آن مکالمه بهطور خودکار برچسب را به ارث میبرند و از صندوق ورودی عبور نمیکنند. - برای ایمیلهایی که خارج از مکالمههای شما آغاز میشوند، یک قانون بایگانی اضافه کنید:
create_label_ruleباinbox_id(یک نشانی اختصاصی مانندorders@…)،from،toیاsubject. برای بایگانی ایمیلهایی که قبلاً دریافت شدهاند،apply_to_existing: trueرا ارسال کنید. - کار با bucket:
list_emailsباlabel: "Agent/Orders"،direction: "in"وunread: true؛ باget_emailیاget_threadبخوانید، باsend_emailوreply_to_email_idپاسخ دهید و پس از رسیدگیmark_emailرا باread: trueفراخوانی کنید. - یک پیام سرگردان را با
label_email(add/remove) وارد یا خارج کنید. افزودن برچسب bucket به یک پیام دریافتی، آن را بایگانی هم میکند. - بهصورت اختیاری،
set_inbox_forwardingیک نسخه از هر چیزی را که یک نشانی دریافت میکند به صندوق ایمیل دیگری میفرستد (مقصد ابتدا از طریق ایمیل تأیید میکند).
{
"name": "send_email",
"arguments": {
"from": "Orders <orders@example.com>",
"to": [
"customer@example.net"
],
"subject": "Order 1042: confirm delivery window",
"text": "Reply with a time that works.",
"labels": [
"Agent/Orders"
],
"idempotency_key": "order-1042-window"
}
}8. پیوستها و قالبها
در یک پلن پولی، حداکثر 10 فایل را با attachments در send_email پیوست کنید (هر کدام به content_base64 یا یک file_path محلی نیاز دارد؛ filename بهطور پیشفرض نام پایه فایل است). برای قالبهای میزبانیشده: create_template → update_template_draft → render_template برای پیشنمایش با داده نمونه ← send_template_test (یک ایمیل آزمایشی واقعی میفرستد) ← publish_template، سپس با send_email یا send_batch و با استفاده از template: {key, data} و دقیقاً یک گیرنده to ارسال کنید.
نتایج، صفحهبندی و خطاها
فراخوانی موفق، شیء JSON پاسخ API را بهصورت structuredContent و بهصورت یک بلوک متنی JSON برمیگرداند. همه ابزارهای list_* پارامترهای limit (1 تا 200، پیشفرض 50) و offset را میپذیرند و یک شیء pagination اضافه میکنند. تا زمانی که has_more برابر true است، با offset: pagination.next_offset به فراخوانی ادامه دهید.
{
"data": [
"…"
],
"count": 50,
"pagination": {
"offset": 0,
"limit": 50,
"returned": 50,
"total": 180,
"has_more": true,
"next_offset": 50
}
}فراخوانی ناموفق isError: true را همراه با یک خطای ساختاریافته برمیگرداند. بهجای تلاش مجدد کورکورانه، از remedy پیروی کنید؛ فقط وقتی retryable برابر true است دوباره تلاش کنید.
{
"error": {
"code": "trial_recipient_restricted",
"status": 402,
"message": "The integration trial can deliver only to your account email or an AWS SES simulator address",
"retryable": false,
"explanation": "This workspace is on the unpaid integration trial. Trial sends can be delivered only to the account owner's email address or an AWS SES simulator address.",
"remedy": "Send to the account email (get_account -> user.email) or a simulator address such as success@simulator.amazonses.com to test. To email anyone else, the account owner must activate a paid plan in the dashboard (Profile & Billing). Do not retry the same recipients."
}
}فیلدهای اختیاری خطا: request_id (آن را به پشتیبانی اعلام کنید)، retry_after_seconds، problems (فهرست موارد نقض schema برای invalid_arguments) و idempotent_replayed (بخش idempotency را ببینید).
idempotency
send_email و send_batch پارامتر idempotency_key (حداکثر 200 کاراکتر) را میپذیرند که بهصورت هدر Idempotency-Key ارسال میشود. برای هر پیام منطقی یک کلید پایدار بسازید، برای مثال invoice-4812-receipt.
- تلاش مجدد باید از همان کلید و بدنه درخواست کاملاً یکسان استفاده کند. همان کلید با هر تغییری (گیرنده، موضوع، متن، هدر، داده قالب، حتی مقادیر آرگومانها)
409 idempotency_conflictبرمیگرداند. - همان کلید، همان بدنه و درخواست اصلی تمامشده: SendHQ نتیجه ذخیرهشده را بدون ارسال مجدد برمیگرداند. این روش امن تلاش مجدد پس از timeout یا
network_errorاست. - همان کلید در حالی که درخواست اصلی هنوز در حال اجراست:
409 idempotency_in_progressکه پس از کمی صبر قابل تلاش مجدد است. - یک پیام منطقی جدید به کلید جدید نیاز دارد.
- شکستهای ذخیرهشده نیز بازپخش میشوند. اگر تلاش اول شکست خورده باشد، تلاش مجدد با همان کلید همان شکست را با
idempotent_replayed: trueوretryable: falseبرمیگرداند. باlist_emails(direction: out) مطمئن شوید چیزی ارسال نشده، علت را برطرف کنید و سپس با یک کلید جدید ارسال کنید. - سرور هرگز بهطور خودکار یک POST را دوباره تلاش نمیکند. فقط فراخوانیهای فقطخواندنی GET بهطور خودکار دوباره تلاش میشوند (حداکثر 3 تلاش در خطاهای شبکه، 429 و 5xx).
send_emailباattachmentsدرونخطی نمیتواندidempotency_keyبگیرد، چون چند درخواست را اجرا میکند. برای ارسال پیوست بهصورت امن برای تلاش مجدد:create_draft→upload_attachment→send_emailباdraft_idوidempotency_key.
{
"name": "send_email",
"arguments": {
"from": "Acme <billing@example.com>",
"to": [
"owner@example.com"
],
"subject": "Receipt #4812",
"text": "Thanks for your payment.",
"idempotency_key": "receipt-4812"
}
}محدودیت نرخ و سهمیهها
SendHQ محدودیت ثابتی برای تعداد درخواست در ثانیه API اعلام نمیکند. محدودیتهایی که ایجنت در عمل با آنها روبهرو میشود، محدودیتهای مصرف هستند که بهصورت 429 برگردانده میشوند:
- تحویل ماهانه به گیرندگان برای هر پلن. هر نشانی To، Cc و Bcc یک تحویل حساب میشود.
get_account→usage.recipientDeliveriesرا در برابرusage.emailQuotaMonthببینید. - تعداد گیرندگان روزانه برای هر نشانی From مشخص که وضعیت اعتبار آن فرستنده تعیین میکند (
list_sender_reputation→dailyLimit، بهطور پیشفرض 2,000 در پلنهای پولی). - دوره آزمایشی یکپارچهسازی: در مجموع 100 گیرنده، فقط به ایمیل حساب یا نشانیهای شبیهساز SES.
- پیوستها: حداکثر 10 فایل و 10 MB برای هر پیام؛ در پلنهای پولی 10 GB انتقال پیوست وزندهیشده بر اساس گیرنده در ماه.
- برای هر درخواست: To + Cc + Bcc حداکثر 100 نشانی؛
send_batchحداکثر 100 پیام. - قطعکننده مدار اعتبار: در یک بازه متحرک 7 روزه، برگشتها یا گزارشهای اسپم بیش از آستانه، یک نشانی From را محدود یا متوقف میکنند (
423 sender_paused). پس از کاهش نرخها، بهطور خودکار بازیابی میشود.
quota_exhausted تا زمان بازنشانی دوره یا تغییر پلن قابل تلاش مجدد نیست. rate_limited پس از retry_after_seconds قابل تلاش مجدد است؛ برای ارسالها با همان idempotency_key و بدنه یکسان دوباره تلاش کنید.
فهرست خطاها
code پایدار است؛ منطق برنامه را بر اساس آن بنویسید، نه بر اساس message.
| code | HTTP | تلاش مجدد؟ | معنا و اقدام لازم |
|---|---|---|---|
invalid_arguments | — | خیر | آرگومانها بهصورت محلی از JSON Schema ابزار عبور نکردند؛ چیزی به SendHQ نرسید. فیلدهای فهرستشده در problems را اصلاح کنید. |
auth_error | 401 | خیر | کلید API وجود ندارد، باطل شده یا اشتباه است. SENDHQ_API_KEY را برای پردازه سرور تنظیم کنید؛ کلیدها را یک انسان در داشبورد میسازد. |
trial_recipient_restricted | 402 | خیر | دوره آزمایشی یکپارچهسازی فقط میتواند به ایمیل حساب یا یک نشانی شبیهساز SES تحویل دهد. به آنجا ارسال کنید یا مالک حساب یک پلن پولی فعال کند. |
payment_required | 402 | خیر | این قابلیت به پلن پولی نیاز دارد (برای مثال پیوستها). بدون آن ارسال کنید یا پلن را ارتقا دهید. |
sender_domain_not_owned | 403 | خیر | دامنه From در این فضای کاری نیست. از list_sending_identities یا add_domain استفاده کنید. |
sender_domain_unverified | 403 | خیر | دامنه From هنوز تأیید نشده است. get_domain، انتشار رکوردهای جاافتاده، verify_domain. |
domain_limit_reached | 403 | خیر | به سقف تعداد دامنه پلن رسیدهاید. یک دامنه بلااستفاده را (با تأیید) حذف کنید یا پلن را ارتقا دهید. |
marketing_not_enabled | 403 | خیر | کلاس marketing برای این دامنه یا پلن فعال نیست. فقط در صورتی از transactional استفاده کنید که پیام واقعاً تراکنشی باشد. |
forbidden | 403 | خیر | سیاستها اجازه این عملیات را نمیدهند. درخواست را اصلاح کنید. |
not_found | 404 | خیر | این شناسه در این فضای کاری نیست. منبع را فهرست کنید تا شناسه درست را پیدا کنید؛ قالبهای بایگانیشده را ابتدا بازیابی کنید. |
idempotency_conflict | 409 | خیر | کلید با بدنه متفاوتی دوباره استفاده شده است. دقیقاً درخواست اصلی را دوباره ارسال کنید یا برای پیام جدید از کلید جدید استفاده کنید. |
idempotency_in_progress | 409 | بله | درخواست اصلی هنوز در حال اجراست. صبر کنید، سپس با همان کلید و بدنه دوباره تلاش کنید. |
revision_conflict | 409 | خیر | پیشنویس قالب از زمانی که آن را خواندید تغییر کرده است. get_template، ادغام، ذخیره دوباره. |
complaint_suppression_locked | 409 | خیر | گیرنده گزارش اسپم داده است. هرگز دوباره به او ایمیل نزنید. |
inbound_not_ready | 409 | خیر | دریافت ایمیل ورودی آماده نیست. setup_inbound، انتشار MX، verify_inbound. |
conflict | 409 | خیر | منبع از قبل وجود دارد یا در وضعیت نادرستی است. آن را بخوانید و اصلاح کنید. |
attachments_too_large | 413 | خیر | بیش از 10 فایل یا 10 MB. پیوستها را حذف یا کوچک کنید. |
recipient_suppressed | 422 | خیر | یک گیرنده پیشتر برگشت دائمی خورده یا گزارش اسپم داده است. او را حذف کنید؛ list_blocked_recipients را ببینید. |
recipient_unsubscribed | 422 | خیر | یک گیرنده اشتراک ایمیلهای بازاریابی را لغو کرده است. او را برای همیشه حذف کنید. |
validation_failed | 422 | خیر | محتوا رد شد، برای مثال داده قالبی که قرارداد متغیرها را نقض میکند. ورودی را اصلاح کنید. |
sender_paused | 423 | خیر | این نشانی From توسط قطعکننده مدار 7 روزه برگشت/گزارش اسپم متوقف شده است. ارسال را متوقف کنید، فهرست را اصلاح کنید و منتظر بازیابی خودکار بمانید. |
quota_exhausted | 429 | خیر | به سقف ماهانه، روزانه برای هر فرستنده، پیوست یا دوره آزمایشی رسیدهاید. get_account را بررسی کنید؛ منتظر بازنشانی بمانید یا پلن را ارتقا دهید. |
rate_limited | 429 | بله | سرعت را کم کنید؛ به اندازه retry_after_seconds صبر کنید. ارسالها: همان کلید، همان بدنه. |
server_error | 5xx | بله | خطای موقت SendHQ یا ارائهدهنده. با backoff دوباره تلاش کنید؛ ارسالها با همان کلید و بدنه. اگر idempotent_replayed برابر true است، پس از اطمینان از اینکه چیزی ارسال نشده، از کلید جدید استفاده کنید. |
network_error | — | بله | درخواست یا پاسخ از دست رفت. دوباره تلاش کنید؛ برای ارسالها، همان idempotency_key این کار را امن میکند. |
invalid_request | 400 | خیر | درخواست نادرست است. message را بخوانید و آن را اصلاح کنید. |
tool_error | — | خیر | خطای محلی درون سرور MCP (برای مثال یک file_path غیرقابلخواندن). message را بخوانید. |
مرجع ابزارها
هر ابزار همراه با کلاس ایمنی، endpoint REST که فراخوانی میکند، پارامترها، ساختار خروجی و یک شیء params نمونه برای tools/call. پارامترها دقیقاند: سرور هر چیزی را که فهرست نشده باشد رد میکند.
ایمیلها و رشتههای گفتگو: send_email، send_batch، list_emails، get_email، mark_email، delete_email، list_email_events، get_thread
برچسبها و قوانین بایگانی خودکار: list_labels، get_label، create_label، update_label، delete_label، create_label_rule، delete_label_rule، label_email
پیشنویسها، پیوستها و هویتهای فرستنده: list_sending_identities، create_draft، list_drafts، get_draft، update_draft، delete_draft، upload_attachment، download_attachment، delete_attachment
قالبهای میزبانیشده: list_templates، create_template، get_template، update_template_draft، create_template_draft، render_template، send_template_test، publish_template، archive_template، restore_template
دامنهها و DNS: list_domains، get_domain، add_domain، verify_domain، delete_domain، get_dns_provider، get_domain_connect_link
ایمیل ورودی: setup_inbound، verify_inbound، list_inboxes، get_inbox، create_inbox، update_inbox، set_inbox_forwarding، delete_inbox
تحویلپذیری، برگشتها و فهرست توقف ارسال: deliverability_stats، list_sender_reputation، list_suppressions، remove_suppression، list_blocked_recipients
حساب، میزان مصرف، analytics و کلیدها: get_account، get_analytics، list_api_keys، get_service_health
هیچ ابزاری با این فیلتر مطابقت ندارد.
ایمیلها و رشتههای گفتگو
send_emailارسال یک ایمیل
SENDS REAL EMAIL (ایمیل واقعی ارسال میکند). یک پیام از یک دامنه تأییدشده ارسال کنید: html/text خام، یک قالب میزبانیشده منتشرشده، پاسخ در یک رشته گفتگوی موجود یا پیامی همراه با پیوست. idempotency_key را ارسال کنید تا تلاش مجدد نتواند دو بار ارسال کند؛ تلاش مجدد باید از همان کلید و درخواست کاملاً یکسان استفاده کند، وگرنه SendHQ کد 409 برمیگرداند. attachments یک میانبر است که یک پیشنویس میسازد، هر فایل را بارگذاری میکند و با همان پیشنویس ارسال میکند؛ نمیتوان آن را با idempotency_key یا draft_id ترکیب کرد (برای ارسال پیوست بهصورت امن برای تلاش مجدد از create_draft + upload_attachment + send_email با draft_id استفاده کنید). فضاهای کاری پرداختنشده (دوره آزمایشی یکپارچهسازی) فقط میتوانند به ایمیل حساب یا یک نشانی شبیهساز AWS SES تحویل دهند و نمیتوانند پیوست ارسال کنند.
دستکم یکی از این موارد را ارائه دهید: html، text، template.
| پارامتر | نوع | الزامی | توضیح |
|---|---|---|---|
from | string | بله | فرستنده، مثلاً Acme <hello@example.com>. دامنه باید در این فضای کاری تأیید شده باشد (list_sending_identities را ببینید). (حداکثر 998 کاراکتر) |
to | string[] | بله | گیرندگان. هر مورد یک نشانی است، بهصورت اختیاری همراه با نام نمایشی. مجموع to+cc+bcc حداکثر 100 است؛ هر مقصد یک اعتبار تحویل مصرف میکند. (1 تا 100 مورد) |
cc | string[] | خیر | گیرندگان رونوشت (Cc). (0 تا 100 مورد) |
bcc | string[] | خیر | گیرندگان رونوشت مخفی (Bcc). (0 تا 100 مورد) |
subject | string | خیر | موضوع ایمیل. هنگام ارسال با قالب آن را حذف کنید. (حداکثر 998 کاراکتر) |
text | string | خیر | متن ساده. text، html یا template را ارائه دهید. |
html | string | خیر | بدنه HTML. SendHQ آن را پاکسازی میکند و وقتی text حذف شده باشد، متن را از آن استخراج میکند. |
reply_to | string | خیر | نشانی Reply-To. |
headers | object | خیر | هدرهای سفارشی امن اضافی (با مقادیر رشتهای)، مثلاً {"X-Entity-Ref-ID": "123"}. هدرهای مسیریابی مانند From/To/Message-ID را SendHQ کنترل میکند. |
message_class | string | خیر | transactional (پیشفرض) یا marketing. marketing به پلن یا دامنهای با قابلیت بازاریابی نیاز دارد و مدیریت لغو اشتراک را اضافه میکند. (یکی از transactional، marketing) |
reply_to_email_id | string | خیر | پاسخ درون یک مکالمه موجود: شناسه em_… پیامی که به آن پاسخ داده میشود. SendHQ هدرهای In-Reply-To/References و رشته گفتگو را تنظیم میکند. |
thread_id | string | خیر | شناسه صریح رشته گفتگویی که پیام باید زیر آن ثبت شود. |
draft_id | string | خیر | پیوستهای یک پیشنویس ذخیرهشده (dr_…) را همراه این پیام ارسال کنید. پیشنویس پس از ارسال موفق حذف میشود. |
template | object | خیر | بهجای html/text خام، یک قالب میزبانیشده منتشرشده ارسال کنید. دقیقاً به یک گیرنده to و بدون cc/bcc نیاز دارد؛ موضوع را قالب تعیین میکند. دستکم یکی از این موارد را ارائه دهید: id، key. |
template.id | string | خیر | شناسه قالب (tmpl_…). id یا key را ارائه دهید. |
template.key | string | خیر | کلید قالب مانند account-welcome. id یا key را ارائه دهید. |
template.version_id | string | خیر | شناسه اختیاری نسخه منتشرشده (tmplv_…). پیشفرض، نسخه منتشرشده فعلی است. |
template.data | object | خیر | مقادیر متغیرهای نوعدار قالب. |
labels | string[] | خیر | نام برچسبها یا شناسههای lbl_… که این پیام باید زیر آنها بایگانی شود. نامهای ناشناخته ایجاد میشوند. پاسخهای درون مکالمه برچسبها را به ارث میبرند و برچسب bucket (skip_inbox) این پاسخها را از صندوق ورودی دور نگه میدارد. حداکثر 10. (0 تا 10 مورد) |
idempotency_key | string | خیر | هدر Idempotency-Key (حداکثر 200 کاراکتر). فقط برای تلاش مجدد همین درخواست دقیق دوباره از آن استفاده کنید. (حداکثر 200 کاراکتر) |
attachments | object[] | خیر | فایلهایی که باید پیوست شوند (حداکثر 10 فایل، مجموعاً 10 MB). هر کدام به content_base64 (همراه با filename) یا یک file_path محلی نیاز دارد. (0 تا 10 مورد) دستکم یکی از این موارد را ارائه دهید: content_base64، file_path. |
attachments[].filename | string | خیر | نام فایلی که به گیرنده نمایش داده میشود. همراه با content_base64 الزامی است؛ پیشفرض آن نام پایه file_path است. (حداکثر 255 کاراکتر) |
attachments[].content_type | string | خیر | نوع MIME، مثلاً application/pdf. پیشفرض application/octet-stream است. |
attachments[].content_base64 | string | خیر | محتوای فایل با base64 استاندارد. |
attachments[].file_path | string | خیر | مسیر مطلق یک فایل محلی که پردازه سرور MCP بتواند آن را بخواند. |
{
"name": "send_email",
"arguments": {
"from": "Acme <hello@example.com>",
"to": [
"owner@example.com"
],
"subject": "Your export is ready",
"text": "Download it from your dashboard.",
"idempotency_key": "export-ready-42"
}
}send_batchارسال دستهای ایمیلهای شخصیسازیشده
SENDS REAL EMAIL (ایمیل واقعی ارسال میکند). 1 تا 100 پیام مستقل را در یک درخواست ارسال کنید (برای شخصیسازی قالب بهازای هر گیرنده از این استفاده کنید). هر مورد همان ساختار send_email را دارد (بدون attachments/idempotency_key). موارد بهصورت جداگانه موفق یا ناموفق میشوند: HTTP 207 یعنی موفقیت جزئی؛ هر data[i].ok و data[i].error را بررسی کنید. یک idempotency_key کل بدنه دسته را پوشش میدهد.
| پارامتر | نوع | الزامی | توضیح |
|---|---|---|---|
emails | object[] | بله | پیامهایی که باید ارسال شوند. (1 تا 100 مورد) دستکم یکی از این موارد را ارائه دهید: html، text، template. |
idempotency_key | string | خیر | Idempotency-Key برای کل دسته (حداکثر 200 کاراکتر). (حداکثر 200 کاراکتر) |
{
"name": "send_batch",
"arguments": {
"emails": [
{
"from": "Acme <hello@example.com>",
"to": [
"owner@example.com"
],
"template": {
"key": "account-welcome",
"data": {
"first_name": "Asha"
}
}
}
],
"idempotency_key": "welcome-batch-2026-09-26"
}
}list_emailsفهرست و جستجوی ایمیلها
ایمیلهای ارسالی (direction: out) و دریافتی (direction: in) را از جدیدترین به قدیمیترین همراه با فیلترها فهرست کنید. ایمیلهای دریافتی دستهبندی میشوند: صندوق ورودی انسان را با direction: in، archived: false، category: primary بخوانید؛ با important: true اولویتبندی کنید؛ اسپم پنهان است مگر با category: spam یا include_spam: true. صفحهبندیشده: نتیجه شامل pagination {offset, limit, returned, total?, has_more, next_offset} است.
| پارامتر | نوع | الزامی | توضیح |
|---|---|---|---|
direction | string | خیر | in برای دریافتی، out برای ارسالی. (یکی از in، out) |
status | string | خیر | فیلتر وضعیت، مثلاً queued، sent، delivered، bounced، complained، failed. |
domain | string | خیر | فقط پیامهای این دامنه، یا فهرستی از دامنهها که با کاما جدا شدهاند (تطابق با هر کدام). |
inbox_id | string | خیر | فقط پیامهایی که این صندوق ورودی (inb_…) دریافت کرده است. |
label | string | خیر | فقط پیامهایی که این برچسب را دارند: شناسه برچسب lbl_… یا نام دقیق آن، یا فهرستی جداشده با کاما (تطابق با هر کدام). برای دیدن پوشهها از list_labels استفاده کنید. |
archived | boolean | خیر | false = نمای صندوق ورودی (ایمیلهای دریافتی بایگانینشده)، true = فقط بایگانیشدهها. برای همه ایمیلها آن را حذف کنید. |
category | string | خیر | primary (افراد)، updates (خبرنامهها، انبوه، خودکار) یا spam؛ یا فهرستی جداشده با کاما. اسپم پنهان است مگر اینکه درخواست شود. |
important | boolean | خیر | true = فقط پیامهایی که مهم علامت خوردهاند (پاسخ به مکالمههایی که شما آغاز کردهاید و فرستندگانی که مهم علامت خوردهاند). |
include_spam | boolean | خیر | اسپم را در نتایج بگنجانید (برای جستجو در همه پوشهها). |
from | string | خیر | نشانی فرستنده شامل این مقدار باشد. |
to | string | خیر | نشانی گیرنده شامل این مقدار باشد. |
unread | boolean | خیر | true = فقط خواندهنشدهها، false = فقط خواندهشدهها. |
after | string | خیر | مهر زمانی ISO-8601؛ فقط پیامهایی که پس از آن ایجاد شدهاند. (date-time) |
before | string | خیر | مهر زمانی ISO-8601؛ فقط پیامهایی که پیش از آن ایجاد شدهاند. (date-time) |
query | string | خیر | جستجوی متن آزاد در موضوعها، متن ایمیلها، نشانیهای فرستنده/گیرنده و نام فایل پیوستها. (حداکثر 200 کاراکتر) |
limit | integer | خیر | اندازه صفحه. پیشفرض 50. (پیشفرض 50؛ 1 تا 200) |
offset | integer | خیر | تعداد رکوردهایی که باید رد شوند. از pagination.next_offset صفحه قبل استفاده کنید. (پیشفرض 0؛ 0 تا …) |
{
"name": "list_emails",
"arguments": {
"direction": "in",
"unread": true,
"limit": 25
}
}get_emailدریافت یک ایمیل
یک پیام را همراه با هدرها، بدنه html/text، وضعیت، فراداده رشته گفتگو و فراداده پیوستها دریافت کنید (بایتهای پیوست را با download_attachment دانلود کنید).
| پارامتر | نوع | الزامی | توضیح |
|---|---|---|---|
email_id | string | بله | شناسه ایمیل (با em_ شروع میشود)، همانطور که یک ابزار فهرست یا ایجاد برگردانده است. (حداکثر 128 کاراکتر) |
{
"name": "get_email",
"arguments": {
"email_id": "em_123"
}
}mark_emailعلامتگذاری بهعنوان خواندهشده، بایگانیشده، اسپم یا مهم
یک پیام را بهروز کنید: read، archived، category (primary، updates، spam؛ فقط ایمیلهای دریافتی) و important. گزارش اسپم یا علامتگذاری بهعنوان مهم، به SendHQ درباره آن فرستنده برای ایمیلهای آینده آموزش میدهد؛ برای تغییر فقط همین پیام learn: false را ارسال کنید. دستکم یک فیلد ارسال کنید.
| پارامتر | نوع | الزامی | توضیح |
|---|---|---|---|
email_id | string | بله | شناسه ایمیل (با em_ شروع میشود)، همانطور که یک ابزار فهرست یا ایجاد برگردانده است. (حداکثر 128 کاراکتر) |
read | boolean | خیر | true = خواندهشده، false = خواندهنشده. |
archived | boolean | خیر | true = بایگانی (خارج از صندوق ورودی)، false = بازگرداندن به صندوق ورودی. |
category | string | خیر | یک پیام دریافتی را به primary، updates یا spam منتقل کنید. (یکی از primary، updates، spam) |
important | boolean | خیر | علامت مهم را روی پیام بگذارید یا بردارید. |
learn | boolean | خیر | false = این تصمیم برای فرستنده به خاطر سپرده نشود (پیشفرض true). |
{
"name": "mark_email",
"arguments": {
"email_id": "em_123",
"read": true
}
}delete_emailحذف یک ایمیل
DESTRUCTIVE (مخرب): یک پیام نگهداریشده و پیوستهای ذخیرهشده آن را برای همیشه از SendHQ حذف میکند. پیامی را که قبلاً تحویل شده بازنمیگرداند.
| پارامتر | نوع | الزامی | توضیح |
|---|---|---|---|
email_id | string | بله | شناسه ایمیل (با em_ شروع میشود)، همانطور که یک ابزار فهرست یا ایجاد برگردانده است. (حداکثر 128 کاراکتر) |
{
"name": "delete_email",
"arguments": {
"email_id": "em_123"
}
}list_email_eventsفهرست رویدادهای تحویل یک ایمیل
رویدادهای ارائهدهنده برای یک پیام ارسالی: delivery، bounce، complaint، reject، open، click. اینها شواهدی هستند که نشان میدهند پیام تحویل شده یا چرا شکست خورده است. صفحهبندیشده: نتیجه شامل pagination {offset, limit, returned, total?, has_more, next_offset} است.
| پارامتر | نوع | الزامی | توضیح |
|---|---|---|---|
email_id | string | بله | شناسه ایمیل (با em_ شروع میشود)، همانطور که یک ابزار فهرست یا ایجاد برگردانده است. (حداکثر 128 کاراکتر) |
limit | integer | خیر | اندازه صفحه. پیشفرض 50. (پیشفرض 50؛ 1 تا 200) |
offset | integer | خیر | تعداد رکوردهایی که باید رد شوند. از pagination.next_offset صفحه قبل استفاده کنید. (پیشفرض 0؛ 0 تا …) |
{
"name": "list_email_events",
"arguments": {
"email_id": "em_123"
}
}get_threadدریافت یک مکالمه
همه پیامهای یک مکالمه (ارسالی و دریافتی) را به ترتیب زمانی، هر کدام همراه با فراداده پیوستها، دریافت کنید.
| پارامتر | نوع | الزامی | توضیح |
|---|---|---|---|
thread_id | string | بله | شناسه رشته گفتگو (معمولاً شناسه em_… نخستین پیام؛ threadId هر ایمیل را ببینید). (حداکثر 128 کاراکتر) |
{
"name": "get_thread",
"arguments": {
"thread_id": "em_123"
}
}برچسبها و قوانین بایگانی خودکار
list_labelsفهرست برچسبها
برچسبهای (پوشههای) فضای کاری را همراه با تعداد کل و خواندهنشدهها و قوانین بایگانی خودکارشان فهرست کنید. صفحهبندیشده: نتیجه شامل pagination {offset, limit, returned, total?, has_more, next_offset} است.
| پارامتر | نوع | الزامی | توضیح |
|---|---|---|---|
limit | integer | خیر | اندازه صفحه. پیشفرض 50. (پیشفرض 50؛ 1 تا 200) |
offset | integer | خیر | تعداد رکوردهایی که باید رد شوند. از pagination.next_offset صفحه قبل استفاده کنید. (پیشفرض 0؛ 0 تا …) |
{
"name": "list_labels",
"arguments": {}
}get_labelدریافت یک برچسب
یک برچسب را همراه با شمارشها و قوانین بایگانی خودکار دریافت کنید.
| پارامتر | نوع | الزامی | توضیح |
|---|---|---|---|
label_id | string | بله | شناسه برچسب (با lbl_ شروع میشود) یا نام دقیق برچسب. (حداکثر 128 کاراکتر) |
{
"name": "get_label",
"arguments": {
"label_id": "Billing"
}
}create_labelساخت برچسب
یک برچسب از نوع پوشه بسازید. skip_inbox: true را تنظیم کنید تا به bucketی تبدیل شود که ایجنت مالک آن است: با labels: [name] ارسال کنید تا پاسخها در آن برچسب بایگانی شوند و از صندوق ورودی دور بمانند. قوانین اختیاری بایگانی خودکار، ایمیلهای ارسالی/دریافتی جدید را بایگانی میکنند (همه شرطهای یک قانون باید برقرار باشند). برای بایگانی ایمیلهای نگهداریشده نیز apply_to_existing را تنظیم کنید.
| پارامتر | نوع | الزامی | توضیح |
|---|---|---|---|
name | string | بله | نام برچسب، مثلاً Billing یا Clients/Acme. در هر فضای کاری یکتاست (بدون حساسیت به حروف بزرگ و کوچک). (حداکثر 64 کاراکتر) |
color | string | خیر | رنگ hex مانند #1a73e8. اختیاری. |
skip_inbox | boolean | خیر | حالت bucket: ایمیل دریافتیای که این برچسب را میگیرد (از طریق قانون، پاسخ به مکالمهای که با این برچسب ارسال شده، یا بهصورت دستی) بایگانی میشود تا فقط در برچسب نمایش داده شود، نه در صندوق ورودی. |
rules | object[] | خیر | قوانین اختیاری بایگانی خودکار (حداکثر 20). هر کدام دستکم به یکی از inbox_id، from، to، subject نیاز دارد. (0 تا 20 مورد) |
rules[].direction | string | خیر | فقط ایمیلهای in (دریافتی) یا out (ارسالی). برای هر دو آن را حذف کنید. (یکی از in، out) |
rules[].inbox_id | string | خیر | فقط ایمیلهایی که این صندوق ورودی (inb_…) دریافت کرده است. هر نشانی دریافت را در پوشه مخصوص خودش بایگانی میکند. |
rules[].from | string | خیر | فرستنده شامل این متن باشد (بدون حساسیت به حروف بزرگ و کوچک)، مثلاً @stripe.com. (حداکثر 200 کاراکتر) |
rules[].to | string | خیر | To/Cc شامل این متن باشد (بدون حساسیت به حروف بزرگ و کوچک). (حداکثر 200 کاراکتر) |
rules[].subject | string | خیر | موضوع شامل این متن باشد (بدون حساسیت به حروف بزرگ و کوچک). (حداکثر 200 کاراکتر) |
rules[].skip_inbox | boolean | خیر | ایمیلهای دریافتی منطبق را بایگانی کنید تا فقط در پوشه برچسب نمایش داده شوند، نه در صندوق ورودی. |
apply_to_existing | boolean | خیر | ایمیلهای نگهداریشدهای را که با قوانین مطابقت دارند نیز بایگانی کنید. |
{
"name": "create_label",
"arguments": {
"name": "Agent/Orders",
"skip_inbox": true,
"rules": [
{
"from": "@stripe.com"
}
]
}
}update_labelتغییر نام، تغییر رنگ یا تبدیل برچسب به bucket
نام برچسب را تغییر دهید، رنگش را عوض کنید یا حالت bucket (skip_inbox) را روشن/خاموش کنید. روشن کردن حالت bucket ایمیلهای دریافتی موجود در برچسب را بایگانی میکند.
| پارامتر | نوع | الزامی | توضیح |
|---|---|---|---|
label_id | string | بله | شناسه برچسب (با lbl_ شروع میشود) یا نام دقیق برچسب. (حداکثر 128 کاراکتر) |
name | string | خیر | نام جدید. (حداکثر 64 کاراکتر) |
color | string | خیر | رنگ hex جدید. |
skip_inbox | boolean | خیر | حالت bucket: ایمیل دریافتیای که این برچسب را میگیرد (از طریق قانون، پاسخ به مکالمهای که با این برچسب ارسال شده، یا بهصورت دستی) بایگانی میشود تا فقط در برچسب نمایش داده شود، نه در صندوق ورودی. |
{
"name": "update_label",
"arguments": {
"label_id": "lbl_123",
"name": "Finance/Billing"
}
}delete_labelحذف برچسب
DESTRUCTIVE (مخرب): یک برچسب و قوانینش را حذف میکند. خود ایمیلها حفظ میشوند؛ فقط این برچسب را از دست میدهند.
| پارامتر | نوع | الزامی | توضیح |
|---|---|---|---|
label_id | string | بله | شناسه برچسب (با lbl_ شروع میشود) یا نام دقیق برچسب. (حداکثر 128 کاراکتر) |
{
"name": "delete_label",
"arguments": {
"label_id": "lbl_123"
}
}create_label_ruleافزودن قانون بایگانی خودکار
یک قانون به برچسب اضافه کنید تا ایمیلهای جدید منطبق بهطور خودکار بایگانی شوند. همه شرطهایی که تنظیم میکنید باید برقرار باشند. از inbox_id استفاده کنید تا یک نشانی دریافت، پوشه مخصوص خودش را داشته باشد؛ skip_inbox را اضافه کنید تا از صندوق ورودی دور بماند.
| پارامتر | نوع | الزامی | توضیح |
|---|---|---|---|
label_id | string | بله | شناسه برچسب (با lbl_ شروع میشود) یا نام دقیق برچسب. (حداکثر 128 کاراکتر) |
direction | string | خیر | فقط ایمیلهای in (دریافتی) یا out (ارسالی). برای هر دو آن را حذف کنید. (یکی از in، out) |
inbox_id | string | خیر | فقط ایمیلهایی که این صندوق ورودی (inb_…) دریافت کرده است. هر نشانی دریافت را در پوشه مخصوص خودش بایگانی میکند. |
from | string | خیر | فرستنده شامل این متن باشد (بدون حساسیت به حروف بزرگ و کوچک)، مثلاً @stripe.com. (حداکثر 200 کاراکتر) |
to | string | خیر | To/Cc شامل این متن باشد (بدون حساسیت به حروف بزرگ و کوچک). (حداکثر 200 کاراکتر) |
subject | string | خیر | موضوع شامل این متن باشد (بدون حساسیت به حروف بزرگ و کوچک). (حداکثر 200 کاراکتر) |
skip_inbox | boolean | خیر | ایمیلهای دریافتی منطبق را بایگانی کنید تا فقط در پوشه برچسب نمایش داده شوند، نه در صندوق ورودی. |
apply_to_existing | boolean | خیر | ایمیلهای نگهداریشده منطبق را نیز بایگانی کنید. |
{
"name": "create_label_rule",
"arguments": {
"label_id": "Billing",
"inbox_id": "inb_123",
"skip_inbox": true
}
}delete_label_ruleحذف یک قانون بایگانی خودکار
DESTRUCTIVE (مخرب): یک قانون بایگانی خودکار را حذف میکند. ایمیلهایی که قبلاً بایگانی شدهاند برچسب خود را حفظ میکنند.
| پارامتر | نوع | الزامی | توضیح |
|---|---|---|---|
label_id | string | بله | شناسه برچسب (با lbl_ شروع میشود) یا نام دقیق برچسب. (حداکثر 128 کاراکتر) |
rule_id | string | بله | شناسه قانون (با lrule_ شروع میشود)، از get_label. (حداکثر 128 کاراکتر) |
{
"name": "delete_label_rule",
"arguments": {
"label_id": "lbl_123",
"rule_id": "lrule_123"
}
}label_emailافزودن یا حذف برچسبهای یک ایمیل
یک پیام را بین پوشهها جابهجا کنید: برچسبها را با نام یا شناسه lbl_… اضافه و/یا حذف کنید. نامهای ناشناخته در add ایجاد میشوند، مگر اینکه create برابر false باشد.
| پارامتر | نوع | الزامی | توضیح |
|---|---|---|---|
email_id | string | بله | شناسه ایمیل (با em_ شروع میشود)، همانطور که یک ابزار فهرست یا ایجاد برگردانده است. (حداکثر 128 کاراکتر) |
add | string[] | خیر | برچسبهایی که باید اضافه شوند. (0 تا 10 مورد) |
remove | string[] | خیر | برچسبهایی که باید حذف شوند. (0 تا 10 مورد) |
create | boolean | خیر | ایجاد برچسبهای ناشناخته در add (پیشفرض true). |
{
"name": "label_email",
"arguments": {
"email_id": "em_123",
"add": [
"Billing"
],
"remove": [
"Support"
]
}
}پیشنویسها، پیوستها و هویتهای فرستنده
list_sending_identitiesفهرست هویتهای فرستنده تأییدشده
نشانیها و دامنههایی که این فضای کاری همین حالا میتواند از آنها ارسال کند (دامنههای تأییدشده، From پیشفرض آنها و نشانیهای صندوق ورودی فعال). پیش از send_email آن را فراخوانی کنید تا یک from معتبر انتخاب کنید.
بدون پارامتر.
{
"name": "list_sending_identities",
"arguments": {}
}create_draftساخت پیشنویس
یک پیشنویس در ویرایشگر ایمیل بسازید. پیشنویسها پیوستها را نگه میدارند: یک پیشنویس بسازید، upload_attachment را اجرا کنید، سپس send_email را با draft_id فراخوانی کنید. چیزی ارسال نمیکند.
| پارامتر | نوع | الزامی | توضیح |
|---|---|---|---|
from | string | خیر | نشانی فرستنده روی یک دامنه تأییدشده (در حین پیشنویس میتواند خالی باشد). |
to | string[] | خیر | گیرندگان. (0 تا 100 مورد) |
cc | string[] | خیر | گیرندگان رونوشت (Cc). (0 تا 100 مورد) |
bcc | string[] | خیر | گیرندگان رونوشت مخفی (Bcc). (0 تا 100 مورد) |
subject | string | خیر | موضوع ایمیل. (حداکثر 998 کاراکتر) |
html | string | خیر | بدنه HTML. |
text | string | خیر | متن ساده. |
reply_to_email_id | string | خیر | شناسه ایمیلی که این پیشنویس به آن پاسخ میدهد. |
thread_id | string | خیر | شناسه رشته گفتگویی که این پیشنویس به آن تعلق دارد. |
{
"name": "create_draft",
"arguments": {
"from": "hello@example.com",
"to": [
"owner@example.com"
],
"subject": "Invoice"
}
}list_draftsفهرست پیشنویسها
پیشنویسهای ویرایشگر را به ترتیب آخرین بهروزرسانی فهرست کنید. صفحهبندیشده: نتیجه شامل pagination {offset, limit, returned, total?, has_more, next_offset} است.
| پارامتر | نوع | الزامی | توضیح |
|---|---|---|---|
limit | integer | خیر | اندازه صفحه. پیشفرض 50. (پیشفرض 50؛ 1 تا 200) |
offset | integer | خیر | تعداد رکوردهایی که باید رد شوند. از pagination.next_offset صفحه قبل استفاده کنید. (پیشفرض 0؛ 0 تا …) |
{
"name": "list_drafts",
"arguments": {}
}get_draftدریافت یک پیشنویس
یک پیشنویس را همراه با فراداده پیوستهایش دریافت کنید.
| پارامتر | نوع | الزامی | توضیح |
|---|---|---|---|
draft_id | string | بله | شناسه پیشنویس (با dr_ شروع میشود)، همانطور که یک ابزار فهرست یا ایجاد برگردانده است. (حداکثر 128 کاراکتر) |
{
"name": "get_draft",
"arguments": {
"draft_id": "dr_123"
}
}update_draftجایگزینی محتوای پیشنویس
محتوا و گیرندگان یک پیشنویس را جایگزین کنید. این یک جایگزینی کامل است: فیلدهایی که حذف کنید پاک میشوند، پس ابتدا get_draft را بخوانید و همه فیلدهایی را که میخواهید حفظ شوند ارسال کنید. پیوستها تحت تأثیر قرار نمیگیرند.
| پارامتر | نوع | الزامی | توضیح |
|---|---|---|---|
draft_id | string | بله | شناسه پیشنویس (با dr_ شروع میشود)، همانطور که یک ابزار فهرست یا ایجاد برگردانده است. (حداکثر 128 کاراکتر) |
from | string | خیر | نشانی فرستنده روی یک دامنه تأییدشده (در حین پیشنویس میتواند خالی باشد). |
to | string[] | خیر | گیرندگان. (0 تا 100 مورد) |
cc | string[] | خیر | گیرندگان رونوشت (Cc). (0 تا 100 مورد) |
bcc | string[] | خیر | گیرندگان رونوشت مخفی (Bcc). (0 تا 100 مورد) |
subject | string | خیر | موضوع ایمیل. (حداکثر 998 کاراکتر) |
html | string | خیر | بدنه HTML. |
text | string | خیر | متن ساده. |
reply_to_email_id | string | خیر | شناسه ایمیلی که این پیشنویس به آن پاسخ میدهد. |
thread_id | string | خیر | شناسه رشته گفتگویی که این پیشنویس به آن تعلق دارد. |
{
"name": "update_draft",
"arguments": {
"draft_id": "dr_123",
"from": "hello@example.com",
"to": [
"owner@example.com"
],
"subject": "Invoice (updated)",
"text": "Attached."
}
}delete_draftدور ریختن پیشنویس
DESTRUCTIVE (مخرب): یک پیشنویس را دور میریزد و پیوستهای ذخیرهشده آن را برای همیشه حذف میکند.
| پارامتر | نوع | الزامی | توضیح |
|---|---|---|---|
draft_id | string | بله | شناسه پیشنویس (با dr_ شروع میشود)، همانطور که یک ابزار فهرست یا ایجاد برگردانده است. (حداکثر 128 کاراکتر) |
{
"name": "delete_draft",
"arguments": {
"draft_id": "dr_123"
}
}upload_attachmentبارگذاری پیوست در یک پیشنویس
یک فایل را در یک پیشنویس بارگذاری کنید (حداکثر 10 فایل و مجموعاً 10 MB برای هر پیام). content_base64 یا یک file_path محلی ارائه دهید. پیوستها هنگام ارسال به پلن پولی نیاز دارند.
دستکم یکی از این موارد را ارائه دهید: content_base64، file_path.
| پارامتر | نوع | الزامی | توضیح |
|---|---|---|---|
draft_id | string | بله | شناسه پیشنویس (با dr_ شروع میشود)، همانطور که یک ابزار فهرست یا ایجاد برگردانده است. (حداکثر 128 کاراکتر) |
filename | string | خیر | نام فایلی که به گیرنده نمایش داده میشود. پیشفرض، نام پایه file_path است. (حداکثر 255 کاراکتر) |
content_type | string | خیر | نوع MIME، مثلاً application/pdf. پیشفرض application/octet-stream است. |
content_base64 | string | خیر | محتوای فایل با base64 استاندارد. |
file_path | string | خیر | مسیر مطلق یک فایل محلی که پردازه سرور MCP بتواند آن را بخواند. |
{
"name": "upload_attachment",
"arguments": {
"draft_id": "dr_123",
"filename": "invoice.pdf",
"content_type": "application/pdf",
"file_path": "/tmp/invoice.pdf"
}
}download_attachmentدانلود پیوست
یک پیوست خصوصی (ارسالی، دریافتی یا پیشنویس) را دانلود کنید. محتوای base64 را برمیگرداند، یا وقتی save_to_path تنظیم شده باشد فایل را مینویسد (بازنویسی نمیکند مگر اینکه overwrite برابر true باشد).
| پارامتر | نوع | الزامی | توضیح |
|---|---|---|---|
attachment_id | string | بله | شناسه پیوست (با att_ شروع میشود)، همانطور که یک ابزار فهرست یا ایجاد برگردانده است. (حداکثر 128 کاراکتر) |
save_to_path | string | خیر | مسیر مطلق محلی اختیاری برای نوشتن فایل بهجای برگرداندن base64. |
overwrite | boolean | خیر | اجازه جایگزینی فایل موجود در save_to_path. پیشفرض false. |
{
"name": "download_attachment",
"arguments": {
"attachment_id": "att_123",
"save_to_path": "/tmp/invoice.pdf"
}
}delete_attachmentحذف پیوست
DESTRUCTIVE (مخرب): یک پیوست ذخیرهشده را برای همیشه حذف میکند (برای مثال، حذف یک فایل از پیشنویس پیش از ارسال).
| پارامتر | نوع | الزامی | توضیح |
|---|---|---|---|
attachment_id | string | بله | شناسه پیوست (با att_ شروع میشود)، همانطور که یک ابزار فهرست یا ایجاد برگردانده است. (حداکثر 128 کاراکتر) |
{
"name": "delete_attachment",
"arguments": {
"attachment_id": "att_123"
}
}قالبهای میزبانیشده
list_templatesفهرست قالبهای میزبانیشده
قالبهای ایمیل میزبانیشده را همراه با وضعیت انتشار و میزان استفاده فهرست کنید. صفحهبندیشده: نتیجه شامل pagination {offset, limit, returned, total?, has_more, next_offset} است.
| پارامتر | نوع | الزامی | توضیح |
|---|---|---|---|
lifecycle | string | خیر | active (پیشفرض)، archived یا all. (یکی از active، archived، all) |
query | string | خیر | جستجو بر اساس نام یا کلید. (حداکثر 120 کاراکتر) |
limit | integer | خیر | اندازه صفحه. پیشفرض 50. (پیشفرض 50؛ 1 تا 200) |
offset | integer | خیر | تعداد رکوردهایی که باید رد شوند. از pagination.next_offset صفحه قبل استفاده کنید. (پیشفرض 0؛ 0 تا …) |
{
"name": "list_templates",
"arguments": {
"lifecycle": "active"
}
}create_templateساخت قالب میزبانیشده
یک قالب با پیشنویس قابلویرایش بسازید، بهصورت اختیاری از یک محتوای آغازین (welcome، reset، receipt یا blank). پیش از ارسال با کلید، آن را منتشر کنید.
| پارامتر | نوع | الزامی | توضیح |
|---|---|---|---|
name | string | بله | نام قابلفهم برای انسان. (حداکثر 120 کاراکتر) |
key | string | خیر | کلید پایدار ارسال: حروف کوچک، اعداد و خط تیره؛ با یک حرف شروع میشود (2 تا 64 کاراکتر). در صورت حذف، از نام استخراج میشود. |
starter | string | خیر | محتوای آغازین. (یکی از blank، welcome، reset، receipt) |
{
"name": "create_template",
"arguments": {
"name": "Account welcome",
"key": "account-welcome",
"starter": "welcome"
}
}get_templateدریافت یک قالب
پیشنویس فعلی قالب (همراه با revision)، نسخه منتشرشده فعال، تاریخچه نسخهها و میزان استفاده را دریافت کنید. شناسه یا کلید را میپذیرد.
| پارامتر | نوع | الزامی | توضیح |
|---|---|---|---|
template_id | string | بله | شناسه قالب (tmpl_…) یا کلید. (حداکثر 128 کاراکتر) |
{
"name": "get_template",
"arguments": {
"template_id": "account-welcome"
}
}update_template_draftذخیره پیشنویس قالب
پیشنویس قابلویرایش قالب را با همزمانی خوشبینانه ذخیره کنید: revision فعلی را از get_template ارسال کنید (409 یعنی شخص دیگری زودتر ذخیره کرده است؛ دوباره بخوانید و تلاش کنید). این یک جایگزینی کامل محتوای پیشنویس است: فیلدهای حذفشده پاک میشوند، پس همه فیلدهایی را که میخواهید حفظ شوند ارسال کنید. از placeholderهای {{variable}} استفاده کنید.
| پارامتر | نوع | الزامی | توضیح |
|---|---|---|---|
template_id | string | بله | شناسه یا کلید قالب. (حداکثر 128 کاراکتر) |
revision | integer | بله | revision فعلی پیشنویس از get_template. (1 تا …) |
name | string | خیر | نام قالب. (حداکثر 120 کاراکتر) |
subject_template | string | خیر | موضوع همراه با placeholderها. (حداکثر 998 کاراکتر) |
preheader_template | string | خیر | متن پیشنمایش. (حداکثر 240 کاراکتر) |
html_template | string | خیر | بدنه HTML همراه با placeholderها. |
text_template | string | خیر | متن ساده همراه با placeholderها. |
from | string | خیر | فرستنده پیشفرض برای ارسالهای این قالب. |
reply_to | string | خیر | Reply-To پیشفرض. |
variables | object[] | خیر | قرارداد متغیرهای نوعدار. هر مورد: {key (حروف کوچک/زیرخط), label, type: text|number|url|boolean, required (پیشفرض true), fallback, description}. |
variables[].key | string | بله | |
variables[].label | string | خیر | |
variables[].type | string | خیر | (یکی از text، number، url، boolean) |
variables[].required | boolean | خیر | |
variables[].fallback | any | خیر | |
variables[].description | string | خیر | |
sample_data | object | خیر | مقادیر نمونه برای پیشنمایشها و آزمایشها. |
{
"name": "update_template_draft",
"arguments": {
"template_id": "account-welcome",
"revision": 3,
"name": "Account welcome",
"subject_template": "Welcome, {{first_name}}",
"text_template": "Hi {{first_name}}",
"variables": [
{
"key": "first_name",
"type": "text",
"required": true
}
],
"sample_data": {
"first_name": "Asha"
}
}
}create_template_draftشروع پیشنویس جدید از نسخه منتشرشده
یک پیشنویس قابلویرایش جدید با کپی از نسخه منتشرشده فعلی بسازید (اگر پیشنویسی از قبل وجود داشته باشد یا چیزی منتشر نشده باشد، 409).
| پارامتر | نوع | الزامی | توضیح |
|---|---|---|---|
template_id | string | بله | شناسه یا کلید قالب. (حداکثر 128 کاراکتر) |
{
"name": "create_template_draft",
"arguments": {
"template_id": "account-welcome"
}
}render_templateرندر پیشنمایش قالب
خروجی دقیق سرور (subject، html، text) را برای پیشنویس، نسخه منتشرشده یا یک نسخه مشخص با داده دادهشده رندر کنید. چیزی ارسال نمیکند. وقتی داده قرارداد متغیرها را نقض کند، 422 همراه با findings برمیگرداند.
| پارامتر | نوع | الزامی | توضیح |
|---|---|---|---|
template_id | string | بله | شناسه یا کلید قالب. (حداکثر 128 کاراکتر) |
version_id | string | خیر | شناسه اختیاری نسخه؛ پیشفرض پیشنویس است و سپس نسخه منتشرشده. |
data | object | خیر | مقادیر متغیرها؛ پیشفرض داده نمونه همان نسخه است. |
{
"name": "render_template",
"arguments": {
"template_id": "account-welcome",
"data": {
"first_name": "Asha"
}
}
}send_template_testارسال ایمیل آزمایشی قالب
SENDS REAL EMAIL (ایمیل واقعی ارسال میکند). یک snapshot از پیشنویس (یا نسخه دادهشده) را با پیشوند [Test] به گیرندگان دادهشده ارسال میکند. در میزان مصرف حساب میشود؛ فضاهای کاری آزمایشی فقط میتوانند به ایمیل حساب یا یک نشانی شبیهساز SES ارسال کنند.
| پارامتر | نوع | الزامی | توضیح |
|---|---|---|---|
template_id | string | بله | شناسه یا کلید قالب. (حداکثر 128 کاراکتر) |
to | string[] | بله | گیرندگان آزمایشی. (1 تا 100 مورد) |
from | string | خیر | فرستنده روی یک دامنه تأییدشده؛ پیشفرض From قالب است. |
version_id | string | خیر | شناسه اختیاری نسخه. |
data | object | خیر | مقادیر متغیرها؛ پیشفرض داده نمونه است. |
{
"name": "send_template_test",
"arguments": {
"template_id": "account-welcome",
"to": [
"owner@example.com"
]
}
}publish_templateانتشار نسخه قالب
پیشنویس فعلی را بهعنوان یک نسخه تغییرناپذیر منتشر کنید که send_email با template.key از آن استفاده خواهد کرد. در صورت خطای اعتبارسنجی با 422 و findings شکست میخورد، یا اگر قرارداد متغیرهای فعال قالبی را که در محیط عملیاتی استفاده میشود بشکند، با 409.
| پارامتر | نوع | الزامی | توضیح |
|---|---|---|---|
template_id | string | بله | شناسه یا کلید قالب. (حداکثر 128 کاراکتر) |
{
"name": "publish_template",
"arguments": {
"template_id": "account-welcome"
}
}archive_templateبایگانی قالب
ارسالهای جدید با این قالب را متوقف میکند (تاریخچه حفظ میشود؛ با restore_template قابل بازگشت است). هر یکپارچهسازیای که با این کلید ارسال میکند با 404 شکست خواهد خورد.
| پارامتر | نوع | الزامی | توضیح |
|---|---|---|---|
template_id | string | بله | شناسه یا کلید قالب. (حداکثر 128 کاراکتر) |
{
"name": "archive_template",
"arguments": {
"template_id": "account-welcome"
}
}restore_templateبازیابی قالب بایگانیشده
یک قالب بایگانیشده را دوباره فعال کنید.
| پارامتر | نوع | الزامی | توضیح |
|---|---|---|---|
template_id | string | بله | شناسه یا کلید قالب. (حداکثر 128 کاراکتر) |
{
"name": "restore_template",
"arguments": {
"template_id": "account-welcome"
}
}دامنهها و DNS
list_domainsفهرست دامنهها
دامنههای ارسال را همراه با setup_status تجمیعی (verified | checking | pending)، وضعیت DNS هر رکورد و وضعیت ورودی فهرست کنید. ممکن است کند باشد: دامنههای تأییدنشده بهصورت زنده دوباره بررسی میشوند. صفحهبندیشده: نتیجه شامل pagination {offset, limit, returned, total?, has_more, next_offset} است.
| پارامتر | نوع | الزامی | توضیح |
|---|---|---|---|
limit | integer | خیر | اندازه صفحه. پیشفرض 50. (پیشفرض 50؛ 1 تا 200) |
offset | integer | خیر | تعداد رکوردهایی که باید رد شوند. از pagination.next_offset صفحه قبل استفاده کنید. (پیشفرض 0؛ 0 تا …) |
{
"name": "list_domains",
"arguments": {}
}get_domainدریافت جزئیات راهاندازی دامنه
یک دامنه را همراه با رکوردهای دقیق DNS برای انتشار (type، name، value)، وضعیت زنده هر رکورد از دو resolver عمومی، dns_issues همراه با راهحلها و وضعیت ورودی دریافت کنید.
| پارامتر | نوع | الزامی | توضیح |
|---|---|---|---|
domain_id | string | بله | شناسه دامنه (با dom_ شروع میشود)، همانطور که یک ابزار فهرست یا ایجاد برگردانده است. (حداکثر 128 کاراکتر) |
{
"name": "get_domain",
"arguments": {
"domain_id": "dom_123"
}
}add_domainافزودن دامنه ارسال
دامنهای را که در اختیار دارید برای ارسال ثبت کنید. رکوردهای DNS (CNAMEهای SES Easy DKIM) را که مالک باید منتشر کند برمیگرداند. خودش DNS را تغییر نمیدهد. در سقف تعداد دامنه پلن حساب میشود.
| پارامتر | نوع | الزامی | توضیح |
|---|---|---|---|
name | string | بله | نام دامنه بدون پیشوند، مثلاً example.com یا mail.example.com. (حداکثر 253 کاراکتر) |
default_from | string | خیر | نشانی فرستنده پیشفرض اختیاری روی این دامنه. |
{
"name": "add_domain",
"arguments": {
"name": "example.com"
}
}verify_domainتأیید دامنه
همین حالا یک بررسی زنده تأیید SES/DNS اجرا کنید. تکرار آن امن است؛ پس از تغییرات DNS هر 30 تا 60 ثانیه فراخوانی کنید (انتشار ممکن است چند دقیقه تا چند ساعت طول بکشد). ارسال پس از آنکه وضعیت verified شد مجاز است.
| پارامتر | نوع | الزامی | توضیح |
|---|---|---|---|
domain_id | string | بله | شناسه دامنه (با dom_ شروع میشود)، همانطور که یک ابزار فهرست یا ایجاد برگردانده است. (حداکثر 128 کاراکتر) |
{
"name": "verify_domain",
"arguments": {
"domain_id": "dom_123"
}
}delete_domainحذف دامنه
DESTRUCTIVE (مخرب): دامنه را همراه با مسیر دریافت ایمیل ورودی آن از فضای کاری حذف میکند. ارسال از آن بلافاصله پس از این کار شکست میخورد. رکوردهای DNS را نزد ارائهدهنده DNS شما حذف نمیکند.
| پارامتر | نوع | الزامی | توضیح |
|---|---|---|---|
domain_id | string | بله | شناسه دامنه (با dom_ شروع میشود)، همانطور که یک ابزار فهرست یا ایجاد برگردانده است. (حداکثر 128 کاراکتر) |
{
"name": "delete_domain",
"arguments": {
"domain_id": "dom_123"
}
}get_dns_providerتشخیص ارائهدهنده DNS و hostهای رکوردها
ارائهدهنده DNS معتبر (authoritative) دامنه را تشخیص میدهد و host نسبیای را که باید برای هر رکورد در آن ارائهدهنده وارد شود، رکورد DMARC پیشنهادی، راهنمای MX ورودی و در دسترس بودن راهاندازی یککلیکی (Domain Connect) را برمیگرداند.
| پارامتر | نوع | الزامی | توضیح |
|---|---|---|---|
domain_id | string | بله | شناسه دامنه (با dom_ شروع میشود)، همانطور که یک ابزار فهرست یا ایجاد برگردانده است. (حداکثر 128 کاراکتر) |
{
"name": "get_dns_provider",
"arguments": {
"domain_id": "dom_123"
}
}get_domain_connect_linkدریافت لینک راهاندازی یککلیکی DNS
وقتی get_dns_provider مقدار providers.domainConnect.available را گزارش میکند، یک URL رضایت امضاشده بسازید. آن را به انسان بدهید: او آن را باز میکند و تغییر DNS را نزد ارائهدهنده خود تأیید میکند. تا زمان تأیید چیزی تغییر نمیکند. در صورت عدم پشتیبانی، 409.
| پارامتر | نوع | الزامی | توضیح |
|---|---|---|---|
domain_id | string | بله | شناسه دامنه (با dom_ شروع میشود)، همانطور که یک ابزار فهرست یا ایجاد برگردانده است. (حداکثر 128 کاراکتر) |
{
"name": "get_domain_connect_link",
"arguments": {
"domain_id": "dom_123"
}
}ایمیل ورودی
setup_inboundفعالسازی دریافت ایمیل ورودی برای یک دامنه
دریافت ایمیل ورودی SES را برای یک دامنه تأییدشده راهاندازی میکند. اگر دامنه اصلی MX متعارضی نداشته باشد از آن استفاده میکند، وگرنه از inbound.<domain>. رکورد MX را که مالک باید منتشر کند برمیگرداند؛ DNS را ویرایش نمیکند.
| پارامتر | نوع | الزامی | توضیح |
|---|---|---|---|
domain_id | string | بله | شناسه دامنه (با dom_ شروع میشود)، همانطور که یک ابزار فهرست یا ایجاد برگردانده است. (حداکثر 128 کاراکتر) |
{
"name": "setup_inbound",
"arguments": {
"domain_id": "dom_123"
}
}verify_inboundتأیید MX ورودی
رکورد MX ورودی را دوباره بررسی میکند. وقتی هر دو resolver عمومی آن را ببینند، وضعیت ready میشود.
| پارامتر | نوع | الزامی | توضیح |
|---|---|---|---|
domain_id | string | بله | شناسه دامنه (با dom_ شروع میشود)، همانطور که یک ابزار فهرست یا ایجاد برگردانده است. (حداکثر 128 کاراکتر) |
{
"name": "verify_inbound",
"arguments": {
"domain_id": "dom_123"
}
}list_inboxesفهرست نشانیهای ورودی
نشانیهای دریافت را، بهصورت اختیاری برای یک دامنه، فهرست کنید. صفحهبندیشده: نتیجه شامل pagination {offset, limit, returned, total?, has_more, next_offset} است.
| پارامتر | نوع | الزامی | توضیح |
|---|---|---|---|
domain_id | string | خیر | فیلتر اختیاری شناسه دامنه. |
limit | integer | خیر | اندازه صفحه. پیشفرض 50. (پیشفرض 50؛ 1 تا 200) |
offset | integer | خیر | تعداد رکوردهایی که باید رد شوند. از pagination.next_offset صفحه قبل استفاده کنید. (پیشفرض 0؛ 0 تا …) |
{
"name": "list_inboxes",
"arguments": {
"domain_id": "dom_123"
}
}get_inboxدریافت یک صندوق ورودی
یک نشانی ورودی را دریافت کنید.
| پارامتر | نوع | الزامی | توضیح |
|---|---|---|---|
inbox_id | string | بله | شناسه صندوق ورودی (با inb_ شروع میشود)، همانطور که یک ابزار فهرست یا ایجاد برگردانده است. (حداکثر 128 کاراکتر) |
{
"name": "get_inbox",
"arguments": {
"inbox_id": "inb_123"
}
}create_inboxساخت نشانی ورودی
نشانیای مانند support@<receiving domain> را روی دامنهای بسازید که وضعیت ورودی آن ready است (ابتدا setup_inbound و verify_inbound را اجرا کنید). ایمیلهای دریافتی در list_emails با direction برابر in نمایش داده میشوند.
| پارامتر | نوع | الزامی | توضیح |
|---|---|---|---|
domain_id | string | بله | شناسه دامنه (با dom_ شروع میشود)، همانطور که یک ابزار فهرست یا ایجاد برگردانده است. (حداکثر 128 کاراکتر) |
local_part | string | بله | بخش پیش از @، مثلاً support. (حداکثر 64 کاراکتر) |
name | string | خیر | نام نمایشی اختیاری. |
{
"name": "create_inbox",
"arguments": {
"domain_id": "dom_123",
"local_part": "support",
"name": "Support"
}
}update_inboxتغییر نام، فعال یا غیرفعال کردن صندوق ورودی
نام یک صندوق ورودی را تغییر دهید یا وضعیت آن را روی active / disabled تنظیم کنید.
| پارامتر | نوع | الزامی | توضیح |
|---|---|---|---|
inbox_id | string | بله | شناسه صندوق ورودی (با inb_ شروع میشود)، همانطور که یک ابزار فهرست یا ایجاد برگردانده است. (حداکثر 128 کاراکتر) |
name | string | خیر | نام نمایشی جدید. |
status | string | خیر | وضعیت جدید. (یکی از active، disabled) |
{
"name": "update_inbox",
"arguments": {
"inbox_id": "inb_123",
"status": "disabled"
}
}set_inbox_forwardingفوروارد صندوق ورودی به نشانی دیگر
SENDS REAL EMAIL (ایمیل واقعی ارسال میکند) وقتی به کسی جز مالک حساب فوروارد شود: مقصد فوروارد ایمیلهای دریافتی یک صندوق ورودی را تنظیم میکند. نشانی خود مالک بلافاصله فعال میشود؛ هر نشانی دیگری یک ایمیل تأیید دریافت میکند و فوروارد تا زمانی که کسی در آنجا تأیید کند در وضعیت pending میماند. برای خاموش کردن فوروارد، forward_to: null را ارسال کنید. نسخههای فورواردشده از نشانی صندوق ورودی و با فرستنده اصلی بهعنوان Reply-To ارسال میشوند.
| پارامتر | نوع | الزامی | توضیح |
|---|---|---|---|
inbox_id | string | بله | شناسه صندوق ورودی (با inb_ شروع میشود)، همانطور که یک ابزار فهرست یا ایجاد برگردانده است. (حداکثر 128 کاراکتر) |
forward_to | string,null | بله | نشانی ایمیل مقصد فوروارد، یا null برای خاموش کردن فوروارد. (حداکثر 254 کاراکتر) |
{
"name": "set_inbox_forwarding",
"arguments": {
"inbox_id": "inb_123",
"forward_to": "team@example.net"
}
}delete_inboxحذف صندوق ورودی
DESTRUCTIVE (مخرب): یک نشانی ورودی را حذف میکند. ایمیلهایی که قبلاً دریافت شدهاند نگه داشته میشوند؛ ایمیلهای جدید به این نشانی دیگر در آن ثبت نمیشوند.
| پارامتر | نوع | الزامی | توضیح |
|---|---|---|---|
inbox_id | string | بله | شناسه صندوق ورودی (با inb_ شروع میشود)، همانطور که یک ابزار فهرست یا ایجاد برگردانده است. (حداکثر 128 کاراکتر) |
{
"name": "delete_inbox",
"arguments": {
"inbox_id": "inb_123"
}
}تحویلپذیری، برگشتها و فهرست توقف ارسال
deliverability_statsدریافت آمار تحویل 30 روزه
مجموعهای 30 روزه در سطح فضای کاری: sent، delivery، bounce، complaint، reject، open، click و deliveryRate (%).
بدون پارامتر.
{
"name": "deliverability_stats",
"arguments": {}
}list_sender_reputationفهرست اعتبار فرستنده
وضعیت اعتبار برای هر نشانی From مشخص: active، throttled (محدودیت روزانه کمتر) یا paused (ارسالها 423 برمیگردانند)، همراه با دلیل و محدودیت روزانه. وقتی ارسالها با 423 یا 429 شکست میخورند این را بررسی کنید. صفحهبندیشده: نتیجه شامل pagination {offset, limit, returned, total?, has_more, next_offset} است.
| پارامتر | نوع | الزامی | توضیح |
|---|---|---|---|
limit | integer | خیر | اندازه صفحه. پیشفرض 50. (پیشفرض 50؛ 1 تا 200) |
offset | integer | خیر | تعداد رکوردهایی که باید رد شوند. از pagination.next_offset صفحه قبل استفاده کنید. (پیشفرض 0؛ 0 تا …) |
{
"name": "list_sender_reputation",
"arguments": {}
}list_suppressionsفهرست موارد توقف ارسال
فهرست توقف ارسال فضای کاری: گیرندگانی که پس از برگشت دائمی یا گزارش اسپم مسدود شدهاند. ارسال به آنها با 422 شکست میخورد. صفحهبندیشده: نتیجه شامل pagination {offset, limit, returned, total?, has_more, next_offset} است.
| پارامتر | نوع | الزامی | توضیح |
|---|---|---|---|
limit | integer | خیر | اندازه صفحه. پیشفرض 50. (پیشفرض 50؛ 1 تا 200) |
offset | integer | خیر | تعداد رکوردهایی که باید رد شوند. از pagination.next_offset صفحه قبل استفاده کنید. (پیشفرض 0؛ 0 تا …) |
{
"name": "list_suppressions",
"arguments": {}
}remove_suppressionحذف مورد توقف ارسال ناشی از برگشت ایمیل
DESTRUCTIVE (مخرب؛ یک مانع ایمنی را تضعیف میکند): یک مورد توقف ارسال ناشی از برگشت را حذف میکند تا بتوان دوباره به آن نشانی ایمیل فرستاد. فقط وقتی این کار را انجام دهید که انسان تأیید کند نشانی اکنون معتبر است. موارد ناشی از گزارش اسپم قابل حذف نیستند (409).
| پارامتر | نوع | الزامی | توضیح |
|---|---|---|---|
email | string | بله | نشانی گیرنده موجود در فهرست توقف ارسال. (حداکثر 320 کاراکتر) |
{
"name": "remove_suppression",
"arguments": {
"email": "fixed-mailbox@example.net"
}
}list_blocked_recipientsفهرست گیرندگان مسدودشده
همه گیرندگانی که SendHQ از ارسال به آنها خودداری میکند: برگشتها، گزارشهای اسپم و لغو اشتراکهای بازاریابی در سطح دامنه، همراه با خلاصهای به تفکیک نوع. حداکثر 500 مورد جدیدتر را میخواند. صفحهبندیشده: نتیجه شامل pagination {offset, limit, returned, total?, has_more, next_offset} است.
| پارامتر | نوع | الزامی | توضیح |
|---|---|---|---|
limit | integer | خیر | اندازه صفحه. پیشفرض 50. (پیشفرض 50؛ 1 تا 200) |
offset | integer | خیر | تعداد رکوردهایی که باید رد شوند. از pagination.next_offset صفحه قبل استفاده کنید. (پیشفرض 0؛ 0 تا …) |
{
"name": "list_blocked_recipients",
"arguments": {}
}حساب، میزان مصرف، analytics و کلیدها
get_accountدریافت حساب، میزان مصرف و صورتحساب
ایمیل مالک حساب، پلن/سطح دسترسی، تحویل به گیرندگان مصرفشده در دوره جاری در برابر سهمیه، دامنههای مصرفشده در برابر سقف، انتقال پیوست، خلاصه اعتبار، وضعیت اشتراک، پلنهای منتشرشده و شمارشهای فضای کاری. از آن برای بررسی سهمیه باقیمانده یا اینکه دوره آزمایشی به چه کسی میتواند تحویل دهد (ایمیل حساب) استفاده کنید.
بدون پارامتر.
{
"name": "get_account",
"arguments": {}
}get_analyticsدریافت analytics ارسال
analytics داشبورد برای 7، 30 یا 90 روز گذشته: مجموع sent/received/delivered/bounced/blocked/opened/clicked/complaint، یک خط زمانی روزانه، دامنههای پرارسال و موضوعهای پرتکرار.
| پارامتر | نوع | الزامی | توضیح |
|---|---|---|---|
days | integer | خیر | بازه به روز: 7، 30 (پیشفرض) یا 90. (یکی از 7، 30، 90) |
{
"name": "get_analytics",
"arguments": {
"days": 30
}
}list_api_keysفهرست فراداده کلیدهای API
نام کلیدهای API، پیشوندهای غیرمحرمانه و زمان آخرین استفاده را فهرست میکند. فقطخواندنی: این سرور MCP نمیتواند کلید بسازد، بچرخاند یا باطل کند؛ این کار را انسان در داشبورد انجام میدهد. صفحهبندیشده: نتیجه شامل pagination {offset, limit, returned, total?, has_more, next_offset} است.
| پارامتر | نوع | الزامی | توضیح |
|---|---|---|---|
limit | integer | خیر | اندازه صفحه. پیشفرض 50. (پیشفرض 50؛ 1 تا 200) |
offset | integer | خیر | تعداد رکوردهایی که باید رد شوند. از pagination.next_offset صفحه قبل استفاده کنید. (پیشفرض 0؛ 0 تا …) |
{
"name": "list_api_keys",
"arguments": {}
}get_service_healthبررسی سلامت سرویس SendHQ
بررسی میکند که API SendHQ در دسترس است و کدام ارائهدهنده ایمیل فعال است. به کلید API معتبر نیاز ندارد.
بدون پارامتر.
{
"name": "get_service_health",
"arguments": {}
}فهرست پوشش API
هر عملیات در API عمومی و ابزاری که آن را پوشش میدهد. هر کاری که کاربر در داشبورد میتواند انجام دهد و API دارد پوشش داده شده است؛ موارد مستثنای زیر عمدی هستند.
| Endpoint | ابزار | یادداشتها |
|---|---|---|
| POST /emails | send_email | ارسال یک ایمیل |
| POST /emails/batch | send_batch | ارسال حداکثر 100 پیام شخصیسازیشده |
| GET /emails | list_emails | فهرست ایمیلهای ارسالی و دریافتی |
| GET /emails/:id | get_email | دریافت یک ایمیل و پیوستهای آن |
| PATCH /emails/:id | mark_email | بهروزرسانی وضعیت خواندهشدن، بایگانی، اسپم، دسته یا اهمیت |
| POST /emails/:id/labels | label_email | افزودن یا حذف برچسبهای یک ایمیل |
| DELETE /emails/:id | delete_email | حذف یک ایمیل نگهداریشده |
| GET /emails/:id/events | list_email_events | فهرست رویدادهای تحویل یک ایمیل |
| GET /threads/:id | get_thread | دریافت یک مکالمه به ترتیب زمانی |
| GET /labels | list_labels | فهرست برچسبها همراه با تعداد پیامها و قوانین بایگانی |
| POST /labels | create_label | ساخت برچسب، بهصورت اختیاری همراه با قوانین بایگانی خودکار |
| GET /labels/:id | get_label | دریافت یک برچسب با شناسه یا نام |
| PATCH /labels/:id | update_label | تغییر نام، تغییر رنگ یا تبدیل برچسب به bucket |
| DELETE /labels/:id | delete_label | حذف یک برچسب بدون حذف ایمیلهای آن |
| POST /labels/:id/rules | create_label_rule | افزودن قانون بایگانی خودکار به یک برچسب |
| DELETE /labels/:id/rules/:rule_id | delete_label_rule | حذف یک قانون بایگانی خودکار |
| POST /drafts | create_draft | ساخت پیشنویس در ویرایشگر |
| GET /drafts | list_drafts | فهرست پیشنویسهای ویرایشگر |
| GET /drafts/:id | get_draft | دریافت یک پیشنویس و پیوستهای آن |
| PUT /drafts/:id | update_draft | جایگزینی محتوای پیشنویس |
| DELETE /drafts/:id | delete_draft | دور ریختن پیشنویس |
| POST /drafts/:id/attachments | upload_attachment | بارگذاری پیوست در یک پیشنویس |
| GET /attachments/:id | download_attachment | دانلود یک پیوست خصوصی |
| DELETE /attachments/:id | delete_attachment | حذف یک پیوست خصوصی |
| GET /sending-identities | list_sending_identities | فهرست هویتهای فرستنده تأییدشده |
| GET /templates | list_templates | فهرست قالبهای میزبانیشده |
| POST /templates | create_template | ساخت قالب میزبانیشده |
| GET /templates/:id | get_template | دریافت پیشنویسها، نسخههای منتشرشده و میزان استفاده |
| PUT /templates/:id/draft | update_template_draft | ذخیره خودکار پیشنویس قالب |
| POST /templates/:id/draft | create_template_draft | ساخت پیشنویس جدید از نسخه منتشرشده |
| POST /templates/:id/render | render_template | رندر خروجی دقیق سرور |
| POST /templates/:id/test | send_template_test | ارسال یک snapshot آزمایشی |
| POST /templates/:id/publish | publish_template | انتشار یک نسخه تغییرناپذیر از قالب |
| POST /templates/:id/archive | archive_template | بایگانی قالب |
| POST /templates/:id/restore | restore_template | بازیابی قالب بایگانیشده |
| POST /domains | add_domain | افزودن دامنه ارسال |
| GET /domains | list_domains | فهرست دامنهها و وضعیت ذخیرهشده DNS |
| GET /domains/:id | get_domain | دریافت جزئیات راهاندازی دامنه |
| POST /domains/:id/verify | verify_domain | بهروزرسانی تأیید SES و DNS |
| POST /domains/:id/inbound/setup | setup_inbound | راهاندازی دریافت ایمیل ورودی SES |
| POST /domains/:id/inbound/verify | verify_inbound | تأیید مسیریابی MX ورودی |
| DELETE /domains/:id | delete_domain | حذف دامنه |
| GET /dns/provider | get_dns_provider | تشخیص ارائهدهنده DNS معتبر (authoritative) و hostهای نسبی رکوردها |
| GET /dns/domain-connect/connect | get_domain_connect_link | ساخت لینک رضایت Domain Connect برای راهاندازی یککلیکی DNS |
| POST /inboxes | create_inbox | ساخت نشانی ورودی |
| GET /inboxes | list_inboxes | فهرست نشانیهای ورودی |
| GET /inboxes/:id | get_inbox | دریافت یک نشانی ورودی |
| PATCH /inboxes/:id | update_inbox | تغییر نام، فعال یا غیرفعال کردن صندوق ورودی |
| PUT /inboxes/:id/forwarding | set_inbox_forwarding | فوروارد ایمیلهای دریافتی یک صندوق ورودی به نشانی دیگر |
| DELETE /inboxes/:id | delete_inbox | حذف صندوق ورودی با حفظ پیامها |
| GET /deliverability/stats | deliverability_stats | دریافت آمار تحویل 30 روز اخیر |
| GET /deliverability/reputation | list_sender_reputation | فهرست وضعیت اعتبار به تفکیک دقیق هویت فرستنده |
| GET /suppressions | list_suppressions | فهرست موارد توقف ارسال فضای کاری |
| DELETE /suppressions/:email | remove_suppression | حذف یک مورد توقف ارسال ناشی از برگشت ایمیل که واجد شرایط حذف است |
| GET /blocked-recipients | list_blocked_recipients | فهرست برگشتها، گزارشهای اسپم و لغو اشتراکها |
| GET /account | get_account | دریافت حساب، میزان مصرف، وضعیت صورتحساب و شمارشهای فضای کاری با کلید API |
| GET /analytics | get_analytics | دریافت analytics ارسال داشبورد برای 7، 30 یا 90 روز |
| GET /profile | get_account | نسخه مبتنی بر نشست (session) از GET /account؛ سرور MCP مسیر مبتنی بر کلید API را میخواند. |
| POST /billing/checkout | در دسترس نیست | تغییرات صورتحساب طبق طراحی فقط از طریق نشست انجام میشوند و به حضور مالک حساب در داشبورد نیاز دارند. وضعیت صورتحساب با get_account قابلخواندن است. |
| POST /billing/cancel | در دسترس نیست | تغییرات صورتحساب طبق طراحی فقط از طریق نشست انجام میشوند و به حضور مالک حساب در داشبورد نیاز دارند. وضعیت صورتحساب با get_account قابلخواندن است. |
| POST /keys | در دسترس نیست | عمداً مستثنا شده است: ایجنت نباید اعتبارنامه بسازد یا از بین ببرد. کلیدها را انسان در داشبورد مدیریت میکند. |
| GET /keys | list_api_keys | فهرست فراداده کلیدهای API |
| DELETE /keys/:id | در دسترس نیست | عمداً مستثنا شده است: ایجنت نباید اعتبارنامه بسازد یا از بین ببرد. کلیدها را انسان در داشبورد مدیریت میکند. |
عمداً در دسترس نیست
| قابلیت | endpointها | دلیل |
|---|---|---|
| ساخت، چرخش، ابطال یا حذف کلیدهای API | POST /keys, DELETE /keys/:id | عمداً مستثنا شده است: ایجنت نباید اعتبارنامه بسازد یا از بین ببرد. کلیدها را انسان در داشبورد مدیریت میکند. |
| شروع پرداخت (checkout) یا لغو اشتراک | POST /billing/checkout, POST /billing/cancel | تغییرات صورتحساب طبق طراحی فقط از طریق نشست انجام میشوند و به حضور مالک حساب در داشبورد نیاز دارند. وضعیت صورتحساب با get_account قابلخواندن است. |
| DNS یککلیکی Cloudflare (OAuth) | GET /api/dns/cloudflare/connect | به یک نشست تعاملی مرورگر و رضایت OAuth در Cloudflare نیاز دارد. بهجای آن از رکوردهای get_domain، hostهای get_dns_provider یا get_domain_connect_link استفاده کنید. |
| ثبتنام، ورود، خروج، اتصال حساب Google | /api/auth/* | احراز هویت انسانی در مرورگر؛ سرور MCP با کلید API احراز هویت میکند. |
| فرم تماس با پشتیبانی | POST /api/contact | فرم عمومی وبسایت برای انسانها، نه یک عملیات فضای کاری. |
کاتالوگ قابلخواندن برای ماشین: /docs/mcp/tools.json (schemaها، annotationها، نگاشت endpointها، موارد مستثنا). نسخه Markdown این صفحه: /docs/mcp.md. با نصب CLI، دستور sendhq commands --format json همین کاتالوگ را چاپ میکند.