Metadata-Version: 2.5
Name: rayonne-mcp
Version: 0.6.0
Summary: Rayonne MCP server — pilote un ou tous les espaces d'une organisation Rayonne (audit marketing, analyse produit, contenus, vidéos, métriques AARRR) depuis tout agent compatible MCP.
Author-email: Sponge Theory <contact@sponge-theory.ai>
License: SPONGE THEORY PROPRIETARY LICENSE
Keywords: claude,marketing,mcp,rayonne,sponge-theory
Requires-Python: >=3.10
Requires-Dist: httpx<1,>=0.27
Requires-Dist: mcp[cli]<2,>=1.2.0
Provides-Extra: dev
Requires-Dist: pytest-asyncio>=0.24; extra == 'dev'
Requires-Dist: pytest>=8; extra == 'dev'
Requires-Dist: respx>=0.21; extra == 'dev'
Description-Content-Type: text/markdown

# Rayonne MCP

Serveur MCP (stdio) exposant le workspace Rayonne — contenus, soumissions,
métriques AARRR — à tout agent compatible MCP (Claude Code, Claude Desktop…),
via l'**API publique v1 en lecture** (`docs/API.md` du repo).

## Prérequis

Une clé API workspace (`rk_…`) : Rayonne → **Réglages → Clés API**
(plan **Business**, entitlement `api_access`).

## Claude Code

```sh
claude mcp add rayonne \
  --env RAYONNE_API_KEY=rk_xxxxxxxx \
  --env RAYONNE_API_URL=https://rayonne.sponge-theory.dev \
  -- uv run --project /chemin/vers/rayonne/mcp rayonne-mcp
```

## Claude Desktop (`claude_desktop_config.json`)

```json
{
  "mcpServers": {
    "rayonne": {
      "command": "uv",
      "args": ["run", "--project", "/chemin/vers/rayonne/mcp", "rayonne-mcp"],
      "env": {
        "RAYONNE_API_KEY": "rk_xxxxxxxx",
        "RAYONNE_API_URL": "https://rayonne.sponge-theory.dev"
      }
    }
  }
}
```

Le serveur démarre **sans** clé (non fatal) : chaque outil renvoie alors un
message d'installation clair au lieu d'un crash.

## Outils

81 outils, un par verbe de l'API publique, regroupés par module (voir
`CLAUDE.md` du repo pour la carte fonctionnelle M1-M9).

**Déposer un fichier (0.6.0)** : `rayonne_upload_product_asset` et
`rayonne_upload_submission_asset` prennent un **chemin de fichier local** —
le serveur MCP tourne sur la machine de l'utilisateur et lit les octets
lui-même. Un chemin fautif est refusé avant tout appel réseau.

**Aucun dépôt d'avatar, par construction** : enregistrer un VISAGE engage le
consentement d'une personne réelle, au nom de l'utilisateur connecté ; une
clé `rk_` n'a pas d'utilisateur. Il n'y a donc ni outil ni route publique de
dépôt d'avatar — `rayonne_generate_avatar` compose un portrait de synthèse,
et déposer une vraie photo reste un acte humain, dans l'interface.

**Cibler un autre espace (0.5.0)** : tout outil ci-dessous, sauf
`rayonne_list_workspaces` et `rayonne_create_workspace`, prend un
`workspace_id` optionnel — passe l'id d'un espace rendu par
`rayonne_list_workspaces` pour agir là-bas plutôt que dans l'espace
d'origine de la clé. Omis, rien ne change par rapport à avant 0.5.0.

### M1 Brief

| Outil | Rend |
|---|---|
| `rayonne_analyze_product` | Analyse la page produit et en tire un brief frais (crawl + extraction). |
| `rayonne_list_briefs` | Product briefs, newest first: what the crawler extracted from the product page (value prop, ICP, features, proof points, pricing). |
| `rayonne_get_brief` | One brief in full, including everything the extractor understood. |
| `rayonne_patch_brief` | Hand-correct what the extractor misread. |

### M2 Stratégie

