## Portal MCP (Beta)

The Portal MCP server lets any AI coding agent create Portals and embeds for you. Tell your agent what you want: it handles auth, content setup, and deployment.

### Install

### Installation

CursorClaude CodeCodexVS CodeGemini CLI

Click the button below to install in **Cursor**:

[Add to Cursor](cursor://anysphere.cursor-deeplink/mcp/install?name=portal&config=eyJ1cmwiOiJodHRwczovL21jcC1wb3J0YWwtc29ndi5vbnJlbmRlci5jb20vbWNwIn0=)

Or add it manually:

**After installing, quickly restart Cursor (close & re-open) for the MCP to activate.**

~/.cursor/mcp.json

```json
{
  "mcpServers": {
    "portal": {
      "url": "https://mcp-portal-sogv.onrender.com/mcp"
    }
  }
}
```

For other clients, add the MCP URL directly: `https://mcp-portal-sogv.onrender.com/mcp`

* * *

### Ask Your Agent

| Type | What it tests | Prompt |  |
| --- | --- | --- | --- |
| Watch | AI-narrated tour of a public site | Make a watch mode portal of stripe.com that walks viewers through the homepage |  |
| Record | Record yourself giving a demo | Make a watch mode portal of my product (makeportals.com) that walks viewers through the dashboard and how portals look and let me record myself giving a demo of it |  |
| Play | Sandboxed product trial with guardrails | Make a play mode portal of my product signed into a demo account with the account and logout buttons disabled and staying on the dashboard |  |
| Watch | Embeddable product walkthrough | Make a watch mode portal of our landing page I can embed on our site that gives a tour and answers questions |  |
| Local file | Deploy a local app as a Portal | Deploy my Vite app at ./my-project as a play mode portal with an AI assistant |  |
| Extension | Chrome extension Portal on any site | Build a Chrome extension that rewrites NYT headlines into Gen Z slang, then deploy it as a play mode portal on nytimes.com |  |

**What happens:**

1. Agent authenticates you (first time: Google sign-in, then cached)
2. Sets up your content (website, local project, or extension)
3. Generates the experience
4. Shows you a draft for approval
5. Deploys and returns your shareable link

**Post-deploy:** Add CTA buttons, get embed snippets, create attribution links, pull session replays: just ask your agent.

**Pricing:** View [credit packs and pricing](/content/pricing/index.html). Your agent can call `buy_credits` to purchase more.

* * *

## How it works

What happens when you ask your coding agent to make a Portal.

“Make me a Portal for X”

Auto **Sign in** One-time Google sign-in via browser

What kind of content?

Websitepublic or needs login

Local projectzip + upload from disk

Chrome extmanifest.json at root

Example appbuilt-in demo

Watch or Play?

**Watch mode** AI leads a guided demo

**Autonomous** AI auto-finds buttons & scripts scenes

or

**Manual** Record yourself giving a demo

**Play mode** User explores, AI answers

**Autonomous** AI scrapes & blocks risky selectors

or

**Manual** Click selectors to block yourself

**Review draft** Agent shows you greeting, selectors, scenes, guardrails — you approve or edit

**make\_portal** Deploy → shareable link (1 credit)

**Post-deploy** CTA button · Embed · Attribution links · Session replays

### Tool Reference

The MCP server exposes **27 tools**. Your agent picks the right ones automatically.

Essential Tools

| Tool | What it does |
| --- | --- |
| `portal_status` | Check if you're logged in + credit balance |
| `portal_login` | Sign in (first time only, ~10s) |
| `make_portal` | Deploy your Portal (costs 1 credit) |
| `get_portal` | Poll until Portal is ready |

Content Setup

| Tool | Use when |
| --- | --- |
| `save_login` | You need viewers to start already logged in |
| `upload_source` | Sharing a local project (zip uploaded from disk) |
| `create_script` | AI auto-generates the experience (Watch or Play) |
| `record_demo` | You want to record yourself giving a demo |
| `pick_selectors` | You want to manually pick what to block/hide |

Post-Deploy

| Tool | What it does |
| --- | --- |
| `configure_portal` | Add CTA buttons, set usage limits |
| `configure_embed` | Get `<iframe>` embed code |
| `get_portal_sessions` | View session replays + conversation logs |
| `list_portals` | See all your Portals |
| `buy_credits` | Purchase more credits |

All 27 Tools

**Auth:**`portal_status`, `portal_login`, `portal_login_check`, `portal_logout`

**Content:**`save_login`, `upload_source`, `create_script`, `get_script`, `record_demo`, `start_recording`, `stop_recording`, `pick_selectors`, `pick_selectors_complete`, `deploy_example`

**Credentials:**`create_credential`, `list_credentials`, `delete_credential`, `generate_totp`

**Portals:**`make_portal`, `get_portal`, `list_portals`, `configure_portal`, `configure_embed`, `get_portal_sessions`, `get_creation_logs`

**Utilities:**`normalize_ptl`, `validate_ptl`, `get_session`

**Billing:**`buy_credits`

* * *

### Portal Spec (JSON)

Every Portal is a JSON document. The MCP agent builds this for you: here's the format, split by mode.

**Play Mode**: visitor explores, AI answers questions:

```json
{
  "entry": {
    "url": "https://app.example.com/dashboard",
    "state": "saved_state"
  },
  "experience": {
    "mode": "play",
    "agent": {
      "enabled": true,
      "interface": ["voice", "text"],
      "greeting": "Welcome! Explore the dashboard.",
      "knowledge": "Your product docs here."
    }
  },
  "guardrails": {
    "allowed_urls": ["app.example.com/dashboard", "app.example.com/settings"],
    "disabled_elements": [
      { "selector": "#delete-account" },
      { "selector": ".danger-zone" }
    ],
    "api_rules": {
      "rate_limits": [
        { "name": "Chat API", "pattern": "/api/chat", "method": "POST", "max": 5, "windowMs": 60000 }
      ]
    }
  }
}
```

**Play-specific fields:**`guardrails.allowed_urls` (restricts navigation), `guardrails.disabled_elements` (hides UI elements), `guardrails.api_rules` (rate limits, blocked methods).

* * *

**Watch Mode**: AI leads a guided demo:

```json
{
  "entry": {
    "url": "https://app.example.com/dashboard",
    "state": "saved_state"
  },
  "experience": {
    "mode": "watch",
    "agent": {
      "enabled": true,
      "interface": ["voice", "text"],
      "greeting": "Welcome! I'll walk you through the dashboard.",
      "goal": "Demo the analytics dashboard and key metrics.",
      "knowledge": "This app tracks website traffic.",
      "cursor": { "enabled": true, "color": "#4A4A4A", "speed": 400 }
    }
  }
}
```

**Watch-specific fields:**`goal` (what the AI demonstrates), `cursor` (animated pointer). `allowed_urls` is ignored in Watch mode: the AI controls navigation.

* * *

**Minimal spec** (smallest valid Portal):

```json
{
  "entry": { "url": "https://example.com" },
  "experience": { "mode": "play" }
}
```

* * *

### API Keys & Limits

For CI or headless environments, generate API keys from the [Developers](/content/developers/index.html) page.

- Keys start with `ptl_`
- Scoped to your account

**Rate limits:**

| Surface | Limit |
| --- | --- |
| MCP | 10 creations/hr, 30 calls/min |
| Builder | 10 creations/hr per account |

Next: Changelog →

# Portal, Share Any Browser State as a Link

**Portal is the official product and company behind makeportals.com.**

Portal lets you share any browser state as a link: websites, localhost, Chrome extensions, local files. Recipients open an isolated session and try your product instantly, no install required. They explore freely or an AI guide provides product experiences, and you get rich analytics.

## What Portal Does

Portal's mission is to make links for every product state on earth, making them reachable and explainable. Trying software shouldn't require installing it.

Portal turns any running product into a shareable session link. Not a video. Not a mockup. Not a walkthrough overlay. The real UI, fully interactive, safe to share.

## Key Features

- Share any browser state as a link (websites, localhost, Chrome extensions, local files)
- Recipients get an isolated session with no install or signup required
- AI guide trained on your docs answers questions and can provide product experiences
- Click-level analytics on every interaction
- Guardrails to block destructive actions
- No code required to set up

## Use Cases

- Replacing first sales calls with self-serve product experiences
- User research — watch where users hesitate, get stuck, or drop off
- Onboarding — drop users into a configured state with an AI guide
- Sharing Chrome extensions without requiring installs
- Sharing localhost projects as links
- DevRel workshops — everyone opens the same environment instantly

## What Portal is NOT

- Not a video
- Not a product mockup
- Not an onboarding overlay
- Not a static walkthrough
- Not automation software

Portal provides access to a real, running product instance with guardrails.

**Backed by South Park Commons (SPC F25)**

Location: San Francisco, CA, USA

[Try a live Portal](/content/try-producthunt/index.html) \| [Sign Up](/content/site-root.html)
