10xDotIn Developer Docs

MCP Tools Reference

Reference for the live MCP tool catalog — inputs, response shapes, required scopes, environment hostnames, and example prompts.

MCP Tools Reference

This page documents the tool families exposed by the Link Platform MCP server. Use OAuth-based connector setup against https://{handle}.mcp.{domain}/mcp, with the shared-host compatibility path on https://ai.10x.in/mcp/{handle}/mcp only as a fallback when needed.

Hosted MCP can expose three capability shapes for a handle:

  • tools for actions and structured reads
  • read-only resources under tenx://...
  • reusable prompts that package recommended workflows

This page focuses on tool calls. Use MCP Builder and Hosted Tools when you need the operator-facing browser workflow that reviews tools, resources, and prompts together.

Need the API + Edge + MCP flow in one place? Use Platform-Wide Feature Exploration Lab.

How tool responses work

Every tool returns the same envelope:

{
  "content": [{ "type": "text", "text": "<pretty-printed JSON>" }],
  "structuredContent": {
    /* same data as a plain object */
  }
}

On error:

{
  "isError": true,
  "content": [
    {
      "type": "text",
      "text": "{ \"error\": \"monolith_api_error\", \"status\": 403 ... }"
    }
  ],
  "structuredContent": {
    "error": "monolith_api_error",
    "status": 403,
    "body": { "error": "insufficient_scope" }
  }
}

For generic or local MCP clients, the handle parameter is optional on tools and falls back to the server's LINK_PLATFORM_DEFAULT_HANDLE (set at session creation time via the subdomain, e.g. hello.mcp.arjun.tv).

For ChatGPT/OpenAI hosted connectors, do not pass handle when the connector is already bound to one handle. One connector now maps to one handle, and the hosted MCP runtime will use that bound handle automatically.

---

Scope quick reference

ScopeTools it unlocks
mcp.connectSession initialization
skills.readtools/list (see all tools)
links.readlinks_list, links_health_check, links_route_preview
links.writelinks_upsert
pages.readpages_list, campaign_structure_get, commerce_pages_list, commerce_page_buyers_list, commerce_access_check, commerce_checkout_session_preview
pages.writecampaign_structure_upsert, campaign_structure_publish, commerce_refund_issue
site.deployments.readsite_list_deployments, site_preview_deployment, site_release_get_files
site.deployments.writesite_deploy_inline, site_deploy_multifile, site_release_rollback
analytics.readanalytics_get, analytics_export
knowledge.queryknowledge_query, knowledge_topics, knowledge_stats
context_store.searchcontext_store_search, context_store_status
context_store.managecontext_source_sync
webhooks.readwebhooks_list
webhooks.writewebhooks_create, webhooks_delete, webhooks_test
tracking.templates.readtracking_list_templates
tracking.templates.writetracking_upsert_template
tracking.personalization.readtracking_list_personalization_rules
tracking.personalization.writetracking_upsert_personalization_rule
routing.context_origins.readrouting_list_context_origins
routing.context_origins.writerouting_update_context_origins
system.usage.readsystem_usage_meters
system.audit.readsystem_audit_events
agent.strategy.readHosted Strategy Repository retrieval such as strategy_query when that capability is enabled

The live tool catalog appears in tools/list regardless of scopes. Scope errors only surface when a tool is actually called.

Some handles also expose pack-specific resources and prompts. For example, commerce-enabled handles may expose resources such as tenx://commerce/overview and guided prompts such as refund_triage alongside the tool catalog.

Companion workflow guide:

---

List all short links for a handle. Returns each link's slug, destination URL, title, enabled status, and health status (OK, BROKEN, or UNREACHABLE).

Inputs

ParameterTypeRequiredDescription
handlestringNoHandle key (defaults to session handle)

Example prompt

"List all my links for handle hello."

Response shape

{
  "handle": "hello",
  "links": [
    {
      "slug": "pricing",
      "destinationUrl": "https://example.com/pricing",
      "title": "Pricing page",
      "enabled": true,
      "position": 1,
      "createdAt": "2026-01-10T12:00:00Z"
    }
  ]
}

---

links_upsert

Create a new short link or update an existing one. Provide a slug (the URL path), destinationUrl, and optional title. Use this for quick link creation without form validation — use links_form_submit if you need schema-based validation.

