Skip to main content
Glama

How to connect AccuRanker to Claude Code, ChatGPT and any AI agent

Yes, Claude, ChatGPT and other AI agents can work in your AccuRanker account. AccuRanker has its own ChatGPT app and documents a custom MCP connector for Claude. Cotlet.dev connects your own signed-in AccuRanker account to any AI agent, so you can ask in plain words and the AI adds keywords and lists your ranks for you.

What you can ask

Add these 20 keywords to my acmeplumbing.com domain and track them in Google US on desktop and mobile.

List all keywords for bluebottlebakery.com with their current rank and the change over the last 7 days.

Which of my keywords dropped more than 5 positions since Monday? Show the page that ranks for each.

Add "emergency plumber denver", "water heater repair denver" and "drain cleaning denver" and tag them "Denver services".

Show my 10 keywords with the highest search volume that rank between position 11 and 20.

Related MCP server: DinoRank MCP Proxy

Connect in 2 minutes

Get your API key at https://cotlet.dev/app and export it as COTLET_API_KEY.

Claude Code

claude mcp add --transport http cotlet https://cotlet.dev/mcp/v1 --header "Authorization: Bearer $COTLET_API_KEY"

ChatGPT

Settings → Apps → add connector URL https://cotlet.dev/mcp/v1, then sign in with Cotlet.dev. No API key needed.

Cursor

Copy .cursor/mcp.json from this repo into your project:

{
  "mcpServers": {
    "cotlet": {
      "url": "https://cotlet.dev/mcp/v1",
      "headers": {
        "Authorization": "Bearer ${COTLET_API_KEY}"
      }
    }
  }
}

Run it locally (stdio)

This repo is a real MCP server. It speaks MCP over stdio, lists its AccuRanker tools without any key, and forwards every tool call to the hosted Cotlet.dev server. The hosted URL above stays the recommended way. Use this when your client only starts local servers.

{"mcpServers":{"accuranker":{"command":"uvx","args":["accuranker-mcp"],"env":{"COTLET_API_KEY":"your-key"}}}}

Or with Docker:

docker build -t accuranker-mcp .
docker run -i --rm -e COTLET_API_KEY accuranker-mcp

Tools: accuranker_guide, accuranker_status, accuranker_open, accuranker_read, accuranker_click, accuranker_type, accuranker_close. Without COTLET_API_KEY a tool call answers: "Set COTLET_API_KEY. Get a key at https://cotlet.dev/app".

Command line

Python 3.10+, nothing else to install. From PyPI:

pip install accuranker-mcp        # or run it once: uvx accuranker-mcp connect
accuranker-mcp connect

Or straight from this repo:

export COTLET_API_KEY="your-key"
python3 accuranker_agent.py connect   # ready config for Claude Code, Cursor, ChatGPT
python3 accuranker_agent.py status    # is AccuRanker ready in your Cotlet.dev account
python3 accuranker_agent.py guide     # AccuRanker screens and sign-in link
python3 accuranker_agent.py read      # open AccuRanker, read the page, close the browser
python3 accuranker_agent.py tools     # list Cotlet.dev tools
python3 accuranker_agent.py serve     # start the stdio MCP server (same as no argument)

Questions from AccuRanker users

Does AccuRanker have an API?

AccuRanker has an official API and an official MCP server (checked 23 Oct 2026). The Read API and Write API (both v4) come with API access at no additional cost, but need a developer and an API token. Cotlet.dev works in your own signed-in AccuRanker account, so your AI agent can add keywords and check your rankings with no API key and no code.

How do I connect AccuRanker to ChatGPT?