| Outil | Rend |
|---|---|
| `rayonne_list_strategies` | All marketing strategies, newest version first. |
| `rayonne_current_strategy` | The ACTIVE strategy: Bullseye channel scoring plus the 90-day plan the autopilot materialises into scheduled content. |
| `rayonne_create_strategy` | Score the 19 Bullseye acquisition channels and draft a 90-day plan. |
| `rayonne_activate_strategy` | Make a strategy ACTIVE. |
| `rayonne_delete_strategy` | Delete a strategy. |

### M3 Contenu

| Outil | Rend |
|---|---|
| `rayonne_list_content` | Latest content pieces (max 100). |
| `rayonne_get_content` | One content item WITH its generated text. |
| `rayonne_generate_content` | Generate one piece for a venue. |
| `rayonne_edit_content` | Edit a piece before it ships. |
| `rayonne_approve_content` | Approve a piece for publication — the human-in-the-loop gate. |
| `rayonne_reject_content` | Reject a piece. |
| `rayonne_reset_content` | Re-run generation for an item. |
| `rayonne_schedule_content` | Move a piece's publication time. |
| `rayonne_repurpose_content` | Atomise one piece into others (1 → N), keeping its substance and claims but adopting each target venue's shape and length. |
| `rayonne_localize_content` | Translate a piece into another locale, as a REVIEW-status sibling — a human verifies the translation before it ships. |
| `rayonne_delete_content` | Delete a content item. |

### M3 Kit de vente et médias

| Outil | Rend |
|---|---|
| `rayonne_content_media` | The resolved media selection for a post: public URL, dimensions, duration, and why a resource was dropped when it has disappeared. |
| `rayonne_set_content_media` | Set the media selection BY HAND and LOCK the piece. |
| `rayonne_recompute_content_media` | Replay the media selection from the venue's playbook, leaving the text untouched. |
| `rayonne_brand_card` | Compose a brand card (a generated image carrying a punchline) and put it first in the media list. |
| `rayonne_regenerate_text` | Rewrite the post on a DIFFERENT argument from its selling kit. |
| `rayonne_preview_content` | What the post would look like published on a venue: text, any thread split, link placement, and media — without publishing anything. |

### M4 Soumission

| Outil | Rend |
|---|---|
| `rayonne_list_platforms` | The platform catalogue with each venue's EXECUTION MODE. |
| `rayonne_list_submissions` | Latest submissions (max 100): platform slug, mode (api/browser_local/ semi_auto), status, and external_url once published. |
| `rayonne_get_submission` | One submission: status, platform, evidence, external URL. |
| `rayonne_submission_kit` | The Mode C kit: a pre-filled deep link, the text blocks to paste and a checklist. |
| `rayonne_create_submission` | Schedule an APPROVED piece for submission to a platform. |
| `rayonne_confirm_submission` | Mode C — record that a manual submission was published. |
| `rayonne_retry_submission` | Retry a failed submission. |
| `rayonne_cancel_submission` | Cancel a pending or scheduled submission. |
| `rayonne_schedule_submission` | Move a submission's dispatch time. |
| `rayonne_delete_submission` | Delete a submission. |
| `rayonne_upload_submission_asset` | Attach a screenshot of your own to a Mode C kit (a path on THIS machine; `kind` is the slot: cover, gallery, logo). |
| `rayonne_generate_submission_assets` | Run the kit's visual pipeline: a screenshot of the product page plus AI variants for each slot. |
| `rayonne_list_submission_assets` | The kit's visuals: signed URLs per slot, plus whether a generation is still running. |
| `rayonne_delete_submission_asset` | Remove one visual from the kit, by file name. IRREVERSIBLE. |

### M5 Analytics

| Outil | Rend |
|---|---|
| `rayonne_metrics_aarrr` | The AARRR snapshot (stages, geo, by_channel, timeseries, deltas) over a sliding window of 1-90 days. |
| `rayonne_list_tracking_links` | UTM tracking links and their click counts. |
| `rayonne_create_tracking_link` | Create a trackable UTM link. |
| `rayonne_list_reviews` | Weekly marketing reviews — an LLM reading the AARRR metrics and saying what to change. |
| `rayonne_run_review` | Compose a review now instead of waiting for the weekly beat. |

