El servidor MCP para redes sociales

Una URL da a Claude, ChatGPT, Cursor, Codex o a tu propio agente 79 herramientas para publicar, programar, diseñar e informar en 13 redes.

Streamable HTTP JSON-RPC 2.0 OAuth o clave API MCP 2025-06-18
POST/mcp/v1/messages
  1. → Clienteinitialize
    {"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-06-18"}}

    Tu IA saluda e indica la versión de MCP que habla.

    ← RobinReach
    {"jsonrpc":"2.0","id":1,"result":{"protocolVersion":"2025-06-18","serverInfo":{"name":"robinreach","title":"RobinReach"},"capabilities":{"tools":{}},"instructions":"RobinReach is a social media scheduling tool..."}}

    RobinReach acepta la versión y envía notas sobre cómo usar sus herramientas, más los ajustes de voz de tu marca.

  2. → Clientetools/list
    {"jsonrpc":"2.0","id":2,"method":"tools/list"}

    Pregunta qué puede hacer.

    ← RobinReach
    {"jsonrpc":"2.0","id":2,"result":{"tools":[{"name":"account_status"},{"name":"posts_validate"},{"name":"posts_create"}, … 76 more]}}

    Recibe 79 herramientas, cada una con su descripción y los datos que necesita.

  3. → Clientetools/call posts_validate
    {"jsonrpc":"2.0","id":3,"method":"tools/call","params":{"name":"posts_validate","arguments":{"social_profile_ids":[41,57],"content":"Speckled mugs are back on Friday."}}}

    Antes de guardar nada, comprueba la publicación para Instagram y LinkedIn.

    ← RobinReachresult.content[0].text
    {"status":"success","message":"All validation checks passed. Ready to create."}

    RobinReach confirma que la publicación cumple las reglas de cada red.

  4. → Clientetools/call posts_create
    {"jsonrpc":"2.0","id":4,"method":"tools/call","params":{"name":"posts_create","arguments":{"social_profile_ids":[41,57],"content":"Speckled mugs are back on Friday.","post_status":"scheduled","publish_time":"2026-11-06T09:00","timezone":"America/New_York"}}}

    Programa la publicación para el viernes a las 9:00, hora de Nueva York.

    ← RobinReachresult.content[0].text
    {"success":true,"post_id":18342,"status":"scheduled","platforms":["instagram","linkedin"],"message":"Post scheduled for November 6 at 9:00 AM EST."}

    La publicación está en el calendario de ambas redes.

Un intercambio real con identificadores de ejemplo. Cada mensaje es un POST a la misma URL.

Conectar

Todo lo que necesita saber un cliente

Un endpoint, un inicio de sesión o una clave, JSON-RPC sencillo. Si tu herramienta habla MCP por HTTP, puede hablar con RobinReach.

POSThttps://robinreach.com/mcp/v1/messages
Endpoint
POST /mcp/v1/messages en robinreach.com. Cada mensaje JSON-RPC va a esta única URL.
Autenticación
Claude y ChatGPT inician sesión con OAuth 2.1: código de autorización con PKCE (S256), registro dinámico de clientes y descubrimiento por .well-known, así que el usuario solo pega la URL. Cualquier otro cliente envía una clave API como Authorization: Bearer, o añade ?api_key= a la URL.
Transporte
Streamable HTTP. Los mensajes son POST que se responden con JSON. GET devuelve 405 porque el servidor nunca envía por su cuenta, y OPTIONS responde a los preflight CORS de cualquier origen.
Protocolo
JSON-RPC 2.0, versiones de MCP 2025-06-18 y 2025-03-26. Un mensaje por petición: los lotes se rechazan, así que un reintento nunca publica dos veces.
Métodos
initialize, ping, tools/list y tools/call. Las notificaciones reciben 202 Accepted.
Planes
Incluido en Bloom, Thrive y Scale. En otros planes cada llamada devuelve un error JSON-RPC claro que explica cómo mejorar el plan.
Claves
Una clave maestra llega a todas las marcas de la cuenta (pasa brand_id). Una clave de marca llega a una sola marca y no necesita brand_id. Una conexión OAuth es una cosa u otra: el usuario elige toda la cuenta o una sola marca al iniciar sesión.
Saludo inicial
initialize devuelve notas de uso para el modelo, además del tono, la misión, el idioma y la zona horaria de la marca, para que las publicaciones suenen bien desde la primera llamada.
Referencia de herramientas

