Skip to content

Article

Playbook: Platform-Wide Feature Exploration Lab

10X product documentation.

Article Docs 10xDotIn Example Docs
10X Docs
10X product documentation.
Review intent

Browse 10X documentation.

Make the next growth move easier to approve.

10X product documentation.

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.

Review system

What 10X checks

These checks sit after the main explanation so a reviewer can scan the evidence requirements without breaking the article flow.

Evidence checks

Questions to answer

  • Decisiondocs
    What decision should this article help the team make?

Evidence inputs

Data sources that must stay attached

These inputs keep the recommendation grounded before anyone changes the page, campaign, query target, CRM step, or growth priority.

  • 10xDotIn Docs
  • Playbooks Index
  • Playbook: Platform-Wide Feature Exploration Lab
  • Industry Best Practices
  • E-Commerce and Retail
  • Creator Economy
  • SaaS and B2B
  • Affiliate and Partnerships
  • Events and Ticketing
  • Apparel Prospect Demo

FAQ

Questions before using it

FAQ rows sit near the end, where they help unblock the next action without interrupting the diagnostic flow.

When should I use this article?

Use it before approving growth work that needs evidence, ownership, and a clear next action.

10X

Use 10X with the docs open

Keep product context attached while you review growth work.

Open 10X ->