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 inyectaAuthorization: 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/toen lugar derange) y añadir filtros comomodel,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.