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

# Tools reference

> Complete reference of all TryPost MCP tools available to your AI assistant

This page lists every tool available through the TryPost MCP server. Your AI assistant can call any of these tools to manage your TryPost account.

## Recommended workflow

To create and publish a post end-to-end:

1. **`list-social-accounts-tool`** — discover connected accounts
2. **`list-content-types-tool`** — discover valid `content_type` per platform with limits
3. **`create-post-tool`** — create the draft with content + chosen platforms
4. **`attach-media-from-url-tool`** *(optional)* — attach images or videos from public URLs
5. **`request-media-upload-tool`** + **`attach-media-from-upload-tool`** *(optional)* — upload a **local** file when no public URL exists
6. **`preview-post-tool`** *(optional)* — see how each platform will render before publishing
7. **`publish-post-tool`** — publish immediately or schedule for a future time
8. **`get-post-metrics-tool`** *(after published)* — fetch engagement metrics

## Posts

| Tool                              | Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| --------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **list-posts-tool**               | List posts for the current workspace, ordered by scheduled date (newest first). Supports filters: `status` (draft \| scheduled \| published \| failed), `search` (case-insensitive substring on content), `limit` (1–100, default 50).                                                                                                                                                                                                                                                            |
| **get-post-tool**                 | Get a specific post by ID with all its platform entries, media, and labels.                                                                                                                                                                                                                                                                                                                                                                                                                       |
| **create-post-tool**              | Create a draft post. Accepts `content`, `scheduled_at` (ISO 8601), `label_ids[]`, and `platforms[]` — each entry has `social_account_id` + `content_type` and an optional per-platform `meta` (Instagram/Facebook `aspect_ratio`, TikTok `privacy_level` + flags, Pinterest `board_id`, Discord `channel_id`/`mentions`/`embeds`). Cross-validates that the content\_type matches the account's platform.                                                                                         |
| **update-post-tool**              | Update a draft: content, scheduled\_at, status (draft \| scheduled), labels, per-platform `meta` (merged), and which platforms are enabled. Cannot edit a published post.                                                                                                                                                                                                                                                                                                                         |
| **publish-post-tool**             | Publish a draft — immediately or scheduled for a future time. Requires at least one enabled platform, and that each enabled platform has the meta it needs to publish (Pinterest `board_id`, TikTok `privacy_level`, Discord `channel_id`) — otherwise it fails with a clear validation error. Marked `IsDestructive` so the AI confirms with you first.                                                                                                                                          |
| **preview-post-tool**             | Preview how the post will render on each enabled platform — applies platform-specific sanitization (length truncation, etc.) without publishing.                                                                                                                                                                                                                                                                                                                                                  |
| **attach-media-from-url-tool**    | Download images or videos from public URLs and attach them to a post. Up to 10 URLs per call. Per-file size caps: 10 MB for images, 1 GB for videos. Allowed types are intersected with the enabled platforms (e.g. video rejected if no enabled platform supports it).                                                                                                                                                                                                                           |
| **request-media-upload-tool**     | Issue a one-shot signed POST URL so the user can upload a **local** file to their workspace. No input — workspace is resolved from the MCP session. Returns `upload_url`, `upload_token`, `expires_at` (ISO 8601, 15-minute TTL by default), `max_bytes` (50 MB default), and `field_name`. The agent hands the URL to the user (e.g. as a `curl -F media=@path/to/file '{upload_url}'` command) or to its client. Use when no public URL exists — otherwise prefer `attach-media-from-url-tool`. |
| **attach-media-from-upload-tool** | Attach a Media uploaded via `request-media-upload-tool` to a post. Takes `post_id` + `upload_token`. The Media is resolved by the token within the current workspace, then appended to the post. Rejects if the media type isn't accepted by any enabled platform.                                                                                                                                                                                                                                |
| **delete-post-tool**              | Delete a post permanently. Marked `IsDestructive`.                                                                                                                                                                                                                                                                                                                                                                                                                                                |
| **get-post-metrics-tool**         | Fetch engagement metrics (likes, comments, shares, etc.) for a published post across every platform. Returns `unsupported` entries for platforms that don't expose post-level metrics.                                                                                                                                                                                                                                                                                                            |