Inputs

ParameterTypeRequiredDescription
handlestringNoHandle key for generic/local MCP clients. Omit it for ChatGPT handle-bound connectors.
slugstringYesLink slug (path segment, e.g. pricing)
payloadobjectYesLink fields to set (destinationUrl, title, enabled, etc.)

Example prompt

"Create a link with slug launch pointing to https://example.com/launch for handle hello."

Response shape

{
  "slug": "launch",
  "destinationUrl": "https://example.com/launch",
  "title": "Launch",
  "enabled": true,
  "updatedAt": "2026-03-02T09:00:00Z"
}

---

links_health_check

Check if link destination URLs are reachable. Visits each link's destination and reports OK, BROKEN (e.g. 404), or UNREACHABLE.

Inputs

ParameterTypeRequiredDescription
handlestringNoHandle key
payloadobjectNoOptional body — can include slugs array to limit which links are checked

Example prompt

"Run a health check on all links for hello and tell me which ones are broken."

Response shape

{
  "results": [
    { "slug": "pricing", "status": 200, "healthy": true },
    { "slug": "old-page", "status": 404, "healthy": false }
  ]
}

---

links_route_preview

Preview where a short link would redirect to under specific visitor conditions (country, device, source, campaign). Useful for testing personalization rules without actually clicking the link.

Inputs

ParameterTypeRequiredDescription
handlestringNoHandle key
slugstringYesLink slug
payloadobjectNoConditions to simulate (e.g. visitor context, device type)

Example prompt

"Show me where the pricing link would redirect a mobile visitor from the US."

Response shape

{
  "slug": "pricing",
  "resolvedUrl": "https://example.com/pricing-mobile",
  "ruleApplied": "mobile-us-variant",
  "fallback": false
}

---

Site Management

site_deploy_inline

Deploy one small HTML-only page directly. Best for landing pages and simple sites without separate JS/CSS/image files.

When to use this vs site_deploy_multifile:

  • Use site_deploy_inline for one HTML-only page with optional inline <style> tags. Script tags (<script>) and inline event handlers (onclick, etc.) are blocked for security.
  • Use site_deploy_multifile for real websites, routed pages, separate JavaScript/CSS/image files, or edits to an already deployed site.

Inputs

ParameterTypeRequiredDescription
handlestringNoHandle key (defaults to session handle)
htmlstringYesFull HTML content for a single-page deploy
pathstringNoOptional sub-path for a single-page deploy (e.g. /about)
activatebooleanNoIf false, creates a draft only. Default: true

Example prompts

"Deploy this HTML as my landing page." "Publish this one-page HTML promo at /summer-sale."

Response shape

{
  "handle": "hello",
  "deploymentId": "dep_abc123",
  "status": "ACTIVE",
  "liveUrl": "https://hello.10x.in/",
  "pageUrls": ["https://hello.10x.in/"],
  "activatedAt": "2026-03-02T09:05:00Z",
  "previewUrl": "https://..."
}

---

site_deploy_multifile

Deploy a full website with separate HTML, CSS, JS, and image files in a single tool call.

This is the default tool for real websites, routed pages, and edits to an already deployed site.

Use this when the site needs JavaScript files, stylesheets, or images as separate files — unlike site_deploy_inline which only accepts inline HTML without script tags. Use nested index.html files to publish specific public paths. Examples: courses/index.html, store/index.html, and dashboard/index.html publish /courses, /store, and /dashboard. perfume/index.html becomes https://hello.10x.in/perfume.

How it works:

The tool supports two modes depending on whether you provide file content:

Mode 1: Automatic (recommended for AI clients) — Provide content for each file. The MCP server handles everything: creates a draft, uploads all files to storage, and activates the deployment. Returns a live URL. This is the recommended mode for ChatGPT, Claude, and all AI clients.

Mode 2: Manual upload — Omit content from files. The tool returns pre-signed S3 upload URLs. You upload files yourself via HTTP PUT, then activate separately. This mode is for developer scripts, CI/CD pipelines, and binary file deployments.

Inputs

ParameterTypeRequiredDescription
handlestringNoHandle key (defaults to session handle)
filesarrayYesArray of file objects. Must include index.html. See fields below
activatebooleanNoSet false to keep as draft after upload. Defaults to true when content is provided

File object fields:

