links.10x.in/docs/end-user/playbooks/platform-feature-exploration-lab Published:

Playbook: Platform-Wide Feature Exploration Lab

Last updated: 2026-03-06

1. Purpose and when to use this

Use this lab when you want one practical workflow that covers schema setup, campaign structure pages, analytics validation, and function-binding data delivery across API, Edge, and MCP surfaces.

This guide is for external operators and marketers who need runnable steps, copy-paste payloads, and clear route/scope mapping.

2. Lab tracks (end-to-end)

TrackOutcome
Track 1Working auth baseline for JWT, PAT, and MCP connector scope checks
Track 2Campaign structure page created, fetched, and published with FREE_WITH_LOGIN
Track 3Campaign analytics validated for funnel, segment, and export paths
Track 4Function binding created (control-plane), discovered (public handle), and invoked (Edge)
Track 5Objective-based launch recipes combining all surfaces

3. Prerequisites and environment

  1. Complete Onboarding and API Primer.
  2. Have a handle with CREATOR access.
  3. Have JWT_TOKEN and one PAT_TOKEN.

Set baseline variables:

export PUBLIC_DOMAIN="10x.in"
export API_BASE="https://ai.10x.in"
export HANDLE="your-handle"
export MCP_BASE="https://${HANDLE}.mcp.$10x.in/mcp"
export CAMPAIGN_ID="cmp_launch_2026"
export PAGE_SLUG="campaign-launch-2026"
export BINDING_KEY="lead_router"

Recommended PAT scopes for this lab:

  • pages.read
  • pages.write
  • analytics.read (or wildcard analytics.*)

4. Track 1: Auth + setup baseline

T1-01 Verify JWT control-plane access

curl -sS "${API_BASE}/v2/handles" \
  -H "authorization: Bearer ${JWT_TOKEN}"

T1-02 Verify PAT public-handle access

curl -sS "${API_BASE}/v2/public/handles/${HANDLE}/links" \
  -H "authorization: Bearer ${PAT_TOKEN}"

T1-03 Verify MCP connector endpoint target

Use hosted MCP endpoint:

  • https://${HANDLE}.mcp.$10x.in/mcp
  • compat: https://ai.10x.in/mcp/${HANDLE}/mcp

Confirm connector scopes include at least:

  • mcp.connect
  • skills.read
  • pages.read / pages.write (campaign structure tools)
  • analytics.read (analytics tools)

5. Track 2: Campaign structure schema workflow

T2-01 Upsert campaign structure page + schema JSON (PAT route)

PUT /v2/public/handles/{handle}/site-structure/campaigns/{campaignId}

curl -sS -X PUT "${API_BASE}/v2/public/handles/${HANDLE}/site-structure/campaigns/${CAMPAIGN_ID}" \
  -H "authorization: Bearer ${PAT_TOKEN}" \
  -H 'content-type: application/json' \
  -d '{
    "pageSlug": "'"${PAGE_SLUG}"'",
    "title": "Campaign Launch 2026",
    "description": "Private campaign detail page",
    "accessMode": "FREE_WITH_LOGIN",
    "structureType": "CAMPAIGN_DETAIL_V1",
    "schema": {
      "modules": [
        { "id": "hero", "type": "hero_banner" },
        { "id": "proof", "type": "social_proof" },
        { "id": "cta", "type": "checkout_cta" }
      ],
      "seo": { "title": "Campaign Launch 2026" }
    }
  }'

Expected:

  • schemaVersion increments.
  • schemaS3Key follows:
  • site-structure/{handle}/campaigns/{campaignId}/v{version}.json
  • Campaign gets a detailsPageSlug backreference.

T2-02 Fetch campaign structure and verify persisted schema

GET /v2/public/handles/{handle}/site-structure/campaigns/{campaignId}

curl -sS "${API_BASE}/v2/public/handles/${HANDLE}/site-structure/campaigns/${CAMPAIGN_ID}" \
  -H "authorization: Bearer ${PAT_TOKEN}"

T2-03 Publish with login gate

POST /v2/public/handles/{handle}/site-structure/campaigns/{campaignId}/publish

