Integraciones

Formas listas para usar de llamar a la API: fragmentos de código en siete lenguajes, la colección de Postman y el servidor MCP para clientes de IA.

Ejemplos de código de cliente

Examples in multiple languages are shown in the code panel on the right.

Postman: descarga y entorno

Usa esta colección de Postman seleccionada para explorar la API con rapidez y seguridad. Refleja los ejemplos y la semántica de métricas descritos arriba (totales del período con arrastre persistente, proporción de sumas del período para la visibilidad y propagación para avg_position), para que puedas validar las respuestas y crear prototipos de integraciones en minutos.

Descargar la colección

Descarga la colección de Postman de LLMPulse API v1

Importa el archivo en Postman (Archivo → Importar) y, a continuación, selecciona o crea el entorno que se muestra abajo. La colección usa variables, así que no tendrás que editar cada solicitud manualmente.

Entorno (marcadores de posición, mantén tus ID privados)

Crea un entorno nuevo en Postman con las siguientes variables. Usa marcadores de posición en lugar de ID o claves reales en cualquier contexto público (documentación, capturas de pantalla, etc.):

Cómo se usa:

  • La colección lee {{base_url}} e inyecta Authorization: Bearer {{api_key}} automáticamente.
  • Configura {{project_id}} con un proyecto que poseas; {{competitors}} es un CSV (p. ej., 1,2,3).
  • Puedes sobrescribir estos valores por solicitud (p. ej., enviar from/to en lugar de range) y añadir filtros como model, collection_id, country_code, language_code.
  • Mantén tu clave de API solo en tu entorno privado; no la pegues en documentos compartidos.

MCP (integración con IA)

MCP (Model Context Protocol) permite a los asistentes de IA como ChatGPT, Claude y Gemini acceder directamente a tus datos de LLM Pulse. Disponible en todos los planes mediante OAuth, sin necesidad de clave de API. Haz preguntas en lenguaje natural y deja que la IA recupere y analice tus datos de visibilidad.

¿Qué es MCP?

MCP es un protocolo abierto que permite a los asistentes de IA conectarse a fuentes de datos externas. En lugar de copiar datos o hacer llamadas a la API manualmente, puedes simplemente hacerle preguntas a tu asistente de IA como «¿Cuál es mi tendencia de visibilidad este mes?» y obtendrá los datos automáticamente.

Endpoint

Tarjeta de servidor

Una tarjeta de servidor pública describe este servidor MCP a los clientes antes de que dispongan de ninguna credencial: el endpoint, su transporte Streamable HTTP, las versiones de protocolo que acepta y la cabecera Authorization que deben enviar. Puedes obtenerla con GET /api/v1/mcp/server-card (no requiere autenticación y no contiene ninguna credencial). También se anuncia en el catálogo de descubrimiento en /.well-known/ai-catalog.json.

Configuración

Recomendado para todos los planes: pega la URL de MCP en tu cliente de IA. El cliente gestiona OAuth automáticamente, sin necesidad de copiar ningún token. La autenticación con clave de API (cabecera Bearer) está disponible a partir del plan Scale para integraciones headless.

¿Tienes problemas para conectarte?

El soporte de MCP y OAuth todavía es desigual entre los clientes de IA, por lo que a veces no se consigue establecer la conexión. A partir del plan Scale, la alternativa más sencilla es dar a tu asistente de IA una clave de API Bearer junto con un enlace a esta documentación de la API. Así podrá consultar todos los endpoints directamente mediante HTTP simple, sin necesidad de configurar ningún cliente MCP.

Herramientas disponibles

Estas herramientas están disponibles para tu asistente de IA.

Live list rendered from Mcp::LlmPulseServer::TOOLS (88 tools registered). The MCP server filters tools/list per user plan.