FieldTypeRequiredDescription
pathstringYesPath relative to site root (e.g. index.html, assets/style.css, about/index.html)
contentTypestringYesMIME type (e.g. text/html, text/css, application/javascript, image/png)
contentstringNoThe actual file content as text. When provided for all files, the tool uploads and activates automatically
sizeBytesnumberNoOptional file size in bytes (computed from content if omitted)

Example prompts

"Deploy my website with index.html, styles.css, and app.js" "Create a site with a home page, about page, and contact page with JavaScript interactivity"

Response shape (Mode 1 — automatic, with content)

{
  "handle": "hello",
  "deploymentId": "dep_xyz789",
  "status": "ACTIVE",
  "liveUrl": "https://hello.10x.in/",
  "pageUrls": ["https://hello.10x.in/", "https://hello.10x.in/about"],
  "uploadResults": [
    { "path": "index.html", "status": "uploaded" },
    { "path": "styles.css", "status": "uploaded" },
    { "path": "about/index.html", "status": "uploaded" }
  ]
}

Response shape (Mode 2 — manual, without content)

{
  "handle": "hello",
  "deploymentId": "dep_xyz789",
  "status": "DRAFT",
  "liveUrl": "https://hello.10x.in/",
  "pageUrls": ["https://hello.10x.in/", "https://hello.10x.in/about"],
  "uploadUrls": [
    {
      "path": "index.html",
      "contentType": "text/html",
      "putUrl": "https://s3.amazonaws.com/..."
    },
    {
      "path": "styles.css",
      "contentType": "text/css",
      "putUrl": "https://s3.amazonaws.com/..."
    },
    {
      "path": "about/index.html",
      "contentType": "text/html",
      "putUrl": "https://s3.amazonaws.com/..."
    }
  ]
}

Manual activation (Mode 2 only): After uploading files to the pre-signed URLs, activate with:

POST /v2/public/handles/{handle}/site-deployments
Content-Type: application/json

{ "activate": true, "deploymentId": "dep_xyz789" }

Limits:

LimitValue
Files per deployment100 max
Single file size5 MB max
Total deployment size25 MB max
Upload URL expiry15 minutes
Mode 1 (with content) works for text-based files: HTML, CSS, JS, JSON, SVG, TXT. For binary files like PNG/JPG images, use Mode 2 or reference images by external URL in your HTML (e.g. ``).

---

site_release_get_files

Read files from the current live release by default, or from a specific release when releaseId is provided.

Use this as the read step before editing a deployed site with AI. The tool returns inline content for editable text files and metadata-only entries for binary assets.

Inputs

ParameterTypeRequiredDescription
handlestringNoHandle key (defaults to session handle)
releaseIdstringNoSpecific release identifier. If omitted, the current live release is used
pathsarrayNoOptional subset of file paths to read

Behavior

  • Text files such as index.html, styles.css, app.js, data.json, README.md, and icon.svg return inline content
  • Binary files such as .png, .jpg, .woff, and .pdf return metadata only
  • If the combined text content would be too large, some files return contentOmittedReason: "response_too_large" instead of full content

Example prompt

"Read the current live release files for my site so you can edit the hero section."

Response shape

{
  "handle": "hello",
  "releaseId": "dep_live123",
  "isLive": true,
  "fileCount": 3,
  "files": [
    {
      "path": "index.html",
      "contentType": "text/html",
      "sizeBytes": 1824,
      "isText": true,
      "content": "<!DOCTYPE html>..."
    },
    {
      "path": "assets/app.js",
      "contentType": "application/javascript",
      "sizeBytes": 624,
      "isText": true,
      "content": "console.log('hello')"
    },
    {
      "path": "assets/logo.png",
      "contentType": "image/png",
      "sizeBytes": 20480,
      "isText": false
    }
  ]
}

---

site_release_rollback

Restore an older site release so it becomes live again.

Use this when a new site deployment was bad and you want to bring back a previous working version quickly.

Inputs

ParameterTypeRequiredDescription
handlestringNoHandle key (defaults to session handle)
releaseIdstringYesRelease identifier to restore

Example prompt

"Rollback my site to release dep_prev_good."

Response shape

{
  "handle": "hello",
  "releaseId": "dep_prev_good",
  "status": "LIVE",
  "liveReleaseId": "dep_prev_good",
  "rolledBackFromReleaseId": "dep_bad_new"
}

