> ## Documentation Index
> Fetch the complete documentation index at: https://docs.solvapay.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Create a no-code MCP product

> Use this flow when you want the no-code setup: SolvaPay hosts authentication, identity, billing, and payment.

This is the recommended path for teams that already have an MCP server and want fast monetization
without building billing/auth infrastructure.

## Prerequisites

* SolvaPay provider account
* Origin MCP server URL available over HTTPS
* Pricing plan decisions ready for product setup (you will configure plans during product creation)

## Step 1: Create Product and Select Plans

Start in **Products**, complete product details, then select at least one plan in the Plans step.

If you are in onboarding, this can be your guided first product flow.

## Step 2: Enable the no-code MCP integration

In the Integration step, enable and configure the no-code MCP integration:

* MCP URL slug (public endpoint slug)
* Origin MCP server URL (your upstream MCP endpoint)
* Optional auth settings, if required

## Step 3: Create Product and Verify MCP Server URL

After creating the product, open the product details page and confirm:

* Product is active
* The no-code MCP integration is enabled
* Generated MCP server URL is present and copyable

## Step 4: Use Connect for quick client testing

From the product overview, click **Connect** to test your configured MCP Server product without
manual setup.

Use the menu option that matches your workflow:

* **Copy MCP URL** to paste into any MCP client manually
* **Connect to Claude** to open the Claude connection flow
* **Connect to Cursor** to open the Cursor connection flow

If you do not use a listed client, copy the MCP URL and connect in your preferred MCP client.

## User Onboarding Behavior

When users connect to the proxied MCP server URL:

1. They authenticate via SolvaPay-hosted OAuth
2. SolvaPay evaluates plan access for requested tools
3. Usage and billing are handled through your configured plans

## What to Do Next

* Follow [Test MCP server auth and paywall](/mcp-server/testing-auth-and-paywall) for live client
  testing prompts and expected outcomes
* Use **Connect** in product overview to start the live connection flow in Claude or Cursor
* Review [Authentication](/no-code-mcp/authentication) for OAuth behavior
* Configure [Hosted Pages](/no-code-mcp/hosted-pages) for branded customer flows

## API quickstart (SDK bootstrap endpoint)

If you want the same setup flow through API, use the SDK bootstrap route:

`POST /v1/sdk/products/mcp/bootstrap`

This creates in one call:

* MCP-enabled product
* plans (free and paid in one array)
* origin URL configuration
* tool-to-plan mapping

Canonical request fields are:

* `originUrl`
* `plans`
* `tools[].planKeys`
* `tools[].noPlan`

```bash theme={null}
curl -X POST "https://api.solvapay.com/v1/sdk/products/mcp/bootstrap" \
  -H "Authorization: Bearer $SOLVAPAY_SECRET_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Docs Assistant",
    "originUrl": "https://origin.example.com/mcp",
    "plans": [
      { "key": "free", "name": "Free", "price": 0, "freeUnits": 1000, "currency": "USD" },
      { "key": "pro", "name": "Pro", "price": 2000, "currency": "USD", "billingCycle": "monthly" }
    ],
    "tools": [
      { "name": "list_docs", "planKeys": ["free", "pro"] },
      { "name": "deep_research", "planKeys": ["pro"] },
      { "name": "health_check", "noPlan": true }
    ]
  }'
```

Free-only bootstrap is also valid. This is useful when you want to launch with a free tier first and
add paid plans later:

```bash theme={null}
curl -X POST "https://api.solvapay.com/v1/sdk/products/mcp/bootstrap" \
  -H "Authorization: Bearer $SOLVAPAY_SECRET_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Docs Assistant",
    "originUrl": "https://origin.example.com/mcp",
    "plans": [
      { "key": "free", "name": "Free", "price": 0, "freeUnits": 0, "currency": "USD" }
    ]
  }'
```

`freeUnits: 0` on a free plan means unlimited free access for authenticated users.

Use this for the fastest onboarding. If you need fine-grained lifecycle control, use the granular
product, plan, and MCP server endpoints.

## Configure plans after bootstrap

After the product exists, use:

`PUT /v1/sdk/products/:productRef/mcp/plans`

This endpoint lets you replace plans and remap tool access.

Request fields:

* `plans` (optional) -- replaces all plans when provided; omit to keep existing plans
* `toolMapping` (optional) -- explicit tool-to-plan mapping by plan keys

Response fields:

* `product`
* `mcpServer`
* `planMap`

### Mode 1: add or replace plans

```bash theme={null}
curl -X PUT "https://api.solvapay.com/v1/sdk/products/prd_1A2B3C4D/mcp/plans" \
  -H "Authorization: Bearer $SOLVAPAY_SECRET_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "plans": [
      { "key": "free", "name": "Free", "price": 0, "freeUnits": 100, "currency": "USD" },
      { "key": "pro", "name": "Pro", "price": 2000, "currency": "USD", "billingCycle": "monthly" },
      { "key": "team", "name": "Team", "price": 6000, "currency": "USD", "billingCycle": "monthly" }
    ],
    "toolMapping": [
      { "name": "list_docs", "planKeys": ["free", "pro", "team"] },
      { "name": "deep_research", "planKeys": ["pro", "team"] }
    ]
  }'
```

### Mode 2: revert to free-only

Send a single free plan to remove all paid plans:

```bash theme={null}
curl -X PUT "https://api.solvapay.com/v1/sdk/products/prd_1A2B3C4D/mcp/plans" \
  -H "Authorization: Bearer $SOLVAPAY_SECRET_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "plans": [
      { "key": "free", "name": "Free", "price": 0, "freeUnits": 0, "currency": "USD" }
    ]
  }'
```

### Mode 3: remap tools without changing plans

Omit `plans` and pass only `toolMapping`:

```bash theme={null}
curl -X PUT "https://api.solvapay.com/v1/sdk/products/prd_1A2B3C4D/mcp/plans" \
  -H "Authorization: Bearer $SOLVAPAY_SECRET_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "toolMapping": [
      { "name": "deep_research", "planKeys": ["pro"] },
      { "name": "list_docs", "planKeys": ["free", "pro"] }
    ]
  }'
```

## Tool and default-plan precedence

When SolvaPay evaluates access for a tool:

1. If `tools[].noPlan` is `true`, the tool is public.
2. Otherwise, SolvaPay checks if the user's purchase plan is in:
   * `tools[].planIds`, or
   * the MCP server `defaultPlanRef`.

## Troubleshooting bootstrap errors

Common validation failures for `POST /v1/sdk/products/mcp/bootstrap`:

* `UNKNOWN_PLAN_KEY`\
  A tool references a `planKeys` value not declared in `plans[].key`.
* `UNKNOWN_PLAN_REFERENCE`\
  `tools[].planRefs` points to a plan not created by the same bootstrap request.
* `DUPLICATE_TOOL_NAME`\
  The same tool name appears more than once in `tools`.
* origin URL validation error (`originUrl`)\
  `originUrl` must be a valid `https://` URL.

Common validation failures for `PUT /v1/sdk/products/:productRef/mcp/plans`:

* `NOT_MCP_PRODUCT`\
  The product is not MCP-enabled.
* `NO_MCP_SERVER`\
  No MCP server is linked to the product.
* `UNKNOWN_PLAN_KEY`\
  A `toolMapping[].planKeys` entry does not match a `plans[].key` in the same request.