curl -sS -X POST "${API_BASE}/v2/public/handles/${HANDLE}/site-structure/campaigns/${CAMPAIGN_ID}/publish" \
  -H "authorization: Bearer ${PAT_TOKEN}" \
  -H 'content-type: application/json' \
  -d '{}'

Expected:

  • status becomes published.
  • accessMode is enforced to FREE_WITH_LOGIN.

T2-04 Slug conflict validation (negative test)

Attempt upsert with a pageSlug already used by a link slug for the same handle. Expected error:

  • 409 slug_conflict

T2-05 MCP equivalents for Track 2

  • campaign_structure_upsert
  • campaign_structure_get
  • campaign_structure_publish

Example prompt:

"Upsert campaign structure for cmp_launch_2026 with page slug campaign-launch-2026, set FREE_WITH_LOGIN, and include hero/proof/cta modules."

Optional local app path (local environments)

If running this monorepo locally, use:

  • apps/site-structure-web
  • npm --prefix apps/site-structure-web run dev

The app uses the same PAT public-handle routes listed above.

6. Track 3: Analytics workflow (campaign validation)

T3-01 Funnel metrics by campaign

curl -sS "${API_BASE}/v2/public/handles/${HANDLE}/analytics?funnel=true&campaignId=${CAMPAIGN_ID}" \
  -H "authorization: Bearer ${PAT_TOKEN}"

T3-02 Segment breakdown by campaign

curl -sS "${API_BASE}/v2/public/handles/${HANDLE}/analytics?groupBy=segment&campaignId=${CAMPAIGN_ID}" \
  -H "authorization: Bearer ${PAT_TOKEN}"

T3-03 Export analytics

curl -sS "${API_BASE}/v2/public/handles/${HANDLE}/analytics/export?format=csv&campaignId=${CAMPAIGN_ID}" \
  -H "authorization: Bearer ${PAT_TOKEN}"

Expected interpretation checklist:

  1. Funnel response includes campaign-scoped clicks/conversions/revenue rollups.
  2. Segment response includes grouped rows and freshness metadata.
  3. Export route returns serialized report data for reconciliation.

T3-04 MCP equivalents for Track 3

  • analytics_get
  • analytics_export
  • analytics_campaign_health

7. Track 4: Function binding workflow (API + Edge + MCP-facing discovery)

T4-01 Create binding (JWT control-plane)

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

curl -sS -X POST "${API_BASE}/v2/handles/${HANDLE}/function-bindings" \
  -H "authorization: Bearer ${JWT_TOKEN}" \
  -H 'content-type: application/json' \
  -d '{
    "bindingKey": "'"${BINDING_KEY}"'",
    "status": "ACTIVE",
    "target": {
      "type": "template",
      "templateKey": "proxy_request"
    },
    "exposure": {
      "publicWeb": true,
      "authenticatedMcp": true
    },
    "execution": {
      "mode": "sync"
    },
    "tool": {
      "name": "lead_router",
      "description": "Route campaign lead payloads"
    },
    "inputSchema": {
      "type": "object",
      "properties": {
        "leadId": { "type": "string" },
        "campaignId": { "type": "string" }
      },
      "required": ["leadId"]
    },
    "config": {
      "endpointUrl": "https://collector.example.com/intake"
    }
  }'

Public Web exposure is template-only in v1. Authenticated MCP can expose template-backed or skill-backed bindings.

T4-01b List registry (JWT control-plane)

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

curl -sS "${API_BASE}/v2/handles/${HANDLE}/function-bindings" \
  -H "authorization: Bearer ${JWT_TOKEN}"

T4-02 Discover enabled bindings (public handle route)

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

curl -sS "${API_BASE}/v2/public/handles/${HANDLE}/function-bindings"

This route returns only ACTIVE public template bindings with declared tool metadata and inputSchema.

T4-02b Discover authenticated MCP bindings (PAT)

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

curl -sS "${API_BASE}/v2/public/handles/${HANDLE}/function-bindings/mcp" \
  -H "authorization: Bearer ${PAT_TOKEN}"

T4-03 Invoke binding through Edge runtime

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

curl -sS "${API_BASE}/_edge/fn/${HANDLE}/${BINDING_KEY}"
curl -sS -X POST "${API_BASE}/_edge/fn/${HANDLE}/${BINDING_KEY}" \
  -H 'content-type: application/json' \
  -d '{"leadId":"ld_123","campaignId":"'"${CAMPAIGN_ID}"'"}'