site_list_deployments

List all site deployments for a handle.

In ChatGPT, successful results render a launcher button for the live site URL.

Inputs

ParameterTypeRequiredDescription
handlestringNoHandle key

Example prompt

"List recent deployments for hello."

Response shape

{
  "handle": "hello",
  "activeDeploymentId": "dep_abc123",
  "liveUrl": "https://hello.10x.in/",
  "deploymentCount": 2,
  "deployments": [
    {
      "deploymentId": "dep_abc123",
      "status": "ACTIVE",
      "isActive": true,
      "liveUrl": "https://hello.10x.in/",
      "createdAt": "2026-03-02T09:05:00Z",
      "activatedAt": "2026-03-02T09:05:00Z"
    },
    {
      "deploymentId": "dep_old456",
      "status": "INACTIVE",
      "createdAt": "2026-02-20T14:00:00Z"
    }
  ]
}

---

site_preview_deployment

Get a signed preview URL for any deployment (active or draft).

In ChatGPT, successful results render launcher buttons for the signed preview URL and the live site URL.

Inputs

ParameterTypeRequiredDescription
handlestringNoHandle key
deploymentIdstringYesDeployment ID (e.g. dep_abc123)

Example prompt

"Give me a preview link for deployment dep_abc123 on handle hello."

Response shape

{
  "handle": "hello",
  "deploymentId": "dep_abc123",
  "liveUrl": "https://hello.10x.in/",
  "previewUrl": "https://ai.10x.in/v2/public/preview/activate?token=eyJ...",
  "expiresInSec": 900
}

---

pages_list

List creator pages for a handle with an optional status filter.

In ChatGPT, successful results render launcher buttons for the returned public page URLs.

Inputs

ParameterTypeRequiredDescription
handlestringNoHandle key
statusDRAFT \PUBLISHED \ARCHIVEDNoFilter by page status

Example prompt

"Show me all published pages for hello."

Response shape

{
  "handle": "hello",
  "pageCount": 1,
  "pages": [
    {
      "pageSlug": "welcome",
      "title": "Welcome",
      "status": "PUBLISHED",
      "pageUrl": "https://hello.10x.in/welcome"
    }
  ]
}

---

campaign_structure_get

Fetch campaign detail structure for a campaign (CAMPAIGN_DETAIL_V1 pages).

Inputs

ParameterTypeRequiredDescription
handlestringNoHandle key
campaignIdstringYesCampaign ID (for example cmp_launch)

Example prompt

"Fetch the campaign structure for campaign cmp_launch on handle hello."

Response shape

{
  "handle": "hello",
  "campaignId": "cmp_launch",
  "pageSlug": "campaign-launch",
  "accessMode": "FREE_WITH_LOGIN",
  "status": "PUBLISHED",
  "structureType": "CAMPAIGN_DETAIL_V1",
  "schemaVersion": 3,
  "schemaS3Key": "site-structure/hello/campaigns/cmp_launch/v3.json",
  "schema": {
    "modules": [{ "id": "hero", "type": "hero_banner" }]
  }
}

---

campaign_structure_upsert

Create or update the campaign detail structure page and schema JSON.

Inputs

ParameterTypeRequiredDescription
handlestringNoHandle key
campaignIdstringYesCampaign ID
payloadobjectYesRequest payload; include schema JSON object and page details

Example prompt

"Upsert campaign structure for cmp_launch with pageSlug campaign-launch and schema modules."

Response shape

{
  "ok": true,
  "handle": "hello",
  "campaignId": "cmp_launch",
  "pageSlug": "campaign-launch",
  "accessMode": "FREE_WITH_LOGIN",
  "status": "DRAFT",
  "schemaS3Key": "site-structure/hello/campaigns/cmp_launch/v4.json",
  "schemaVersion": 4
}

---

campaign_structure_publish

Publish campaign detail structure page (server enforces FREE_WITH_LOGIN).

Inputs

ParameterTypeRequiredDescription
handlestringNoHandle key
campaignIdstringYesCampaign ID

Example prompt

"Publish campaign structure page for cmp_launch."

Response shape

