Write LinkedIn posts in your voice: ideas, drafts, scheduling, analytics from your personal AI.
Inferido de los transportes que declara este listado (streamable-http). Que un cliente no aparezca aquí no significa que se haya descartado: simplemente Forge no puede confirmarlo.
La verificación confirma la identidad del publicador (la propiedad del repo), no la seguridad del código. El análisis de seguridad cubre los CVE conocidos y los scripts de instalación sospechosos.
Leído de un handshake MCP real initialize → tools/list contra el endpoint declarado. No se invocó ninguna herramienta: tools/list es la llamada de introspección de solo lectura que el protocolo define para esto. Refleja lo que el servidor anunciaba en ese momento; un endpoint alojado no está fijado a ninguna versión y puede cambiar sin avisar.
https://mcp.contentin.io/mcp-server11 herramientas · 213 mslist_postsList the posts on this ContentIn profile — drafts, scheduled, published and ideas. Use this to find a post's id before scheduling, publishing, repurposing or pulling analytics for it, and to answer questions about what the user has written or has queued up. Returns a 280-character excerpt of each p…List the posts on this ContentIn profile — drafts, scheduled, published and ideas. Use this to find a post's id before scheduling, publishing, repurposing or pulling analytics for it, and to answer questions about what the user has written or has queued up. Returns a 280-character excerpt of each p…
| Parámetro | Tipo | Descripción |
|---|---|---|
| status | array | Filter by post status. Omit for all statuses. 'draft' = written but not queued, 'scheduled' = queued for automatic publishing, 'posted' = already live on Linke… |
| from | string | ISO-8601 date. Only posts created on or after this. |
| to | string | ISO-8601 date. Only posts created on or before this. |
| search | string | Free-text match against the post body and title. |
| limit | integer | How many posts to return (1-50, default 20). |
get_post_analyticsGet LinkedIn performance for one published ContentIn post: impressions, members reached, likes, comments, shares, and a derived engagement rate. IMPORTANT: metrics are fetched on a schedule and only for posts published through a connected LinkedIn account, so a post can legitimately have no numbers…Get LinkedIn performance for one published ContentIn post: impressions, members reached, likes, comments, shares, and a derived engagement rate. IMPORTANT: metrics are fetched on a schedule and only for posts published through a connected LinkedIn account, so a post can legitimately have no numbers…
| Parámetro | Tipo | Descripción |
|---|---|---|
| post_id* | integer | The ContentIn post id, from list_posts. |
| include_history | boolean | Include the metric time-series (up to 60 snapshots) instead of just the latest figures. Default false. |
list_my_commentsList the comments this user has left on OTHER people's LinkedIn posts, newest first, with the comment urn and a direct link to each one. Use it to review their commenting activity, to find a conversation they joined, or to hand the identifiers to another tool. HOW THIS DATA IS COLLECTED, and what y…List the comments this user has left on OTHER people's LinkedIn posts, newest first, with the comment urn and a direct link to each one. Use it to review their commenting activity, to find a conversation they joined, or to hand the identifiers to another tool. HOW THIS DATA IS COLLECTED, and what y…
| Parámetro | Tipo | Descripción |
|---|---|---|
| from | string | ISO-8601 date. Only comments written on or after this. |
| to | string | ISO-8601 date. Only comments written on or before this. |
| search | string | Free-text match against the comment text and the excerpt of the post it was left on. |
| limit | integer | How many comments to return (1-100, default 50). |
| before | string | null | Paging cursor: pass back the next_before value from the previous response, VERBATIM, together with before_id. Do not build this yourself and do not reuse a cur… |
| before_id | integer | Paging cursor: the next_before_id from the previous response. Always send it alongside before, otherwise comments written in the same second can be skipped. |
list_leadsList the people who engaged with THIS user's own LinkedIn posts — their name, headline, LinkedIn profile, how they engaged, what they commented, which posts pulled them in, and ContentIn's ICP fit score. Use it to answer 'who is engaging with me', to find warm contacts, or to see which posts attrac…List the people who engaged with THIS user's own LinkedIn posts — their name, headline, LinkedIn profile, how they engaged, what they commented, which posts pulled them in, and ContentIn's ICP fit score. Use it to answer 'who is engaging with me', to find warm contacts, or to see which posts attrac…
| Parámetro | Tipo | Descripción |
|---|---|---|
| status | array | Filter by the user's lead funnel state. Default is everything EXCEPT 'dismissed' — the user already said no to those, so ask for them explicitly if you really… |
| min_icp_score | integer | Only leads scoring at least this (0-100). Applied to the user's override where they set one, otherwise to ContentIn's score. Leads that have not been scored ye… |
| interacted_since | string | ISO-8601 date. Only leads who engaged on or after this. |
| search | string | Free-text match against the lead's name and headline. |
| sort | string | Ordering, always descending. Default 'last_interacted' (most recent engagement first). |
| limit | integer | How many leads to return (1-100, default 50). |
| before | — | Paging cursor: pass back the next_before value from the previous response, VERBATIM, together with before_id. Do not build this yourself, and do not reuse a cu… |
| before_id | string | Paging cursor: the next_before_id from the previous response. Always send it alongside before, otherwise leads sharing a score or a timestamp can be skipped. |
write_post_in_my_voiceprivilegiadaTHE MAIN TOOL. Write a LinkedIn post in this user's own voice, from their own material. Use it whenever the user describes something they want to post about — a story, an opinion, a result, a lesson, a rough brief. It runs ContentIn's voice pipeline: their VoiceDNA, their real past posts as style e…THE MAIN TOOL. Write a LinkedIn post in this user's own voice, from their own material. Use it whenever the user describes something they want to post about — a story, an opinion, a result, a lesson, a rough brief. It runs ContentIn's voice pipeline: their VoiceDNA, their real past posts as style e…
| Parámetro | Tipo | Descripción |
|---|---|---|
| user_idea* | string | The user's complete description of the post they want, in THEIR words. Include their full intent, context, specific details, names and numbers. Verbatim is bet… |
| style* | string | Writing style. Infer it from the material: results / case studies / client wins = proof, educational / frameworks = authority, viral / trending / broad-resonan… |
| user_constraints | string | Any preferences the user has stated that override defaults — e.g. 'no hashtags', 'no call to action, this is a connection post', 'keep it under 800 characters'… |
attach_imagesAttach one or more images to a ContentIn post that is not published yet. IMAGES ONLY — JPG, PNG or WEBP, at least 200×200px, at most 8 MB each, and at most 5 per post. Video, GIFs, PDFs and document carousels are NOT supported and will be refused, so do not try to attach one. Pass each image either…Attach one or more images to a ContentIn post that is not published yet. IMAGES ONLY — JPG, PNG or WEBP, at least 200×200px, at most 8 MB each, and at most 5 per post. Video, GIFs, PDFs and document carousels are NOT supported and will be refused, so do not try to attach one. Pass each image either…
| Parámetro | Tipo | Descripción |
|---|---|---|
| post_id* | integer | The ContentIn post id (from list_posts or write_post_in_my_voice). The post must not be published yet. |
| images* | array | The images, in the order they should appear on LinkedIn. Exactly one of url or base64 per entry. Maximum 5. |
| alt_texts | array | Optional alt text per image, same order and same length as images. Describe what is actually in the picture, in the user's language, 300 characters or fewer. |
| mode | string | 'replace' (default) — the post's images become exactly these, and the previous ones are deleted. 'append' — keep what is there and add these, total still cappe… |
repurpose_postRewrite an existing post from a new angle, in the user's voice. Pass post_id (a ContentIn post id from list_posts) to repurpose one of their own posts — the current text is read from ContentIn, so you do not need to have seen it. Pass original_post instead to repurpose text you already have that is…Rewrite an existing post from a new angle, in the user's voice. Pass post_id (a ContentIn post id from list_posts) to repurpose one of their own posts — the current text is read from ContentIn, so you do not need to have seen it. Pass original_post instead to repurpose text you already have that is…
| Parámetro | Tipo | Descripción |
|---|---|---|
| post_id | integer | A ContentIn post id (from list_posts). Its current body is read from ContentIn and used as the original. |
| original_post | string | The full text of a post that is NOT in ContentIn. Ignored when post_id is provided and resolves. |
| new_angle* | string | What should change: the new angle, perspective, focus or audience. Be specific about what to keep and what to shift. |
| style* | string | Writing style. Infer it from the material: results / case studies / client wins = proof, educational / frameworks = authority, viral / trending / broad-resonan… |
| content_pillar | string | Name of the content pillar this belongs to, so the draft is tagged correctly. |
| user_constraints | string | Stated user preferences that override defaults for this post. |
generate_ideasGenerate fresh LinkedIn post ideas for a COLD request — the user wants options but has NOT given you material of their own ('what should I post about this week?', 'ideas for [topic]'). Ideas are grounded in the user's content pillars and their substance bank, so they are theirs rather than generic.…Generate fresh LinkedIn post ideas for a COLD request — the user wants options but has NOT given you material of their own ('what should I post about this week?', 'ideas for [topic]'). Ideas are grounded in the user's content pillars and their substance bank, so they are theirs rather than generic.…
| Parámetro | Tipo | Descripción |
|---|---|---|
| topic* | string | The topic or theme to generate ideas about. |
| content_pillar | string | Name of one of the user's content pillars that matches this topic. Omit if none fits. |
| style | string | Optional. Omit to get a mix across all three styles, which is usually what the user wants. |
| count | integer | How many ideas (1-10, default 5). |
capture_substanceSave a piece of the user's first-party substance — a story, an opinion, a data point, or a framework — into their ContentIn content bank, filed under one of their content pillars. This is the highest-leverage thing you can do for them: everything ContentIn writes later is grounded in this bank, so…Save a piece of the user's first-party substance — a story, an opinion, a data point, or a framework — into their ContentIn content bank, filed under one of their content pillars. This is the highest-leverage thing you can do for them: everything ContentIn writes later is grounded in this bank, so…
| Parámetro | Tipo | Descripción |
|---|---|---|
| content_pillar* | string | The content pillar's name or id. The name is fine — it is matched either way. |
| substance_type* | string | stories = personal or client anecdotes; opinions = beliefs and contrarian takes; data_points = numbers, metrics, results; frameworks = step-by-step processes a… |
| content* | string | The substance itself, cleaned into one clear self-contained piece — but in the user's own words and with their own specifics intact. Do not generalise the deta… |
schedule_postQueue a post for automatic publishing to LinkedIn at a given time. TWO-STEP AND DELIBERATELY SO: call it first WITHOUT confirm_token to get back the exact text and a confirm_token; show that exact text to the user, get their explicit go-ahead, then call again with the same arguments plus the confir…Queue a post for automatic publishing to LinkedIn at a given time. TWO-STEP AND DELIBERATELY SO: call it first WITHOUT confirm_token to get back the exact text and a confirm_token; show that exact text to the user, get their explicit go-ahead, then call again with the same arguments plus the confir…
| Parámetro | Tipo | Descripción |
|---|---|---|
| post_id | integer | A ContentIn post id (from list_posts or write_post_in_my_voice). |
| post_content | string | Full post text, when it is not already in ContentIn. Ignored when post_id is provided. |
| post_time* | string | When to publish. ISO-8601 WITH AN EXPLICIT UTC OFFSET, e.g. 2026-08-04T09:00:00+02:00, or 2026-08-04T07:00:00Z. A naive local time (2026-08-04T09:00:00) is REJ… |
| title | string | Optional internal label for the user's ContentIn list. This is NEVER shown on LinkedIn. |
| confirm_token | string | The token from the previous confirmation_required response. Omit on the first call. |
publish_postPublish a post to the user's LinkedIn immediately. THIS IS IRREVERSIBLE — it is public the moment it succeeds. TWO-STEP AND MANDATORY: call it first WITHOUT confirm_token to get back the exact text that would go out and a confirm_token; show that exact text to the user in full, ask them to confirm…Publish a post to the user's LinkedIn immediately. THIS IS IRREVERSIBLE — it is public the moment it succeeds. TWO-STEP AND MANDATORY: call it first WITHOUT confirm_token to get back the exact text that would go out and a confirm_token; show that exact text to the user in full, ask them to confirm…
| Parámetro | Tipo | Descripción |
|---|---|---|
| post_id | integer | A ContentIn post id (from list_posts or write_post_in_my_voice). |
| post_content | string | Full post text the user wrote in this conversation. Saved as a ContentIn draft first — nothing is ever published without a post record. Ignored when post_id is… |
| confirm_token | string | The token from the previous confirmation_required response. Omit on the first call. |
11 de 11 herramientas publicaron una descripción.
Los nombres y descripciones de las herramientas los escribe el publicador y se muestran literalmente como texto inerte. Son las cadenas que un cliente MCP pasa al modelo, así que Forge las analiza en busca de patrones de inyección de prompts — cualquier hallazgo aparece junto al análisis de seguridad de arriba. «Privilegiada» es una coincidencia de palabra clave en el nombre de la herramienta, no una auditoría de lo que hace: un nombre inofensivo puede hacer cualquier cosa.
Write LinkedIn posts in your voice: ideas, drafts, scheduling, analytics from your personal AI.
Los nombres enlazados abren el índice de Forge con todas las entradas que se observó que exponen esa herramienta. Ver todas las herramientas indexadas.
Esta entrada no publica ningún paquete de npm, así que Forge no tiene un árbol de dependencias para ella. Es una carencia de cobertura, no una afirmación de que no tenga dependencias.