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 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.
Warning
Mapped custom domains are not valid MCP hosts. MCP must stay on the platform environment hostname such as https://{handle}.mcp.10x.in/mcp in production or the staging/test platform hostname in non-prod environments.
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" } }
}
The handle parameter is optional on every tool — it falls back to the server's LINK_PLATFORM_DEFAULT_HANDLE (set at session creation time via the subdomain, e.g. hello.mcp.arjun.tv).
Scope quick reference
| Scope | Tools it unlocks |
|---|---|
mcp.connect | Session initialization |
skills.read | tools/list (see all tools) |
links.read | links_list, links_health_check, links_route_preview |
links.write | links_upsert |
pages.read | pages_list, campaign_structure_get, commerce_pages_list, commerce_page_buyers_list, commerce_access_check, commerce_checkout_session_preview |
pages.write | campaign_structure_upsert, campaign_structure_publish, commerce_refund_issue |
site.deployments.read | site_list_deployments, site_preview_deployment |
site.deployments.write | site_deploy_inline, site_deploy_multifile |
analytics.read | analytics_get, analytics_export |
webhooks.read | webhooks_list |
webhooks.write | webhooks_create, webhooks_delete, webhooks_test |
tracking.templates.read | tracking_list_templates |
tracking.templates.write | tracking_upsert_template |
tracking.personalization.read | tracking_list_personalization_rules |
tracking.personalization.write | tracking_upsert_personalization_rule |
routing.context_origins.read | routing_list_context_origins |
routing.context_origins.write | routing_update_context_origins |
system.usage.read | system_usage_meters |
system.audit.read | system_audit_events |
agent.strategy.read | Hosted 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:
Links
links_list
List all links for a handle.
Inputs
| Parameter | Type | Required | Description |
|---|---|---|---|
handle | string | No | Handle 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 or update a link by slug.
Inputs
| Parameter | Type | Required | Description |
|---|---|---|---|
handle | string | No | Handle key |
slug | string | Yes | Link slug (path segment, e.g. pricing) |
payload | object | Yes | Link fields to set (destinationUrl, title, enabled, etc.) |
Example prompt
"Create a link with slug
launchpointing tohttps://example.com/launchfor handle hello."
Response shape
{
"slug": "launch",
"destinationUrl": "https://example.com/launch",
"title": "Launch",
"enabled": true,
"updatedAt": "2026-03-02T09:00:00Z"
}
links_health_check
Run destination health checks on links (verifies that destination URLs are reachable).
Inputs
| Parameter | Type | Required | Description |
|---|---|---|---|
handle | string | No | Handle key |
payload | object | No | Optional 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 the routing decision for a link under given conditions, without actually redirecting.
Inputs
| Parameter | Type | Required | Description |
|---|---|---|---|
handle | string | No | Handle key |
slug | string | Yes | Link slug |
payload | object | No | Conditions to simulate (e.g. visitor context, device type) |
Example prompt
"Show me where the
pricinglink 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 a complete HTML page to a handle's site in one step.
This publishes the site root only. For public paths like /perfume, /courses, /store, or /dashboard, use site_deploy_multifile with nested files such as perfume/index.html, courses/index.html, store/index.html, and dashboard/index.html. In ChatGPT, successful results also render launcher buttons for the live site, preview URL, and routed page URLs.
Inputs
| Parameter | Type | Required | Description |
|---|---|---|---|
handle | string | No | Handle key |
html | string | Yes | Full HTML content to deploy |
activate | boolean | No | If false, creates a draft only. Default: true |
For ChatGPT and other MCP clients, do not pass deploymentId when creating a deployment. The server generates one and returns it in the response for later preview or activation steps.
Example prompt
"Deploy this HTML to handle hello and activate it immediately:
<html>...</html>"
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://api.10x.in/v2/public/preview/activate?token=eyJ..."
}
site_deploy_multifile
Create a multi-file static site deployment and receive pre-signed upload URLs. Must include index.html in the file list.
Use nested index.html files to publish specific public paths. Example: perfume/index.html becomes https://hello.10x.in/perfume. In ChatGPT, successful results also render launcher buttons for the live site, preview URL, and routed page URLs.
Inputs
| Parameter | Type | Required | Description |
|---|---|---|---|
handle | string | No | Handle key |
files | array | Yes | Array of { path, contentType, sizeBytes? } — must include index.html |
For ChatGPT and other MCP clients, do not pass deploymentId when creating the draft. The server generates one and returns it for upload, preview, and activation.
Example prompt
"Create a multifile deployment for hello with index.html, courses/index.html, store/index.html, and dashboard/index.html."
Response shape
{
"handle": "hello",
"deploymentId": "dep_xyz789",
"status": "DRAFT",
"liveUrl": "https://hello.10x.in/",
"pageUrls": [
"https://hello.10x.in/",
"https://hello.10x.in/courses",
"https://hello.10x.in/store",
"https://hello.10x.in/dashboard"
],
"uploadUrls": [
{ "path": "index.html", "contentType": "text/html", "putUrl": "https://s3.amazonaws.com/..." },
{ "path": "courses/index.html", "contentType": "text/html", "putUrl": "https://s3.amazonaws.com/..." },
{ "path": "store/index.html", "contentType": "text/html", "putUrl": "https://s3.amazonaws.com/..." },
{ "path": "dashboard/index.html", "contentType": "text/html", "putUrl": "https://s3.amazonaws.com/..." }
],
"previewUrl": "https://api.10x.in/v2/public/preview/activate?token=eyJ..."
}
Upload each file to its putUrl with a PUT request, then activate the deployment separately if needed.
site_list_deployments
List all site deployments for a handle.
In ChatGPT, successful results render a launcher button for the live site URL.
Inputs
| Parameter | Type | Required | Description |
|---|---|---|---|
handle | string | No | Handle 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
| Parameter | Type | Required | Description |
|---|---|---|---|
handle | string | No | Handle key |
deploymentId | string | Yes | Deployment 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://api.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
| Parameter | Type | Required | Description | ||
|---|---|---|---|---|---|
handle | string | No | Handle key | ||
status | DRAFT \ | PUBLISHED \ | ARCHIVED | No | Filter 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
| Parameter | Type | Required | Description |
|---|---|---|---|
handle | string | No | Handle key |
campaignId | string | Yes | Campaign 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
| Parameter | Type | Required | Description |
|---|---|---|---|
handle | string | No | Handle key |
campaignId | string | Yes | Campaign ID |
payload | object | Yes | Request 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
| Parameter | Type | Required | Description |
|---|---|---|---|
handle | string | No | Handle key |
campaignId | string | Yes | Campaign 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"
}
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:ACTIVEorDISABLEDtarget:templateorskillexposure.publicWebandexposure.authenticatedMcpexecution.mode:syncorasynctool.name,tool.description, andinputSchemaconfig: 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 rollups for a handle.
Inputs
| Parameter | Type | Required | Description |
|---|---|---|---|
handle | string | No | Handle key |
query | object | No | Querystring 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 (larger datasets, for reporting).
Inputs
| Parameter | Type | Required | Description |
|---|---|---|---|
handle | string | No | Handle key |
query | object | No | Export filters (date range, slug, etc.) |
analytics_campaign_health
Check campaign health and surface marketing signals via the agent discovery endpoint.
Inputs
| Parameter | Type | Required | Description |
|---|---|---|---|
handle | string | No | Handle key |
payload | object | No | Optional discovery context |
Tracking
tracking_list_templates
List all tracking templates (Meta Pixel, GTM events, GA4, custom webhooks) for a handle.
Inputs
| Parameter | Type | Required | Description |
|---|---|---|---|
handle | string | No | Handle key |
Response shape
{
"templates": [
{ "templateKey": "meta_pixel", "enabled": true, "config": { "pixelId": "12345" } },
{ "templateKey": "ga4_event", "enabled": true, "config": { "measurementId": "G-XXXX" } }
]
}
tracking_upsert_template
Create or update a fixed-key tracking template. templateKey must be one of: meta_pixel, gtm_event, ga4_event, custom_webhook. This tool does not accept freeform {{variable}} UTM string templates.
Inputs
| Parameter | Type | Required | Description |
|---|---|---|---|
handle | string | No | Handle key |
payload.templateKey | enum | Yes | One of meta_pixel, gtm_event, ga4_event, custom_webhook |
payload.enabled | boolean | No | Disable the template when false |
payload.config | object | No | Template configuration object. Use eventName for event-driven templates or endpointUrl for custom_webhook |
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 A/B and personalization rules for a handle.
Inputs
| Parameter | Type | Required | Description |
|---|---|---|---|
handle | string | No | Handle key |
tracking_upsert_personalization_rule
Create or update a personalization rule by ID.
Inputs
| Parameter | Type | Required | Description |
|---|---|---|---|
handle | string | No | Handle key |
ruleId | string | Yes | Lowercase rule identifier matching ^[a-z0-9][a-z0-9_-]{1,63}$ |
payload.enabled | boolean | No | Disable the rule when false |
payload.priority | number | No | Lower numbers run first |
payload.when | object | No | Fixed match conditions using sourceIn, campaignIn, countryIn, deviceIn, and segmentIn arrays |
payload.variant.id | string | Yes | Required variant identifier |
payload.variant.title | string | No | Optional personalized title |
payload.variant.cta | string | No | Optional personalized CTA |
payload.variant.destinationUrl | string | No | Optional destination override |
payload.variant.metadata | object | No | Optional arbitrary metadata |
payload.trafficAllocation | number | No | Optional 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
| Parameter | Type | Required | Description |
|---|---|---|---|
ctx | string | Yes | The 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
| Parameter | Type | Required | Description |
|---|---|---|---|
handle | string | No | Handle key |
payload | object | Yes | Signal body (type, sessionId, value, etc.) |
tracking_resolve_chain
Evaluate a chain trigger and get the routing decision for a visitor.
Inputs
| Parameter | Type | Required | Description |
|---|---|---|---|
handle | string | No | Handle key |
payload | object | Yes | Trigger context (chainId, sessionId, signals, etc.) |
Routing
routing_list_context_origins
List allowlisted browser origins that can generate CTX tokens.
Inputs
| Parameter | Type | Required | Description |
|---|---|---|---|
handle | string | No | Handle key |
routing_update_context_origins
Replace the full list of allowlisted browser origins.
Inputs
| Parameter | Type | Required | Description |
|---|---|---|---|
handle | string | No | Handle key |
payload | object | Yes | New origins list |
routing_read_chain_session
Read a chain session — accumulated signals and current state.
Inputs
| Parameter | Type | Required | Description |
|---|---|---|---|
handle | string | No | Handle key |
payload | object | Yes | Session reference (chainId, sessionId) |
routing_prefetch_decisions
Pre-compute routing decisions for multiple trigger events in a single call.
Inputs
| Parameter | Type | Required | Description |
|---|---|---|---|
handle | string | No | Handle key |
payload | object | Yes | Array of trigger contexts to pre-evaluate |
Webhooks
webhooks_list
List all webhook subscriptions for a handle.
Inputs
| Parameter | Type | Required | Description |
|---|---|---|---|
handle | string | No | Handle 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
| Parameter | Type | Required | Description |
|---|---|---|---|
handle | string | No | Handle key |
payload.endpointUrl | string | Yes | Public HTTPS destination URL |
payload.eventTypes | array | No | Optional event list. Omit this field to subscribe to all supported webhook events |
payload.enabled | boolean | No | Disable the subscription when false |
Example prompt
"Create a webhook for handle hello that fires on
link.clickedevents and sends tohttps://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
| Parameter | Type | Required | Description |
|---|---|---|---|
handle | string | No | Handle key |
subscriptionId | string | Yes | Webhook subscription ID |
webhooks_test
Send a test event to a webhook to verify delivery.
Inputs
| Parameter | Type | Required | Description |
|---|---|---|---|
handle | string | No | Handle key |
subscriptionId | string | Yes | Webhook subscription ID |
payload | object | No | Optional 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
| Parameter | Type | Required | Description |
|---|---|---|---|
handle | string | No | Handle key |
payload | object | No | Optional discovery context |
agent_generate_strategy
Generate strategy recommendations based on discovery signals.
Inputs
| Parameter | Type | Required | Description |
|---|---|---|---|
handle | string | No | Handle key |
payload | object | No | Strategy generation context |
agent_list_proposals
List execution proposals, optionally filtered by status (PENDING, APPROVED, REJECTED, RUNNING, COMPLETED).
Inputs
| Parameter | Type | Required | Description |
|---|---|---|---|
handle | string | No | Handle key |
status | string | No | Status filter |
agent_create_proposal
Create an execution proposal from strategy output.
Inputs
| Parameter | Type | Required | Description |
|---|---|---|---|
handle | string | No | Handle key |
payload | object | Yes | Proposal definition |
agent_approve_proposal
Approve a pending proposal so it can be executed.
Inputs
| Parameter | Type | Required | Description |
|---|---|---|---|
handle | string | No | Handle key |
proposalId | string | Yes | Proposal ID |
agent_reject_proposal
Reject a pending proposal with an optional reason.
Inputs
| Parameter | Type | Required | Description |
|---|---|---|---|
handle | string | No | Handle key |
proposalId | string | Yes | Proposal ID |
payload | object | No | Optional rejection reason |
agent_start_run
Start execution of an approved proposal.
Inputs
| Parameter | Type | Required | Description |
|---|---|---|---|
handle | string | No | Handle key |
payload | object | Yes | Run parameters (proposalId, etc.) |
agent_get_run_status
Poll the status of a running or completed execution, including step-level details.
Inputs
| Parameter | Type | Required | Description |
|---|---|---|---|
handle | string | No | Handle key |
runId | string | Yes | Run 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
| Parameter | Type | Required | Description |
|---|---|---|---|
handle | string | No | Handle key |
runId | string | Yes | Run ID |
System
system_health
Check connector health and verify OAuth-backed MCP access for a handle.
Inputs
| Parameter | Type | Required | Description |
|---|---|---|---|
handle | string | No | Handle key |
Example prompt
"Is the MCP connection healthy for handle hello?"
Response shape
{
"handle": "hello",
"healthy": true,
"links": 12
}
system_usage_meters
Get current usage and rate-limit meters for a handle.
Inputs
| Parameter | Type | Required | Description |
|---|---|---|---|
handle | string | No | Handle key |
payload | object | No | Optional filter |
system_audit_events
List recent audit events (API actions) for a handle.
Inputs
| Parameter | Type | Required | Description |
|---|---|---|---|
handle | string | No | Handle key |
payload | object | No | Optional body (limit, cursor, etc.) |
Code Runs
code_runtime_list
List configured code runtimes available for a handle.
Inputs
| Parameter | Type | Required | Description |
|---|---|---|---|
handle | string | No | Handle key |
code_run_submit
Submit a code run with an idempotency key.
Inputs
| Parameter | Type | Required | Description |
|---|---|---|---|
handle | string | No | Handle key |
payload | object | Yes | Run definition (runtimeId, code, idempotencyKey, etc.) |
code_run_status
Fetch the current status of a submitted code run.
Inputs
| Parameter | Type | Required | Description |
|---|---|---|---|
handle | string | No | Handle key |
runId | string | Yes | Run ID |
code_run_fetch_output
Fetch inline output or file output metadata for a completed run.
Inputs
| Parameter | Type | Required | Description |
|---|---|---|---|
handle | string | No | Handle key |
runId | string | Yes | Run ID |
Forms
forms_schema_get
Retrieve the learned schema for a form.
Inputs
| Parameter | Type | Required | Description |
|---|---|---|---|
handle | string | No | Handle key |
formId | string | No | Currently 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 on a form submission (used to improve schema learning).
Inputs
| Parameter | Type | Required | Description |
|---|---|---|---|
handle | string | No | Handle key |
formId | string | No | Form identifier (defaults to link_form_v1) |
payload | object | Yes | Feedback body |
links_form_submit
Submit a form with schema validation and automatic feedback recording in one call.
Inputs
| Parameter | Type | Required | Description |
|---|---|---|---|
handle | string | No | Handle key |
formId | string | No | Form identifier (defaults to link_form_v1) |
slug | string | No | Optional slug override |
values | object | No | Form values keyed by canonical field keys |
feedback | boolean | No | When true, records successful feedback after submit |
Troubleshooting
| Error | Meaning | Fix |
|---|---|---|
isError: true + status: 401 | Connector grant missing or expired | Re-open connector auth and complete OAuth for the handle |
isError: true + status: 403 + insufficient_scope | Connector grant lacks a required scope | Re-authorize connector with the missing scope |
isError: true + missing_handle | No handle was resolved | Pass handle explicitly or set LINK_PLATFORM_DEFAULT_HANDLE |
isError: true + status: 404 | Resource not found | Verify the slug/ID exists for your handle |
isError: true + status: 429 | Rate limited | Retry after a short backoff |