{
  "ok": true,
  "handle": "hello",
  "campaignId": "cmp_launch",
  "pageSlug": "campaign-launch",
  "accessMode": "FREE_WITH_LOGIN",
  "publishedAt": "2026-03-06T12:00:00.000Z"
}

---

Knowledge And Context Store

knowledge_query

Search manually managed and indexed handle knowledge using natural language. Use this for approved documents, runbooks, policies, and manually authored context.

Inputs

ParameterTypeRequiredDescription
handlestringNoHandle key
querystringYesNatural-language query
topicstringNoOptional topic filter
containerTagsstring[]NoOptional exact container tags, including project tags
filtersobjectNoOptional document/tag/metadata filters
limitnumberNoMaximum results to return

context_store_search

Search or list replicated connector records. Use this for read-only connector data when the source/entity status is READY or PREVIEW.

Inputs

ParameterTypeRequiredDescription
handlestringNoHandle key
projectIdstringNoOptional Smartwork project scope
sourceIdstringNoOptional context source id
entitystringNoOptional entity such as pages, documents, code, or records
querystringNoNatural-language search. Omit it to list structured records
filtersobjectNoStructured filters over indexed record fields and metadata
fieldsstring[]NoStructured listing fields to return
sortobjectNoStructured listing sort
limitnumberNoMaximum records/results
cursorstringNoCursor from a previous structured listing response

Example prompt

"Check Context Store for project proj_launch and find repository docs about deployment validation."

Response shape

{
  "executionPath": "context_store",
  "query": "deployment validation",
  "count": 2,
  "results": [],
  "sourceStatuses": [
    {
      "sourceId": "repo_docs",
      "connectorKey": "github_docs",
      "status": "READY",
      "lastSyncAt": "2026-05-06T10:00:00Z"
    }
  ]
}

context_store_status

Report Context Store source and entity readiness, counts, cursors, and timestamps.

Inputs

ParameterTypeRequiredDescription
handlestringNoHandle key

context_source_sync

Request an async refresh for a configured Context Store source. Use direct provider calls instead when writes or real-time freshness are required.

Inputs

ParameterTypeRequiredDescription
handlestringNoHandle key
sourceIdstringYesContext source id to refresh

---

Companion API/Edge Surfaces (Function Bindings)

Function binding creation and runtime invocation are API/Edge flows that complement MCP usage.

Create function binding (control-plane)

POST /v2/handles/{handle}/function-bindings

Bindings now declare:

  • status: ACTIVE or DISABLED
  • target: template or skill
  • exposure.publicWeb and exposure.authenticatedMcp
  • execution.mode: sync or async
  • tool.name, tool.description, and inputSchema
  • config: target-specific runtime config

Public Web exposure is limited to template-backed bindings in v1.

Discover enabled bindings (public handle)

GET /v2/public/handles/{handle}/function-bindings

Returns only ACTIVE template-backed bindings exposed on the public Web lane.

Discover authenticated MCP bindings

GET /v2/public/handles/{handle}/function-bindings/mcp

Requires PAT scope mcp.connect plus binding/skill invoke authorization.

Invoke binding runtime (edge)

GET|POST /_edge/fn/{handle}/{bindingKey}

Use this for request-level invocation tests and integration checks.

Invoke authenticated MCP binding

POST /v2/public/handles/{handle}/function-bindings/{bindingKey}/invoke

Returns the normalized sync or async tool envelope used by hosted/compat MCP.

For runnable examples, use Platform-Wide Feature Exploration Lab.

---

Analytics

analytics_get

Get click and conversion analytics. Shows total clicks, conversion rates, and traffic data. Use groupBy='slug' to see per-link stats, or 'country'/'device'/'referrer' for breakdowns. Supports date ranges with fromDay/toDay (YYYY-MM-DD).

Inputs

ParameterTypeRequiredDescription
handlestringNoHandle key
queryobjectNoQuerystring filters (e.g. { "slug": "pricing", "period": "7d" })

Example prompt

"How many clicks did handle hello get in the last 7 days?"

Response shape

{
  "handle": "hello",
  "period": "7d",
  "clicks": 1842,
  "conversions": 94,
  "conversionRate": 0.051
}

---

analytics_export

Export raw analytics data for reporting or external tools. Returns the full dataset for the specified date range.

Inputs

ParameterTypeRequiredDescription
handlestringNoHandle key
queryobjectNoExport filters (date range, slug, etc.)