Expected for proxy_request template:

T4-03b Invoke authenticated MCP binding (PAT)

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

curl -sS -X POST "${API_BASE}/v2/public/handles/${HANDLE}/function-bindings/${BINDING_KEY}/invoke" \
  -H "authorization: Bearer ${PAT_TOKEN}" \
  -H 'content-type: application/json' \
  -d '{"leadId":"ld_123","campaignId":"'"${CAMPAIGN_ID}"'"}'

Expected envelope:

  • Sync: {"mode":"sync","ok":true,"output":...,"meta":...}
  • Async: {"mode":"async","ok":true,"invocationId":"...","status":"QUEUED","meta":...}
  • Echo-style runtime response including method/path/query.

8. Track 5: Combined campaign launch recipes

ObjectiveRecommended sequencePrimary success signal
Launch gated campaign details pageT1 -> T2 -> T3Page published with FREE_WITH_LOGIN and funnel metrics populated
Validate segment-specific campaign performanceT1 -> T2 -> T3 (groupBy=segment)Segment rows and conversion differences are visible
Add lead routing action at edgeT1 -> T4 -> T3Binding visible in discovery + edge invocation succeeds
Operate through assistant + API parityT1 -> T2/T3 via MCP tools + API spot-checksMCP and direct API responses stay aligned

9. Appendix: industry schema presets with KPI suggestions

Use each JSON object in campaign_structure_upsert.payload.schema.

Ecommerce preset

{
  "modules": [
    { "id": "hero", "type": "hero_banner", "variant": "product_drop" },
    { "id": "price", "type": "price_compare" },
    { "id": "proof", "type": "social_proof" },
    { "id": "faq", "type": "faq" },
    { "id": "cta", "type": "checkout_cta" }
  ],
  "commerce": { "primaryEvent": "purchase", "currency": "USD" }
}

Suggested KPIs: conversion rate, AOV, qualified click ratio.

B2B SaaS preset

{
  "modules": [
    { "id": "hero", "type": "value_prop_hero" },
    { "id": "pain", "type": "pain_points" },
    { "id": "features", "type": "feature_grid" },
    { "id": "proof", "type": "case_study_cards" },
    { "id": "cta", "type": "demo_request_form" }
  ],
  "lead": { "primaryEvent": "lead", "qualificationFields": ["team_size", "role"] }
}

Suggested KPIs: lead conversion rate, demo request completion rate, high-intent segment lift.

Events preset

{
  "modules": [
    { "id": "hero", "type": "event_hero" },
    { "id": "agenda", "type": "timeline" },
    { "id": "speakers", "type": "speaker_cards" },
    { "id": "cta", "type": "registration_cta" }
  ],
  "event": { "primaryEvent": "registration", "timezone": "America/New_York", "capacity": 500 }
}

Suggested KPIs: registration conversion rate, no-show delta, geo conversion distribution.

Creators preset

{
  "modules": [
    { "id": "hero", "type": "creator_story_hero" },
    { "id": "media", "type": "media_gallery" },
    { "id": "offer", "type": "offer_stack" },
    { "id": "proof", "type": "community_proof" },
    { "id": "optin", "type": "newsletter_optin" }
  ],
  "creator": { "primaryEvent": "subscriber_signup", "monetization": ["newsletter", "merch", "sponsor"] }
}

Suggested KPIs: subscriber growth rate, merch conversion rate, returning-fan conversion lift.

10. Validation checklist and common failures

Validation checklist:

  1. All campaign structure routes return expected payload shape and schema metadata.
  2. schemaS3Key format matches deterministic versioned pattern.
  3. Analytics calls return campaign-scoped metrics and expected groupings.
  4. Function binding create/list/invoke works with allowed templates only.
  5. MCP tool results (campaign_structure_*, analytics_*) match API results for the same handle/campaign.

Common failures:

  • insufficient_scope: PAT or connector scopes missing required permissions.
  • slug_conflict: page slug already exists as a link slug.
  • campaign_structure_not_configured: fetch/publish called before first upsert.
  • invalid_template: function binding template not in allowed set.

11. Related links