## Platforms (read-only)

| Tool                        | Description                                                                                                                                                                                                                                                                                            |
| --------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| **list-content-types-tool** | List valid `content_type` values per social platform plus their constraints — `max_content_length`, `recommended_content_length`, `max_media_count`, `requires_media`, `default_content_type`, `allowed_media_types`. Use this before `create-post-tool` / `update-post-tool` so the AI doesn't guess. |

## Signatures

| Tool                      | Description                                                                                                                                      |
| ------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------ |
| **list-signatures-tool**  | List all signatures for the current workspace. Signatures are reusable text blocks (hashtags, links, custom text) that can be appended to posts. |
| **create-signature-tool** | Create a new signature with a name and content (hashtags, links, custom text — anything you want to append to posts).                            |
| **update-signature-tool** | Update a signature's name or content.                                                                                                            |
| **delete-signature-tool** | Delete a signature. Marked `IsDestructive`.                                                                                                      |

## Labels

| Tool                  | Description                                                                            |
| --------------------- | -------------------------------------------------------------------------------------- |
| **list-labels-tool**  | List all labels for the current workspace. Each label has a name and hex color.        |
| **create-label-tool** | Create a new label with a name and hex color (e.g. `#FF5733`).                         |
| **update-label-tool** | Update a label's name or color.                                                        |
| **delete-label-tool** | Delete a label. Detaches it from all posts that referenced it. Marked `IsDestructive`. |

## Social accounts

| Tool                           | Description                                                                                                                                                     |
| ------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **list-social-accounts-tool**  | List all connected social accounts for the current workspace (LinkedIn, X, Instagram, etc.). Returns id, platform, display\_name, username, is\_active, status. |
| **toggle-social-account-tool** | Toggle a social account active/inactive. When inactive, the account is skipped during publishing.                                                               |

## Workspace

| Tool                   | Description                                               |
| ---------------------- | --------------------------------------------------------- |
| **get-workspace-tool** | Get the current workspace details (id, name, timestamps). |

## API keys

| Tool                    | Description                                                                                                                                                                                       |
| ----------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **list-api-keys-tool**  | List Personal Access Tokens for the current workspace. Returns metadata only — the secret token value is shown only once at creation. OAuth-flow tokens (e.g. ChatGPT MCP sessions) are excluded. |
| **create-api-key-tool** | Create a new Personal Access Token. The plain token is returned once — store it immediately, it cannot be retrieved later.                                                                        |
| **delete-api-key-tool** | Revoke a Personal Access Token. The current OAuth session token cannot be revoked through this tool. Marked `IsDestructive`.                                                                      |

## Notes

* **Workspace scoping** — every tool operates on the user's currently-selected workspace. To act on a different workspace, switch it in the TryPost UI (or, for personal API tokens, create a new key in that workspace).
* **Cross validation** — `create-post-tool` and `update-post-tool` reject mismatched combos (e.g. `content_type=x_post` on a LinkedIn account). Inactive social accounts are also rejected at validation time.
* **Destructive tools** — operations that delete data or publish to the world (`publish-post-tool`, `delete-*`) are marked `IsDestructive`, which lets the AI client (ChatGPT, Claude Desktop, etc.) prompt you for confirmation before executing.
* **Local-file uploads** — `request-media-upload-tool` returns a single-use signed URL valid for 15 minutes, capped at 50 MB. The underlying endpoint is documented at [`POST /uploads/{token}`](/api-reference/endpoint/request-media-upload). After upload, call `attach-media-from-upload-tool` with the same `upload_token` to attach the resulting Media to a post.