---

analytics_campaign_health

Check health signals for a specific campaign — click trends, conversion rates, and anomalies.

Inputs

ParameterTypeRequiredDescription
handlestringNoHandle key
payloadobjectNoOptional discovery context

---

Tracking

tracking_list_templates

List all tracking integrations (Meta Pixel, Google Tag Manager, GA4, custom webhooks) and their enabled/disabled status.

Inputs

ParameterTypeRequiredDescription
handlestringNoHandle key

Response shape

{
  "templates": [
    {
      "templateKey": "meta_pixel",
      "enabled": true,
      "config": { "pixelId": "12345" }
    },
    {
      "templateKey": "ga4_event",
      "enabled": true,
      "config": { "measurementId": "G-XXXX" }
    }
  ]
}

---

tracking_upsert_template

Add or update a tracking integration. Supported types: meta_pixel (Facebook), gtm_event (Google Tag Manager), ga4_event (Google Analytics 4), custom_webhook.

Inputs

ParameterTypeRequiredDescription
handlestringNoHandle key
payload.templateKeyenumYesOne of meta_pixel, gtm_event, ga4_event, custom_webhook
payload.enabledbooleanNoDisable the template when false
payload.configobjectNoTemplate configuration object. Use eventName for event-driven templates or endpointUrl for custom_webhook

templateKey must be one of: meta_pixel, gtm_event, ga4_event, custom_webhook. This tool does not accept freeform {{variable}} UTM string templates.

Example prompt

"Add a Meta Pixel with ID 98765 to handle hello."

Working example

{
  "handle": "deepak",
  "payload": {
    "templateKey": "ga4_event",
    "enabled": true,
    "config": {
      "eventName": "ai_masterclass_visit"
    }
  }
}

---

tracking_list_personalization_rules

List all A/B testing and personalization rules. Shows each rule's conditions (country, device, source), variant, priority, and traffic allocation.

Inputs

ParameterTypeRequiredDescription
handlestringNoHandle key

---

tracking_upsert_personalization_rule

Create or update an A/B testing or personalization rule. Target visitors by country, device, traffic source, campaign, or segment. Each rule has a variant (with required id, optional title/cta/destinationUrl) and optional traffic allocation (0-1). Lower priority numbers run first.

Inputs

ParameterTypeRequiredDescription
handlestringNoHandle key
ruleIdstringYesLowercase rule identifier matching ^[a-z0-9][a-z0-9_-]{1,63}$
payload.enabledbooleanNoDisable the rule when false
payload.prioritynumberNoLower numbers run first
payload.whenobjectNoFixed match conditions using sourceIn, campaignIn, countryIn, deviceIn, and segmentIn arrays
payload.variant.idstringYesRequired variant identifier
payload.variant.titlestringNoOptional personalized title
payload.variant.ctastringNoOptional personalized CTA
payload.variant.destinationUrlstringNoOptional destination override
payload.variant.metadataobjectNoOptional arbitrary metadata
payload.trafficAllocationnumberNoOptional 0-1 traffic allocation

There are no generic operators such as equals. Matching uses the fixed ...In arrays inside payload.when.

Working example

{
  "handle": "deepak",
  "ruleId": "ai-masterclass-2026-landing",
  "payload": {
    "enabled": true,
    "priority": 100,
    "when": {
      "campaignIn": ["ai-masterclass-2026"]
    },
    "variant": {
      "id": "masterclass_variant_a",
      "title": "AI Masterclass 2026",
      "cta": "Reserve your seat",
      "destinationUrl": "https://deepak.10x.in/masterclass"
    }
  }
}

---

tracking_resolve_context

Resolve a ?ctx= token into its attribution data and variables. No connector token required — public endpoint.

Inputs

ParameterTypeRequiredDescription
ctxstringYesThe CTX token value from a link URL

Response shape

{
  "attribution": { "source": "newsletter", "campaign": "march-launch" },
  "vars": { "variant": "B", "segment": "returning" }
}

---

tracking_write_signal

Write a behavioral signal into the chain for a visitor session.

Inputs

ParameterTypeRequiredDescription
handlestringNoHandle key
payloadobjectYesSignal body (type, sessionId, value, etc.)

---

tracking_resolve_chain

Evaluate a chain trigger and get the routing decision for a visitor.