Add Cotlet.dev as an app in ChatGPT (Settings → Apps, connector URL https://cotlet.dev/mcp/v1), sign in to AccuRanker once in your Cotlet.dev Cloud Browser, and ask ChatGPT in plain words. No code and no AccuRanker API key.

Is there a way to use Claude with AccuRanker?

Yes. In Claude Code run the one-line claude mcp add command above; in the Claude app add https://cotlet.dev/mcp/v1 as a custom connector. Claude then works in your own AccuRanker account.

Is there an AccuRanker MCP server?

Yes, AccuRanker documents its own MCP connector for Claude. Cotlet.dev is also a hosted MCP server that works in your AccuRanker account for you, 24/7, with Claude, ChatGPT, Cursor, Codex, n8n, Make and Zapier.

What is AccuRanker Search Intelligence?

AccuRanker Search Intelligence is AccuRanker's official app in the ChatGPT Plugin directory. Cotlet.dev is another way in: one connector, https://cotlet.dev/mcp/v1, that works in your own AccuRanker account from ChatGPT, Claude and any other AI agent.

Find it on

Also works with


More: https://cotlet.dev/integrations/accuranker-api-mcp-server?utm_source=github&utm_medium=readme&utm_campaign=accuranker

Start free: https://cotlet.dev/signup?app=accuranker&utm_source=github&utm_medium=readme&utm_campaign=accuranker

Available Tools

7 tools
accuranker_clickBInspect

Click a numbered element on the current AccuRanker page.

NameRequiredDescriptionDefault
elementYesElement number from the last read.

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. It does not say whether clicking navigates, changes page state, waits for load, or what happens on an invalid element number.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single front-loaded sentence with no redundant wording. Its length is appropriate for a simple one-parameter click tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple one-parameter tool, the schema adequately documents the sole input and there is no output schema to explain. However, with no annotations, the description remains sparse about the required prior read workflow and the side effects of clicking.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%: the schema already says 'Element number from the last read' with a minimum of 1. The description adds only 'numbered element' and no additional format, range, or workflow semantics beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The verb 'Click' and object 'numbered element on the current AccuRanker page' make the action clear. It does not explicitly contrast with siblings such as accuranker_type or accuranker_read, so it stops short of full sibling differentiation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies the tool operates on the current page and that the element number comes from a prior read, with the schema reinforcing that. It gives no explicit when-to-use guidance versus accuranker_type or the read/open/close tools, and no exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

accuranker_closeAInspect

Close the AccuRanker browser session when the work is done, so credits stop running.

NameRequiredDescriptionDefault

No parameters

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations exist, so the description carries the full behavioral burden. It usefully discloses the cost consequence of not calling it ('so credits stop running'), which is real context beyond the name, but it omits idempotency, what happens if no session is open, and whether any in-flight state is discarded.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One sentence, front-loaded with the action and followed by the reason to call it. Every clause earns its place with no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a parameterless, output-less session-closing tool, the description covers what it does and why it matters. Only edge-case behavior on close (already-closed sessions, errors) is left unstated, which is a minor gap at this complexity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters and the schema is trivially complete, so there is no parameter meaning to add. Baseline of 4 applies; nothing about the description misleads on inputs.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource — 'Close the AccuRanker browser session' — which is clearly distinguishable from siblings like accuranker_open, accuranker_click, and accuranker_type. It does not explicitly name which sibling it complements, but the action is unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides a clear trigger condition: 'when the work is done.' There are no exclusions or named alternatives, but for a session-teardown tool the timing guidance is the decision-relevant information.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

accuranker_guideAInspect

How to work in AccuRanker (add keywords and check your rankings): its screens and the sign-in link. Call this first.

NameRequiredDescriptionDefault
taskNoWhat you want done in AccuRanker, in your words.

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are supplied, so the description carries the full burden. It discloses the content scope (screens, sign-in link, adding keywords, checking rankings) but never states that this is a read-only informational call, whether authentication is needed before using the sign-in link, or what the response looks like given there is no output schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two compact sentences with no filler, and the subject (what the guide covers) is front-loaded. The trailing "Call this first" is the most actionable line but sits at the end rather than leading.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a guidance tool with one optional parameter and no output schema, the description covers the topic but omits how the guide relates to the sibling UI tools (status, open, click, type) that presumably follow it, and what an agent should do after reading the guide.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema already documents the single optional `task` parameter at 100% coverage, so the baseline is 3. The description's mention of "add keywords and check your rankings" loosely hints at the kinds of tasks to pass, but adds no format or phrasing guidance beyond the schema text.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description frames this as a guide covering AccuRanker's screens, the sign-in link, and the keyword/ranking workflow, which distinguishes it from the action siblings (open, click, type, read). It stops short of stating exactly what the tool returns (documentation text vs. a URL), so it is clear but not precise about output.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

"Call this first" gives explicit ordering guidance, which is valuable against six action-oriented siblings. It does not say when not to use it (e.g., once the workflow is already underway) or name alternatives, so it falls short of full alternative routing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

accuranker_openBInspect

Open a AccuRanker page in your signed-in Cloud Browser (default https://app.accuranker.com) to work with add keywords and check your rankings.

NameRequiredDescriptionDefault
urlNoPage to open. Default: https://app.accuranker.com

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full behavioral burden. It usefully discloses that the browser is already signed in (an auth-context detail not in the schema) and that a default URL applies, but it says nothing about whether an already-open page is replaced, whether a new tab is created, or what happens on navigation failure.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

It is a single short sentence, which is appropriately sized, but it is not clean: 'a AccuRanker' is ungrammatical, the use-case clause is broken ('to work with add keywords'), and the default URL is stated twice (description and schema). Tightening would make the intent front-loaded and unambiguous.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-optional-parameter navigation tool with no output schema, the description covers the core action and the signed-in session context. It still leaves state questions unanswered — whether this replaces the current page, returns a handle, or is required before accuranker_read/click/type — which matter for a browser-control tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There is a single optional parameter and the schema already documents it at 100% coverage, including the same default URL. The description only repeats that default, adding no format constraints, relative-vs-absolute URL rules, or path expectations beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description gives a concrete verb and resource: open an AccuRanker page in the signed-in Cloud Browser, with the default target URL named. It implicitly separates itself from siblings like accuranker_read/click/type, which act on an already-open page, but never states that relationship explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The trailing phrase 'to work with add keywords and check your rankings' gestures at when to use it, but it is grammatically garbled and reads as an incomplete use case rather than guidance. There is no statement of prerequisites (e.g., must a session exist first?) or when to prefer a sibling such as accuranker_guide or accuranker_status.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

accuranker_readAInspect

Read the current AccuRanker page: its text and numbered buttons, links and fields.

NameRequiredDescriptionDefault
elementNoRead only inside this element.

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description has to carry the safety profile, and it does signal read-only behavior through 'Read' and by describing returned content. It does not disclose whether element numbers are stable across reads, how long pages are truncated, or whether the read triggers any navigation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with no filler, and the return-content enumeration is placed where it is most useful.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-optional-parameter read tool with no output schema, the description covers the essentials: what is read and what the response contains. Truncation, pagination, and element-number stability are the remaining gaps an agent might need.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the schema already explains that 'element' scopes the read to a single element. The description never mentions the parameter, so it adds no meaning beyond the schema; the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('Read') and resource ('the current AccuRanker page') and enumerates what comes back: text plus numbered buttons, links, and fields. The scope word 'current' implicitly separates it from accuranker_open, though no sibling is named outright.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no explicit when-to-use statement, no exclusions, and no named alternative. The mention of 'numbered buttons, links and fields' implies the read-then-click/type workflow, so usage is inferable but never spelled out.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

accuranker_statusAInspect

Check that your Cotlet.dev account and AccuRanker are ready: account, credits and AccuRanker connection.

NameRequiredDescriptionDefault

No parameters

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description must carry the behavioral burden. It does usefully enumerate the three things verified (account, credits, connection), implying a non-mutating diagnostic, but says nothing about whether it is read-only, whether it can fail with authentication errors, or how readiness is reported.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with the verb and the three checked areas; no filler, no redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter, no-output-schema status tool this is nearly complete — the checked areas are spelled out. The remaining gap is that it doesn't hint at what a result looks like (e.g., ready/not-ready flags or credit counts), which would help an agent interpret the response.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so the schema carries no semantic load and the baseline is 4. The description correctly implies the tool needs no input arguments.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ("Check ... are ready") and names three concrete resources: account, credits, and the AccuRanker connection. It is clearly a diagnostic/health-check tool, distinct in kind from the browser-action siblings (open, read, click, type, close), though it never explicitly contrasts itself with them.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

"Check that ... are ready" implies a pre-flight/readiness usage, but the description never states when to call it — e.g., before running other AccuRanker tools — nor any exclusions or alternatives such as accuranker_guide. The usage context is inferable only.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

accuranker_typeBInspect

Type text into a numbered field on the current AccuRanker page.

NameRequiredDescriptionDefault
textYesText to type.
elementYesField number from the last read.

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. It says text is typed into a field, but does not explain whether existing text is replaced, whether typing triggers page events or submission, what happens on invalid field numbers, or any permission requirements.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single efficient sentence with the action and target front-loaded. There is no redundant or filler wording.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple two-parameter input action, the description covers the core operation and the schema fully documents parameters. However, without annotations or an output schema, it leaves out important behavioral context such as prerequisite state, effect on existing field text, and failure behavior.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so both parameters are already documented in the input schema. The description reinforces the idea of a numbered field on the current page, but adds little semantic detail beyond what the schema already provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description gives a specific verb and target: type text into a numbered field on the current AccuRanker page. It is clearly distinct from read and click operations, though it does not explicitly contrast itself with sibling tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage by saying it types into a numbered field on the current page, which suggests a prerequisite of having a field number from a prior read. It does not state when to use this instead of click, read, or other siblings, nor does it mention exclusions or prerequisites directly.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 7 tool updatesv1.1.0
    • First observedaccuranker_click
    • First observedaccuranker_close
    • First observedaccuranker_guide
    • First observedaccuranker_open
    • First observedaccuranker_read
    • First observedaccuranker_status
    • First observedaccuranker_type

TDQS

A3.7/5.0

Scored across 7 tools

Disambiguation5/5

Each tool has a clearly distinct role in a browser automation workflow: guidance, status check, open, read, click, type, and close. There is no meaningful overlap between reading page state, clicking elements, and typing into fields.

Naming Consistency4/5

All tools use the consistent accuranker_ prefix, and most names are concise action verbs. accuranker_guide and accuranker_status are noun-like exceptions, but they remain understandable and predictable.

Tool Count5/5

Seven tools are well-scoped for a guided browser session in AccuRanker. Each tool supports a necessary step in the workflow without unnecessary surface area.

Completeness4/5

The set covers the essential browser-session lifecycle: guide, readiness check, open, inspect, interact, and close. Minor gaps such as explicit navigation, scrolling, or waiting controls exist but can usually be handled through links, clicks, and page reads.

Maintenance

ActivityMaintained
ResponsivenessNo recent community issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    C
    quality
    D
    maintenance
    Connects AI assistants to SE Ranking's SEO and project management APIs to enable natural language queries for keyword research, backlink analysis, and technical audits. It supports comprehensive tasks including competitive analysis, domain traffic tracking, and AI search visibility monitoring.
    100
    1
    Apache 2.0
  • F
    license
    Not graded
    quality
    D
    maintenance
    Enables Claude.ai to use DinoRank's SEO tools (keyword research, visibility, linkbuilding, etc.) via an OAuth proxy that protects your API key.
    -
  • A
    license
    Not graded
    quality
    B
    maintenance
    SEOmatic's AI SEO agents in your AI assistant. Read your own Google Search Console data, keywords, local rank tracking and AI visibility, run site audits, and prepare SEO fixes that go live only after you approve them. Works in Claude, ChatGPT, Gemini, Cursor and Cline. Endpoint: https://app.seomatic.ai/api/mcp (OAuth sign-in, no key to paste).
    1
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables AI assistants to query and manage Google Ads accounts, covering reporting metrics like ROAS, CTR and CPC, custom GAQL queries, keyword research, and campaign management such as creating campaigns, ad groups, ads and targeting. It connects Claude, ChatGPT, Cursor and other MCP clients to Google Ads data through a hosted remote server with OAuth.
    MIT