- مستندات
- API و MCP
MCP Server
کلود، Cursor و سایر ابزارهای AI را با MCP server میزبانیشده انسین به NSIN وصل کنید.
NSIN یک Model Context Protocol (MCP) server از راه دور میزبانی میکند — به AI assistant خودتان بگویید "purge /assets on example.com" یا چیزی شبیه آن، با زبان عادی.
- Endpoint:
https://api.nsin.ir/mcp(Streamable HTTP) - Auth: API key شما بهصورت
Authorization: Bearer nsin_… - چیزی برای نصب نیست — NSIN آن را میزبانی میکند.
اتصال
Claude Code
claude mcp add --transport http nsin https://api.nsin.ir/mcp \
--header "Authorization: Bearer nsin_your_key_here"Claude Desktop
این را به claude_desktop_config.json اضافه کنید (Settings → Developer → Edit Config). با mcp-remote کلید شما بهصورت header فرستاده میشود:
{
"mcpServers": {
"nsin": {
"command": "npx",
"args": ["-y", "mcp-remote", "https://api.nsin.ir/mcp",
"--header", "Authorization: Bearer nsin_your_key_here"]
}
}
}Cursor
به .cursor/mcp.json (یا ~/.cursor/mcp.json سراسری) اضافه کنید:
{
"mcpServers": {
"nsin": {
"url": "https://api.nsin.ir/mcp",
"headers": { "Authorization": "Bearer nsin_your_key_here" }
}
}
}Toolها
علامت ✓ یعنی یک key read-only میتواند از آن tool استفاده کند. کلیدهای read-only فهرست کوچکتری میبینند — toolهای write هرگز به assistant نشان داده نمیشوند. هر tool به client هم میگوید که فقط میخواند یا چیزی را حذف یا جایگزین میکند، تا Claude و clientهای دیگر قبل از یک call پرخطر از شما بپرسند.
Domain و recordهای DNS
| Tool | کلیدهای read-only | توضیح |
|---|---|---|
list_domains |
✓ | domainهای شما: وضعیت، حالت DNS، SSL، نقش |
get_domain |
✓ | جزئیات یک domain، nameserverها، تنظیمات |
get_domain_checks |
✓ | آخرین نتیجهٔ هر بررسی DNS |
add_domain |
— | اضافه کردن یک domain (managed یا DNS خارجی) |
check_nameservers |
— | تست دوبارهٔ delegation و فعالسازی domain در انتظار |
verify_domain |
— | بررسی رکورد TXT یک domain با DNS خارجی و فعالسازی آن |
enable_domain |
— | برگرداندن یک domain غیرفعال |
delete_domain |
— | حذف domain (فقط مالک، با confirm) |
update_domain_settings |
— | بودجه/TTL/سقف body برای cache، security headerها، HSTS، حداقل TLS، bot cache، Markdown for AI، حالت DNS |
set_developer_mode |
— | bypass موقت cache و نمایش خطاهای origin |
probe_origin_protocols |
✓ | هر origin با کدام نسخههای HTTP کار میکند |
list_dns_records |
✓ | recordها: idها، وضعیت proxy، scheme/port/host مبدأ |
create_dns_record |
— | ساخت یک record: TTL، scheme، port، override برای Host |
update_dns_record |
— | تغییر فیلدهای یک record |
delete_dns_record |
— | حذف یک record |
batch_update_dns_records |
— | تغییر تا ۱٬۰۰۰ record در یک call |
batch_delete_dns_records |
— | حذف تا ۱٬۰۰۰ record (با confirm) |
check_edge_dns |
— | DNS خارجی: تست اینکه یک hostname به edge انسین میرسد |
Import و export ناحیه (zone)
| Tool | کلیدهای read-only | توضیح |
|---|---|---|
export_dns_zone |
✓ | zone بهصورت فایل BIND (با originها، نه IPهای edge) |
scan_dns_records |
✓ | پیشنمایش آنچه nameserverهای فعلی منتشر میکنند |
preview_zone_file |
— | parse یک فایل zone و نمایش نتیجهٔ import |
import_dns_records |
— | import سطرها، یا همهچیز از یک scan تازه |
get_dns_import_session |
✓ | خواندن یک import مرحلهای |
manage_dns_import_session |
— | شروع، scan دوباره، commit یا کنار گذاشتن import مرحلهای |
یک export از انسین همانطور که بود import میشود: recordهای proxied همچنان proxied میمانند و alias روی apex بهصورت ANAME برمیگردد.
SSL
| Tool | کلیدهای read-only | توضیح |
|---|---|---|
get_ssl_status |
✓ | اعتبار گواهی، تاریخ انقضا، صادرکننده، SANها، خلأها |
list_ssl_certificates |
✓ | همهٔ گواهیها: مدیریتشده توسط انسین و آپلودشده |
issue_ssl_certificate |
— | صدور فوری گواهی، بدون صبر برای چرخه |
request_managed_ssl_certificate |
— | افزودن گواهی انسین پشت یک گواهی آپلودشده |
upload_ssl_certificate |
— | نصب گواهی و کلید خودتان، یا فقط parse آن |
select_ssl_certificate |
— | انتخاب گواهیای که edge ارائه میدهد |
remove_ssl_certificate |
— | حذف یک گواهی آپلودشده (با confirm) |
check_ssl_delegation |
— | DNS خارجی: تست delegation رکورد _acme-challenge |
get_acme_dns_account |
✓ | حساب acme-dns پشت صدور گواهی، اگر باشد |
manage_acme_dns_account |
— | ذخیره، تست یا حذف آن حساب |
اشتراکگذاری و gatewayها
| Tool | کلیدهای read-only | توضیح |
|---|---|---|
list_domain_members |
✓ | چه کسانی دسترسی دارند، با نقش |
list_domain_invites |
— | دعوتهای در انتظار (لینکهایشان حکم credential دارد) |
invite_domain_member |
— | دعوت یک نفر با email و نقش |
update_domain_member |
— | تغییر نقش یا اعلانهای یک عضو |
remove_domain_member |
— | لغو دسترسی (با confirm) |
manage_domain_invite |
— | ارسال دوباره یا لغو یک دعوت |
list_gateways |
✓ | فهرست gatewayها و اینکه کدام روشناند |
accept_gateway_terms |
— | ثبت پذیرش شرایط gateway توسط کاربر |
enable_gateway / rename_gateway / disable_gateway |
— | روشن کردن، تغییر نام، خاموش کردن یک gateway |
Rules
| Tool | کلیدهای read-only | توضیح |
|---|---|---|
list_rules |
✓ | یک نوع rule، به ترتیب اجرا، با idها و تنظیمات |
get_rule |
✓ | یک rule با همهٔ فیلدهایش |
get_rule_schema |
✓ | body دقیق هر نوع rule، با مثال |
create_rule |
— | ساخت rule از هر نوع |
update_rule |
— | تغییر یک rule (body جزئی) |
delete_rule |
— | حذف یک rule (با confirm) |
reorder_rules |
— | تعیین ترتیب اجرای یک نوع |
toggle_rule |
— | روشن/خاموش کردن یک rule |
get_waf_shield_status |
✓ | وضعیت NSIN Shield، rule پیشفرض WAF |
restore_waf_shield |
— | برگرداندن rule حذفشدهٔ Shield |
list_edge_nodes |
✓ | idهای nodeهای edge، برای origin poolهای جغرافیایی |
kind: cache، waf، drop، rate_limit، captcha، bot_route، fingerprint، redirect، rewrite، header، origin_pool، origin_route، basic_auth، error_page یا optimize. ruleها فقط روی hostnameهای proxied اثر دارند. نوعی که در plan شما نیست خاموش ذخیره میشود و روشن نمیشود.
Cache
| Tool | کلیدهای read-only | توضیح |
|---|---|---|
list_cache_entries |
✓ | چه چیزی cache شده: host، path، variant، storage node، اندازه، انقضا |
get_cache_summary |
✓ | تعداد آبجکت و بایت cacheشده روی هر storage node |
get_cache_entry_content |
✓ | آنچه edge برای یک آبجکت ذخیره کرده |
purge_cache |
— | purge کل cache یک domain |
purge_cache_by_path |
— | purge/refresh یک الگوی URI |
purge_cache_entries |
— | purge/refresh دقیقاً همان آبجکتهای فهرستشده |
Traffic و logها
| Tool | کلیدهای read-only | توضیح |
|---|---|---|
get_analytics_summary |
✓ | request، bandwidth، بازدیدکننده، خطاها |
get_traffic_breakdown |
✓ | یک تفکیک: کشورها، ASNها، status codeها، TLS، cache، originها، crawlerهای AI، کندترین pathها، … |
get_top_uris |
✓ | پربازدیدترین URLها |
get_account_analytics |
✓ | traffic همهٔ domainهای شما |
search_request_logs |
✓ | log خام: status، URI، cache، fault، IP، ray id |
list_waf_events |
✓ | رویدادهای firewall: rule، هدف، اقدام |
list_tunnel_suspects |
✓ | clientهایی که شبیه tunnel VPN/proxy هستند |
run_analytics_query |
✓ | SQL دلخواه read-only روی logهای request |
test_markdown_for_agents |
✓ | گرفتن یک صفحه یک بار مثل مرورگر و یک بار مثل agent هوش مصنوعی |
get_traffic_usage |
✓ | مصرف روزانه: cached / proxied / bypass / direct |
get_plan_features |
✓ | quota، مصرف، featureهای plan |
Uptime
| Tool | کلیدهای read-only | توضیح |
|---|---|---|
get_uptime_status |
✓ | سلامت origin برای هر hostname، همین الان |
list_uptime_incidents |
✓ | تاریخچهٔ قطعیها |
get_uptime_settings |
✓ | آستانهها، hostهای زیر نظر، کانالهای هشدار |
update_uptime_settings |
— | تغییر تشخیص و هشدار |
list_uptime_monitors |
✓ | monitorهای path (تا ۱۰ عدد برای هر domain) |
create_uptime_monitor / update_uptime_monitor / delete_uptime_monitor |
— | مدیریت monitorهای path |
get_uptime_webhook |
— | webhook و secret امضای آن |
list_uptime_webhook_deliveries |
— | ۵۰ ارسال آخر |
test_uptime_webhook |
— | ارسال همین حالا یک رویداد آزمایشی |
rotate_uptime_webhook_secret |
— | جایگزینی secret امضا (با confirm) |
Email Routing
| Tool | کلیدهای read-only | توضیح |
|---|---|---|
get_email_routing |
✓ | وضعیت routing یک domain، DNS و catch-all |
enable_email_routing / disable_email_routing |
— | روشن/خاموش کردن routing (رکوردهای MX عوض میشوند) |
check_email_routing_dns |
— | بررسی همین حالای رکوردهای MX، SPF و DKIM |
set_email_routing_lock |
— | قفل یا باز کردن رکوردهایی که routing مدیریت میکند |
update_email_routing_settings |
— | گزینههای routing (subaddressing) |
list_email_routing_rules |
✓ | آدرسهای سفارشی |
create_email_routing_rule / update_email_routing_rule / delete_email_routing_rule |
— | مدیریت آدرسهای سفارشی |
set_email_catch_all |
— | سرنوشت ایمیلی که با هیچ ruleای match نمیشود |
list_email_destinations |
✓ | صندوقهایی که ایمیل میتواند به آنها برود، و تأییدشده بودنشان |
create_email_destination |
— | افزودن یک صندوق؛ ایمیل تأیید میفرستد |
resend_email_destination_verification / verify_email_destination |
— | ارسال دوبارهٔ لینک، یا تکمیل با token آن |
delete_email_destination |
— | حذف یک صندوق (با confirm) |
get_email_routing_activity |
✓ | چه اتفاقی برای ایمیلهای domain افتاد |
setup_email_routing |
— | یک مرحله: روشن کردن routing، افزودن صندوق و ساخت اولین آدرس |
send_email |
— | ارسال یک ایمیل متنی ساده از یکی از آدرسهای domain (با confirm) |
list_sent_email |
✓ | ایمیلهای ارسالی و جواب سرورهای گیرنده |
یک مقصد تا وقتی صاحبش روی لینک تأیید کلیک نکند چیزی forward نمیکند.
Account
| Tool | کلیدهای read-only | توضیح |
|---|---|---|
list_recommendations |
✓ | یافتههای NSIN برای یک domain، و چه چیزی را تغییر دهید |
get_recommendations_overview |
✓ | یافتههای باز در همهٔ domainها |
set_recommendation_dismissed |
— | پنهان کردن یا برگرداندن یک یافته |
list_notifications |
✓ | فهرست اعلانهای شما |
mark_notifications_read |
— | علامت خواندهشده برای بعضی یا همه |
list_support_tickets / get_support_ticket |
✓ | تیکتهای شما و گفتوگوهایشان |
create_support_ticket / reply_to_support_ticket |
— | باز کردن تیکت یا پاسخ به آن |
نوشتن ruleها
اول get_rule_schema را با نوع rule صدا بزنید: همهٔ فیلدهای body آن نوع را با type، مقدارهای مجاز، پیشفرضها و محدودیتها، بهعلاوهٔ bodyهای نمونه فهرست میکند. بعد create_rule را با kind و body در rule صدا بزنید. فیلدی که آن نوع ندارد قبل از ذخیره رد میشود.
update_rule یک body جزئی میگیرد: فیلدهایی که نفرستید مقدارشان میماند، و فهرستی که بفرستید جای فهرست قبلی را میگیرد. برای متوقف کردن یک rule بدون حذف، {"enabled": false} بفرستید. priority کمتر زودتر اجرا میشود؛ reorder_rules ترتیب یک نوع را در یک call تعیین میکند.
Purge کردن cache
سه tool برای purge، از دقیقترین به کلیترین. همه به permission cache.edit و یک plan با cache purge نیاز دارند.
purge_cache_by_path — tool روزمره، بعد از یک deploy. path: "/assets/*" (یک دایرکتوری)، path: "/" (صفحه اصلی)، path: "/blog/post-1" (یک صفحه). * یک wildcard است، نه regex.
- بدون
*یعنی substring match —/logo.pngبا/img/logo.png?v=2هم match میشود — وقتی مهم است با/assets/*آن را anchor کنید. hostname/nodeاختیاری دامنه را محدود میکند؛ اگر هیچکدام ندهید یعنی هر hostname، هر node.- همه variantهای cache key (query string، mobile، WebP/AVIF، CORS) هم purge میشوند.
- در هر call تا 10,000 آبجکت؛
truncated: trueیعنی دوباره تکرار کنید. باlist_cache_entriesپیشنمایش بگیرید.
purge_cache_entries دقیقاً همان سطرهایی را purge میکند که list_cache_entries برگردانده — برای الگوهایی که بیش از حد match میکنند.
purge_cache هر چیز cacheشده را روی هر node میاندازد — گزینهی خشن، origin تا پر شدن دوباره تمام traffic را میگیرد.
toolهای هدفمند mode: "refresh" را هم میپذیرند: کپی cacheشده را حذف میکند اما entry در فهرست میماند؛ بازدیدکننده بعدی دوباره از origin میگیرد. در حال deploy هستید؟ از set_developer_mode استفاده کنید، نه یک حلقه purge.
Queryهای دلخواه analytics
run_analytics_query کارهایی را پوشش میدهد که هیچ tool اختصاصی انجام نمیدهد — "20 URI برتر بر اساس تعداد 5xx، 7 روز اخیر". یک SELECT از ClickHouse روی جدول requests بدهید، ستونها و ردیفها را بهصورت JSON پس بگیرید، با سقف 10,000 ردیف.
Sandboxed است:
- فقط خواندن. فقط یک
SELECT/WITH … SELECT. write، DDL، تغییر تنظیمات،INTO OUTFILE/FORMAT، توابع table (url،file،remote،s3، …) رد میشوند. - فقط دادههای خودتان — محدود به domainهایی که key شما به آنها دسترسی دارد، حتی در یک subquery.
- زمان اجرا و تعداد ردیف محدود است.
ستونهای مفید requests: event_time، domain_id، hostname، method، uri، status، bytesIn، bytesOut، duration (میلیثانیه)، remoteAddr، country، asn، asnOrg، userAgent، cacheStatus (hit/miss/bypass)، bypassReason، cacheAge، reqStatus (cache/proxied/direct)، isWS، protocol، referer، rayId، node، originStatus، originAddr، error، errFault (origin/edge/client)، errReason، upstreamDuration (میلیثانیه)، originConnReused، originDialMs، originTlsMs، originTtfbMs، originTlsVersion، ja4، botKind، wafScore، mdConverted، optKind. با toStartOfHour(event_time) یا toStartOfDay(event_time) bucket بسازید.
errFault = 'origin' outageهایی را میگیرد که status 5xx ندارند — timeout، refused connection، قطع ناگهانی — چیزهایی که status >= 500 از قلم میاندازد.
دسترسیها و ایمنی
- MCP از دسترسیهای خود account شما استفاده میکند — نقش Viewer روی یک domain shareشده، حتی با یک key با دسترسی کامل، toolهای write را روی آن domain مسدود میکند.
- featureهای plan هم gate میکنند: monitoring، logها، WAF، cache purge؛ یک tool که به یکی از اینها نیاز دارد با دلیل شکست میخورد.
- هر اقدام همان validation، audit logging و metering مصرف REST API را میگیرد، و در rate limit 300 request در دقیقه حساب میشود.
- toolهایی که چیزی را برای همیشه حذف میکنند
confirm: trueمیگیرند؛ assistant باید اول از شما بپرسد. - هیچ keyای نمیتواند پول جابهجا کند: شارژ کیف پول، خرید plan و انتخاب عضو پرداختکنندهٔ یک domain فقط در پنل انجام میشود.
- Revoke کردن key در پنل، assistant را قطع میکند.