Inputs

ParameterTypeRequiredDescription
handlestringNoHandle key
payloadobjectYesTrigger context (chainId, sessionId, signals, etc.)

---

Routing

routing_list_context_origins

List allowlisted browser origins that can generate CTX tokens.

Inputs

ParameterTypeRequiredDescription
handlestringNoHandle key

---

routing_update_context_origins

Replace the full list of allowlisted browser origins.

Inputs

ParameterTypeRequiredDescription
handlestringNoHandle key
payloadobjectYesNew origins list

---

routing_read_chain_session

Read a chain session — accumulated signals and current state.

Inputs

ParameterTypeRequiredDescription
handlestringNoHandle key
payloadobjectYesSession reference (chainId, sessionId)

---

routing_prefetch_decisions

Pre-compute routing decisions for multiple trigger events in a single call.

Inputs

ParameterTypeRequiredDescription
handlestringNoHandle key
payloadobjectYesArray of trigger contexts to pre-evaluate

---

Webhooks

webhooks_list

List all webhook subscriptions for a handle.

Inputs

ParameterTypeRequiredDescription
handlestringNoHandle key

Response shape

{
  "subscriptions": [
    {
      "subscriptionId": "wh_abc",
      "endpointUrl": "https://myserver.com/hook",
      "eventTypes": ["link.clicked", "conversion.recorded"],
      "enabled": true
    }
  ]
}

---

webhooks_create

Register a new webhook subscription.

Inputs

ParameterTypeRequiredDescription
handlestringNoHandle key
payload.endpointUrlstringYesPublic HTTPS destination URL
payload.eventTypesarrayNoOptional event list. Omit this field to subscribe to all supported webhook events
payload.enabledbooleanNoDisable the subscription when false

Example prompt

"Create a webhook for handle hello that fires on link.clicked events and sends to https://myserver.com/hook."

Working example

{
  "handle": "deepak",
  "payload": {
    "endpointUrl": "https://n8n.1to10x.ai/webhook/lead-capture",
    "eventTypes": ["lead.captured", "link.clicked"],
    "enabled": true
  }
}

The destination URL does not need pre-registration in 10x. It must be public HTTPS, resolvable, and outside the blocked private-host list.

Supported event names include link.clicked, deployment.created, deployment.activated, skill.invoked, link.routed, link.context_created, conversion.recorded, personalization.resolved, campaign.created, campaign.health_changed, lead.captured, moderation events, webhook.delivery.terminal_failure, destination-domain events, groupbuy events, scene events, agent events, and QA events.

---

webhooks_delete

Delete a webhook subscription by ID.

Inputs

ParameterTypeRequiredDescription
handlestringNoHandle key
subscriptionIdstringYesWebhook subscription ID

---

webhooks_test

Send a test event to a webhook to verify delivery.

Inputs

ParameterTypeRequiredDescription
handlestringNoHandle key
subscriptionIdstringYesWebhook subscription ID
payloadobjectNoOptional test event body

---

Agent (AI Planning & Execution)

The agent tools follow a lifecycle: discover → strategy → proposal → run.

agent_discover

Run agent discovery to surface marketing signals and opportunities for a handle.

Inputs

ParameterTypeRequiredDescription
handlestringNoHandle key
payloadobjectNoOptional discovery context

---

agent_generate_strategy

Generate strategy recommendations based on discovery signals.

Inputs

ParameterTypeRequiredDescription
handlestringNoHandle key
payloadobjectNoStrategy generation context

---

agent_list_proposals

List execution proposals, optionally filtered by status (PENDING, APPROVED, REJECTED, RUNNING, COMPLETED).

Inputs

ParameterTypeRequiredDescription
handlestringNoHandle key
statusstringNoStatus filter

---

agent_create_proposal

Create an execution proposal from strategy output.

Inputs

ParameterTypeRequiredDescription
handlestringNoHandle key
payloadobjectYesProposal definition

---

agent_approve_proposal

Approve a pending proposal so it can be executed.

Inputs

ParameterTypeRequiredDescription
handlestringNoHandle key
proposalIdstringYesProposal ID

---

agent_reject_proposal

Reject a pending proposal with an optional reason.

Inputs

ParameterTypeRequiredDescription
handlestringNoHandle key
proposalIdstringYesProposal ID
payloadobjectNoOptional rejection reason