Las 79 herramientas

Esta lista se genera desde el mismo registro con el que el servidor responde a tools/list, así que siempre está al día.

Mostrando 79 de 79 herramientas

  • posts_validate Publicaciones y programación

    Validate post content/platform_options before creating, updating, or publishing. Always call this first. Fix any returned errors and re-validate before posts_create / posts_update / posts_publish_now. Pass post_id when validating changes to an existing post so validation checks its already-attached media (e.g. an Instagram post with no new media_urls but existing images) instead of assuming no media is attached. When the update will use replace_media: true, pass replace_media: true here too, so the post is checked with only the new media_urls.

    Requieresocial_profile_ids 9 datos opcionales
  • posts_create Publicaciones y programación

    Create and schedule (or save as draft) a post across one or more social profiles. Call posts_validate first. LinkedIn: up to 20 images per post; set platform_options.linkedin.carousal "1" to publish them as one PDF document instead (no 20-image cap), and always set platform_options.linkedin.document_title for a carousel or PDF. A PDF in media_urls posts as a LinkedIn document and needs LinkedIn to be the only platform. For LinkedIn image posts, write platform_options.linkedin.alt_text (one description per image, separated by semicolons).

    Requieresocial_profile_ids 12 datos opcionales
  • posts_update Publicaciones y programación

    Update an existing, unpublished post. Call posts_validate first with the merged content/options. media_urls is APPEND-ONLY by default; pass replace_media: true to replace existing attachments instead of adding to them. A library url whose file is already on the post is not added again (it is listed in media_already_attached). labels is also APPEND-ONLY by default; pass replace_labels: true to replace the post's entire label set instead of merging into it.

    Requierepost_id 12 datos opcionales
  • posts_publish_now Publicaciones y programación Confirmar antes

    Publish a draft/scheduled/approved post immediately. Always show the content preview and get explicit user confirmation first.

    Requierepost_id 1 dato opcional
  • posts_delete Publicaciones y programación Confirmar antes

    Permanently delete a post. Always confirm with the user first.

    Requierepost_id 1 dato opcional
  • posts_delete_from_platform Publicaciones y programación Confirmar antes

    Delete a published post from specific social platforms (same as the dashboard's Delete from Platform). Supported: Facebook, LinkedIn, X, Threads, Telegram, Bluesky, Pinterest, YouTube, WordPress, Mastodon. Always confirm with the user first.

    Requierepost_idsocial_profile_ids 1 dato opcional
  • posts_reschedule Publicaciones y programación

    Change the publish_time of a scheduled post.

    Requierepost_idnew_publish_time 1 dato opcional
  • posts_list Publicaciones y programación

    List posts for a brand, optionally filtered by status and/or labels (matches ANY given label). Paginated, 10 per page.

    4 datos opcionales
  • posts_get_status Publicaciones y programación

    Get per-platform publish status for a post, with suggested fixes for any failures.

    Requierepost_id 1 dato opcional
  • posts_bulk_create Publicaciones y programación

    Create up to 20 posts in one call. Each post is validated independently; partial failures are reported per-index.

    Requiereposts 1 dato opcional
  • media_view Imágenes y medios

    The only way to actually see image content (returns downscaled base64, up to 10 at once). ALWAYS call this before writing a caption for, or describing, a specific image; never guess from a filename like 'big.jpg'.

    3 datos opcionales
  • media_rename Imágenes y medios

    Rename a media library file, e.g. to fix a name the public will see: a PDF's name is the title LinkedIn shows on a document post when no document_title is set. The file keeps its extension and its url, so posts already using it are unaffected and pick up the new name. Take attachment_id from media_search.

    Requiereattachment_idmedia_new_name 1 dato opcional
  • media_delete Imágenes y medios

    Permanently delete media library files (up to 20 per call). Always confirm with the user first, naming the files. If a file is used by a post that hasn't gone out yet, nothing is deleted and the answer has needs_confirmation with those posts: show them to the user, and only after a clear yes call again with force_delete: true. Files only used in already-published posts are deleted right away; the live posts are unaffected.

    Requiereattachment_ids 2 datos opcionales
  • media_folders Imágenes y medios

    List media library folders with attachment counts.

    1 dato opcional
  • media_search_unsplash Imágenes y medios

    Search Unsplash for stock photos. Credit the photographer when used.

    Requierequery
  • media_generate_ai_image Imágenes y medios

    Generate an AI image from a text prompt. It is saved to the RobinPixel folder of the media library and shows in Recent images on the RobinPixel page. Optional: model ("gpt_image" default, or "nano_banana_pro"), image_format (1:1, 16:9, 4:3, 9:16, 3:4) or the older size list, image_style, and image_guidelines (up to 1,000 characters). Standard resolution only; 2K and 4K are on the RobinPixel page. Pass post_id to attach it directly to a post (add replace_media: true to replace that post's existing media instead of appending). Check quota first; fall back to media_search_unsplash if low.

    Requiereimage_prompt 8 datos opcionales
  • media_upload Imágenes y medios

    Download a public file_url (image, video or PDF) into the media library. Returns job_id; poll media_upload_status a few seconds later to get the final url before using it in media_urls.

    Requierefile_url 3 datos opcionales
  • media_upload_status Imágenes y medios

    Check the status of a media_upload job_id.

    Requierejob_id 1 dato opcional
  • media_direct_upload_create Imágenes y medios

    Start a direct upload for a local file with no public URL yet (screenshots, videos). Returns a signed upload_url; PUT the raw file bytes there immediately (it expires in minutes), then call media_direct_upload_finalize.

    Requierecontent_typebyte_sizechecksum 2 datos opcionales
  • media_direct_upload_finalize Imágenes y medios

    Finalize a direct upload after PUTting the file bytes, using the signed_id from media_direct_upload_create. Returns the permanent attachment url. Safe to retry: finalizing the same signed_id again returns the same attachment.

    Requieresigned_id 2 datos opcionales
  • media_upload_from_chat Imágenes y medios

    Upload image, video or PDF files attached directly in this chat (e.g. an image you just generated; a PDF posts as a LinkedIn document) into the RobinReach media library. Put each file in its own field, file_1 to file_5 (call again for more than five); never ask the user for a public URL for these. Returns library URLs; use them in media_urls on posts_create / posts_update / posts_bulk_create.

    8 datos opcionales
  • analytics_get Analíticas

    Get raw engagement metrics for one social profile over a date range (default: last 30 days). A Google Business Profile answers with Google's own daily numbers under business (profile views on Search and Maps, website clicks, calls, direction requests, conversations, bookings, menu clicks) and post_analytics false, since Google has no per-post numbers.

    Requieresocial_profile_id 4 datos opcionales
  • analytics_top_posts Analíticas

    Get the best-performing posts by engagement over a date range.

    6 datos opcionales
  • analytics_calendar Analíticas

    Get the next 14 days of scheduled posts, with any gap days flagged.

    1 dato opcional
  • analytics_performance_summary Analíticas

    Compare this week's engagement and post count to last week's, with a plain-language recommendation.

    2 datos opcionales
  • analytics_post Analíticas

    Get live engagement metrics for a published post, across every profile it was published to (or one specific profile if social_profile_id is given). Aggregates per-platform results. A result with `warnings` is missing some metrics (for example a Facebook Reel's views): tell the user which and why. X (Twitter) numbers are not live: they are the ones RobinReach read 1, 3 and 7 days after publishing, on the Scale plan.

    Requierepost_id 2 datos opcionales
  • comments_list Comentarios

    List comment threads across social profiles, sorted by most recent, with unread counts. A thread is one post's comment section. Each thread has likeable (whether comments_like works on it), last_comment (the newest message, which may be the brand's own reply), and recent_comments: the newest comments from other people, up to 5, each with external_id and liked (incoming_count is the full total). Goodwill comments (thanks, hearts, emoji, congratulations) usually deserve a like rather than a reply; group them and offer to like them with comments_like. Google Business reviews appear here too, as threads with kind "review", a rating from 1 to 5 and has_reply; they can't be liked. YouTube comments (Thrive and Scale plans) appear as threads with platform "youtube", one per video; they can't be liked, and each brand can send 30 YouTube replies a day, so never bulk-reply.

    4 datos opcionales
  • comments_reply Comentarios

    Reply to a comment thread. Requires Bloom or higher (YouTube threads: Thrive or Scale, capped at 30 replies per brand per day); rate-limited to 10/minute per company. On a Google review (kind "review") the reply is public on Google and replaces any earlier reply; reply_to_comment_id is ignored. Always show the user the draft before replying to a 1, 2 or 3 star review.

    Requierethread_idmessage 2 datos opcionales
  • comments_like Comentarios

    Like a comment as the brand, given thread_id and comment_id (an external_id from the thread's recent_comments in comments_list). The right response to goodwill comments where a reply would feel overbearing. Only works on threads where likeable is true (Facebook Pages and LinkedIn today); otherwise suggest a reply. Never like complaints, criticism, spam, or anything offensive. Only comments from other people can be liked, not the brand's own replies. One-way: likes can't be undone through this tool, so confirm with the user before liking more than a few at once. Liking an already-liked comment is a safe no-op. Requires a plan that includes comment replies; rate-limited to 30/minute per company.

    Requierethread_idcomment_id 1 dato opcional
  • style_learn Voz de marca

    Analyze the brand's past posts (or, for fresh accounts, brand tone) to learn tone, length, emoji/hashtag usage, and structure. Cached for a year.

    3 datos opcionales
  • style_save_feedback Voz de marca

    Save a voice/style correction after the user edits or rejects generated content, e.g. "prefers shorter captions on instagram". Also used by the composer's AI caption chat in the app.

    Requierefeedback 2 datos opcionales
  • account_best_time Planificación

    Get the next available posting slot based on the brand's preferred times/days.

    1 dato opcional
  • account_audience_best_times Planificación

    Best posting times per platform from the brand's own post engagement over the last 90 days (the Best time to post rule of the Reports page), each with a suggested time, a confidence level and why, falling back to the brand's saved posting times or the network's usual peak hours where its numbers are thin. start_date and end_date pick the past posts to read, not the dates to schedule. Prefer this over guessing a schedule time.

    5 datos opcionales
  • account_hashtag_groups Planificación

    List saved hashtag groups for a brand.

    1 dato opcional
  • pillars_save Planificación

    Save the brand's content pillar mix, e.g. 40% Educational, 30% Promotional, 30% Behind-the-scenes. Percentages must sum to ~100.

    Requierepillars 1 dato opcional
  • pillars_list Planificación

    Get the saved content pillar mix. Call when planning any content calendar.

    1 dato opcional
  • templates_save Planificación

    Save reusable post content as a template. Use {placeholder} syntax for variables.

    Requieretemplate_nametemplate_content 2 datos opcionales
  • templates_list Planificación

    List saved templates. Call before creating recurring content types.

    1 dato opcional
  • templates_use Planificación

    Fill a saved template's placeholders with values to produce ready-to-post content.

    Requieretemplate_name 2 datos opcionales
  • bio_page_get Página bio

    Get the brand's Bio Page, its link in bio page: settings, public_url, whether it is published and live, every block top to bottom, post_grid_profiles (the profiles a post grid can show) and the supported embed providers. Each brand has exactly one Bio Page, created automatically on first use and free on every plan. Call this before changing the page.

    1 dato opcional
  • bio_page_update Página bio

    Update the Bio Page: title, bio text, slug (its address), theme color, light or dark appearance, background, profile picture, post grid columns, the social icons row, and bio_published to put it live or take it offline. Only the fields you pass change. Images must be media library urls: import them first with media_upload, media_upload_from_chat or media_direct_upload_create, or reuse a url from media_search or media_generate_ai_image. Changing bio_slug breaks the old address, so confirm with the user first. Validation errors such as a taken slug come back in errors, exactly as the dashboard shows them.

    14 datos opcionales
  • bio_blocks_create Página bio

    Add a block at the bottom of the Bio Page: a link button, a card (product or offer with optional image, price and button; consecutive cards can be set to a swipeable carousel), a post_grid (latest posts published through RobinReach from one profile, taken from post_grid_profiles in bio_page_get), an embed (YouTube, Vimeo, TikTok, Spotify, SoundCloud or Apple Music player) or a heading (a section label, shown as a bold title or a divider line, such as Shop or Watch). Put the content in bio_block_settings; bio_block_image_url sets a card's image. Use bio_blocks_reorder to move it.

    Requierebio_block_typebio_block_settings 2 datos opcionales
  • bio_blocks_update Página bio

    Change a Bio Page block's content. Only the bio_block_settings keys you pass change ("" clears one); bio_block_image_url replaces a card's image. A block's type cannot change: add a new block and delete the old one instead.

    Requierebio_block_id 3 datos opcionales
  • bio_blocks_delete Página bio Confirmar antes

    Permanently remove a block from the Bio Page, along with its click stats. Always confirm with the user first.

    Requierebio_block_id 1 dato opcional
  • bio_blocks_reorder Página bio

    Set the order of the Bio Page blocks. Pass bio_block_ids top to bottom. Blocks you leave out keep their current order below the ones you list, so passing one id moves that block to the top.

    Requierebio_block_ids 1 dato opcional
  • bio_page_analytics Página bio

    Bio Page stats, the same figures as the dashboard's Bio Page analytics: views, clicks and click-through rate on every plan; on paid plans also unique visitors, bounce rate, a daily views and clicks trend for the last 30 days, the most clicked blocks, traffic sources, countries and devices. Bot traffic is excluded. Use it to answer how the link in bio page is doing or which link gets the most clicks.

    1 dato opcional
  • comment_automations_list Comentario a DM

    List Comment to DM automations for a brand, with every setting of each one, the social profiles that can run one (Facebook Pages and Instagram professional accounts only) and remaining plan quota. Call this before offering to create one: check can_use_comment_automation and comment_automations_remaining, and take social_profile_id from available_social_profiles. Each profile's triggers_on_all_posts says whether its automations fire on every post (always true for a Facebook Page) or only on posts published through RobinReach (an Instagram account that needs reconnecting once with Connect Via Instagram); tell the user when it is false.

    1 dato opcional
  • comment_automations_create Comentario a DM

    Create a Comment to DM automation on one Facebook Page or Instagram professional account: people who comment get an automatic private DM. Call comment_automations_list first for a valid social_profile_id and the plan quota; the profile is fixed for the life of the automation (create a new one to target another page/account). Starts on: comment_automation_trigger_mode "keywords" (default; comment_automation_keywords then required, matched case-insensitively, single words with light stemming, multi-word phrases as an exact substring) or "any_comment" (everyone who comments). Timing: right away, or comment_automation_delay_minutes later. What they get: comment_automation_dm_message as plain text (comment_automation_button_style "none"), with one link button ("link"), or with a tap button that sends the link after the tap ("tap"); "link" and "tap" need comment_automation_button_url, and every button text has a default. Only "tap" can check that the person follows the account before the link goes out (comment_automation_require_follow, Instagram only) or send one reminder to people who got the link but didn't open it (comment_automation_follow_up_enabled); a "link" automation that asks for either is switched to "tap" automatically, as in the dashboard, and the response's note says so. Optional public reply under the comment (comment_automation_send_public_reply, which requires comment_automation_public_reply_message). Each person is only ever DM'd once per automation, even if they comment again later or while a delayed DM is waiting: deliberate spam prevention, not a bug. Facebook fires on top-level comments on any Page post. Instagram fires on every comment, replies included, on every post when the profile's triggers_on_all_posts (from comment_automations_list) is true, and otherwise only on posts published through RobinReach until the account is reconnected.

    Requieresocial_profile_idcomment_automation_namecomment_automation_dm_message 17 datos opcionales
  • comment_automations_update Comentario a DM

    Change any setting of an existing Comment to DM automation: name, trigger mode and keywords, delay, DM message, button style, link and button texts, follower check and its message, reminder with its message and timing, public reply, and whether it is active. Pass only what changes; everything else stays as it is. The same rules as comment_automations_create apply: the follower check (Instagram only) and the reminder need the "tap" style, and a "link" automation is switched to it automatically when either is turned on. The social profile it's attached to cannot be changed; create a new automation instead.

    Requierecomment_automation_id 20 datos opcionales
  • comment_automations_delete Comentario a DM Confirmar antes

    Permanently delete a Comment to DM automation. Always confirm with the user first.

    Requierecomment_automation_id 1 dato opcional
  • comment_automations_toggle_active Comentario a DM

    Pause or resume a Comment to DM automation without changing its settings.

    Requierecomment_automation_id 1 dato opcional
  • rss_list Feeds RSS

    List all RSS feeds for the brand.

    1 dato opcional
  • rss_validate Feeds RSS

    Validate RSS feed parameters. Always call before rss_create or rss_update; never call those without a preceding successful rss_validate.

    13 datos opcionales
  • rss_create Feeds RSS

    Create an RSS feed. Call rss_validate first. rss_publish_immediately and rss_auto_schedule are mutually exclusive.

    Requiererss_feed_namerss_feed_url 15 datos opcionales
  • rss_update Feeds RSS

    Update an existing RSS feed. Call rss_validate first.

    Requiererss_feed_id 17 datos opcionales
  • rss_delete Feeds RSS Confirmar antes

    Permanently delete an RSS feed (does not delete posts it already created). Always confirm with the user first.

    Requiererss_feed_id 1 dato opcional
  • rss_toggle_pause Feeds RSS

    Pause or resume an RSS feed. Resuming checks the feed for new items right away and restarts its schedule.

    Requiererss_feed_id 1 dato opcional
  • rss_sync Feeds RSS

    Manually trigger an RSS feed sync now.

    Requiererss_feed_id 1 dato opcional
  • repurposing_list Reutilizar e importar

    List repurposing tasks and the available_source_profiles, the only profiles valid as a source. Any connected profile can be a destination.

    1 dato opcional
  • repurposing_create Reutilizar e importar

    Create a task that repurposes content from one source profile to one or more destination profiles. Call repurposing_list first; only offer source profiles from its available_source_profiles list.

    Requieresource_profile_iddestination_profile_ids 6 datos opcionales
  • repurposing_update Reutilizar e importar

    Update a repurposing task's source, destinations, or settings.

    Requiererepurposing_task_id 8 datos opcionales
  • repurposing_delete Reutilizar e importar Confirmar antes

    Permanently delete a repurposing task. Always confirm with the user first.

    Requiererepurposing_task_id 1 dato opcional
  • repurposing_toggle_pause Reutilizar e importar

    Pause or resume a repurposing task.

    Requiererepurposing_task_id 1 dato opcional
  • repurposing_run Reutilizar e importar

    Run a repurposing task now. Returns how many posts it created, or why nothing could be fetched from the source (for example an expired connection).

    Requiererepurposing_task_id 1 dato opcional
  • content_article_to_posts Reutilizar e importar

    Convert an article URL into draft posts, optionally tagged with custom hashtags.

    Requierearticle_url 4 datos opcionales
  • store_sync_products Reutilizar e importar

    Sync products from a connected Shopify/Etsy/WooCommerce store into new draft posts. Pass store_type: "auto" to detect automatically.

    2 datos opcionales
  • account_status Cuenta y redes

    Get plan limits/usage, brand settings, connected profiles, voice preferences, and writing style. Call once at the start of a session.

    1 dato opcional
  • account_brands Cuenta y redes

    List every brand on this account with profile/post counts. Use when the account has multiple brands and you need to ask the user which to work in.

    Sin datos
  • account_profiles Cuenta y redes

    List connected social profiles for a brand, with per-platform character limits. requires_media: true means the profile rejects a post with no image or video.

    1 dato opcional
  • account_locations Cuenta y redes

    List the locations this brand can tag on Instagram and Facebook posts: its connected Facebook Pages that have an address. Each says whether Instagram can use it (instagram: true needs a map pin on the Page). Pass page_id as platform_options.instagram.location_id and/or platform_options.facebook.place_id.

    1 dato opcional
  • pinterest_list_boards Cuenta y redes

    List Pinterest boards for a connected profile.

    2 datos opcionales
  • youtube_list_playlists Cuenta y redes

    List YouTube playlists for a connected profile.

    3 datos opcionales
  • wordpress_list_categories Cuenta y redes

    List WordPress categories. Never guess category IDs; call this first.

    2 datos opcionales
  • wordpress_list_tags Cuenta y redes

    List WordPress tags. Never guess tag IDs; call this first.

    2 datos opcionales

Los nombres y las descripciones se muestran tal como los envía el servidor, en inglés.

Hecho para agentes

Diseñado para que tu agente acierte

La mayoría de las publicaciones de IA fallidas vienen de adivinar. El servidor está hecho para eliminar las conjeturas.

  • Primero validar, luego escribir

    posts_validate comprueba el contenido, los medios y los límites de cada red. posts_create repite las mismas comprobaciones en el servidor, así que un paso saltado no se cuela.

  • Sin IDs inventados

    Los tableros, las listas, las categorías y las etiquetas de WordPress salen de herramientas de listado, y las instrucciones le dicen al modelo que nunca adivine uno.

  • En bloque, con resultado por publicación

    posts_bulk_create admite hasta 20 publicaciones. Cada una se valida por separado y los fallos vuelven con su índice, así que una publicación mala nunca arrastra al resto.

  • Medios desde cualquier sitio

    URL públicas, archivos adjuntos en el chat y subidas directas firmadas para archivos locales. media_view permite al modelo ver hasta 10 imágenes antes de escribir sobre ellas.

  • Errores que un cliente puede emparejar

    Cada error JSON-RPC devuelve el id de la petición, los fallos de herramientas llegan con isError y los inesperados llevan un id de petición que puedes dar a soporte.

  • La confirmación, parte del contrato

    9 herramientas publican al momento, borran para siempre o devuelven un enlace que se muestra una sola vez. Sus descripciones y las instrucciones del servidor le dicen al modelo que confirme antes con la persona.

Configuración de clientes

Copiar, pegar, conectado

Fragmentos para los clientes más habituales. Claude y ChatGPT inician sesión en RobinReach, así que su configuración no lleva ninguna clave. Tu panel tiene los demás con tu clave ya puesta.

Terminal
claude mcp add --transport http robinreach https://robinreach.com/mcp/v1/messages

Añade RobinReach a Claude Code por HTTP, sin clave en la URL. Luego ejecuta /mcp en Claude Code, selecciona robinreach y elige Authenticate: tu navegador abre RobinReach para que inicies sesión y elijas toda la cuenta o una sola marca. ¿Sin navegador? Usa en su lugar la URL con clave API de tu panel.

YOUR_API_KEY es un marcador de posición para los clientes que usan una clave API. Genera una clave en Integraciones, dentro de tu panel. Claude y ChatGPT inician sesión en su lugar y no necesitan clave.

Skill para Claude

Enséñale a Claude las reglas de la casa

El skill de RobinReach le da a Claude lo que las herramientas solas no pueden: cómo se comporta cada red, cómo planificar un calendario y cómo escribir con tu voz.

  • Escribe con la voz de tu marca desde la primera publicación
  • Elige horarios sensatos y respeta las reglas de cada red
  • Funciona en Claude en la web, en la app de escritorio y en Claude Code
Instalar para Claude Code
curl -fsSL "https://robinreach.com/downloads/robinreach-claude-skill.zip?v=80b2def7" -o /tmp/rr-skill.zip && mkdir -p ~/.claude/skills && unzip -oq /tmp/rr-skill.zip -d ~/.claude/skills && rm /tmp/rr-skill.zip && echo "RobinReach skill installed."
Preguntas frecuentes

Lo que preguntan los desarrolladores

¿Qué es un servidor MCP?

MCP (Model Context Protocol) es un estándar abierto para conectar asistentes de IA con apps. Un servidor MCP ofrece herramientas que el asistente puede llamar. El servidor de RobinReach ofrece 79, que cubren publicaciones, medios, analíticas, comentarios y más.

¿Qué clientes pueden conectarse?

Cualquier cliente que hable MCP por HTTP: Claude (web, escritorio y Claude Code), ChatGPT, Codex, Gemini CLI, Cursor, VS Code, Windsurf, n8n y otros, además de tu propio código mediante la Claude API o la OpenAI API. Claude y ChatGPT se conectan iniciando sesión en RobinReach, los demás con una clave API. Los clientes que solo ejecutan servidores locales pueden usar el puente mcp-remote.

¿Cómo me autentico?

Claude y ChatGPT usan OAuth 2.1: el usuario pega la URL, hace clic en Connect, inicia sesión en RobinReach y elige toda la cuenta o una sola marca. El cliente encuentra lo que necesita en /.well-known/oauth-protected-resource, se registra solo en /oauth/register y usa PKCE. Los tokens de acceso duran una hora y vienen con un token de actualización, y la conexión se corta al instante si la persona que conectó pierde su rol de administrador. Cualquier otro cliente usa tu clave API de RobinReach, enviada como token Bearer en la cabecera Authorization o como parámetro api_key en la URL. Genérala en Integraciones dentro del panel. Si regeneras o borras la clave, todos los clientes que la usan pierden el acceso.

¿El servidor no guarda estado?

No guarda estado. No emite ningún ID de sesión y cada petición es independiente, así que puedes llamarlo desde funciones serverless o detrás de un balanceador de carga sin sesiones fijas.

¿Qué plan necesito?

El acceso MCP está incluido en los planes Bloom, Thrive y Scale, los mismos que la API REST. Consulta la página de precios.

¿También hay una API REST?

Sí. La API de RobinReach cubre las acciones principales por REST, con la misma clave. Usa MCP cuando un modelo de IA elige los pasos y REST cuando los elige tu propio código.

¿Una conexión puede gestionar varias marcas?

Con la clave maestra, sí: account_brands las lista y cada herramienta acepta un brand_id. Una clave de marca se limita a una sola marca, lo que es más seguro para dársela a un cliente o a una herramienta con un único fin. Los inicios de sesión desde Claude y ChatGPT funcionan igual: conecta toda la cuenta, o elige la marca de un cliente en "Or connect a single brand" para que la IA solo llegue a esa marca, sin que ninguna clave cambie de manos.

¿Las conexiones antiguas siguen funcionando?

Sí. El servidor ofrecía antes una sola herramienta robinreach, que luego se dividió en herramientas con nombre como posts_create. Los clientes que todavía llaman a la herramienta única siguen funcionando.

¿Qué pasa en un plan sin acceso?

Cada petición devuelve un error JSON-RPC que explica que MCP necesita un plan con acceso a la API, para que el cliente pueda mostrar un mensaje claro en lugar de fallar sin avisar.

¿Puede mi agente preguntar antes de publicar?

El servidor ya indica a cada cliente que confirme antes de usar sus 9 herramientas irreversibles. Los clientes añaden sus propias confirmaciones encima, y puedes mantener las publicaciones como borradores o enviarlas a aprobación en lugar de programarlas. La página de integraciones de IA lo explica para quien no es desarrollador.

Apunta tu agente a una sola URL

Pega la URL, inicia sesión o añade una clave, y tu agente podrá gestionar 13 redes.

El acceso MCP está incluido en Bloom, Thrive y Scale.