Organiq

Connector documentation

Version 0.3.0. MCP server (Streamable HTTP, POST only) at https://organiqgeo.com/mcp. Every tool is read-only (readOnlyHint: true).

Authentication

Units and periods

clicks/impressions are integers; ctr is a fraction 0–1 (0.052 = 5.2%); position is an impression-weighted average (lower is better); dates are yyyy-mm-dd. Default period: 28 days ending on the last synced date (Search Console lags about 3 days). Default comparison: the previous window of the same length. Every response returns site, period, comparison, filters and units.

Tools (18)

NameWhat it does / when to use itParameters
get_capabilities
public
What Organiq provides
Returns a factual overview of this connector: what data it holds (Google Search Console synced daily into Organiq, plus GA4 referral sessions from AI assistants), the list of tools with when to use each, units, default periods, how to connect an account (OAuth or API key), rate limits and example questions. Works without signing in. Use it first when you do not know what this server can answer. / Visão geral factual do conector, sem login: dados, ferramentas, unidades, como conectar, limites.language
get_ctr_benchmark
public
Generic CTR-by-position benchmark
Returns the generic organic click-through-rate curve by Google position (1–20, fraction 0–1) used by score_opportunities and find_page_poaching_opportunities as the fallback when a property lacks its own volume, optionally interpolated for a fractional position. No account needed; no property data involved. Use it to estimate expected clicks for a position or to explain a CTR gap. / Curva genérica de CTR por posição, sem login.position, impressions
check_connection
public
Connection status
Reports whether this request is authenticated and, if so, which Organiq account it uses (name, plan, how it authenticated), how many Search Console properties are available with their data coverage, and what is missing (no account, no properties, no GA4) with the URL that resolves each gap. Without credentials it explains how to connect. Use it when a tool returned unauthorized/site_not_found or before a first analysis. / Diz se há conta, propriedades, plano e o que falta, com a URL para resolver.—
list_sites
Properties in the account
Lists the Search Console properties synced for the signed-in account: id, siteUrl (Search Console format), displayName, tags, branded_terms (used by the brand filter), whether GA4/Bing are mapped and the data coverage (dataFrom/dataTo, web search). Use it first when you do not know the exact name of a site or need the date range available. Default: visible properties only. / Propriedades da conta com cobertura de dados.includeHidden
get_site_summary
Property summary
Totals of clicks, impressions, CTR and average position for one property over the period, with the comparison period and the change (absolute, Pct as fraction, ctrPoints in percentage points, position difference where negative means improvement). Accepts all filters (country, device, brand, page, query). Start here for "how is site X doing". / Resumo da propriedade com comparação.site, days, startDate, endDate, compare, searchType, country, device, brand, pageContains, query
query_top_queries
Top queries
Search queries of one property over the period, aggregated and sorted. Use for "what people search to find us", growth/decline lists and ranking changes. Each row has clicks, impressions, ctr, position for the period and, with a comparison, prevClicks/prevImpressions/prevCtr/prevPosition plus clicksChange/clicksChangePct/positionChange (keys present in only one period show zeros in the other). sort: clicks (default), impressions, ctr, position (lowest first), growth (largest click gain vs comparison first) or decline (largest loss first). For ctr/position use minImpressions >= 20 to avoid noise. / Queries da propriedade, agregadas e ordenadas.site, days, startDate, endDate, compare, searchType, country, device, brand, pageContains, query, limit, sort, minImpressions
query_top_pages
Top pages
Pages (URLs) of one property over the period, aggregated and sorted. Use for best/worst pages and pages that gained or lost clicks. Each row has clicks, impressions, ctr, position for the period and, with a comparison, prevClicks/prevImpressions/prevCtr/prevPosition plus clicksChange/clicksChangePct/positionChange (keys present in only one period show zeros in the other). sort: clicks (default), impressions, ctr, position (lowest first), growth (largest click gain vs comparison first) or decline (largest loss first). For ctr/position use minImpressions >= 20 to avoid noise. / Páginas da propriedade, agregadas e ordenadas.site, days, startDate, endDate, compare, searchType, country, device, brand, pageContains, query, limit, sort, minImpressions
query_countries
By country
Countries (ISO-3166-1 alpha-3, lowercase, e.g. bra) of one property over the period. Each row has clicks, impressions, ctr, position for the period and, with a comparison, prevClicks/prevImpressions/prevCtr/prevPosition plus clicksChange/clicksChangePct/positionChange (keys present in only one period show zeros in the other). sort: clicks (default), impressions, ctr, position (lowest first), growth (largest click gain vs comparison first) or decline (largest loss first). For ctr/position use minImpressions >= 20 to avoid noise. / Por país.site, days, startDate, endDate, compare, searchType, country, device, brand, pageContains, query, limit, sort, minImpressions
query_devices
By device
Devices (MOBILE, DESKTOP, TABLET) of one property over the period. Each row has clicks, impressions, ctr, position for the period and, with a comparison, prevClicks/prevImpressions/prevCtr/prevPosition plus clicksChange/clicksChangePct/positionChange (keys present in only one period show zeros in the other). sort: clicks (default), impressions, ctr, position (lowest first), growth (largest click gain vs comparison first) or decline (largest loss first). For ctr/position use minImpressions >= 20 to avoid noise. / Por dispositivo.site, days, startDate, endDate, compare, searchType, country, device, brand, pageContains, query, limit, sort, minImpressions
get_timeseries
Time series
Clicks, impressions, CTR and position per day, week (Monday as key) or month (yyyy-mm) over the period, with filters. Use for trend, seasonality and to locate the date of a drop. Days without data are omitted. / Série temporal por dia, semana ou mês.site, days, startDate, endDate, searchType, country, device, brand, pageContains, query, granularity
get_breakdown
Brand split and position bands
Splits the period's traffic into branded/nonBranded (by the property's branded_terms) and into position bands (1-3, 4-10, 11-20, 21+) with impressions and clicks per band, plus queryCount. Position of each query = impression-weighted average over the period. Use for "how much of our traffic is brand" and "how much sits on page 2". / Marca × sem marca e faixas de posição.site, days, startDate, endDate, searchType, country, device, brand, pageContains, query
get_annotations
Annotations
Events annotated in the period for the property and globally: deploys, content changes, manual notes and Google algorithm updates (category "algo_update"). Use to correlate drops or gains with causes. Default: last 90 days. / Anotações e algo updates do período.site, days, startDate, endDate
get_ai_traffic
Traffic from AI assistants (GA4)
Referral sessions from AI assistants (chatgpt.com, perplexity.ai, gemini, copilot, claude…) according to GA4 (dimension ai_source): per source (sessions, activeUsers, engagedSessions, keyEvents) for the period and the comparison, totals and daily series. site also accepts "all" for the whole account. hasGa4=false means the property has no GA4 mapped. Limitation: Search Console does not separate clicks from AI Overviews / AI Mode; only referral traffic is measurable. / Sessões vindas de IAs segundo o GA4.site, days, startDate, endDate, compare
get_ctr_curve
Own CTR curve vs benchmark
The property's real CTR by position (bucket = round(position), 1–20, impression-weighted) compared with the generic benchmark (31.7% at position 1 … 18.6% at 3 … 2.0% at 10). deltaPoints in percentage points (negative = below expected: likely title/meta problem); reliable = bucket with enough impressions. Use to find where titles underperform. / Curva de CTR própria × benchmark.site, days, startDate, endDate, searchType, country, device, brand, pageContains, query, minImpressions
find_decaying_content
Decaying content
Pages (or queries) that lost clicks between a BASELINE and the RECENT period. Recent = days/startDate/endDate; baseline = compare (previous = window before, year = one year earlier) or explicit comparisonStartDate/comparisonEndDate (for slow decay compare with 6–12 months ago). Classifies the drop: severe > 50%, moderate 20–50%, mild < 20%; sorted by absolute clicks lost; pattern hints the diagnosis (position_slipped, impressions_collapsed, ctr_dropped, disappeared, mixed). Use for "which pages are dying" and refresh candidates. / Conteúdo em decaimento.site, days, startDate, endDate, compare, searchType, country, device, brand, pageContains, query, comparisonStartDate, comparisonEndDate, dimension, minBaselineClicks, limit
analyze_cannibalization
Query cannibalization
Queries where 2+ pages of the property compete for the same search in the period. Per cluster: totals, Shannon entropy of impressions across pages (bits; higher = more even split = worse; level high >= 1.5, medium >= 1.0), normalized (0–1), winner (most clicks; tie: best position) and the contenders with clicks/impressions/ctr/position/impressionShare. Sorted by entropy and impressions. Protocol/host/hash variants of one URL are canonical hygiene, not cannibalization; brand + home + deep page is usually sitelinks. Use when asked which page should rank for a keyword. / Canibalização de queries.site, days, startDate, endDate, searchType, country, device, brand, pageContains, query, minImpressions, minPages, limit
score_opportunities
Opportunity score (CTR gap)
Queries between minPosition and maxPosition whose CTR is below the expected CTR for their position. expectedCtr comes from the property's own curve (ctrSource "own", when the bucket has volume) or from the benchmark; ctrGap = expected − ctr (fraction); lostClicks = impressions × gap; score 0–100 log-normalized by the largest lostClicks (level high >= 80, medium >= 60). Use for title/meta-description quick wins. / Oportunidades por CTR abaixo do esperado.site, days, startDate, endDate, searchType, country, device, brand, pageContains, query, minImpressions, minPosition, maxPosition, limit
find_page_poaching_opportunities
Striking distance (page poaching)
Queries just outside the top (default positions 4–20) with the estimated click gain if they reached the CTR of the target position (default 3 → 18.6% benchmark, or the property's own CTR at that position when it has volume: see ctrSource). estimatedGain = max(0, round(impressions × (targetCtr − ctr))). Sorted by impressions (default) or by gain. Use for "what is close to page one / top 3". / Queries perto do topo com ganho estimado.site, days, startDate, endDate, searchType, country, device, brand, pageContains, query, minPosition, maxPosition, targetPosition, minImpressions, sort, limit

Errors

Always JSON: { "error": { "code", "message", "nextStep", "docsUrl" } }. Codes: unauthorized (HTTP 401 when the credential is missing or invalid), insufficient_scope (403), site_not_found, no_data, invalid_argument, plan_limit (402: the account plan does not cover the request, e.g. history older than the plan window; docsUrl points to the plans page), rate_limited (with retryAfterSeconds), internal.

Limits

Per account: 60 calls per minute and 1000 per hour; the rate_limited error says which window was exceeded and how many seconds to wait. Per IP: 120 requests/min on /mcp, 60/min on /oauth/*. Responses are bounded by limit (default 25–50, maximum 500–1,000).

Skills

Playbooks that name the tools, published at /.well-known/agent-skills/index.json and in the organiq plugin for Claude Code:

Data and privacy

The server reads only the properties of the authenticated account. It never receives the conversation: only the tool arguments (property, dates, filters). Each call is logged (tool name, duration, account) for operations and limits. Privacy policy · Terms · support: youssefpmat@gmail.com.