### M9 Vidéo et storyboard

| Outil | Rend |
|---|---|
| `rayonne_create_video` | Génère une vidéo courte à partir du brief courant. |
| `rayonne_list_videos` | Video projects: status, current pipeline stage, degradations, and the rendered URL once finished. |
| `rayonne_get_video` | One video project in full: storyboard, per-stage state, assets, selling-coverage score and render URL. |
| `rayonne_list_video_venues` | Where a video can be published and in which format. |
| `rayonne_regenerate_video` | Resume the pipeline from one stage instead of rebuilding everything. |
| `rayonne_derive_video` | Derive another aspect ratio from a finished video (9x16, 16x9, 1x1) without regenerating its content. |
| `rayonne_publish_video` | Schedule a finished video for publication. |
| `rayonne_delete_video` | Delete a video project and its assets. |
| `rayonne_preview_storyboard` | What an edit WOULD be worth, without saving anything. |
| `rayonne_update_storyboard` | Save an edited storyboard. |
| `rayonne_approve_storyboard` | Resume production after review. |
| `rayonne_storyboard_options` | What a scene may contain: roles, shots per source, limits, and the ONLY pages a capture scene may film (the brief's allow-list). |
| `rayonne_reopen_storyboard` | Reopen the review of a FINISHED video. Regenerates nothing. |
| `rayonne_assist_storyboard` | Ask the model for ONE change to a scene (rewrite/shorten/variants/add_scene_for) and get a proposal plus its review. Calls a model. |
| `rayonne_chat_storyboard` | Discuss the whole script in plain words; a proposed storyboard comes back with its diff when the request implies a change. Calls a model. |
| `rayonne_storyboard_thumbnail` | The REAL thumbnail of a page a capture scene would film (viewport, scroll offset), within the brief's allow-list. |
| `rayonne_update_video` | Choose who speaks in the video — or nobody. The only project field editable during review. |
| `rayonne_music_presets` | The music catalogue outside any project: the styles and levels the workshop actually offers. |

### Avatars vidéo

Quatre outils, pas cinq — **aucun dépôt de visage** (voir plus haut).

| Outil | Rend |
|---|---|
| `rayonne_list_avatars` | The workspace's avatar gallery: name, traits, whether it is enabled, and a preview URL. |
| `rayonne_generate_avatar` | Compose a synthetic portrait from traits and add it to the gallery. Calls an image model. |
| `rayonne_update_avatar` | Rename an avatar, or take it out of circulation with `enabled=False`. |
| `rayonne_cutout_avatar` | Redo the avatar's cut-out (transparent background) IN PLACE. Best-effort. |

### Galerie produit

| Outil | Rend |
|---|---|
| `rayonne_list_product_assets` | The product-screen gallery: real screens of the product (behind the login, or a native app) that a video may show, each with a caption. |
| `rayonne_upload_product_asset` | Deposit a real screen or clip of the product into the gallery (a path on THIS machine). |
| `rayonne_update_product_asset` | Correct a screen's caption — never to empty it. |
| `rayonne_suggest_asset_caption` | Ask a vision model what a screen shows; saved only if the screen has no caption yet. Calls a model. |
| `rayonne_delete_product_asset` | Remove a screen or clip from the gallery. IRREVERSIBLE. |

### Audit

| Outil | Rend |
|---|---|
| `rayonne_list_audits` | Les audits marketing passés de la page produit (verdict, note, axes). |
| `rayonne_marketing_audit` | Audite le MESSAGE de la page produit et rend un verdict actionnable. |

### Espaces de l'organisation

| Outil | Rend |
|---|---|
| `rayonne_list_workspaces` | The workspaces this key can act on, home first. |
| `rayonne_create_workspace` | Create a workspace in this key's organisation. |
| `rayonne_delete_workspace` | Delete a workspace and everything in it. IRREVERSIBLE. |
| `rayonne_update_workspace` | Change a workspace's settings. |

### Workspace

| Outil | Rend |
|---|---|
| `rayonne_overview` | Workspace summary: name, product URL, autopilot state, and content / submission counts by status. |
| `rayonne_workspace` | The targeted workspace's current settings for this key: name, product URL, locale, pause, autopilot, real autopublishing, AI illustrations, video music default. |
| `rayonne_set_ai_illustrations` | Turn AI illustrations on or off for the workspace. |

## Changelog

### 0.6.0

Le dépôt, l'atelier vidéo et les pièces jointes d'un kit sortent du
navigateur. Dix-huit outils s'ajoutent : la galerie produit devient
inscriptible (`rayonne_upload_product_asset` — un CHEMIN de fichier local,
lu par le serveur sur la machine de l'utilisateur —,
`rayonne_update_product_asset`, `rayonne_suggest_asset_caption`,
`rayonne_delete_product_asset`) ; l'atelier vidéo s'ouvre en entier (avatars
`rayonne_list_avatars` / `rayonne_generate_avatar` /
`rayonne_update_avatar` / `rayonne_cutout_avatar`, relecture rouvrable
`rayonne_reopen_storyboard`, aide IA `rayonne_assist_storyboard` et
`rayonne_chat_storyboard`, vignette réelle `rayonne_storyboard_thumbnail`,
choix de l'avatar `rayonne_update_video`, catalogue `rayonne_music_presets`)
; et un kit Mode C accepte enfin des visuels déposés à la main
(`rayonne_upload_submission_asset`, `rayonne_generate_submission_assets`,
`rayonne_list_submission_assets`, `rayonne_delete_submission_asset`). 81
outils au total.

**Une absence est délibérée** : il n'y a pas d'outil de dépôt d'avatar, et
pas de route publique derrière. Déposer un visage engage le consentement
d'une personne réelle au nom de l'utilisateur connecté ; une clé `rk_` n'a
pas d'utilisateur, donc un agent ne peut pas l'attester à sa place. Le
portrait de synthèse (`rayonne_generate_avatar`) est la voie ouverte ici ;
une vraie photo se dépose dans l'interface, par un humain.

### 0.5.0

Une clé peut désormais piloter TOUTE l'organisation, pas seulement son
espace d'origine : `rayonne_list_workspaces` énumère ce qu'elle peut
atteindre (l'origine marquée `is_home`), `rayonne_create_workspace` et
`rayonne_delete_workspace` ouvrent et ferment des espaces (clé avec le cran
d'administration), et `rayonne_update_workspace` règle l'espace visé sur
l'objet complet des réglages. Les 59 outils existants gagnent un
`workspace_id` optionnel pour agir sur un autre espace que celui de la clé —
omis, comportement inchangé. **Rupture** : le format rendu par
`rayonne_workspace` (et par `rayonne_update_workspace`) n'est plus le format
étroit d'avant — `autopilot_enabled` devient `autopilot`, et `locale`,
`paused`, `autopublish_live`, `video_music` apparaissent. 63 outils au
total.

### 0.4.0

Kit de vente et médias d'un post pilotables depuis Claude : inspecter la
sélection média résolue, la fixer à la main ou la recalculer depuis le
playbook, composer une carte de marque, changer d'argument de vente, et
prévisualiser texte + médias par venue avant publication. Huit outils
ajoutés (`rayonne_content_media`, `rayonne_set_content_media`,
`rayonne_recompute_content_media`, `rayonne_brand_card`,
`rayonne_regenerate_text`, `rayonne_preview_content`, `rayonne_workspace`,
`rayonne_set_ai_illustrations`) — 59 outils au total.

## Tests

```sh
cd mcp && uv run --extra dev pytest -q
```

## Publication marketplace

À faire via le flux commun Sponge Theory (même patron qu'`audigeo-mcp` :
stdio + PyPI, vendored dans `ezeeFlop/claude-plugins`) — voir l'agent
`mcp-plugin-publisher`.
