Nuntior
Server Details
Agent-first social media publishing, scheduling, analytics, and unified inbox API + 16-tool MCP server across 18 social platforms (X, LinkedIn, Instagram, YouTube, TikTok, Threads, Bluesky, Reddit, Telegram, Discord, Mastodon, Facebook, Pinterest).
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-03-26
- URL
TDQS
Scored across 16 tools
Most tools target distinct domains/actions: publishing, moderation, inbox, ads, media, telecom, billing, and analytics are clearly separated. Some ambiguity remains around the account namespace (account_register, accounts_manage, account_status) and around posts_manage versus posts_publish, but descriptions usually resolve it.
All names use snake_case with a predictable two-part domain_action or domain_resource pattern. Minor inconsistencies exist in pluralization (account vs accounts, post vs posts) and some names are resource-only rather than action-oriented.
16 tools is slightly above the ideal compact range, but the server spans several real domains—social publishing, inbox, ads, telecom, analytics, billing—so most tools earn their place. The surface is broad but not bloated.
Core workflows are well covered: account setup, social account connection, profiles, posts, blogs, media, comments, inbox, ads, telecom, analytics, and billing upgrade. Minor lifecycle gaps remain, such as API key rotation/revocation, telecom number release, and explicit team/member management.
Available Tools
16 toolsaccount_registerRegister Agent Account & WorkspaceAInspect
Provision a new Nuntior user account, multi-tenant workspace, default brand profile, and live Bearer API key (ntr_live_...) in one zero-browser call. Use this tool when an AI agent or developer needs to onboard from scratch without opening a web browser first. Returns the newly created userId, workspaceId, defaultProfileId, live apiKey, and a 1-click claimUrl so a human owner can optionally claim the workspace in the web console (https://nuntior.com/app). If the email already exists, returns a fresh session key for that workspace.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Display name for the human owner or autonomous agent operator (e.g. 'Alex Rivera' or 'Growth Agent'). | |
| No | Owner or developer email address used to identify the Nuntior account and receive workspace claim notifications (e.g. 'founder@company.com'). | ||
| agentHarness | No | Identifier of the calling AI agent harness or MCP client (e.g. 'grok-bot', 'cursor', 'claude-code', 'n8n', 'openclaw', 'windsurf') for telemetry attribution. | grok-bot |
| organizationName | No | Organization, agency, or workspace name used to label the multi-tenant workspace and default brand profile. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the mutation and open-world profile, and the description adds valuable behavior: it lists what gets created, says the API key is live, explains the claimUrl, and covers the existing-email path. It stops short of clarifying key lifecycle details such as whether the API key is shown only once or how claim URLs expire.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded: purpose first, then usage condition, then return values and edge-case behavior. Every sentence carries useful information and none is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description appropriately explains the key return values and the existing-email behavior. A minor gap remains around what happens when optional parameters are omitted, since none of the four inputs are required.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already defines all four parameters well. The description adds some meaning around email reuse and workspace labeling, but most parameter-level detail still comes from the schema rather than the description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and a precise set of resources: provisioning a user account, multi-tenant workspace, default brand profile, and live Bearer API key. It is immediately distinguishable from sibling tools such as account_status and accounts_manage.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It clearly says to use this tool when an agent or developer needs browserless onboarding from scratch, and it explains the existing-email case. It does not explicitly name alternatives or state when not to use it, but the intended context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
accounts_manageManage Social OAuth & BYOK AccountsAIdempotentInspect
List connected social accounts, initiate 1-click Managed OAuth 2.0 flows (connect_oauth), vault custom Bring-Your-Own-Keys (connect_byok) with zero markup and AES-256-GCM encryption, run live upstream API token health checks (account_health), or disconnect accounts across 18+ platforms. Use this tool whenever you need to link a new social network, verify OAuth token validity and latency, or inspect which platforms are ready for publishing. Returns account metadata, 1-click authorizationUrl links, or live latency/health diagnostics; if the workspace connection quota is full, returns a structured PLAN_CONNECTION_LIMIT_REACHED upgrade prompt.
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | Account operation: 'list' connected accounts, 'connect_oauth' to get a 1-click OAuth 2.0 authorization URL, 'connect_byok' to store custom API keys/tokens encrypted with AES-256-GCM ($0 markup), 'account_health'/'health_check' to verify live upstream token validity, or 'disconnect' to remove an account. | |
| platform | No | Target social, blog, or messaging platform slug (e.g. 'x', 'linkedin', 'bluesky', 'instagram', 'threads', 'youtube', 'tiktok', 'reddit'). Required for 'connect_oauth' and 'connect_byok'. | |
| username | No | Account handle, username, Bluesky ATProto handle (e.g. 'brand.bsky.social'), or Mastodon instance handle associated with the social account. | |
| accountId | No | Connected social account identifier (e.g. 'acc_x_byok_01'). Required when `action` is 'disconnect' and optional filter for 'account_health'. | |
| profileId | No | Brand profile identifier (e.g. 'prof_allometrik') that owns or filters the social account connections. | |
| accessToken | No | BYOK OAuth 2.0 Bearer access token, OAuth 1.0a access token, Telegram Bot token, or Discord Webhook URL encrypted at rest. | |
| refreshToken | No | Optional OAuth 2.0 refresh token or OAuth 1.0a access token secret used for automatic token rotation and health recovery. | |
| customClientId | No | BYOK OAuth App Client ID, API Key, Bot ID, or Bluesky identifier encrypted at rest with AES-256-GCM in the Nuntior Vault (0% platform markup). | |
| customClientSecret | No | BYOK OAuth App Client Secret, API Key Secret, or Bluesky App Password encrypted at rest with AES-256-GCM in the Nuntior Vault. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare openWorldHint=true and destructiveHint=false, and the description adds real value beyond that: AES-256-GCM encryption at rest, zero markup on BYOK, live latency diagnostics, and a specific failure mode (structured PLAN_CONNECTION_LIMIT_REACHED prompt when the connection quota is full). It stops short of saying whether disconnect is reversible or what authentication/permission level is needed for the vaulted key operations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The opening sentence is densely front-loaded and enumerates each action with its internal action name, which is genuinely useful. But it is a single run-on sentence packed with marketing phrasing ('1-click', 'zero markup', 'vault'), and the second and third sentences repeat the returns explanation rather than adding new routing information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a multi-action, 9-parameter tool with no output schema, the description covers the full action surface, the return shapes (metadata, authorizationUrl, latency diagnostics), and an error contract. What's missing is per-action required-parameter guidance in prose and any notion of OAuth flow completion or authorization failures, leaving a small gap for a fairly complex tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so every one of the 9 parameters is already documented in the schema, including enum meanings and conditional requirements (platform required for connect_oauth/connect_byok, accountId required for disconnect). The description doesn't add syntax, format, or interaction detail beyond restating the action list, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names five specific operations (list, connect_oauth, connect_byok, health checks, disconnect) mapped to the action enum, and states the resource domain (social accounts across 18+ platforms). It distinguishes itself from siblings like account_register and account_status by focusing on OAuth/BYOK credential lifecycle rather than registration or status reporting.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives a concrete when-to-use clause: 'Use this tool whenever you need to link a new social network, verify OAuth token validity and latency, or inspect which platforms are ready for publishing.' That covers the main triggers well. However, it never explicitly excludes or routes against the closest siblings (account_register, account_status), which an agent may confuse with account creation or status inspection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
account_statusInspect Account Status & Plan QuotasARead-onlyIdempotentInspect
Inspect the authenticated workspace's subscription tier (free, starter, builder, scale), active social account connections versus plan quota limits (3, 12, 35, or 100), monthly posts published, API key prefix, Stripe billing status, and connected brand profiles. Use this read-only diagnostic tool before connecting new social accounts or publishing high-volume campaigns to verify quota availability and account readiness. Returns a structured summary object containing workspace, planLimits, usage, billing, profiles, and connectedAccounts.
| Name | Required | Description | Default |
|---|---|---|---|
| apiKey | No | Optional Nuntior Bearer API key (`ntr_live_...`) override when not supplied via the HTTP `Authorization` header. | |
| workspaceId | No | Optional workspace identifier (`ws_...`) to inspect a specific tenant workspace when managing multiple workspaces. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is covered; the description reinforces 'read-only diagnostic' and, importantly, discloses that it returns a structured summary object with named keys, which annotations cannot convey. It omits error behavior for unauthenticated or invalid workspace IDs, keeping it below a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the scope of inspection before the usage directive and return shape. The long enumeration of tier/quota values is information-dense but each item is genuinely inspectable output, so it earns its place; slightly sentence-heavy but well ordered.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description compensates by listing the returned object's keys (workspace, planLimits, usage, billing, profiles, connectedAccounts), and it establishes the auth model via the API key mention. Missing only edge-case behavior such as what happens with an invalid workspaceId.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both the apiKey override and workspaceId tenant-selection semantics are already documented in the schema. The prose adds no further parameter detail (no format hints, no interaction between apiKey and the Authorization header), so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a specific verb (inspect) and resource (authenticated workspace's account status), then enumerates exactly what is surfaced: subscription tier values, quota limits, monthly post usage, API key prefix, Stripe billing status, and brand profiles. This is clearly distinguishable from siblings like billing_upgrade or accounts_manage.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to reach for it: before connecting new social accounts or launching high-volume campaigns, to verify quota availability and readiness. It does not name an alternative tool for the upgrade path (e.g., billing_upgrade), so it stops short of full when/when-not routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ads_campaignsPaid Social Ad Campaigns & Post BoostingAIdempotentInspect
Create, list, pause, resume, inspect metrics, or boost organic posts into paid social ad campaigns across LinkedIn Ads, X Ads, Meta (Facebook/Instagram) Ads, and TikTok Spark Ads with 0% Nuntior ad-spend commission. Use this tool when an organic post performs strongly and should be amplified to a targeted B2B or consumer audience with a controlled daily budget. Returns campaign configuration, status, targeting parameters, and real-time spend/conversion snapshots.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Human-readable campaign name (e.g. 'Q4 AI Agent Launch — LinkedIn Sponsored Update'). | |
| action | Yes | Paid ads operation: 'list' campaigns, 'create' a new campaign, 'boost_post' to turn an existing organic post into a paid ad, 'pause' or 'resume' delivery, or fetch 'metrics'. | |
| platform | No | Target ad network platform (e.g. 'linkedin', 'x', 'facebook', 'instagram', 'tiktok'). | |
| objective | No | Campaign optimization objective: 'leads' (lead gen forms/signups), 'traffic' (website clicks), 'engagement' (likes/replies), or 'awareness' (reach/impressions). | leads |
| profileId | No | Brand profile identifier (`prof_...`) linked to the ad account. | prof_allometrik |
| targeting | No | Structured audience targeting criteria such as countries, job titles, industries, or interest keywords (e.g. `{ "countries": ["US", "AE", "ES"], "titles": ["CTO", "Founder"] }`). | |
| campaignId | No | Ad campaign identifier (`camp_...`). Required when pausing, resuming, or querying a specific campaign. | |
| postIdToBoost | No | Existing Nuntior organic post ID (`post_...`) to promote when `action` is 'boost_post'. | |
| dailyBudgetUsd | No | Daily ad spend cap in USD (e.g. 25 for $25/day). Nuntior charges 0% markup on ad spend. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
It discloses key behavioral traits beyond the schema and annotations, such as the business advantage of '0% Nuntior ad-spend commission' and the exact data returned ('real-time spend/conversion snapshots').
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The text is dense but efficient, using every sentence to convey either a capability, a scope, a business benefit, or an output specification. It is perfectly sized for its complexity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's multi-platform nature and the breadth of its functions, the description is highly complete, covering the full lifecycle of an ad campaign and the context of its operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
While the schema is complete, the description reinforces the scope by listing specific supported platforms and clearly linking the 'boost_post' action to the strategic use case, helping the agent choose the correct parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description provides an exhaustive list of capabilities: 'Create, list, pause, resume, inspect metrics, or boost organic posts.' This clearly defines the scope of the tool beyond just 'ads_campaign' and specifies the platforms it supports.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides a perfect 'when-to-use' scenario: 'Use this tool when an organic post performs strongly and should be amplified.' This is highly effective for routing the agent when a post goes viral organically.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
analytics_queryCross-Network Analytics & Live Social ListeningARead-onlyIdempotentInspect
Query cross-network engagement analytics (account_overview, post_metrics, audience_growth), compute AI-recommended optimal posting windows (best_times), or execute live real-time social listening (social_listen) across Bluesky, Hacker News, Dev.to, Reddit, and X. Use social_listen to discover live community threads, competitor mentions, and high-intent buyer questions matching any keyword query. Returns aggregated engagement metrics, X Smart Link cost savings, optimal CET/UTC posting slots, or live upstream social signals with direct thread URLs and author handles.
| Name | Required | Description | Default |
|---|---|---|---|
| query | No | Search keyword, brand name, competitor handle, or buyer-intent phrase when running live `action: 'social_listen'` (e.g. 'MCP server social media API' or 'n8n AI agent workflow'). | |
| action | Yes | Analytics or listening mode: 'account_overview' for cross-network KPIs, 'post_metrics' for individual post performance, 'audience_growth' for follower velocity, 'best_times' for highest-lift publishing windows, or 'social_listen' for live keyword/intent discovery. | |
| postId | No | Optional post identifier (`post_...`) when inspecting granular metrics via `action: 'post_metrics'`. | |
| platform | No | Optional social network filter to scope metrics or listening to a single platform. | |
| profileId | No | Brand profile identifier (`prof_...`) to aggregate analytics for. | prof_allometrik |
| periodDays | No | Lookback window in days (e.g. 7, 30, 90) for aggregating impressions, engagements, and follower growth. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnlyHint/idempotentHint/openWorldHint), so the bar is lower. The description adds real value by describing what comes back — aggregated engagement metrics, X Smart Link cost savings, CET/UTC posting slots, or live signals with direct thread URLs and author handles — which the annotations do not disclose.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two dense sentences, front-loaded with the action modes and their purpose. The trailing sentence on return values is useful but partially duplicates what the leading sentences already implied about outputs.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description compensates by sketching the return shape for each action, and it names the five modes and covered networks. It omits nothing critical for calling the tool, though per-action parameter requirements (e.g., that query matters only for social_listen) are left to the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so every parameter (including the action enum and query) is already documented in the schema and the description's restatement adds little. Baseline 3 applies; the description neither adds syntax/format detail nor introduces confusion.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names specific verbs (query, compute, execute) and enumerates the five action modes alongside the covered networks, so an agent knows exactly what the tool does and how it differs from siblings like traffic_analytics. The distinction between analytics, best_times, and social_listen is spelled out rather than implied.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly routes one mode ('Use `social_listen` to discover live community threads, competitor mentions, and high-intent buyer questions'), which is clear when-to-use guidance for that action. It stops short of naming a sibling alternative or stating when not to use this tool versus traffic_analytics, so it falls short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
billing_upgradeGenerate Stripe Plan Upgrade or Portal LinkAIdempotentInspect
Generate a live 1-click Stripe Checkout session URL or Stripe Customer Billing Portal link to upgrade a Nuntior workspace subscription. Supports upgrading to starter ($19/mo, 12 social connections, 1,500 posts/mo), builder ($35/mo, 35 social connections, 10,000 posts/mo), or scale ($79/mo, 100 social connections, 50,000 posts/mo + $0.50 per extra connection), plus optional dedicated_phone ($1.50/mo E.164 number for SMS, WhatsApp, and SIP Voice AI). Returns checkoutUrl (or portalUrl), target plan metadata, connection quotas, and user instructions.
| Name | Required | Description | Default |
|---|---|---|---|
| plan | No | Target subscription tier: 'starter' ($19/mo, 12 connections), 'builder' ($35/mo, 35 connections), or 'scale' ($79/mo, 100 connections). | starter |
| action | No | Billing operation: 'checkout' creates a new Stripe Checkout upgrade session URL; 'portal' generates a Stripe Customer Portal link to manage existing payment methods and invoices. | checkout |
| apiKey | No | Optional Nuntior Bearer API key (`ntr_live_...`) override when not provided in the HTTP `Authorization` header. | |
| dedicated_phone | No | When true, attaches a dedicated E.164 telecom phone number add-on ($1.50/mo) for transactional SMS, WhatsApp Business Cloud, and SIP Voice AI agents. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover safety (destructiveHint=false, openWorldHint=true), so the bar is lower; the description adds value by disclosing the return payload (checkoutUrl/portalUrl, plan metadata, quotas, instructions). It could go further on the payment lifecycle — e.g., that no charge occurs until the user completes checkout — and the stated 'idempotentHint: true' sits slightly awkwardly with 'generates a live 1-click session URL' each call.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action and output type, then dense supporting detail. The pricing/quota enumeration is long but each figure is decision-relevant for an agent choosing a plan; nothing is clearly padding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the return-shape burden and does so (checkoutUrl/portalUrl plus instructions). Auth is covered indirectly by the schema's apiKey note. Minor gap: it doesn't state that the returned URL must be surfaced to the end user in a browser, which matters for correct handling.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all four parameters and both enums, making 3 the baseline. The description reinforces the plan tiers and adds one genuinely new fact — the $0.50 per extra connection overage — but otherwise largely restates the enum documentation rather than adding usage semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a specific verb (Generate) and concrete resources (Stripe Checkout session URL / Customer Billing Portal link), scoped to workspace subscription upgrades. The plan tiers and add-on are spelled out, so an agent can immediately distinguish this from account_register, account_status, and the other billing-adjacent siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The upgrade context is clear ('to upgrade a Nuntior workspace subscription') and the two modes are named, with plan choices enumerated. However, it never explicitly routes the agent — the checkout-vs-portal decision only appears in the schema's `action` description, and there are no stated prerequisites (e.g., must already have an account or active subscription) or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
blogs_publishPublish Canonical Blog Articles & SyndicationAInspect
Publish or update long-form Markdown SEO articles directly to the hosted Nuntior Live Reader (https://nuntior.com/p/:slug), Ghost CMS, WordPress, Webflow, Dev.to, Medium, or Hashnode. Use this tool for canonical content-first workflows: publish the full technical article first to get a live canonical URL, then pass that URL into posts_publish with xLinkStrategy: 'first_reply' to syndicate across 18 social networks. Returns the live articleId, slug, public url, blogMirrorUrl, and publication timestamp.
| Name | Required | Description | Default |
|---|---|---|---|
| slug | No | Custom URL slug (e.g. 'agent-first-social-mcp-architecture'). Auto-generated from `title` if omitted. | |
| tags | No | Array of topic tags or categories attached to the article for SEO discovery (e.g. `['AI Agents', 'MCP', 'Automation']`). | |
| title | No | Full headline title of the blog article (used for H1, OpenGraph tags, and automatic slug generation). | |
| action | Yes | CMS blog operation: 'list_sites' returns connected blog publications and existing articles, 'publish_article' publishes a new Markdown article, and 'update_article' edits an existing article by slug or ID. | |
| platform | No | Destination blog or CMS engine: 'nuntior' (instant hosted reader at nuntior.com/p/:slug), 'ghost', 'wordpress', 'webflow', 'devto', 'medium', or 'hashnode'. | nuntior |
| articleId | No | Existing article identifier (`art_...`) when updating an article via `action: 'update_article'`. | |
| profileId | No | Brand profile identifier (`prof_...`) credited as the publication author. | prof_allometrik |
| canonicalUrl | No | Optional canonical URL (`<link rel="canonical">`) when cross-syndicating an existing blog post to Dev.to, Medium, or Hashnode. | |
| markdownBody | No | Complete long-form article body formatted in standard Markdown (supports headings, code blocks, tables, and links). | |
| publishStatus | No | Publication visibility state: 'published' makes the article immediately live; 'draft' stages it for review. | published |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare openWorld=true, non-idempotent, non-destructive writes, so the safety profile is covered. The description adds real value by disclosing the return payload (articleId, slug, url, blogMirrorUrl, timestamp) for a tool with no output schema, plus the canonical-URL mechanic. It stops short of stating auth/profile requirements or what happens to an existing article on republish.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with the action and destinations, then workflow, then return values — no filler. It is dense with platform names and could be trimmed, but every clause carries routing or expectation-setting information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 10-parameter, multi-platform write tool with no output schema, the description supplies the missing return-value and workflow context an agent needs. Minor gaps remain: per-platform prerequisites/credentials and whether 'update_article' is idempotent when a slug collides are not addressed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and three enums are fully self-documenting, so the schema carries parameter meaning. The description's only added semantics are the canonical/syndication role of canonicalUrl and the auto-slug fallback, both already implied or stated in the schema. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Opens with a specific verb+resource ('Publish or update long-form Markdown SEO articles') and enumerates the exact destinations (Nuntior Live Reader, Ghost, WordPress, Webflow, Dev.to, Medium, Hashnode). It also explicitly distinguishes itself from the sibling posts_publish by declaring this the canonical/article tool and that one the syndication tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit workflow: publish the full technical article here first to obtain a live canonical URL, then feed that URL into posts_publish with xLinkStrategy 'first_reply'. That names the alternative, the ordering, and the parameter handoff — an agent can route without inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
comments_moderateModerate Comments & Viral Auto-PlugAIdempotentInspect
List, reply to, hide, or delete public comments on published social posts, or configure an automated viral Auto-Plug reply (auto_plug) that triggers when a post crosses a specified like threshold. Use this tool to engage commenters, remove spam on X/LinkedIn/Instagram/YouTube, or automatically plug a newsletter or product URL underneath high-performing posts. Returns moderation execution status or the active Auto-Plug rule configuration.
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | Comment moderation action: 'list' comments on a post, 'reply' publicly to a comment, 'hide' or 'delete' spam/abusive comments, or 'auto_plug' to attach an automatic threshold-triggered reply. | |
| postId | No | Target social post identifier (`post_...`) whose comments are being listed, moderated, or configured for Auto-Plug. | |
| commentId | No | Specific comment identifier (`cmt_...`) when replying to, hiding, or deleting an individual comment. | |
| profileId | No | Brand profile identifier (`prof_...`) that owns the social post and comments. | prof_allometrik |
| replyText | No | Public reply message text when `action` is 'reply'. | |
| autoPlugMessage | No | Call-to-action comment text (e.g. link to docs, newsletter, or product page) automatically posted once the post reaches `autoPlugTriggerLikes`. | |
| autoPlugTriggerLikes | No | Like count threshold (e.g. 25 or 50 likes) that triggers Nuntior to automatically publish `autoPlugMessage` as a follow-up comment. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds real behavioral context (a threshold-triggered automatic follow-up comment, supported platforms, returned status/config), but it explicitly offers a 'delete' action while annotations declare destructiveHint=false, a meaningful mismatch for an agent deciding whether the call can remove data. The tension is never resolved (soft-hide vs permanent removal), so the behavioral picture is muddied rather than clarified.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the action set before the usage and return-value sentences; two sentences carry the whole load with no filler. It is dense but every clause maps to a distinct capability or outcome.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Return information is disclosed ('moderation execution status or the active Auto-Plug rule configuration'), which matters since there is no output schema, and all seven parameters are schema-documented. What's missing is the per-action dependency logic (which of postId/commentId/replyText are required for each action), which an agent must guess.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and each parameter already carries enum values, formats (`post_...`, `cmt_...`), and defaults, so the schema does the heavy lifting. The description adds no syntax or conditional guidance beyond what the schema provides, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States specific verbs (list, reply, hide, delete, configure) against a concrete resource (public comments on published social posts) and names the conditional Auto-Plug behavior. An agent can distinguish this from siblings such as inbox_messages or posts_manage without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear use cases ('engage commenters', 'remove spam on X/LinkedIn/Instagram/YouTube', 'plug a newsletter or product URL underneath high-performing posts'), which frames the when-to-use context well. It does not state when NOT to use it or explicitly route to alternatives (e.g. inbox_messages for DMs vs comments), so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
inbox_messagesUnified Social & Messaging InboxBInspect
Manage the unified cross-network social and messaging inbox across LinkedIn, X DMs, Instagram, Threads, Telegram, and WhatsApp. Supports listing conversation threads (list_threads), reading full message history in a thread (read_thread), dispatching outbound replies (reply), and marking threads as read (mark_read). Returns normalized conversation objects with sender handles, timestamps, direction (inbound/outbound), and delivery confirmation.
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | Inbox operation: 'list_threads' returns recent DM conversations, 'read_thread' fetches all messages in `threadId`, 'reply' sends a direct message response, and 'mark_read' clears unread flags. | |
| platform | No | Optional social or messaging platform filter (e.g. 'linkedin', 'x', 'instagram', 'telegram', 'whatsapp'). | |
| threadId | No | Conversation thread identifier (`thr_...`). Required when `action` is 'reply' and optional target for 'read_thread' or 'mark_read'. | |
| profileId | No | Brand profile identifier (`prof_...`) whose unified inbox should be queried or replied from. | prof_allometrik |
| replyBody | No | Text body of the outbound direct message reply when `action` is 'reply'. Required for 'reply'. | |
| unreadOnly | No | When true, filters `list_threads` to return only unread inbound conversations requiring agent or human attention. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, openWorldHint=true, idempotentHint=false and destructiveHint=false, and the description usefully adds the return shape (normalized objects with sender handles, direction, delivery confirmation). It omits the consequences an agent most needs: that 'reply' sends a real external message through the connected network, that 'mark_read' mutates state, and any authorization or rate-limit behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with the scope, then operation modes, then return values — no filler. Its one flaw is that the platform roll-call names only 6 of the 18 platforms in the enum, which is noise that could mislead rather than inform.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, and the description partially compensates by describing the returned normalized conversation objects. But for an open-world, non-idempotent multi-modal tool it still leaves out error behavior, the fact that unsupported platform values exist beyond the six listed, and any prerequisite for outbound replies.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents every parameter including the action enum, threadId format (`thr_...`), profileId, and unreadOnly. The description merely restates the action list rather than adding format, defaulting, or dependency semantics, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific resource (unified cross-network social and messaging inbox) and enumerates the four discrete operations, so an agent knows exactly what the tool does. It does not, however, differentiate itself from plausible siblings such as telecom_messaging or comments_moderate, leaving the boundary to inference.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Each action is glossed ('listing conversation threads', 'dispatching outbound replies', 'marking threads as read'), which implies when each mode applies. But there is no explicit when-to-use/when-not guidance and no routing statement versus siblings like comments_moderate for public comments or telecom_messaging for SMS/voice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
media_pipelineMedia Upload, Auto-Fit Video & Clip PipelineAIdempotentInspect
Execute media ingestion, zero-egress storage uploads, automatic multi-aspect-ratio video reframing (9:16, 16:9, 1:1, 4:5), viral short clip extraction with burned-in captions, and AI visual asset generation (media_generate). Use this tool before posts_publish whenever a campaign requires uploading video/image files or converting a single landscape video into vertical Reels, TikToks, and YouTube Shorts. Returns presigned PUT upload URLs, zero-egress CDN URLs, transcoded aspect-ratio variant maps, or extracted clip URLs.
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | Media pipeline operation: 'presign_upload' creates a direct PUT upload URL, 'auto_fit_video' reframes video into target aspect ratios with -14 LUFS audio normalization, 'extract_clips' cuts viral vertical highlights, 'media_generate' renders social visuals from a prompt, and 'check_status' polls transcode progress. | |
| prompt | No | Creative prompt or visual template instructions when running `action: 'media_generate'` (e.g. 'Minimalist B2B architecture diagram for MCP server launch'). | |
| fileName | No | Original file name with extension (e.g. 'keynote-demo.mp4' or 'launch-carousel.png') when requesting a presigned upload URL. | |
| mimeType | No | MIME type of the media asset being uploaded or generated (e.g. 'video/mp4', 'image/png', 'image/jpeg', 'image/svg+xml'). | video/mp4 |
| clipCount | No | Number of short highlight clips (1 to 10) to extract from a long-form source video when `action` is 'extract_clips'. | |
| profileId | No | Brand profile identifier (`prof_...`) that owns the media asset. | prof_allometrik |
| sizeBytes | No | File size in bytes used to validate upload quotas and allocate storage buffers. | |
| mediaAssetId | No | Existing media asset identifier (`med_...`) to reframe, extract clips from, or inspect status. | |
| targetAspectRatios | No | Target aspect ratios for automatic video/image reframing: '9:16' (Reels/TikTok/Shorts), '16:9' (X/LinkedIn/YouTube), '1:1' (Square), '4:5' (Portrait Feed). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare mutability, open-world behavior, idempotency, and non-destructiveness. The description adds useful behavioral detail beyond annotations by naming the returned artifacts: presigned PUT URLs, CDN URLs, aspect-ratio variant maps, and clip URLs. It does not cover auth requirements, rate limits, or persistence side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with capabilities, then usage guidance, then return values. It is dense but appropriately sized for a multi-action pipeline with nine parameters, though the first sentence is long and packs several capabilities together.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description usefully explains the kinds of URLs and variant maps returned. It covers the main actions and workflow, but does not mention `check_status` polling in the prose and gives no error or quota behavior details.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all nine parameters and the action enum are already documented in structured fields. The description reinforces the major operations and aspect ratios but does not add syntax or format details beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific set of verbs and resources: media ingestion, storage uploads, aspect-ratio video reframing, clip extraction, and AI visual generation. It also explicitly distinguishes the tool from `posts_publish` by describing the upload/transcode workflow that must happen first.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives a clear when-to-use rule: call before `posts_publish` when a campaign needs media uploads or landscape-to-vertical conversion. It names the related sibling and the workflow ordering, though it does not state explicit exclusions or when not to use the tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
posts_manageManage Scheduled & Published Social PostsAIdempotentInspect
List, inspect, update, delete, or retry scheduled, queued, and published social media posts stored in Nuntior Cloud. Use this tool to audit the content calendar, edit copy or scheduled timestamps before publication, remove cancelled posts, or automatically retry any failed platform deliveries. Returns matching ScheduledPost records with per-platform delivery status and timestamps.
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | Post management operation: 'list' posts (optionally filtered by status), 'get' a single post by `postId`, 'update' post content or schedule time, 'delete' a post, or 'retry_failed' to re-dispatch failed deliveries. | |
| postId | No | Unique post identifier (`post_...`). Required when `action` is 'get', 'update', or 'delete'. | |
| content | No | Updated post text content when executing `action: 'update'`. | |
| profileId | No | Brand profile identifier (`prof_...`) used to scope the post query or mutation. | prof_allometrik |
| scheduledFor | No | Updated ISO-8601 publication timestamp when rescheduling a post via `action: 'update'`. | |
| statusFilter | No | Optional status filter when listing posts (e.g. 'published', 'scheduled', 'queued', 'failed', 'draft'). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare non-read-only, idempotent, open-world, non-destructive behavior, so the bar is lower. The description usefully adds the return shape (ScheduledPost records with per-platform delivery status and timestamps) and that retry re-dispatches failed deliveries, but says nothing about whether delete is permanent, whether updates affect already-published posts, or what retry_failed does on success. Note: destructiveHint=false sits uneasily with the advertised delete action, though that is an annotation-to-capability tension rather than a description contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences: capabilities and target store first, use cases second, return shape last. No filler, nothing buried.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a six-parameter, action-dispatched tool with no output schema, the description covers what the tool reaches, when to use each action, and what comes back. It stops short of per-action preconditions (e.g., retry_failed only meaningful when deliveries failed, delete irreversibility), which is the main remaining gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already explains action, postId, content, profileId, scheduledFor, and statusFilter with per-action conditions. The description adds no syntax, defaults, or edge-case detail beyond that, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names specific verbs (list, inspect, update, delete, retry) against a concrete resource (scheduled/queued/published social posts in Nuntior Cloud). Scope is unambiguous, though it never explicitly contrasts with the sibling posts_publish, which an agent could confuse for the update/publish boundary.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Enumerates concrete use cases mapped to actions: auditing the content calendar, editing copy or timestamps before publication, removing cancelled posts, retrying failed deliveries. Clear context for when to reach for it, but no explicit exclusions or named alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
posts_publishPublish & Cross-Post Across 18 Social NetworksAInspect
Publish immediately (publish_now), schedule for a future ISO-8601 timestamp (schedule), enqueue into the profile slot queue (queue), or simultaneously cross-post (cross_post) content and media across 18+ social networks. Includes the built-in X Smart Link Optimizer (xLinkStrategy: 'first_reply'), which automatically strips external links from the main X post and publishes them in an immediate 1st reply—cutting X API link costs by 85% ($0.03 vs $0.20) while avoiding main-feed link reach penalties. Returns the persisted postId, per-platform delivery receipts (platformResults), total API cost (totalCostUsd), and exact dollar savings (totalSavedViaSmartLinkUsd).
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | Publishing mode: 'publish_now' dispatches immediately, 'cross_post' syndicates tailored variants across multiple networks at once, 'schedule' holds until `scheduledFor`, and 'queue' places the post in the next best engagement slot. | |
| content | Yes | Primary post body text, caption, or thread hook. May include hashtags, mentions, and URLs (external URLs on X are automatically handled according to `xLinkStrategy`). | |
| platforms | Yes | Non-empty array of destination social network slugs to publish or cross-post to (e.g. `['x', 'linkedin', 'bluesky', 'threads']`). | |
| profileId | No | Brand profile identifier (`prof_...`) whose connected social accounts will publish the post. | prof_allometrik |
| scheduledFor | No | Optional ISO-8601 UTC or offset timestamp (e.g. '2026-10-27T08:30:00+01:00') specifying when a scheduled post should go live. | |
| mediaAssetIds | No | Optional list of Nuntior media asset IDs (`med_...`) from `media_pipeline` to attach as images, carousels, or videos. | |
| xLinkStrategy | No | X (Twitter) link optimization mode: 'first_reply' moves any URL to an automated 1st reply to save $0.17/post (85% X API cost reduction) and maximize organic impressions; 'inline' leaves the URL in the main tweet; 'bio' replaces the URL with a bio pointer. | first_reply |
| autoAdjustMedia | No | When true, automatically selects the matching aspect-ratio variant (9:16 for Reels/TikTok/Shorts, 16:9 or 1:1 for X/LinkedIn) for each target platform. | |
| authModeOverride | No | Optional authentication override forcing delivery through 'managed' Nuntior OAuth credentials or 'byok' customer-supplied keys. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description provides rich behavioral detail beyond the standard hints, especially regarding the `xLinkStrategy`. It explains the economic and functional benefits of link optimization (85% cost reduction, avoiding reach penalties), offering critical context for decision-making.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The definition is highly dense but logically structured, front-loading the primary function and then detailing complex, high-value features (X Link Optimization and return values) efficiently.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is complex (18 platforms, scheduling, media, optimization, authentication). The description covers every major functional area, ensuring an agent has complete context before attempting an invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Even with 100% schema coverage, the description adds high semantic value by clarifying the operational difference between the `action` enum modes and explaining the specific implications of using the `xLinkStrategy` parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly defines the tool's purpose as publishing and cross-posting across 18+ social networks, which is highly specific. It immediately distinguishes itself from other potential publishing tools by specifying its scope and modes of operation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides explicit usage guidelines by defining four distinct operational modes (`publish_now`, `schedule`, `queue`, `cross_post`) and explaining the specific conditions under which each mode should be invoked.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
profiles_manageManage Multi-Tenant Brand ProfilesAIdempotentInspect
Create, list, update, or delete isolated multi-tenant brand or client profiles within a Nuntior workspace, including default timezone, X Smart Link optimization strategy, and automatic media aspect-ratio fitting rules. Use this tool to segment social accounts by brand, business unit, or agency client so credentials and posts never mix across profiles. Returns the list of profiles or the newly created/updated/deleted Profile record persisted in Nuntior Cloud.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Human-readable brand, executive, or client display name for the profile (e.g. 'Allometrik Official' or 'Acme Corp'). | |
| action | Yes | Profile lifecycle operation to perform: 'list' all profiles in the workspace, 'create' a new isolated brand profile, 'update' an existing profile's settings, or 'delete' a profile by ID. | |
| timezone | No | IANA timezone identifier (e.g. 'Europe/Madrid', 'America/New_York', 'Asia/Dubai') used for queue scheduling and best-time-to-post analytics. | Europe/Madrid |
| profileId | No | Target profile identifier (e.g. 'prof_allometrik'). Required for 'update' and 'delete' actions; optional custom ID when creating a profile. | |
| handleSlug | No | URL-friendly canonical handle slug (e.g. 'allometrik') used to verify social handle consistency across connected platforms. | |
| autoAdjustMedia | No | When true, automatically reframes and transcodes uploaded images and videos to match each destination social network's required aspect ratio (9:16, 16:9, 1:1, 4:5). | |
| defaultXLinkStrategy | No | Default X (Twitter) link placement policy for this profile: 'first_reply' moves external URLs to an automatic 1st reply (saving 85% in X API link fees and avoiding reach penalties), 'inline' keeps links in the main post, and 'bio' references the profile bio link. | first_reply |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description goes beyond safety hints by specifying the behavioral scope of the management, such as including 'default timezone' and 'automatic media aspect-ratio fitting rules.' It also explicitly clarifies the possible return values (list or a specific record).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Although lengthy, the description is well-justified by the tool's complexity (7 parameters, multi-action support). The core function and major benefits are front-loaded into the first two sentences.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the detailed input schema and annotations, the description is highly complete. It explains complex settings (like media fitting and link strategy) and confirms the expected output behavior, leaving no critical behavioral unknowns for the agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds substantial semantic value by explaining the *business impact* of specific parameters, such as the X Smart Link strategy 'saving 85% in X API link fees' and 'avoid[ing] reach penalties.' This context is far richer than the schema alone provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The tool clearly states its purpose as managing isolated multi-tenant brand or client profiles using the specific verbs: create, list, update, or delete.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides excellent context on *when* to use this tool—specifically for segmenting social accounts by brand, business unit, or agency client. While it doesn't name alternatives, the strong focus on isolation defines its necessary use case.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
telecom_messagingSend SMS, WhatsApp Templates & AI Voice CallsAInspect
Send transactional SMS messages ($0.004/msg), dispatch pre-approved WhatsApp Business Cloud template messages (send_whatsapp_template), initiate outbound AI Voice calls (place_call), or audit the telecom usage ledger (logs). Use this tool for instant out-of-band customer notifications, executive alerts, appointment reminders, or autonomous voice follow-ups. Returns dispatch confirmation, messageId, E.164 sender/recipient numbers, and exact per-message cost in USD.
| Name | Required | Description | Default |
|---|---|---|---|
| body | No | UTF-8 message body for SMS or parameter payload for WhatsApp messages. | |
| action | Yes | Telecom dispatch action: 'send_sms' sends an E.164 text message, 'send_whatsapp_template' sends a WhatsApp Business message, 'place_call' initiates an outbound AI voice call, and 'logs' retrieves the telecom billing ledger. | |
| toNumber | No | Recipient E.164 phone number including country prefix (e.g. '+971500000000' or '+14155550199'). Required for 'send_sms', 'send_whatsapp_template', and 'place_call'. | |
| profileId | No | Brand profile identifier (`prof_...`) associated with the sender number. | prof_allometrik |
| fromNumber | No | Sender E.164 phone number provisioned in the workspace (e.g. '+34919019988'). | +34919019988 |
| templateName | No | Approved WhatsApp Business Cloud template identifier (e.g. 'executive_briefing_confirm' or 'order_status_update') when `action` is 'send_whatsapp_template'. | |
| voiceScriptOrAgentId | No | Spoken script text or Voice AI Agent ID to execute when placing an outbound call via `action: 'place_call'`. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare this is a non-read-only, non-idempotent, non-destructive, open-world operation, and the description adds useful beyond-schema facts: per-message pricing ($0.004/msg), the pre-approved template constraint, and the returned confirmation fields. The significant omission is the non-idempotency risk: nothing warns that retrying a send may dispatch duplicate messages or calls, which is exactly the behavior an agent most needs disclosed for a costly outbound action.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single dense paragraph that front-loads the four actions before use cases and return values; every sentence carries information. It is tightly packed rather than padded, though the sentence is long and would scan faster if the action list and use-case list were separated.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description correctly compensates by summarizing return values (dispatch confirmation, messageId, E.164 numbers, per-message cost). For a multi-action tool with 7 parameters, the gaps are behavioral rather than structural: no rate limits, no idempotency warning, and no statement of what the `logs` action returns relative to the dispatch actions.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and each parameter is already documented in the schema, including required-combination notes for toNumber, templateName, and voiceScriptOrAgentId. The description reinforces the action-to-parameter mapping in prose but adds no format, constraint, or interaction detail beyond the schema, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names specific verbs and resources for each mode: transactional SMS, WhatsApp Business Cloud template dispatch, outbound AI voice calls, and telecom usage ledger audit, each tied to its action value in backticks. The purpose is unmistakable. It does not explicitly contrast itself with the sibling telecom_numbers tool, which manages numbers rather than sending, so it falls just short of full sibling differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Concrete use cases are given: out-of-band customer notifications, executive alerts, appointment reminders, autonomous voice follow-ups. It also states that WhatsApp messages must be pre-approved templates, which is a real prerequisite. However, it offers no when-not guidance and no explicit alternative routing (e.g., when to use telecom_numbers instead for provisioning).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
telecom_numbersProvision Dedicated Telecom & Voice AI NumbersAIdempotentInspect
Search available E.164 phone numbers, provision dedicated telecom numbers ($1.50/mo vs $59/mo legacy bundles), list active numbers, or bind a number to a SIP/WebRTC Voice AI Agent trunk. Use this tool when an AI agent needs a dedicated SMS, WhatsApp Business Cloud, or inbound/outbound voice phone number in the US, Spain, UAE, UK, or EU. Returns available or provisioned TelecomNumber records with capabilities (sms, voice, whatsapp) and SIP trunk URIs.
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | Telecom number operation: 'search_available' lists purchasable E.164 numbers by country, 'provision' activates a dedicated number ($1.50/mo), 'configure_sip_voice_agent' attaches a SIP URI and voice prompt, and 'list' returns active workspace numbers. | |
| numberId | No | Internal telecom number identifier (`num_...`) when configuring SIP routing via `configure_sip_voice_agent`. | |
| profileId | No | Brand profile identifier (`prof_...`) that owns the telecom number. | prof_allometrik |
| countryCode | No | Two-letter ISO-3166 alpha-2 country code for number search or provisioning (e.g. 'ES' for Spain +34, 'US' for United States +1, 'AE' for UAE +971, 'GB' for UK +44). | ES |
| phoneNumber | No | Specific E.164 phone number (e.g. '+34919021101' or '+14158904321') to provision when `action` is 'provision'. | |
| sipTrunkUri | No | Destination SIP or WebRTC trunk URI (e.g. 'sip:voice-agent@sip.nuntior.com') for routing live inbound/outbound AI voice calls. | |
| voiceAgentPrompt | No | System instructions and persona prompt for the realtime AI Voice Agent answering or placing calls on this number. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare non-read-only, idempotent, open-world and non-destructive, so the safety profile is covered. The description adds value with per-number cost ($1.50/mo vs $59/mo legacy bundles) and the shape of returned capabilities, though it says nothing about what happens when a requested number is unavailable or whether provisioning can be undone.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with the operations and then the use case, with no filler. The parenthetical price comparison is slightly promotional but does carry decision-relevant cost information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a four-action, seven-parameter tool with no output schema, the description covers what each action does, the geographic scope, the cost, and the returned record fields. Gaps remain around failure modes (number already taken, unsupported country) and the fact that SIP configuration requires an existing numberId.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, and the enum's own description already explains each action and the country/phone-number formats. The description only echoes the same action list and country set, adding no format or constraint detail beyond the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The first sentence names four concrete operations (search E.164 numbers, provision, list, bind to SIP/WebRTC trunk) on a clearly identified resource, so an agent can see the scope immediately. It does not mention the sibling tool telecom_messaging, so the boundary between 'numbers' and 'messaging' is left implicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The second sentence gives an explicit triggering condition: use it when an agent needs a dedicated SMS, WhatsApp Business Cloud, or voice number in the listed countries. It supplies no exclusion or alternative-tool guidance, and never says when to prefer the telecom_messaging sibling instead.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
traffic_analyticsReal-Time Traffic & MCP Attribution TelemetryARead-onlyIdempotentInspect
Query real-time web and API traffic telemetry, acquisition channel attribution (Smithery, Glama, PulseMCP, Official MCP Registry, Cursor, Claude Code, Grok Bot, n8n, Direct, X, LinkedIn, GitHub), MCP tool call volume, OAuth conversion funnel metrics, geographic distribution, and the live request stream. Use this read-only observability tool to monitor how developers and AI agents discover and invoke Nuntior in production. Returns aggregated counters, channel breakdowns, latency percentiles, and recent event logs.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of recent live traffic events to return in the event stream (default: 50, max: 200). | |
| eventType | No | Optional filter to restrict recent events to a specific telemetry event type (e.g. 'mcp_call', 'signup', 'checkout'). | |
| windowHours | No | Lookback aggregation time window in hours (default: 168 hours = 7 days; use 24 for last 24 hours). | |
| sourceChannel | No | Optional filter by acquisition source channel slug (e.g. 'glama', 'smithery', 'pulsemcp', 'mcp-registry', 'n8n', 'grok-bot', 'cursor', 'direct'). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnlyHint, idempotentHint, openWorldHint, and destructiveHint=false, so the safety profile is covered structurally. The description adds useful context beyond annotations by framing it as live production observability and by naming the return categories: aggregated counters, channel breakdowns, latency percentiles, and recent event logs. It still does not mention rate limits, auth requirements, or exact data-freshness semantics.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the action and metric scope, and the return-value sentence is relevant. The long parenthetical channel list is somewhat list-heavy, but it supports the sourceChannel field and does not obscure the main purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, but the description names the return categories and the production-monitoring purpose, which is enough for an agent to understand what to expect. It could still clarify freshness, pagination, or output shape details, but it is largely complete for a read-only query tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, and the schema already documents limit, eventType, windowHours, and sourceChannel with defaults, max values, enums, and examples. The description echoes the channel list and event-stream concept but does not add syntax or filtering behavior beyond what the schema provides, so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'Query' and enumerates the telemetry resources it covers, such as traffic, attribution, MCP tool calls, OAuth funnel, geography, and live events. It clearly separates this from account, billing, posts, and messaging siblings by domain, though it does not explicitly distinguish itself from the generic analytics_query sibling.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly says to use this read-only observability tool to monitor how developers and AI agents discover and invoke Nuntior in production, which gives a clear usage context. It does not name exclusions or route the agent to alternatives such as analytics_query when a broader or different analytics scope is needed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
2 tool updates
- Changed
account_status1 field changed- changed
Input schema / properties / apiKey / descriptionPrevious value: -"Optional Nuntior Bearer API key (`nnt_live_...`) override when not supplied via the HTTP `Authorization` header."New value: +"Optional Nuntior Bearer API key (`ntr_live_...`) override when not supplied via the HTTP `Authorization` header."
- Changed
billing_upgrade1 field changed- changed
Input schema / properties / apiKey / descriptionPrevious value: -"Optional Nuntior Bearer API key (`nnt_live_...`) override when not provided in the HTTP `Authorization` header."New value: +"Optional Nuntior Bearer API key (`ntr_live_...`) override when not provided in the HTTP `Authorization` header."
16 tool updates
- Changed
account_register5 fields changed- added
Input schema / additionalPropertiesAdded value: +false - changed
Input schema / properties / agentHarness / descriptionPrevious value: -"Calling AI agent harness (e.g. grok-bot, cursor, claude-code, openclaw, hermes)"New value: +"Identifier of the calling AI agent harness or MCP client (e.g. 'grok-bot', 'cursor', 'claude-code', 'n8n', 'openclaw', 'windsurf') for telemetry attribution." - changed
Input schema / properties / email / descriptionPrevious value: -"User or agent owner email address"New value: +"Owner or developer email address used to identify the Nuntior account and receive workspace claim notifications (e.g. 'founder@company.com')." - changed
Input schema / properties / name / descriptionPrevious value: -"User or agent display name"New value: +"Display name for the human owner or autonomous agent operator (e.g. 'Alex Rivera' or 'Growth Agent')." - changed
Input schema / properties / organizationName / descriptionPrevious value: -"Company or workspace name"New value: +"Organization, agency, or workspace name used to label the multi-tenant workspace and default brand profile."
- Changed
account_status3 fields changed- added
Input schema / additionalPropertiesAdded value: +false - changed
Input schema / properties / apiKey / descriptionPrevious value: -"Optional nnt_live_... API key override if not passed via Authorization header"New value: +"Optional Nuntior Bearer API key (`nnt_live_...`) override when not supplied via the HTTP `Authorization` header." - changed
Input schema / properties / workspaceId / descriptionPrevious value: -"Optional workspace ID filter"New value: +"Optional workspace identifier (`ws_...`) to inspect a specific tenant workspace when managing multiple workspaces."
- Changed
accounts_manage11 fields changed- added
Input schema / additionalPropertiesAdded value: +false - changed
Input schema / properties / accessToken / descriptionPrevious value: -"Access token, Bot token, or Webhook URL"New value: +"BYOK OAuth 2.0 Bearer access token, OAuth 1.0a access token, Telegram Bot token, or Discord Webhook URL encrypted at rest." - added
Input schema / properties / accountId / descriptionAdded value: +"Connected social account identifier (e.g. 'acc_x_byok_01'). Required when `action` is 'disconnect' and optional filter for 'account_health'." - added
Input schema / properties / action / descriptionAdded value: +"Account operation: 'list' connected accounts, 'connect_oauth' to get a 1-click OAuth 2.0 authorization URL, 'connect_byok' to store custom API keys/tokens encrypted with AES-256-GCM ($0 markup), 'account_health'/'health_check' to verify live upstream token validity, or 'disconnect' to remove an account." - changed
Input schema / properties / customClientId / descriptionPrevious value: -"BYOK OAuth App Client ID / Bot ID / Handle (encrypted via AES-256-GCM)"New value: +"BYOK OAuth App Client ID, API Key, Bot ID, or Bluesky identifier encrypted at rest with AES-256-GCM in the Nuntior Vault (0% platform markup)." - changed
Input schema / properties / customClientSecret / descriptionPrevious value: -"BYOK OAuth App Secret / App Password (encrypted via AES-256-GCM)"New value: +"BYOK OAuth App Client Secret, API Key Secret, or Bluesky App Password encrypted at rest with AES-256-GCM in the Nuntior Vault." - added
Input schema / properties / platform / descriptionAdded value: +"Target social, blog, or messaging platform slug (e.g. 'x', 'linkedin', 'bluesky', 'instagram', 'threads', 'youtube', 'tiktok', 'reddit'). Required for 'connect_oauth' and 'connect_byok'." - changed
Input schema / properties / platform / enumPrevious value: -[ - "x", - "linkedin", - "instagram", - "facebook", - "threads", - "tiktok", - "youtube", - "bluesky", - "mastodon", - "farcaster", - "reddit", - "pinterest", - "google_business", - "telegram", - "discord", - "ghost", - "wordpress", - "webflow" -]New value: +[ + "x", + "linkedin", + "bluesky", + "instagram", + "facebook", + "threads", + "tiktok", + "youtube", + "reddit", + "pinterest", + "mastodon", + "telegram", + "discord", + "google_business", + "ghost", + "wordpress", + "webflow", + "whatsapp" +] - added
Input schema / properties / profileId / descriptionAdded value: +"Brand profile identifier (e.g. 'prof_allometrik') that owns or filters the social account connections." - changed
Input schema / properties / refreshToken / descriptionPrevious value: -"Refresh token or OAuth 1.0a token secret"New value: +"Optional OAuth 2.0 refresh token or OAuth 1.0a access token secret used for automatic token rotation and health recovery." - added
Input schema / properties / username / descriptionAdded value: +"Account handle, username, Bluesky ATProto handle (e.g. 'brand.bsky.social'), or Mastodon instance handle associated with the social account."
- Changed
ads_campaigns15 fields changed- added
Input schema / additionalPropertiesAdded value: +false - added
Input schema / properties / action / descriptionAdded value: +"Paid ads operation: 'list' campaigns, 'create' a new campaign, 'boost_post' to turn an existing organic post into a paid ad, 'pause' or 'resume' delivery, or fetch 'metrics'." - added
Input schema / properties / campaignId / descriptionAdded value: +"Ad campaign identifier (`camp_...`). Required when pausing, resuming, or querying a specific campaign." - added
Input schema / properties / dailyBudgetUsd / defaultAdded value: +25 - added
Input schema / properties / dailyBudgetUsd / descriptionAdded value: +"Daily ad spend cap in USD (e.g. 25 for $25/day). Nuntior charges 0% markup on ad spend." - added
Input schema / properties / name / descriptionAdded value: +"Human-readable campaign name (e.g. 'Q4 AI Agent Launch — LinkedIn Sponsored Update')." - added
Input schema / properties / objective / defaultAdded value: +"leads" - added
Input schema / properties / objective / descriptionAdded value: +"Campaign optimization objective: 'leads' (lead gen forms/signups), 'traffic' (website clicks), 'engagement' (likes/replies), or 'awareness' (reach/impressions)." - added
Input schema / properties / platform / defaultAdded value: +"linkedin" - added
Input schema / properties / platform / descriptionAdded value: +"Target ad network platform (e.g. 'linkedin', 'x', 'facebook', 'instagram', 'tiktok')." - changed
Input schema / properties / platform / enumPrevious value: -[ - "x", - "linkedin", - "instagram", - "facebook", - "threads", - "tiktok", - "youtube", - "bluesky", - "mastodon", - "farcaster", - "reddit", - "pinterest", - "google_business", - "telegram", - "discord", - "ghost", - "wordpress", - "webflow" -]New value: +[ + "x", + "linkedin", + "bluesky", + "instagram", + "facebook", + "threads", + "tiktok", + "youtube", + "reddit", + "pinterest", + "mastodon", + "telegram", + "discord", + "google_business", + "ghost", + "wordpress", + "webflow", + "whatsapp" +] - added
Input schema / properties / postIdToBoost / descriptionAdded value: +"Existing Nuntior organic post ID (`post_...`) to promote when `action` is 'boost_post'." - added
Input schema / properties / profileId / defaultAdded value: +"prof_allometrik" - added
Input schema / properties / profileId / descriptionAdded value: +"Brand profile identifier (`prof_...`) linked to the ad account." - added
Input schema / properties / targeting / descriptionAdded value: +"Structured audience targeting criteria such as countries, job titles, industries, or interest keywords (e.g. `{ \"countries\": [\"US\", \"AE\", \"ES\"], \"titles\": [\"CTO\", \"Founder\"] }`)."
- Changed
analytics_query9 fields changed- added
Input schema / additionalPropertiesAdded value: +false - added
Input schema / properties / action / descriptionAdded value: +"Analytics or listening mode: 'account_overview' for cross-network KPIs, 'post_metrics' for individual post performance, 'audience_growth' for follower velocity, 'best_times' for highest-lift publishing windows, or 'social_listen' for live keyword/intent discovery." - added
Input schema / properties / periodDays / descriptionAdded value: +"Lookback window in days (e.g. 7, 30, 90) for aggregating impressions, engagements, and follower growth." - added
Input schema / properties / platform / descriptionAdded value: +"Optional social network filter to scope metrics or listening to a single platform." - changed
Input schema / properties / platform / enumPrevious value: -[ - "x", - "linkedin", - "instagram", - "facebook", - "threads", - "tiktok", - "youtube", - "bluesky", - "mastodon", - "farcaster", - "reddit", - "pinterest", - "google_business", - "telegram", - "discord", - "ghost", - "wordpress", - "webflow" -]New value: +[ + "x", + "linkedin", + "bluesky", + "instagram", + "facebook", + "threads", + "tiktok", + "youtube", + "reddit", + "pinterest", + "mastodon", + "telegram", + "discord", + "google_business", + "ghost", + "wordpress", + "webflow", + "whatsapp" +] - added
Input schema / properties / postId / descriptionAdded value: +"Optional post identifier (`post_...`) when inspecting granular metrics via `action: 'post_metrics'`." - added
Input schema / properties / profileId / defaultAdded value: +"prof_allometrik" - added
Input schema / properties / profileId / descriptionAdded value: +"Brand profile identifier (`prof_...`) to aggregate analytics for." - changed
Input schema / properties / query / descriptionPrevious value: -"Keyword or brand query for live social_listen"New value: +"Search keyword, brand name, competitor handle, or buyer-intent phrase when running live `action: 'social_listen'` (e.g. 'MCP server social media API' or 'n8n AI agent workflow')."
- Changed
billing_upgrade5 fields changed- added
Input schema / additionalPropertiesAdded value: +false - changed
Input schema / properties / action / descriptionPrevious value: -"Generate a new Stripe Checkout upgrade session (checkout) or Stripe Billing Portal link (portal)"New value: +"Billing operation: 'checkout' creates a new Stripe Checkout upgrade session URL; 'portal' generates a Stripe Customer Portal link to manage existing payment methods and invoices." - changed
Input schema / properties / apiKey / descriptionPrevious value: -"Optional nnt_live_... API key if not passed in Authorization header"New value: +"Optional Nuntior Bearer API key (`nnt_live_...`) override when not provided in the HTTP `Authorization` header." - changed
Input schema / properties / dedicated_phone / descriptionPrevious value: -"Include dedicated E.164 phone number add-on ($1.50/mo for SMS/WhatsApp/SIP Voice AI)"New value: +"When true, attaches a dedicated E.164 telecom phone number add-on ($1.50/mo) for transactional SMS, WhatsApp Business Cloud, and SIP Voice AI agents." - changed
Input schema / properties / plan / descriptionPrevious value: -"Target subscription tier: starter ($19/mo, 12 connections), builder ($35/mo, 35 connections), or scale ($79/mo, 100 connections)"New value: +"Target subscription tier: 'starter' ($19/mo, 12 connections), 'builder' ($35/mo, 35 connections), or 'scale' ($79/mo, 100 connections)."
- Changed
blogs_publish14 fields changed- added
Input schema / additionalPropertiesAdded value: +false - added
Input schema / properties / action / descriptionAdded value: +"CMS blog operation: 'list_sites' returns connected blog publications and existing articles, 'publish_article' publishes a new Markdown article, and 'update_article' edits an existing article by slug or ID." - added
Input schema / properties / articleId / descriptionAdded value: +"Existing article identifier (`art_...`) when updating an article via `action: 'update_article'`." - added
Input schema / properties / canonicalUrl / descriptionAdded value: +"Optional canonical URL (`<link rel=\"canonical\">`) when cross-syndicating an existing blog post to Dev.to, Medium, or Hashnode." - added
Input schema / properties / markdownBody / descriptionAdded value: +"Complete long-form article body formatted in standard Markdown (supports headings, code blocks, tables, and links)." - added
Input schema / properties / platform / defaultAdded value: +"nuntior" - added
Input schema / properties / platform / descriptionAdded value: +"Destination blog or CMS engine: 'nuntior' (instant hosted reader at nuntior.com/p/:slug), 'ghost', 'wordpress', 'webflow', 'devto', 'medium', or 'hashnode'." - added
Input schema / properties / profileId / defaultAdded value: +"prof_allometrik" - added
Input schema / properties / profileId / descriptionAdded value: +"Brand profile identifier (`prof_...`) credited as the publication author." - added
Input schema / properties / publishStatus / defaultAdded value: +"published" - added
Input schema / properties / publishStatus / descriptionAdded value: +"Publication visibility state: 'published' makes the article immediately live; 'draft' stages it for review." - added
Input schema / properties / slug / descriptionAdded value: +"Custom URL slug (e.g. 'agent-first-social-mcp-architecture'). Auto-generated from `title` if omitted." - added
Input schema / properties / tags / descriptionAdded value: +"Array of topic tags or categories attached to the article for SEO discovery (e.g. `['AI Agents', 'MCP', 'Automation']`)." - added
Input schema / properties / title / descriptionAdded value: +"Full headline title of the blog article (used for H1, OpenGraph tags, and automatic slug generation)."
- Changed
comments_moderate9 fields changed- added
Input schema / additionalPropertiesAdded value: +false - added
Input schema / properties / action / descriptionAdded value: +"Comment moderation action: 'list' comments on a post, 'reply' publicly to a comment, 'hide' or 'delete' spam/abusive comments, or 'auto_plug' to attach an automatic threshold-triggered reply." - added
Input schema / properties / autoPlugMessage / descriptionAdded value: +"Call-to-action comment text (e.g. link to docs, newsletter, or product page) automatically posted once the post reaches `autoPlugTriggerLikes`." - added
Input schema / properties / autoPlugTriggerLikes / descriptionAdded value: +"Like count threshold (e.g. 25 or 50 likes) that triggers Nuntior to automatically publish `autoPlugMessage` as a follow-up comment." - added
Input schema / properties / commentId / descriptionAdded value: +"Specific comment identifier (`cmt_...`) when replying to, hiding, or deleting an individual comment." - added
Input schema / properties / postId / descriptionAdded value: +"Target social post identifier (`post_...`) whose comments are being listed, moderated, or configured for Auto-Plug." - added
Input schema / properties / profileId / defaultAdded value: +"prof_allometrik" - added
Input schema / properties / profileId / descriptionAdded value: +"Brand profile identifier (`prof_...`) that owns the social post and comments." - added
Input schema / properties / replyText / descriptionAdded value: +"Public reply message text when `action` is 'reply'."
- Changed
inbox_messages10 fields changed- added
Input schema / additionalPropertiesAdded value: +false - added
Input schema / properties / action / descriptionAdded value: +"Inbox operation: 'list_threads' returns recent DM conversations, 'read_thread' fetches all messages in `threadId`, 'reply' sends a direct message response, and 'mark_read' clears unread flags." - added
Input schema / properties / platform / descriptionAdded value: +"Optional social or messaging platform filter (e.g. 'linkedin', 'x', 'instagram', 'telegram', 'whatsapp')." - changed
Input schema / properties / platform / enumPrevious value: -[ - "x", - "linkedin", - "instagram", - "facebook", - "threads", - "tiktok", - "youtube", - "bluesky", - "mastodon", - "farcaster", - "reddit", - "pinterest", - "google_business", - "telegram", - "discord", - "ghost", - "wordpress", - "webflow" -]New value: +[ + "x", + "linkedin", + "bluesky", + "instagram", + "facebook", + "threads", + "tiktok", + "youtube", + "reddit", + "pinterest", + "mastodon", + "telegram", + "discord", + "google_business", + "ghost", + "wordpress", + "webflow", + "whatsapp" +] - added
Input schema / properties / profileId / defaultAdded value: +"prof_allometrik" - added
Input schema / properties / profileId / descriptionAdded value: +"Brand profile identifier (`prof_...`) whose unified inbox should be queried or replied from." - added
Input schema / properties / replyBody / descriptionAdded value: +"Text body of the outbound direct message reply when `action` is 'reply'. Required for 'reply'." - added
Input schema / properties / threadId / descriptionAdded value: +"Conversation thread identifier (`thr_...`). Required when `action` is 'reply' and optional target for 'read_thread' or 'mark_read'." - added
Input schema / properties / unreadOnly / defaultAdded value: +false - added
Input schema / properties / unreadOnly / descriptionAdded value: +"When true, filters `list_threads` to return only unread inbound conversations requiring agent or human attention."
- Changed
media_pipeline15 fields changed- added
Input schema / additionalPropertiesAdded value: +false - added
Input schema / properties / action / descriptionAdded value: +"Media pipeline operation: 'presign_upload' creates a direct PUT upload URL, 'auto_fit_video' reframes video into target aspect ratios with -14 LUFS audio normalization, 'extract_clips' cuts viral vertical highlights, 'media_generate' renders social visuals from a prompt, and 'check_status' polls transcode progress." - added
Input schema / properties / clipCount / defaultAdded value: +3 - added
Input schema / properties / clipCount / descriptionAdded value: +"Number of short highlight clips (1 to 10) to extract from a long-form source video when `action` is 'extract_clips'." - added
Input schema / properties / fileName / descriptionAdded value: +"Original file name with extension (e.g. 'keynote-demo.mp4' or 'launch-carousel.png') when requesting a presigned upload URL." - added
Input schema / properties / mediaAssetId / descriptionAdded value: +"Existing media asset identifier (`med_...`) to reframe, extract clips from, or inspect status." - added
Input schema / properties / mimeType / defaultAdded value: +"video/mp4" - added
Input schema / properties / mimeType / descriptionAdded value: +"MIME type of the media asset being uploaded or generated (e.g. 'video/mp4', 'image/png', 'image/jpeg', 'image/svg+xml')." - added
Input schema / properties / profileId / defaultAdded value: +"prof_allometrik" - added
Input schema / properties / profileId / descriptionAdded value: +"Brand profile identifier (`prof_...`) that owns the media asset." - changed
Input schema / properties / prompt / descriptionPrevious value: -"Prompt or template spec for media_generate add-on"New value: +"Creative prompt or visual template instructions when running `action: 'media_generate'` (e.g. 'Minimalist B2B architecture diagram for MCP server launch')." - added
Input schema / properties / sizeBytes / defaultAdded value: +10485760 - added
Input schema / properties / sizeBytes / descriptionAdded value: +"File size in bytes used to validate upload quotas and allocate storage buffers." - added
Input schema / properties / targetAspectRatios / defaultAdded value: +[ + "9:16", + "16:9" +] - added
Input schema / properties / targetAspectRatios / descriptionAdded value: +"Target aspect ratios for automatic video/image reframing: '9:16' (Reels/TikTok/Shorts), '16:9' (X/LinkedIn/YouTube), '1:1' (Square), '4:5' (Portrait Feed)."
- Changed
posts_manage8 fields changed- added
Input schema / additionalPropertiesAdded value: +false - added
Input schema / properties / action / descriptionAdded value: +"Post management operation: 'list' posts (optionally filtered by status), 'get' a single post by `postId`, 'update' post content or schedule time, 'delete' a post, or 'retry_failed' to re-dispatch failed deliveries." - added
Input schema / properties / content / descriptionAdded value: +"Updated post text content when executing `action: 'update'`." - added
Input schema / properties / postId / descriptionAdded value: +"Unique post identifier (`post_...`). Required when `action` is 'get', 'update', or 'delete'." - added
Input schema / properties / profileId / defaultAdded value: +"prof_allometrik" - added
Input schema / properties / profileId / descriptionAdded value: +"Brand profile identifier (`prof_...`) used to scope the post query or mutation." - added
Input schema / properties / scheduledFor / descriptionAdded value: +"Updated ISO-8601 publication timestamp when rescheduling a post via `action: 'update'`." - added
Input schema / properties / statusFilter / descriptionAdded value: +"Optional status filter when listing posts (e.g. 'published', 'scheduled', 'queued', 'failed', 'draft')."
- Changed
posts_publish12 fields changed- added
Input schema / additionalPropertiesAdded value: +false - added
Input schema / properties / action / descriptionAdded value: +"Publishing mode: 'publish_now' dispatches immediately, 'cross_post' syndicates tailored variants across multiple networks at once, 'schedule' holds until `scheduledFor`, and 'queue' places the post in the next best engagement slot." - added
Input schema / properties / authModeOverride / descriptionAdded value: +"Optional authentication override forcing delivery through 'managed' Nuntior OAuth credentials or 'byok' customer-supplied keys." - added
Input schema / properties / autoAdjustMedia / descriptionAdded value: +"When true, automatically selects the matching aspect-ratio variant (9:16 for Reels/TikTok/Shorts, 16:9 or 1:1 for X/LinkedIn) for each target platform." - changed
Input schema / properties / content / descriptionPrevious value: -"Post text (may include URLs to optimize on X)"New value: +"Primary post body text, caption, or thread hook. May include hashtags, mentions, and URLs (external URLs on X are automatically handled according to `xLinkStrategy`)." - added
Input schema / properties / mediaAssetIds / descriptionAdded value: +"Optional list of Nuntior media asset IDs (`med_...`) from `media_pipeline` to attach as images, carousels, or videos." - added
Input schema / properties / platforms / descriptionAdded value: +"Non-empty array of destination social network slugs to publish or cross-post to (e.g. `['x', 'linkedin', 'bluesky', 'threads']`)." - changed
Input schema / properties / platforms / items / enumPrevious value: -[ - "x", - "linkedin", - "instagram", - "facebook", - "threads", - "tiktok", - "youtube", - "bluesky", - "mastodon", - "farcaster", - "reddit", - "pinterest", - "google_business", - "telegram", - "discord", - "ghost", - "wordpress", - "webflow" -]New value: +[ + "x", + "linkedin", + "bluesky", + "instagram", + "facebook", + "threads", + "tiktok", + "youtube", + "reddit", + "pinterest", + "mastodon", + "telegram", + "discord", + "google_business", + "ghost", + "wordpress", + "webflow", + "whatsapp" +] - added
Input schema / properties / profileId / defaultAdded value: +"prof_allometrik" - added
Input schema / properties / profileId / descriptionAdded value: +"Brand profile identifier (`prof_...`) whose connected social accounts will publish the post." - changed
Input schema / properties / scheduledFor / descriptionPrevious value: -"ISO-8601 timestamp when scheduling"New value: +"Optional ISO-8601 UTC or offset timestamp (e.g. '2026-10-27T08:30:00+01:00') specifying when a scheduled post should go live." - changed
Input schema / properties / xLinkStrategy / descriptionPrevious value: -"Moves links on X to 1st reply to save $0.17/post ($0.20 -> $0.03 or $0 BYOK) and boost reach."New value: +"X (Twitter) link optimization mode: 'first_reply' moves any URL to an automated 1st reply to save $0.17/post (85% X API cost reduction) and maximize organic impressions; 'inline' leaves the URL in the main tweet; 'bio' replaces the URL with a bio pointer."
- Changed
profiles_manage8 fields changed- added
Input schema / additionalPropertiesAdded value: +false - added
Input schema / properties / action / descriptionAdded value: +"Profile lifecycle operation to perform: 'list' all profiles in the workspace, 'create' a new isolated brand profile, 'update' an existing profile's settings, or 'delete' a profile by ID." - added
Input schema / properties / autoAdjustMedia / descriptionAdded value: +"When true, automatically reframes and transcodes uploaded images and videos to match each destination social network's required aspect ratio (9:16, 16:9, 1:1, 4:5)." - added
Input schema / properties / defaultXLinkStrategy / descriptionAdded value: +"Default X (Twitter) link placement policy for this profile: 'first_reply' moves external URLs to an automatic 1st reply (saving 85% in X API link fees and avoiding reach penalties), 'inline' keeps links in the main post, and 'bio' references the profile bio link." - changed
Input schema / properties / handleSlug / descriptionPrevious value: -"URL-friendly slug"New value: +"URL-friendly canonical handle slug (e.g. 'allometrik') used to verify social handle consistency across connected platforms." - changed
Input schema / properties / name / descriptionPrevious value: -"Brand or client display name"New value: +"Human-readable brand, executive, or client display name for the profile (e.g. 'Allometrik Official' or 'Acme Corp')." - changed
Input schema / properties / profileId / descriptionPrevious value: -"Profile ID (for update/delete)"New value: +"Target profile identifier (e.g. 'prof_allometrik'). Required for 'update' and 'delete' actions; optional custom ID when creating a profile." - added
Input schema / properties / timezone / descriptionAdded value: +"IANA timezone identifier (e.g. 'Europe/Madrid', 'America/New_York', 'Asia/Dubai') used for queue scheduling and best-time-to-post analytics."
- Changed
telecom_messaging10 fields changed- added
Input schema / additionalPropertiesAdded value: +false - added
Input schema / properties / action / descriptionAdded value: +"Telecom dispatch action: 'send_sms' sends an E.164 text message, 'send_whatsapp_template' sends a WhatsApp Business message, 'place_call' initiates an outbound AI voice call, and 'logs' retrieves the telecom billing ledger." - added
Input schema / properties / body / descriptionAdded value: +"UTF-8 message body for SMS or parameter payload for WhatsApp messages." - added
Input schema / properties / fromNumber / defaultAdded value: +"+34919019988" - added
Input schema / properties / fromNumber / descriptionAdded value: +"Sender E.164 phone number provisioned in the workspace (e.g. '+34919019988')." - added
Input schema / properties / profileId / defaultAdded value: +"prof_allometrik" - added
Input schema / properties / profileId / descriptionAdded value: +"Brand profile identifier (`prof_...`) associated with the sender number." - added
Input schema / properties / templateName / descriptionAdded value: +"Approved WhatsApp Business Cloud template identifier (e.g. 'executive_briefing_confirm' or 'order_status_update') when `action` is 'send_whatsapp_template'." - added
Input schema / properties / toNumber / descriptionAdded value: +"Recipient E.164 phone number including country prefix (e.g. '+971500000000' or '+14155550199'). Required for 'send_sms', 'send_whatsapp_template', and 'place_call'." - added
Input schema / properties / voiceScriptOrAgentId / descriptionAdded value: +"Spoken script text or Voice AI Agent ID to execute when placing an outbound call via `action: 'place_call'`."
- Changed
telecom_numbers9 fields changed- added
Input schema / additionalPropertiesAdded value: +false - added
Input schema / properties / action / descriptionAdded value: +"Telecom number operation: 'search_available' lists purchasable E.164 numbers by country, 'provision' activates a dedicated number ($1.50/mo), 'configure_sip_voice_agent' attaches a SIP URI and voice prompt, and 'list' returns active workspace numbers." - added
Input schema / properties / countryCode / descriptionAdded value: +"Two-letter ISO-3166 alpha-2 country code for number search or provisioning (e.g. 'ES' for Spain +34, 'US' for United States +1, 'AE' for UAE +971, 'GB' for UK +44)." - added
Input schema / properties / numberId / descriptionAdded value: +"Internal telecom number identifier (`num_...`) when configuring SIP routing via `configure_sip_voice_agent`." - added
Input schema / properties / phoneNumber / descriptionAdded value: +"Specific E.164 phone number (e.g. '+34919021101' or '+14158904321') to provision when `action` is 'provision'." - added
Input schema / properties / profileId / defaultAdded value: +"prof_allometrik" - added
Input schema / properties / profileId / descriptionAdded value: +"Brand profile identifier (`prof_...`) that owns the telecom number." - added
Input schema / properties / sipTrunkUri / descriptionAdded value: +"Destination SIP or WebRTC trunk URI (e.g. 'sip:voice-agent@sip.nuntior.com') for routing live inbound/outbound AI voice calls." - added
Input schema / properties / voiceAgentPrompt / descriptionAdded value: +"System instructions and persona prompt for the realtime AI Voice Agent answering or placing calls on this number."
- Changed
traffic_analytics6 fields changed- added
Input schema / additionalPropertiesAdded value: +false - changed
Input schema / properties / eventType / descriptionPrevious value: -"Optional filter for recent events by event_type"New value: +"Optional filter to restrict recent events to a specific telemetry event type (e.g. 'mcp_call', 'signup', 'checkout')." - changed
Input schema / properties / limit / descriptionPrevious value: -"Number of recent live traffic events to return (default: 50, max: 200)"New value: +"Maximum number of recent live traffic events to return in the event stream (default: 50, max: 200)." - changed
Input schema / properties / sourceChannel / descriptionPrevious value: -"Optional filter by source_channel (e.g. smithery, glama, pulsemcp, grok-bot, cursor, direct)"New value: +"Optional filter by acquisition source channel slug (e.g. 'glama', 'smithery', 'pulsemcp', 'mcp-registry', 'n8n', 'grok-bot', 'cursor', 'direct')." - changed
Input schema / properties / windowHours / descriptionPrevious value: -"Time window in hours to aggregate traffic events (default: 168 = 7 days)"New value: +"Lookback aggregation time window in hours (default: 168 hours = 7 days; use 24 for last 24 hours)." - added
Input schema / requiredAdded value: +[]
1 tool update
- Added
traffic_analytics
15 tool updates
- First observed
account_register - First observed
account_status - First observed
accounts_manage - First observed
ads_campaigns - First observed
analytics_query - First observed
billing_upgrade - First observed
blogs_publish - First observed
comments_moderate - First observed
inbox_messages - First observed
media_pipeline - First observed
posts_manage - First observed
posts_publish - First observed
profiles_manage - First observed
telecom_messaging - First observed
telecom_numbers
Publisher details
- Operator
- Nuntior
- Operator website
- https://nuntior.com
- Vendor relationship
- First-party
- Documentation
- https://nuntior.com/docs
- Trust center
- Not available
- Restrictions
- Not applicable
Related MCP Connectors
Connect any AI agent to 11+ social platforms: schedule, publish & track posts via hosted MCP.
Schedule and publish social posts across 9 platforms (Instagram, LinkedIn, X, TikTok, Facebook, Threads, Pinterest, Bluesky, Mastodon) straight from Claude, ChatGPT, Cursor, or any MCP client. Create, edit, and reschedule posts, upload media, and pull account and post analytics, follower demographics, and best-time windows. 20 tools, free on every plan.
Schedule and analyze posts on 12 networks, incl. Bluesky, Mastodon and Telegram, from any AI agent
Schedule, cross-post, and analyze social media posts across 15 platforms from AI agents.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceSocial media API and MCP server for AI agents that enables publishing to X, Instagram, LinkedIn, Reddit, Bluesky, and Threads from a single endpoint.100 npmMIT
- AlicenseNot gradedqualityBmaintenanceEnables AI agents to post, schedule, thread, delete, and analyze social media posts across platforms like X, Bluesky, LinkedIn, and Instagram through a single MCP interface.241 npmMIT
- AlicenseNot gradedqualityAmaintenanceSocial media scheduling and publishing for AI agents. 17 validation-first tools to post to X, LinkedIn, Instagram, TikTok, YouTube, Reddit, Discord, Telegram, and more through one connected workspace.74 npm98MIT
- AlicenseNot gradedqualityBmaintenanceA hosted MCP server that lets AI assistants schedule and publish social media posts across Instagram, TikTok, X, LinkedIn, YouTube, Pinterest, Facebook, Telegram, Threads, and Bluesky. It provides tools for managing accounts, posts, media, and analytics, including post previewing before publishing.1MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.