Skip to main content
Glama
sjk4425

ncloud-mcp-server

by sjk4425

ncloud_sens_send_sms

Send SMS, LMS, or MMS messages through Naver Cloud SENS, with support for scheduled sending, per-recipient content, and dry-run previews.

Instructions

Send SMS/LMS/MMS through SENS (POST /sms/v2/services/{serviceId}/messages → 202). Byte limits: SMS content 90, LMS/MMS content 2000, subject 40 (EUC-KR; unsupported emoji fail; oversize is truncated). MMS needs files[] with fileId from ncloud_sens_upload_sms_attachment — an MMS without files is sent as LMS. Use dryRun=true to preview.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
fromYesSender number registered in the console (digits only)
typeYesSMS (short) | LMS (long) | MMS (image attachment)
filesNoMMS attachments (MMS only)
dryRunNoIf true, returns the request preview without sending
contentYesDefault content (SMS ≤90 bytes, LMS/MMS ≤2000 bytes)
subjectNoDefault subject (LMS/MMS only, ≤40 bytes)
messagesYesRecipients (1-100)
serviceIdNoSMS service ID in NRN form (e.g. ncp:sms:kr:1********2:myproject). Defaults to NCLOUD_SENS_SMS_SERVICE_ID / NCLOUD_SENS_SERVICE_ID. Find it with ncloud_sens_list_projects (smsService.serviceId). A 'Forbidden' reply means the project does not have this channel enabled.
contentTypeNoCOMM (default) | AD (advertising)
countryCodeNoCountry code (default 82)
reserveTimeNoScheduled send time 'YYYY-MM-DD HH:mm' (no seconds; must be at least 10 minutes from now)
reserveTimeZoneNotz database name for reserveTime (default Asia/Seoul)

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed20 schema fields changedv1.16.0
    • changedInput schema / properties / content / description
      Previous value: -"Default message content (SMS: 0-90 bytes, LMS/MMS: 0-2000 bytes)"New value: +"Default content (SMS ≤90 bytes, LMS/MMS ≤2000 bytes)"
    • changedInput schema / properties / contentType / description
      Previous value: -"Content type: COMM (general, default) or AD (advertisement)"New value: +"COMM (default) | AD (advertising)"
    • changedInput schema / properties / countryCode / description
      Previous value: -"Country code (default: 82 for Korea)"New value: +"Country code (default 82)"
    • addedInput schema / properties / dryRun
      Added value: +{
      +  "default": false,
      +  "description": "If true, returns the request preview without sending",
      +  "type": "boolean"
      +}
    • addedInput schema / properties / files
      Added value: +{
      +  "description": "MMS attachments (MMS only)",
      +  "items": {
      +    "additionalProperties": false,
      +    "properties": {
      +      "fileId": {
      +        "description": "File ID from ncloud_sens_upload_sms_attachment",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "fileId"
      +    ],
      +    "type": "object"
      +  },
      +  "type": "array"
      +}
    • changedInput schema / properties / from / description
      Previous value: -"Caller ID (registered phone number, numbers only)"New value: +"Sender number registered in the console (digits only)"
    • addedInput schema / properties / from / pattern
      Added value: +"^\\d+$"
    • changedInput schema / properties / messages / description
      Previous value: -"Array of message recipients (up to 100)"New value: +"Recipients (1-100)"
    • changedInput schema / properties / messages / items / properties / content / description
      Previous value: -"Individual message content (overrides default content)"New value: +"Per-recipient content (overrides the default)"
    • changedInput schema / properties / messages / items / properties / subject / description
      Previous value: -"Individual message subject (LMS/MMS only, 0-40 bytes)"New value: +"Per-recipient subject (LMS/MMS, ≤40 bytes)"
    • changedInput schema / properties / messages / items / properties / to / description
      Previous value: -"Recipient phone number (numbers only)"New value: +"Recipient number (digits only)"
    • addedInput schema / properties / messages / items / properties / to / pattern
      Added value: +"^\\d+$"
    • addedInput schema / properties / messages / maxItems
      Added value: +100
    • addedInput schema / properties / messages / minItems
      Added value: +1
    • changedInput schema / properties / reserveTime / description
      Previous value: -"Reserved send time (YYYY-MM-DD HH:mm format)"New value: +"Scheduled send time 'YYYY-MM-DD HH:mm' (no seconds; must be at least 10 minutes from now)"
    • addedInput schema / properties / reserveTime / pattern
      Added value: +"^\\d{4}-\\d{2}-\\d{2} \\d{2}:\\d{2}$"
    • changedInput schema / properties / reserveTimeZone / description
      Previous value: -"Reserved time zone (default: Asia/Seoul)"New value: +"tz database name for reserveTime (default Asia/Seoul)"
    • addedInput schema / properties / serviceId
      Added value: +{
      +  "description": "SMS service ID in NRN form (e.g. ncp:sms:kr:1********2:myproject). Defaults to NCLOUD_SENS_SMS_SERVICE_ID / NCLOUD_SENS_SERVICE_ID. Find it with ncloud_sens_list_projects (smsService.serviceId). A 'Forbidden' reply means the project does not have this channel enabled.",
      +  "type": "string"
      +}
    • changedInput schema / properties / subject / description
      Previous value: -"Default message subject (LMS/MMS only, 0-40 bytes)"New value: +"Default subject (LMS/MMS only, ≤40 bytes)"
    • changedInput schema / properties / type / description
      Previous value: -"Message type: SMS (short), LMS (long), MMS (multimedia)"New value: +"SMS (short) | LMS (long) | MMS (image attachment)"
  2. First observedv1.10.1

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With empty annotations, the description carries the full disclosure burden and does so well. It discloses encoding (EUC-KR), failure behavior (unsupported emoji fail, oversize truncated), MMS downgrade behavior, and the dryRun preview mode, all beyond the operation itself.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three dense sentences with no filler. The purpose, endpoint, constraints, encoding rules, attachment requirement, fallback behavior, and preview capability are all packed efficiently, with the core action placed first.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a complex 12-parameter tool with no annotations and no output schema, the combination of a rich description and full schema coverage leaves no critical gap for invocation. The remaining details like serviceId resolution, reserveTime constraints, and contentType defaults already live in the schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3 because the input schema already documents every parameter. The description adds value beyond the schema by linking files[] to ncloud_sens_upload_sms_attachment and clarifying the LMS fallback and dryRun semantics.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Opens with a specific verb and resource: 'Send SMS/LMS/MMS through SENS' plus the exact endpoint and expected 202 response. The message types distinguish it from other SENS send tools such as ncloud_sens_send_alimtalk and ncloud_sens_send_brandmessage.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides clear operational context: MMS requires files from ncloud_sens_upload_sms_attachment, an MMS without files is sent as LMS, and dryRun=true gives a preview. It lacks an explicit exclusion statement naming the alternative SENS send tools, so it stops short of a full when-to-use vs alternatives directive.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Deploy Server

Other Tools