← Files CaptinoARCHIVED FILE

README.md

6.71 KB · Nov 9, 2026 · 18:08 UTC

↓ Download file

# Captino plugin for ChatGPT and Codex

An [Agent Plugins](https://agent-plugins.org) package that connects Codex and
ChatGPT to the Captino MCP server at `https://api.captino.io/mcp` and adds
skills for working with funnels, pages and leads.

## Install

Add this repository as a marketplace, then install the plugin:

```bash
codex plugin marketplace add Grumsen-Development-ApS/captino-openai-plugin
```

Then open `/plugins` in Codex (or the Plugins directory in the ChatGPT desktop
app) and install **Captino**. For a local checkout, add the repo root as a local
marketplace instead:

```bash
codex plugin marketplace add /path/to/captino-openai-plugin
```

The marketplace file is `.agents/plugins/marketplace.json` at the repo root.

## Authentication

The server uses OAuth, so there is nothing to configure: Codex and ChatGPT
discover the Captino sign-in from the server and register themselves.
`mcp.json` declares only the server's type and URL.

On connect, the user signs in on captino.io and ticks the resources the app may
use on a consent screen: Funnel, Contact and Form (read or write), Performance
and Subscription (read). Grant Funnel write, Contact write, Form write,
Performance read and Subscription read to use every skill. The connection acts
as the user who approved it, in that user's Captino account.

**Codex** asks to sign in when the plugin is installed. To sign in later, or
again:

```bash
codex mcp login captino
```

**ChatGPT** asks to connect Captino when the plugin is installed and opens the
same sign-in.

Tokens refresh on their own. Connected apps are listed in Captino under
**Settings → MCP** (`/app/mcp-settings`), where they can be revoked. To change
permissions, connect again and tick different boxes (Codex:
`codex mcp logout captino`, then `codex mcp login captino`).

## Skills

| Skill | What it does | Needs |
| :-- | :-- | :-- |
| `funnel-performance` | Visits, opt-ins and opt-in rate for a period, change vs previous period, funnel ranking, head-to-head | Funnel read, Performance read |
| `funnel-dropoff` | Per-step conversion, biggest drop, per-question form abandonment | Funnel read, Performance read |
| `leads` | New leads, contact search, lead activity and source funnel, pipeline counts | Contact read |
| `lead-followup` | Qualify a lead, move it through the pipeline, set deal value, add a note, schedule a meeting | Contact write |
| `pipeline-report` | Weekly or monthly account overview: pipeline, funnels, subscription usage | Contact, Funnel, Performance, Subscription read |
| `page-builder` | Build, edit and publish funnel step pages (landing, opt-in, thank-you, popups) from a brief | Funnel write |
| `form-builder` | Build, edit and publish multi-question forms (lead, qualification, survey) and add them to a funnel as a form step | Form write, Funnel write |
| `captino-setup` | Connect and sign in from Codex or ChatGPT, change permissions, troubleshoot 401/403/missing tools | none |

Skills are picked up from natural questions such as "how did Spring Campaign do
last week", "any new leads today", "build me a landing page for the webinar"
or "create an application form for the coaching funnel".

## MCP tools

The server exposes only the tools the granted permissions allow. Each group
below is one resource on the consent screen, with the OAuth scopes
`<resource>:read` and `<resource>:write` (`funnel:read`, `contact:write`, ...);
Performance and Subscription are read only. Write implies read.

- **Funnel**: `list_funnels`, `get_funnel`, `list_funnel_steps`, `create_funnel`,
  `update_funnel`, `set_funnel_active`, `create_funnel_step` (site step, or form
  step with `formId`), `set_funnel_step_visibility`, `set_funnel_step_form`,
  `set_form_step_completion`, `delete_funnel`
- **Page builder** (Funnel permission): `get_page_builder_reference`,
  `get_page_project`, `validate_page_project`, `save_page_project`, `publish_page`
- **Contact**: `list_contacts`, `list_leads`, `get_contact`, `get_contact_activity`,
  `list_contact_opt_ins`, `get_contact_pipeline_stats`, `get_contact_options`,
  `update_contact`, `create_contact_meeting`
- **Performance**: `list_funnel_performance`, `get_funnel_performance`,
  `compare_funnel_performance_with_previous_period`, `get_funnel_step_performance`,
  `get_funnel_conversion_stats`, `get_form_step_performance`, `compare_funnels`
- **Subscription**: `get_subscription`, `get_subscription_usage`
- **Form**: `list_forms`, `get_form`, `create_form`, `update_form`, `publish_form`,
  `delete_form`, `list_form_responses`, `get_form_performance`

Ids are GUIDs, dates are ISO 8601 with offset, lists are paged with `page`
and `itemsPerPage` (max 100).

## Development

The seven analysis, page-building and form-building skills are shared with the
Claude Code plugin in
[captino-claude-plugin](https://github.com/Grumsen-Development-ApS/captino-claude-plugin)
and their `SKILL.md` must be kept identical by hand; there is no sync step.
`captino-setup` is client-specific and maintained separately in each plugin.

Keep `mcp.json` to `type` and `url`. Agent Plugins 1.0.0 has no auth fields in
`mcp.json` and Codex rejects unknown keys in a server entry, so an
`extensions["com.openai"].auth` block would drop the server. Codex and ChatGPT
find Captino's OAuth through the server's discovery metadata instead.

Each skill also has `agents/openai.yaml` with an `interface` block (display
name, short description and default prompt shown in the ChatGPT skills picker)
and the Captino MCP dependency. Add it for any new skill, keep the dependency
entry the same across skills, and update the short description when a skill's
scope changes.

The ChatGPT directory listing comes from `extensions.com.openai.interface` in
`plugin.json`. Review rejects it unless the subtitle (`shortDescription`) is 30
characters or fewer, there are at most three `defaultPrompt` entries, and the
privacy policy, terms of service and support URLs all load publicly. The icon
is `assets/logo.png` (256×256), rendered from `assets/logo.svg`.

The review test cases (exactly five positive and three negative) are in
`extensions.com.openai.review.test_cases` in `plugin.json`. The dashboard shows
them read-only, so change them here and upload a new ZIP. The demo video and
release notes are kept in the dashboard, and reviewer credentials go only in
its review form, never in the ZIP. The positive cases expect the demo data in
the review account, such as the Free Marketing Webinar funnel and its leads.

When MCP tools change in the API (`API/MCP/Tools/`), update the tool list above
and the skills that use them, in both plugins. Bump `version` in `plugin.json`
and in the Claude Code plugin together. Every push to `master` that touches
`plugins/` zips this directory and publishes it to a GitHub Release tagged
`v<version>` (`.github/workflows/release.yml`).

SHA-256: eb33d80e8e4e6fecd4789f698f4a0f8b55c9948c4e02eaf9fbc10a680dee589c