# Foxli Platform Rules & Publishing Constraints

Foxli connects to 7 major social networks. Each network enforces strict character, media, and structural constraints. Every MCP request is validated against these rules before publishing or scheduling.

> **Note:** TikTok is not supported in Foxli MCP v1.

---

## 1. Summary Matrix

| Platform | Max Chars | Max Images | Max Videos | Mixed Media? | Required Fields / Notes |
|---|---|---|---|---|---|
| **X (Twitter)** | 280 (weighted) | 4 | 1 | No | URLs count as 23 characters regardless of actual length. |
| **LinkedIn** | 3,000 | 9 | 1 | No | First comment supported. |
| **Instagram** | 2,200 | 10 | 10 | Yes | Requires at least 1 image or video (text-only not allowed). First comment supported. |
| **Facebook** | 63,206 | 10 | 1 | No | Mixed media not supported. |
| **Threads** | 500 | 10 | 1 | Yes | Supports mixed media carousel. |
| **YouTube** | 5,000 | 0 | 1 | No | Requires a video file and a video title (`title` or `youtubeMetadata.title`). Images not accepted. |
| **Pinterest** | 500 | 1 | 1 | No | Requires an image or video, plus a target `board_id` (or workspace channel default board). |

---

## 2. Platform-Specific Specifications

### X (formerly Twitter)
- **Character limit**: 280 characters.
- **URL weighting**: Any HTTP/HTTPS link is automatically parsed and counted as exactly 23 characters by X's t.co shortener. Calculate length as: `length_without_urls + (url_count * 23)`.
- **Media limits**: Up to 4 images, OR 1 video.
- **Mixed media**: Not allowed. You cannot combine an image and a video in the same post.

### LinkedIn
- **Character limit**: 3,000 characters.
- **Media limits**: Up to 9 images, OR 1 video.
- **Mixed media**: Not allowed.
- **First comment**: Supported. Useful for placing outbound external links or hashtags to preserve algorithm reach.

### Instagram
- **Character limit**: 2,200 characters.
- **Media requirement**: Mandatory. Instagram requires at least 1 image or 1 video. Text-only posts fail validation.
- **Media limits**: Up to 10 images, or up to 10 videos (carousel).
- **Mixed media**: Supported. You can mix images and videos in an Instagram carousel post.
- **First comment**: Supported. Ideal for hashtags and mentions.

### Facebook
- **Character limit**: 63,206 characters.
- **Media limits**: Up to 10 images, OR 1 video.
- **Mixed media**: Not allowed.

### Threads
- **Character limit**: 500 characters.
- **Media limits**: Up to 10 images, OR 1 video.
- **Mixed media**: Supported.

### YouTube
- **Character limit**: 5,000 characters (used as video description).
- **Media requirement**: Mandatory video. Exactly 1 video file required (`.mp4`, `.mov`, `.webm`).
- **Images**: Zero images allowed. YouTube channel rejects posts with images.
- **Title requirement**: Mandatory. A video title must be supplied via `title` or `channel_overrides.<channel_id>.title` (or `youtubeMetadata.title`).

### Pinterest
- **Character limit**: 500 characters (Pin description).
- **Media requirement**: Mandatory. Exactly 1 image OR 1 video file.
- **Board requirement**: Mandatory. Must specify `board_id` in channel overrides if the connected Pinterest channel does not have a configured default board.

---

## 3. General Validation & Media Specifications

- **Media Upload**: MCP accepts public HTTP/HTTPS URLs (`media_urls`). Foxli server asynchronously downloads, validates, and re-hosts the assets in enterprise storage.
  - Image limit: Up to 10 MB per image.
  - Video limit: Up to 100 MB per video.
- **Scheduling Rules**:
  - `scheduled_at` must be at least 2 minutes in the future from current UTC time.
  - `scheduled_at` can be at most 366 days (1 year) in the future.
- **Channel Overrides**:
  - When publishing to multiple channels simultaneously, use `channel_overrides` to provide customized text, media, or titles per platform without having to schedule separate posts.