---

agent_start_run

Start execution of an approved proposal.

Inputs

ParameterTypeRequiredDescription
handlestringNoHandle key
payloadobjectYesRun parameters (proposalId, etc.)

---

agent_get_run_status

Poll the status of a running or completed execution, including step-level details.

Inputs

ParameterTypeRequiredDescription
handlestringNoHandle key
runIdstringYesRun ID

Response shape

{
  "runId": "run_xyz",
  "status": "RUNNING",
  "steps": [
    { "stepId": "s1", "name": "upsert-links", "status": "COMPLETED" },
    { "stepId": "s2", "name": "deploy-site", "status": "RUNNING" }
  ]
}

---

agent_rollback_run

Rollback a completed run, reverting changes made during execution.

Inputs

ParameterTypeRequiredDescription
handlestringNoHandle key
runIdstringYesRun ID

---

System

system_health

Check if the MCP server is connected and working. Returns ok: true if the platform is reachable, plus a count of links as a health probe.

Inputs

ParameterTypeRequiredDescription
handlestringNoHandle key

Example prompt

"Is the MCP connection healthy for handle hello?"

Response shape

{
  "handle": "hello",
  "healthy": true,
  "links": 12
}

---

system_usage_meters

Check current API usage and rate-limit status. Shows how much of your quota has been used.

Inputs

ParameterTypeRequiredDescription
handlestringNoHandle key
payloadobjectNoOptional filter

---

system_audit_events

View recent activity log — shows who created links, deployed sites, deleted webhooks, and other actions taken on this handle.

Inputs

ParameterTypeRequiredDescription
handlestringNoHandle key
payloadobjectNoOptional body (limit, cursor, etc.)

---

Code Runs

code_runtime_list

List configured code runtimes available for a handle.

Inputs

ParameterTypeRequiredDescription
handlestringNoHandle key

---

code_run_submit

Submit a code run with an idempotency key.

Inputs

ParameterTypeRequiredDescription
handlestringNoHandle key
payloadobjectYesRun definition (runtimeId, code, idempotencyKey, etc.)

---

code_run_status

Fetch the current status of a submitted code run.

Inputs

ParameterTypeRequiredDescription
handlestringNoHandle key
runIdstringYesRun ID

---

code_run_fetch_output

Fetch inline output or file output metadata for a completed run.

Inputs

ParameterTypeRequiredDescription
handlestringNoHandle key
runIdstringYesRun ID

---

Forms

forms_schema_get

Get the form schema that defines what fields are available when creating links (field names, types, required/optional). Currently supports link_form_v1.

Inputs

ParameterTypeRequiredDescription
handlestringNoHandle key
formIdstringNoCurrently only link_form_v1 is supported. Defaults to link_form_v1

link_form_v1 is the shipped link-management baseline schema. There is currently no built-in lead-capture baseline form for fields like name, email, phone, or job title.

---

forms_feedback_record

Record feedback about a form submission to improve the form schema over time. Send outcome: 'success' with a usedElements array listing which fields were used.

Inputs

ParameterTypeRequiredDescription
handlestringNoHandle key
formIdstringNoForm identifier (defaults to link_form_v1)
payloadobjectYesFeedback body

---

links_form_submit

Create or update a link with form validation. First fetches the form schema, validates required fields (like destinationUrl), then creates/updates the link. Use this instead of links_upsert when you want schema-validated link creation.

Inputs

ParameterTypeRequiredDescription
handlestringNoHandle key
formIdstringNoForm identifier (defaults to link_form_v1)
slugstringNoOptional slug override
valuesobjectNoForm values keyed by canonical field keys
feedbackbooleanNoWhen true, records successful feedback after submit

---

Troubleshooting

ErrorMeaningFix
isError: true + status: 401Connector grant missing or expiredRe-open connector auth and complete OAuth for the handle
isError: true + status: 403 + insufficient_scopeConnector grant lacks a required scopeRe-authorize connector with the missing scope
isError: true + missing_handleNo handle was resolvedPass handle explicitly or set LINK_PLATFORM_DEFAULT_HANDLE
isError: true + status: 404Resource not foundVerify the slug/ID exists for your handle
isError: true + status: 429Rate limitedRetry after a short backoff

Updated Jun 19, 2026