Herramienta Descripción Plan
list_projects List all projects accessible to the authenticated user. Returns project id and name. All
list_competitors List all competitors for a specific project. Returns competitor id, name, domain, and matching_names (the aliases used for mention matching). With include_project_brand=true a synthetic first row represents the tracked brand itself: its id is the PROJECT id (not a competitor id, so do not pass it to get_competitor_details) and it carries actor_type=project / is_own=true. All
list_collections List all collections (tags) for a specific project. Returns collection id and name. Collections and tags are the SAME underlying object: this returns identical data to list_tags. All
list_tags List all tags for a specific project. Tags and collections are the SAME underlying object in LLM Pulse: this returns identical data to list_collections, and create_collection / assign_prompt_tags(create_missing) write to the same set. All
list_models List all AI models that have data for a specific project. Returns model identifiers (e.g., chatgpt, perplexity, gemini, ai_mode, ai_overview). Note: get_project_details data_coverage already includes this, so a separate call is rarely needed. All
list_locales List all countries and languages that have data for a specific project. Returns lists of country codes (e.g., US, ES) and language codes (e.g., en, es). All
list_sentiments List all sentiment categories with their metric keys, labels, and colors. Used for understanding sentiment data structure. All
list_prompts List prompts for a project with optional filtering by collection, locale, prompt_type, brand_kind, and date range. Returns paginated results with prompt id, prompt_text, tags (the authoritative tag/collection memberships as {id, name} pairs; use this to audit tagging), collection_ids, country_code, language_code, prompt_type, brand_kind, and last_executed_at. The legacy collection_id field can be null even when the prompt HAS tags; never conclude a prompt is untagged from collection_id. All
list_prompt_executions List prompt executions with model, success, execution timing, fan-out queries, and mention/citation presence. duration_ms measures internal processing time of the answer pipeline, NOT the AI model latency, and can be near zero. fan_out_queries is only populated for models/providers that expose query fan-out (mainly chatgpt), null elsewhere. All
list_query_fan_outs List the query fan-out behind your tracked prompts: the sub-queries a model actually issued when answering. view=query (default) returns one row per distinct sub-query with its occurrence count and share of all occurrences; view=prompt returns one row per prompt with how many distinct sub-queries it produced. Use it to find the phrasing models search for, which is often not the phrasing of your prompt. Fan-out is reported mainly by ChatGPT, so an empty result usually means the models in scope do not expose it rather than that nothing was searched. All
list_shopping_products List the shopping results AI answers returned for your tracked prompts: the product cards models surfaced, merged across executions. view=products (default) returns one row per distinct product with its appearance count, price range, rating and whether it is yours; view=merchants returns one row per selling merchant with its product count and price range. Every response also carries a totals block (products, merchants, average price and rating, your products) matching the KPI cards in the app. Shopping results are reported by a subset of models, so an empty result usually means the models in scope do not return product cards for these prompts. Available on Scale and above plans. Scale
list_ads List the paid placements AI answers returned for your tracked prompts. view=advertisers (default) returns one row per advertising domain with its placement count, how many prompts it appeared on, and its average and best position; view=ads returns the individual placements with title, snippet, position and the prompt that triggered them. Every response also carries a totals block (placements, advertisers, your placements and share, average position) matching the KPI cards in the app. Position 1 is the best slot, so a LOWER average position is better. Available on Scale and above plans. Scale
list_reddit_citations List the Reddit content AI answers cite for your tracked prompts. view=subreddits (default) returns one row per subreddit with its citation count, unique authors and positive/negative sentiment split; view=authors returns one row per Reddit author; view=threads returns the individual cited threads with upvotes, comments, average position and dominant sentiment. Reddit is one of the most cited domains in AI answers, so this is the fastest way to see which communities and conversations shape what models say about a brand. Available on Growth and above plans. Growth
list_owned_media List the owned-media content AI answers cite: YouTube videos and channels, social posts and profiles (Instagram, Facebook, TikTok, LinkedIn), and app-store listings. A provider is required. Each row carries a `yours` flag telling you whether the content belongs to the account own connected profile, so you can compare your presence against everyone else cited on the same platform. view=own_citations returns the raw citations of the connected profile only, and stays empty until a profile is connected. For Reddit use list_reddit_citations instead. Available on Growth and above plans. Growth
list_reputation_reports List the reputation reports generated for a project, newest first. Each row carries the report id (pass it to get_reputation_report), its status, and which analyst models produced data for it. Pending and failed reports are included on purpose: whether this month ran at all is often the question being asked. Requires reputation monitoring to be enabled on the account. Reputation Access
get_reputation_report Get the scores of one reputation report as flat rows: one row per (analyst model, brand, dimension, attribute) with its 0-100 score and the reasoning the model gave. Call list_reputation_reports first to get a report id. Scores come from several analyst models independently, so compare models rather than averaging them blindly, and filter with model= when you want a single view. Requires reputation monitoring to be enabled on the account. Reputation Access
list_studies List the custom AI studies defined on the account, newest first. A study is an account-defined analyst report over any set of subjects (brands, sectors, topics) and any set of dimensions. Studies belong to the ACCOUNT, not to a project, so project_id is an optional filter rather than a required argument. Pass a study id to get_study for its subjects and report history. Requires reputation monitoring to be enabled on the account. Reputation Access
get_study Get one custom AI study: its brief, the subjects it compares, the dimensions it scores them on, and its report history. Use the report ids from the `reports` array with get_study_report to read the actual scores. Requires reputation monitoring to be enabled on the account. Reputation Access
get_study_report Get the scores of one custom-study report as flat rows: one row per (analyst model, subject, dimension, attribute) with its 0-100 score and the reasoning the model gave. Call get_study to list a study reports and pick an id. Scores come from several analyst models independently, so compare models rather than averaging them blindly. Requires reputation monitoring to be enabled on the account. Reputation Access
list_mentions List OWN mentions of the project brand only (no competitors). Use list_all_mentions for brand + competitors with an actor_type field. Returns paginated results with mention id, name, prompt_id, prompt_execution_id, and created_at. All
list_citations List OWN URL citations of the project brand only (no competitors; effectively one citation per answering response). Use list_all_citations for brand + competitors, and list_sources / list_citation_groups for per-URL granularity with url_sha256. position 0 means unranked/background (real positions are 1-indexed). Returns paginated results with citation id, name, domain, prompt_id, prompt_execution_id, url, position, and created_at. All
list_competitor_mentions List competitor mentions for a project with optional competitor and prompt filters. All
list_competitor_citations List competitor citations for a project with optional competitor and prompt filters. All
list_all_mentions List all mentions (brand + competitor) for a project with actor_type field. Returns paginated results combining project and competitor mentions. The competitors filter narrows which competitor rows are included, but project rows are ALWAYS included. All
list_all_citations List all citations (brand + competitor) for a project with actor_type field. Returns paginated results combining project and competitor citations. The competitors filter narrows which competitor rows are included, but project rows are ALWAYS included. position 0 means unranked/background (real positions are 1-indexed). All
list_sources List sources (URLs cited by AI models) for a project with optional filtering. Returns paginated results with source id, prompt_execution_id, domain, url, position, source_type (owned, competitor or third_party), and app-store link flags. All
list_citation_groups List grouped citation intelligence data by URL, domain, or host, including citation rates, model breakdowns, and page-cache awareness. Rows are compact by default; pass include_page_details=true to embed crawled page content details (url view only), and keep per_page moderate when you do. All
get_cited_url_details Get detailed URL-level citation intelligence for one cited URL, including page-cache metadata and mention evidence. All
list_cited_url_occurrences List every prompt execution where a specific cited URL appeared, with prompt text, answer preview, model, and citation position. All
get_cited_url_content Get sanitized cached page content plus page-cache metadata and mention snippets for one cited URL. Text longer than 15,000 characters is truncated (content.text_truncated=true, full length in content.text_total_chars); use max_chars to shrink the slice and offset to page through the rest. All
get_mentions_by_citing_domain For responses where a given source domain is cited, returns the share of those responses that mention the brand vs each competitor (brand + competitors sum to 100% per domain). Accepts a list of domains so the whole matrix is one call. Answers questions like "when gmac.com is cited, which brands get mentioned?". All
get_timeseries Get time series metrics data for a project. Supports metrics like mentions, citations, mention_rate (also accepted as visibility), citation_rate, responses, ai_visibility_score (position-weighted visibility, unbounded: it can exceed 100 when several brand mentions rank high in one period), avg_position, net_sentiment, and sentiment breakdowns. Returns data points over time for the project; competitor series are only included when you pass competitors (ids from list_competitors). With week/month granularity the first bucket covers only the in-window days (partial periods are clipped, not back-filled). When comparing the project against competitors 1:1, set brand_kind=non_brand (the in-app Overview default) so brand-focused prompts do not skew the comparison. All
get_summary Get summary statistics for metrics over a time period. Returns one row per metric and actor with total (count metrics are summed; percentage/rate metrics are averaged across periods, never summed), min, max, and last values. Use group_by to get one summary per AI model or per collection in a single call instead of fanning out multiple filtered calls. When comparing the project against competitors 1:1, set brand_kind=non_brand (the in-app Overview default) so brand-focused prompts do not skew the comparison. All
get_prompt_summary Get per-prompt aggregated metrics (responses, mentions, citations, mention_rate, citation_rate, avg_mention_position, avg_position) with pagination and sorting. mention_rate (also accepted as visibility) is the percentage of responses mentioning the brand. Returns brand-only metrics broken down by individual prompt. Supports breakdown=model to get per-prompt per-model metrics. Field notes: visibility and mention_rate are the same value (historical alias, both kept for compatibility); avg_mention_position is the average rank of the brand among the brands named WITHIN the answers that mention it, and it is the position behind ai_visibility_score; avg_position is a different thing, the average rank of the brand cited URL among the URLs an answer cited (background citations excluded). All
get_sov Get Share of Voice metrics - shows the relative share of mentions between the project and competitors over time. Returns current share percentages and breakdown by actor, plus a periods array with the sample size (mentions) and a partial flag per bucket: shares in a bucket with 1-3 mentions read as 100/50/33.33 and should be treated as low-sample noise, and partial buckets are still collecting data. Use group_by=model to get the per-model share comparison in ONE call instead of one filtered call per model. For a fair brand-vs-competitor comparison, set brand_kind=non_brand (the in-app Overview default): brand-focused prompts skew the share toward the brand they name. All
get_top_sources Get top performing source domains for a project. Returns domains ranked by citing responses; avg_visibility (alias avg_mention_rate) is the percentage of all responses in the window that cite the domain at least once (bounded 0-100). It is a property of the DOMAIN, not of the brand: never present it as the brand's visibility "on" or "within" that domain (use get_mentions_by_citing_domain for brand share conditioned on a citing domain). All
get_ai_model_summary Per-AI-model breakdown of mentions, citations, sentiment and weighted visibility for the brand and competitors, in a single call. USE THIS for any question that compares performance across AI models ("which model do I rank best on?", "ChatGPT vs Perplexity vs Gemini", "where am I most visible across models?"). Prefer this over calling get_summary multiple times with different model filters: get_ai_model_summary returns all models at once and avoids hitting the step limit. The in-app AI Model Insights Overview tab defaults to non-brand prompts, so pass brand_kind=non_brand to match its numbers and for fair brand-vs-competitor comparisons. NOTE: mentions_market_share values are the independent mention rate of each actor within a model (mentions divided by the responses of that model); one response can mention several actors, so the values do NOT sum to 100 and must not be charted as a share pie. For a true share partition use get_sov. All
get_ai_model_position_distribution Get the AI Model Insights position-distribution comparison for the project brand and an optional competitor. For a fair head-to-head, pass brand_kind=non_brand (the in-app AI Model Insights default): brand-focused prompts skew positions toward the brand they name. When brand2 is omitted it defaults to the largest competitor by mentions. Weekly/monthly buckets are aligned to full calendar periods: the first bucket covers the whole week/month containing the range start (so its counts can differ from get_timeseries, which clips partial periods). All
get_ai_overview_results Get aggregate Google AI Overview result availability over time plus per-prompt breakdowns. All
list_answers List AI answers/responses with their content, prompt text, model, and basic metrics. Returns paginated results; response text is truncated to 1,500 characters per row by default (response_truncated flags it). Pass full_text=true for up to 10,000 characters per row, or use get_answer for one complete response. Pass query to full-text search the response texts: total then equals the exact number of matching responses (use it for counting questions instead of reading pages), and each row returns a short snippet around the match instead of the full text. All
get_answer Get detailed information about a single AI answer/response including full response text, mentions, citations, sentiments, and sources. All
list_detailed_sentiments List detailed sentiment analysis records with comments, topics, scores, and competitor information. This is different from list_sentiments which only returns sentiment categories. All
list_recommendations List read-only recommendation runs for a project, including type, status, summary, and counts. All
get_recommendation Get full details for one recommendation run, including items, source references, and report data. Each item carries source_refs codes (e.g. P1, C2); resolve them against the report_data indices (prompts_index, citations_index, own_content_index), which are always included once per response. All
get_project_details Get detailed information about a project: matching names, industry, business model, primary products, target audience, prompt counts per brand focus (brand / brand_other / non_brand), and data_coverage (the AI models, countries and languages that actually have data). Call this right after list_projects: it replaces separate list_models / list_locales calls and tells you the non_brand prompt pool size before filtered queries. All
get_competitor_details Get detailed information about a competitor including matching names, mobile app IDs, and icon URLs. All
create_prompts Add prompts to a project in bulk. Validates against available prompt limits. Skips duplicates. New prompts run ONCE within minutes of creation (so results appear fast) and then join the weekly schedule. brand_kind / prompt_type are classified asynchronously; fetch them via list_prompts a little later. In the response, prompts_available=null means unlimited. All
delete_prompt Delete a prompt from a project (same as Delete on the Prompts page). IRREVERSIBLE: the prompt disappears immediately, frees a prompt slot, and its whole history (executions, mentions, citations, sentiment, and any GEO Writer tasks created for this prompt) is purged by a background job. Never call this speculatively: only when the user explicitly asked to delete this specific prompt, and confirm the exact prompt text with them first. In the in-app chat the user gets a Confirm/Cancel card; external MCP clients delete immediately. Find prompt ids via list_prompts. All
create_intelligence_task Create a GEO Writer (formerly Content Intelligence) task. task_type selects what is produced: "brief" = content brief/outline for a topic, "create" = full draft article, "update" = rewrite/improve existing content (requires existing_content or existing_content_url), "pr_insights" = PR/media angle analysis, "custom" = freeform output driven by user_instructions. Pass prompt_id to base the task on an existing prompt, or omit it for agentic mode (then custom_topic or user_instructions is required). Returns task ID for polling status with get_intelligence_task. All
create_competitor Add a competitor to a project. Validates against the max competitor limit of the plan. Triggers async association recalculation: the competitor row returns processing=true immediately, and mentions/SOV/dashboards include it once the recalculation finishes (typically minutes, longer on large projects). competitors_remaining=null in the response means unlimited. All
update_competitor Update a competitor: brand_name, matching_names (the name variants used to detect mentions; REPLACES the whole list), and/or chart color. The domain is immutable after creation (delete and re-create to change it). Changing brand_name or matching_names re-runs mention/citation matching in the background: the competitor shows processing=true for a few minutes and edits are blocked meanwhile. Find competitor ids via list_competitors. All
delete_competitor Delete a competitor from a project (same as Delete on the Competitors page). IRREVERSIBLE: the competitor disappears immediately, frees a competitor slot, and its tracked data (mentions, citations, sentiment, share-of-voice history) is purged by a background job. Never call this speculatively: only when the user explicitly asked to remove this specific competitor, and confirm the brand with them first. In the in-app chat the user gets a Confirm/Cancel card; external MCP clients delete immediately. Find competitor ids via list_competitors. All
create_collection Create a tag (Collection) in a project. Optionally attach existing prompts in the same call. Tag name is unique per project (case-insensitive). All
update_collection Rename a tag/collection or change its description (tags and collections are the same object). Prompt membership is managed separately via assign_prompt_tags / remove_prompt_tags. Find tag ids via list_tags / list_collections. All
delete_collection Delete a tag/collection from a project (same as Delete on the Tags page; tags and collections are the same object). IRREVERSIBLE for the tag itself, but the prompts inside it are NOT deleted: only the grouping disappears. Never call this speculatively: only when the user explicitly asked to delete this specific tag, and confirm its name with them first. In the in-app chat the user gets a Confirm/Cancel card; external MCP clients delete immediately. Find tag ids via list_tags / list_collections. All
assign_prompt_tags Attach tags (collections) to existing prompts in bulk. BATCH your calls: pass ALL prompt_ids sharing the same tag set in ONE call (up to 500 prompt_ids and 50 tags per call); never call once per prompt. Provide tag_ids for known tags, or tag_names to look up by name (case-insensitive). Pass create_missing=true to create tag names that do not exist yet. Idempotent: re-running with the same input does not duplicate assignments. All
remove_prompt_tags Detach tags (collections) from existing prompts in bulk: the inverse of assign_prompt_tags, e.g. to undo a tagging mistake. BATCH your calls: pass ALL prompt_ids sharing the same tag set in ONE call (up to 500 prompt_ids and 50 tags per call). Only removes the prompt-tag links; never deletes the tags themselves or the prompts. Idempotent: links that do not exist are reported as skipped. All
list_annotations List the timeline annotations of a project (the markers shown on dashboard charts), newest first. Includes manual annotations, project automations, GEO test markers, and platform-wide events. The origin field distinguishes them; editable tells you whether update_annotation / delete_annotation can touch the row. Filter by date window (from/to or range) and annotation_category_id. Available on every plan. All
create_annotation Mark a date in the project timeseries with a title + description. Useful when the agent detects a notable change (campaign launch, product update, news event) and wants to flag it. Annotations are scoped to the project and visible to all members. All
update_annotation Update a timeline annotation (title, description, date, color, category). Only user-created annotations that belong to your own user can be updated (system annotations and other members annotations cannot; check the editable flag in list_annotations). Available on every plan. All
delete_annotation Delete a timeline annotation from a project. Only user-created annotations that belong to your own user can be deleted (system annotations and other members annotations cannot). Never call this speculatively: only when the user explicitly asked to delete this specific annotation. In the in-app chat the user gets a Confirm/Cancel card; external MCP clients delete immediately. Find annotation ids via list_annotations. Available on every plan. All
launch_recommendations Launch a new AI-powered recommendations generation for a project (same engine as the in-app Recommendations page). This is a REAL, quota-consuming action: it spends the project weekly recommendation-item budget (shared across all types, admins exempted) and runs a 1-3 minute background job. Never call it speculatively: only when the user explicitly asked to (re)generate recommendations, and after telling them it consumes the weekly budget. In the in-app chat the user gets a Confirm/Cancel card first; external MCP clients launch immediately, so get the user approval in YOUR conversation before calling. Track progress via get_recommendation / list_recommendations (status pending -> processing -> completed). All
create_technical_geo_report Run the full technical GEO analysis bundle (crawlability, schema, content readiness, discoverability, site structure, robots.txt, llms.txt, agent readiness, AI visibility) for a given URL + country. This is a REAL, quota-consuming action: it launches multiple scraping and AI analysis jobs (3-10 minutes, counts against a daily report cap per account). Never call it speculatively: only when the user explicitly asked for a technical GEO analysis, and tell them it consumes report quota. In the in-app chat the user gets a Confirm/Cancel card first; external MCP clients launch immediately, so get the user approval in YOUR conversation before calling. Poll each returned report id with get_technical_geo_report; do not ask the user to paste the finished report back into the chat. All
list_technical_geo_reports List technical GEO reports for a project and report type, newest first. Use agent_readiness for the AI/Agent Readiness report. Results include report ids, status, batch id, target, score when available, and timestamps. Call get_technical_geo_report with an id to poll or read the full completed analysis. All
get_technical_geo_report Get one technical GEO report by type and id, including its current status and the full result_data once completed. Use agent_readiness for the AI/Agent Readiness report. Poll this tool after create_technical_geo_report; if poll_after_seconds is present, the report is still running. Never launch a duplicate report just to check progress. All
list_intelligence_tasks List GEO Writer (formerly Content Intelligence) tasks for a project with optional filtering by type and status. All
get_intelligence_task Get a GEO Writer (formerly Content Intelligence) task by ID, including status and result data when completed. All
get_agent_traffic Get aggregated AI bot traffic for a project from Cloudflare or uploaded server logs. Returns per-day request counts grouped by bot or by company. Available on Scale and above plans. Scale
list_agent_bots List the catalog of known AI bots (crawlers, assistants, search fetchers) and their parent companies. Use this to discover valid bot slugs and company names for the bot/company filters of get_agent_traffic. Returns each bot's slug, display name, company, category, and description. Scale
get_ai_traffic AI traffic for a project: the human visits arriving from AI assistants (ChatGPT, Perplexity, Gemini, Claude, Copilot, Grok, Mistral, Meta AI, DeepSeek), measured from the connected web analytics provider (Google Analytics 4, Adobe Analytics, PostHog, Plausible or Piano). Returns per-day users, sessions and conversions grouped by AI source, plus totals and conversion rate. Requires a connected web analytics provider. Available on Scale and above plans. Scale
get_search_console_summary Google Search Console headline totals (impressions, clicks, CTR, average position) for a project over a date range. Pass dimension=country or dimension=device to also get the breakdown aggregated over the range (country values are lowercase ISO alpha-3 as returned by Google, e.g. usa, gbr, plus the zzz unknown-country sentinel). The response data_through field marks the last day with synced data: Google publishes with a 2-3 day lag, so later days are missing, not zero. Requires the project to have a Search Console connection. Growth
get_search_console_timeseries Google Search Console property-wide time series (impressions, clicks, CTR, average position) bucketed by day, week or month. The response data_through field marks the last day with synced data: Google publishes with a 2-3 day lag, so trailing days are missing rows, not real zero-drops. Requires the project to have a Search Console connection. Growth
get_search_console_queries Top Google Search Console search queries for a project over a date range, ranked by impressions, clicks, CTR or average position, with pagination. Knowingly undercounts anonymized queries; for exact headline numbers use get_search_console_summary. Requires a Search Console connection. Growth
get_search_console_pages Top Google Search Console landing pages for a project over a date range, ranked by impressions, clicks, CTR or average position, with pagination. For exact property totals use get_search_console_summary. Requires a Search Console connection. Growth
create_webhook_subscription Subscribe a public HTTPS URL to a project event. LLM Pulse will POST a signed JSON payload to the URL every time the event occurs (new mention, new citation, execution completed, negative sentiment detected, recommendation or intelligence task completed). Available on Scale and above plans. Deliveries are signed: the X-LLMPulse-Signature header carries sha256=<HMAC-SHA256 hex of the raw body> using the whsec_ secret returned ONCE by this call (store it; it is never shown again; rotating requires delete + recreate). X-LLMPulse-Event and X-LLMPulse-Delivery headers identify the event and delivery. Scale
create_project Create a complete project in one call (fast mode): project fields, prompts (queued for execution), competitors, weekly email subscription. Idempotent via external_identifier (embed accounts). Same plan gates and quotas as the in-app wizard. Use this fast mode when you already have every field; use start_project_draft for the step-by-step wizard with AI suggestions. All
update_project Update a project profile (same fields as Project Settings > General): brand_name, description, industry, business_model (plus business_model_other when it is OTHER), target_audience, primary_products, brand_voice, goals and matching_names. matching_names REPLACES the whole list, so always send the full set including the ones already there (read them first with get_project_details). Changing matching_names re-runs mention/citation matching over the project history in the background, which can move visibility numbers for past weeks; a brand_name change applies to future runs only. Returns an error while a previous rematch is still running. The project name, website URL, country/language, app-store and social profiles are NOT editable here: those stay in Project Settings. In the in-app chat the user gets a Confirm/Cancel card. All
start_project_draft Start the multi-step project-creation wizard. Returns a draft_id plus AI suggestions (name, description, industry, aliases) for the URL. First call for a new URL may take up to 2 minutes; pass suggest=false to skip AI. Drafts expire after 24h and there is no list endpoint, so STORE the draft_id; a lost id means waiting for expiry. Use this wizard when you want AI suggestions step by step; use create_project instead when you already have all fields and want one call. All
get_project_draft Read a project draft: state, current step, accumulated data. include_suggestions returns cached suggestions for the current step (never triggers AI). All
update_project_draft Submit one wizard step (details, prompts, competitors, owned_media). Strict forward gating: a step is only accepted when every previous step is complete; completed steps can be resubmitted. Returns the updated draft plus AI suggestions for the next step (suggest=false to skip). Per-step required fields beyond draft_id+step: details requires name (industry optional but validated); prompts requires a non-empty prompts array of strings within your plan slots; competitors requires an array of {domain, brand_name?, matching_names?} with valid domains within plan limits; owned_media accepts its documented keys. All
finalize_project_draft Create the real project from a completed draft (same effects as create_project). Idempotent: finalizing an already-finalized draft returns the existing project. Re-validates every plan gate and quota. All
list_webhook_subscriptions List active webhook subscriptions for the account, optionally filtered by project. Available on Scale and above plans. Scale
delete_webhook_subscription Delete a webhook subscription by ID. The target URL stops receiving events immediately. Available on Scale and above plans. Scale
get_webhook_sample Get sample webhook payloads for an event type, built from the project's most recent real data (or a static sample when no data exists). Use this to preview the exact payload shape before creating a webhook subscription with create_webhook_subscription. Available on Scale and above plans. Scale
get_account_usage Get the plan, subscription window, quota consumption and API rate limits for the authenticated account. Call this BEFORE any tool that spends quota (create_prompts, launch_recommendations, create_technical_geo_report, create_intelligence_task) so you can tell the user what is left instead of discovering the ceiling by hitting it. An unlimited quota returns limit and remaining as null with unlimited=true. The subscription block is only present for callers who may access Billing & Plans. All
send_feedback Send feedback about LLM Pulse to the product team: a bug report, a feature request, or general product feedback. Use it when the user wants to report a problem or suggest an improvement, or when a tool clearly misbehaved. This channel is one-way (no reply); for questions about how the product works use ask_support instead. All
ask_support Ask the LLM Pulse support assistant a question about the product: features, plans, metric definitions, setup, or API usage. Answers come from the official LLM Pulse knowledge base. Use send_feedback instead to report a bug or request a feature; email support@llmpulse.ai for account-specific issues (billing, invoices). All
get_analysis_playbook Return one of the LLM Pulse guided-analysis playbooks as text. Use it when the user asks in natural language for an audit, a competitor gap analysis, citation opportunities, a reputation review, an explanation of a visibility change, or content briefs, then follow the returned playbook step by step. Clients with MCP prompt support get the same playbooks via prompts/list. All

Protocolo

MCP usa JSON-RPC 2.0 sobre Streamable HTTP. Las solicitudes devuelven una respuesta JSON-RPC. Las notificaciones aceptadas devuelven HTTP 202 con el cuerpo vacío.

Para una guía más sencilla, consulta la página de configuración de MCP.