Skip to main content
Rezolve Ai

MCP Server

Connect Rezolve Ai to Cursor, VS Code, or Claude over the Model Context Protocol and call 37 tools from your assistant.

Rezolve Ai runs inside any app that speaks the Model Context Protocol (MCP). Once connected, your assistant can read the Rezolve Ai documentation and call Rezolve Ai tools directly: run the Contextual Enrichment Engine, track jobs, score a feed, manage webhooks, and work with Google Merchant Center, without leaving your editor.

This guide is for people who use Rezolve Ai at https://ace.authoritas.com and want to plug it into Cursor, VS Code, Claude Code, or another MCP client.


What is MCP and why use it with Rezolve Ai?

MCP is a standard way for AI assistants to talk to external services. Connecting Rezolve Ai means:

  • Your assistant can read the Rezolve Ai docs, so it answers questions and writes integration code from the current documentation rather than guesswork.
  • Your assistant can call Rezolve Ai, so "enrich these products for Google Shopping and tell me when the job finishes" becomes one instruction rather than a script you write first.

Which tools are available is controlled per project under Settings, Developer console, MCP.


Where to connect

Rezolve Ai MCP server URL: https://ace.authoritas.com/api/mcp

It is a streamable HTTP MCP server. Listing tools is public, so a client can connect and discover the catalogue with no key. Calling a tool requires an API key in the Authorization header.

The fastest path is the Connect section under Settings, Developer console, MCP: one-click install buttons for Cursor and VS Code, a copy-paste command for Claude Code, and a config block with your key already filled in. A machine-readable server card is published at https://ace.authoritas.com/.well-known/mcp.json.

The MCP tab of the Developer console, with the server endpoint, the key helper and the one-click install buttons


Step 1: Get an API key

Use the same key you use for the REST API.

  1. Log in at https://ace.authoritas.com.
  2. Go to Settings, Developer console, Keys.
  3. Create a key with the scopes for the tools you plan to call. An ace_test_ key is free and quota-capped, which makes it ideal for a first connection. An ace_live_ key runs against your account for real.

Scopes are enforced on every tool call, so give the key what it needs:

If you want toGrant
Read jobs, usage, and feeds, search the catalog, and read from Merchant Centerenrichment:read
Run enrichment, cancel jobs, and write to Merchant Centerenrichment:write
Use the scoring and language utilitiesutils:read
List webhook subscriptionswebhooks:read
Create and delete webhook subscriptionswebhooks:write

The documentation tools work with any valid key. A write scope also satisfies the matching read check. New keys get enrichment:read, enrichment:write, and utils:read. Add webhooks:write if you want the webhook tools. See API Keys.

A key pinned to a project runs every tool against that project. An account-wide key runs against the account's most recently created project.


Step 2: Add the server in Cursor

  1. Open Settings, MCP.
  2. Click Add new MCP server.
  3. Set the URL to https://ace.authoritas.com/api/mcp.
  4. Add a header. Name: Authorization. Value: Bearer <your-api-key>.
  5. Save, and restart Cursor if prompted.

Or by config, in ~/.cursor/mcp.json or your project's .cursor/mcp.json:

{
  "mcpServers": {
    "ace": {
      "url": "https://ace.authoritas.com/api/mcp",
      "headers": {
        "Authorization": "Bearer <your-api-key>"
      }
    }
  }
}

Step 3: Add the server in VS Code

For GitHub Copilot Agent or another MCP-capable extension, add .vscode/mcp.json:

{
  "servers": {
    "ace": {
      "type": "http",
      "url": "https://ace.authoritas.com/api/mcp",
      "headers": {
        "Authorization": "Bearer <your-api-key>"
      }
    }
  }
}

Reload VS Code as your extension requires.


Step 4: Claude Code, other clients, or scripts

For Claude Code, one command:

claude mcp add --transport http ace https://ace.authoritas.com/api/mcp --header "Authorization: Bearer <your-api-key>"

For anything else, use the same URL and header. The endpoint speaks MCP streamable HTTP and negotiates the protocol version with your client, currently up to 2025-06-18. Server-sent events are disabled; the server is stateless, so no session store is involved.

Discovery methods (initialize, ping, tools/list) work with no key. Every tools/call requires a valid key. Verify a connection without a client:

curl -X POST https://ace.authoritas.com/api/mcp \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json, text/event-stream' \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}'

For transport details, see the MCP documentation.


Controlling which tools are available

In the Rezolve Ai app, go to Settings, Developer console, MCP.

  • Connect: install the server into Cursor, VS Code, or Claude Code with your key filled in.
  • Tools: turn each tool on or off per project.
  • Try it: run a tool with custom JSON arguments and see the result, so you can confirm it works before wiring it into your editor.

Two things worth knowing:

  1. Discovery always lists the full catalogue. A disabled tool still appears in tools/list; calling it returns an error telling you to enable it. This keeps the advertised catalogue stable for clients that cache it.
  2. Scope is checked separately from enablement. A tool can be enabled for your project and still refuse a key that lacks the scope. The error names the scopes that would work.

Tool catalogue

37 tools. On means enabled by default; opt means you enable it under Settings, Developer console, MCP. Tools marked credits need a positive credit balance on a live key and are charged for the AI work they do. On a test key they draw on the free monthly quota instead.

Documentation

ToolDefaultWhat it does
list_docsonList Rezolve Ai doc pages, optionally filtered by prefix (guides, using-rezolve-ai, api-reference).
read_docsonRead one doc page in full by path.

Any valid key can read the docs, whatever its scopes.

Contextual Enrichment Engine

Scope: enrichment:write. See Contextual Enrichment Engine.

ToolDefaultWhat it does
generate_contextual_ruleson, creditsDerive the eight section contextual rules for a product set. Returns them synchronously. Rules generation itself is not charged.
enrich_contenton, creditsGenerate the requested content types per product, grounded in rules. Returns a job id.
run_enrichment_pipelineon, creditsDerive rules and generate content in one call. Returns a job id.

Both content tools take lookup, which looks each product up by its barcode or other identifiers before writing.

Product lookup

Scope: enrichment:write. See Product lookup.

ToolDefaultWhat it does
lookup_producton, creditsFind what published sources say about one product from its GTIN, ASIN, part number or page address, with the source of every fact. Only a web search is charged.

Jobs

Scope: enrichment:read, except cancel_job which needs enrichment:write.

ToolDefaultWhat it does
list_jobsonList jobs, newest first. Filter by status or kind.
get_enrichment_jobonStatus, progress, and result of one job.
get_job_resultsonPaginated per-product results for a job.
cancel_jobonCancel a pending or running job.

Account, feeds, and utilities

ToolDefaultScopeWhat it does
get_usageonenrichment:readCredit balance, rate limit, job count, test quota.
list_feedsonenrichment:readList the project's product feeds.
get_feedonenrichment:readOne feed's metadata by id.
detect_languageonutils:readDominant language of a product set. Unbilled.
check_agentic_readinessonutils:readPer-product readiness score plus a summary. Unbilled.
get_site_agent_readinessonenrichment:readYour site's latest agent readiness audit: level, score, each shopping agent's verdict and routes, the latest journey. Read only. Unbilled.
score_review_qualityonutils:readWeighted overall score from sub-scores. Unbilled.
search_productsoptenrichment:readNatural-language catalog search. Needs an ingested catalog.

Content and media

ToolDefaultWhat it does
enrich_producton, creditsEnrich a single product with title, description, attributes, and SEO metadata.
generate_contenton, creditsStructured content from a layout template. Pass productIds to ground it in real products.
generate_imageson, creditsProduct image variants from a source image.
translate_contenton, creditsTranslate between locales with glossary support.
generate_feedonFormat a feed for Google Shopping, Agentic Commerce, Shopify, TikTok, or Pinterest.

Webhooks

Scope: webhooks:read to list, webhooks:write to change. All opt-in. See Webhooks.

ToolWhat it does
list_webhooksList subscriptions and their events. Secrets are never returned.
create_webhookSubscribe an HTTPS endpoint to job events. The signing secret is returned once.
delete_webhookDelete a subscription.

Google Merchant Center

All opt-in, and all need a connected Merchant Center account. Read tools need enrichment:read; write tools need enrichment:write. Most take an optional connection id and default to the project's first active connection.

ToolWhat it does
gmc_list_connectionsList the connections available in this project.
gmc_list_subaccountsList sub-accounts under a multi-client (MCA) aggregator.
gmc_list_productsPaginate products straight from Merchant Center, bypassing the local cache.
gmc_list_data_sourcesList data sources such as primary and supplemental feeds.
gmc_list_issuesAccount-level issues plus aggregate product status counts.
gmc_run_reportRun an MCQL report, for example SELECT offer_id, title FROM product_view LIMIT 1000.
gmc_pull_productsPull products from a connection into Rezolve Ai.
gmc_push_productsPush linked products back to Merchant Center.
gmc_resolve_issueQueue automated fixes for a specific issue code, for example missing_gtin.
gmc_create_promotionCreate a promotion on a data source.
gmc_set_inventorySet local or regional inventory for a product.

gmc_pull_products writes into your Rezolve Ai catalogue. The last four change a live Merchant Center account. They are marked as destructive in the protocol, so a well-behaved client asks you to confirm before running them. Start with the read tools.


Tool reference

list_docs

Discover which doc pages exist.

ParameterTypeRequiredDescription
prefixstringNoFilter by path prefix. Top-level sections are guides, using-rezolve-ai, api-reference.
{ "name": "list_docs", "arguments": { "prefix": "guides" } }

Returns { "pages": [ { "path": "guides/webhooks", "title": "Webhooks" }, ... ] }.

read_docs

Read one page in full.

ParameterTypeRequiredDescription
pathstringYesDoc slug, for example getting-started, guides/troubleshooting, api-reference/enrichment/rules/post.
{ "name": "read_docs", "arguments": { "path": "contextual-enrichment-engine" } }

generate_contextual_rules

Derive the eight section rules for a product set. The result holds the rules under rules, keyed by product category. Rules generation is not charged, but the tool still needs a positive balance on a live key, and on a test key it uses one quota unit per product.

ParameterTypeRequiredDescription
productsarrayYesProducts to analyse. Each needs at least id and title.
brandVoiceobjectNoTone, contentStyle, targetAudience, language.
creativityLevelintegerNo1 (conservative) to 5 (bold).
{
  "name": "generate_contextual_rules",
  "arguments": {
    "products": [
      { "id": "sku-1", "title": "Merino base layer", "category": "Outdoor", "brand": "Fjell" }
    ],
    "creativityLevel": 3
  }
}

enrich_content

Generate content types per product, grounded in rules. Uses credits. Returns a job id.

It starts an enrichment run, so it is refused while another run is in progress on the project, whichever surface started that run. The refusal costs nothing.

ParameterTypeRequiredDescription
productsarrayYesProducts to enrich.
contentTypesarrayYesFor example product-description, meta-tags, jsonld-schema, irl-scenarios, internal-links, product-title, highlights, product-qa, product-attributes, image-alt.
rulesobjectNoRules to ground against: the rules object from generate_contextual_rules. When omitted, content is written from the product data alone.
brandVoiceobjectNoBrand voice for the output.
targetLanguagestringNoBCP 47 locale.
lookupbooleanNoLook each product up by its gtin, isbn, asin, mpn with brand, or url before writing. Free sources only.
lookupSourcesarrayNoSources to look up in: amazon, open_data, page, web_search. Naming any turns lookup on. web_search is charged.

run_enrichment_pipeline

Rules and content in one call. Uses credits. Returns a job id.

It starts an enrichment run, so it is refused while another run is in progress on the project, whichever surface started that run. The tool's error says where that run is, for example "An enrichment run is already in progress in the Shopify app for 21 products." The refusal costs nothing: wait for the run to finish and call the tool again.

ParameterTypeRequiredDescription
productsarrayYesProducts to enrich.
contentTypesarrayNoDefaults to a standard set.
brandVoiceobjectNoBrand voice for the output.
creativityLevelintegerNo1 to 5.
targetLanguagestringNoBCP 47 locale.
lookupbooleanNoLook each product up by its identifiers before writing. Free sources only.
lookupSourcesarrayNoSources to look up in: amazon, open_data, page, web_search. Naming any turns lookup on. web_search is charged.
{
  "name": "run_enrichment_pipeline",
  "arguments": {
    "products": [{ "id": "sku-1", "title": "Merino base layer" }],
    "contentTypes": ["product-description", "meta-tags"],
    "targetLanguage": "de-DE"
  }
}

With a lookup, each product's result says what the lookup did for it. Your own product data always wins where a source disagrees.

{
  "name": "run_enrichment_pipeline",
  "arguments": {
    "products": [{ "id": "sku-1", "title": "Fineliner pen, azure", "gtin": "4006381333931" }],
    "contentTypes": ["product-description"],
    "lookup": true
  }
}

lookup_product

Look one product up. Send whatever you know about it. Only a web search uses credits, and an answer already found is served from cache at no cost.

ParameterTypeRequiredDescription
qstringNoA bare value whose type is worked out: a barcode, an ISBN, an ASIN, a page address or a part number.
gtinstringNoGTIN-8, UPC, EAN-13 or GTIN-14. Checked against its check digit.
isbnstringNoISBN-10 or ISBN-13.
asinstringNoAmazon identifier. Needs a connected Amazon store.
mpnstringNoManufacturer part number. Send brand with it to search the web.
skustringNoYour own stock code. Matched in your catalogue only.
urlstringNoA product page to read.
brandstringNoThe product's brand.
marketstringNoTwo letter country, for example GB.
localestringNoLanguage tag, for example en-GB.
sourcesarrayNoUse only these: catalog, amazon, open_data, page, web_search. Leave web_search out for a lookup that costs nothing.
refreshbooleanNoLook up again instead of using a cached answer.

At least one of q, gtin, isbn, asin, mpn, sku or url is needed.

{
  "name": "lookup_product",
  "arguments": { "gtin": "4006381333931", "market": "GB" }
}

Returns match (matched, ambiguous or not found, with a confidence), product (the best value per field), facts (every statement with the page that makes it), sources (what each source did) and conflicts. A product that is not found is a normal answer, not an error. For a batch, use POST /api/v1/enrichment/lookup.

list_jobs, get_enrichment_job, get_job_results, cancel_job

ToolParameters
list_jobsstatus (pending, running, completed, partial, failed, cancelled), kind (rules, content, pipeline, article, lookup), page, pageSize (default 20, max 100)
get_enrichment_jobjobId (required)
get_job_resultsjobId (required), page, pageSize (max 200)
cancel_jobjobId (required)

A typical flow: run the pipeline, poll get_enrichment_job until status is terminal, then page get_job_results.

enrich_product

Enrich one product. Uses credits.

ParameterTypeRequiredDescription
titlestringYesProduct title.
descriptionstringYesRaw product description.
pricenumberYesProduct price.
imagesarrayYesImage URLs.
categorystringYesProduct category.
attributesobjectNoExisting attributes to preserve or enhance.
localestringNoTarget locale. Default en.

generate_content

Structured content from a layout template. Uses credits.

ParameterTypeRequiredDescription
topicstringYesContent topic or title.
layoutstringYesOne of ranked-list, grid-showcase, comparison-guide, category-roundup, how-to-guide, buying-guide, editorial, listicle-article, review, product-spotlight, seasonal-campaign.
keywordsarrayYesSEO keywords to target.
localestringYesContent locale.
productIdsarrayNoProducts to feature. They are loaded from your catalog and used as source material.
tonestringNoFor example professional, conversational.
wordCountintegerNoTarget word count, 200 to 10000.

layout selects the generator: product-backed layouts produce a listicle or comparison article, while how-to-guide and editorial produce prose. If you pass productIds that do not exist in the project, the call fails rather than inventing placeholder products, so use search_products to find valid ids.

generate_feed

ParameterTypeRequiredDescription
productIdsarrayYesProducts to include.
platformstringYesgoogle-shopping, agentic-commerce, shopify, tiktok, or pinterest.
localestringNoOutput locale.
includeEnrichmentsbooleanNoInclude AI-enriched data. Default true.

generate_images

ParameterTypeRequiredDescription
sourceImageUrlstringYesSource image to work from.
variantsarrayYeslifestyle, on-model, environment, seasonal, or ugc-style.

Charged per variant.

translate_content

ParameterTypeRequiredDescription
contentobjectYesThe content to translate.
sourceLocalestringYesSource locale.
targetLocalestringYesTarget locale.
contentTypestringYesarticle, product, or feed.
brandVoicestringNoBrand voice to preserve.
glossaryarrayNoTerm mappings, each { source, target, context? }.

Utilities

ToolParametersReturns
detect_languageproducts (required)Language code, a confidence of high, medium, or low, and the reasoning
check_agentic_readinessproducts (required)Per-product score and missing fields, plus a summary
score_review_qualityitems (required), each with contentQuality, seoScore, aiReadability, optional brandVoice and idWeighted overall score per item
get_site_agent_readinessnoneThe latest audit of your own site, or scanned: false: level, score, score coverage, commerce score, each shopping agent's verdict with its routes and what measured them, the latest agent journey and the latest Agent shelf result

All four are unbilled.

Webhooks

ToolParameters
list_webhooksnone
create_webhookurl (required, must be HTTPS), events (required), description
delete_webhookid (required)

Use these event types: enrichment.job.succeeded, enrichment.job.partial, enrichment.job.failed. The signing secret is in the create_webhook result and is not shown again. For the full event list, payloads, and signature check, see Webhooks.


Resources and prompts

Besides tools, the server offers resources and prompts to clients that support them.

Resources are read-only context a client can load without spending a tool call. Each one mirrors a tool, with the same scope and the same per-project switch.

ResourceMirrorsWhat it holds
ace://catalogue/feedslist_feedsThe project's product feeds.
ace://catalogue/readinesscheck_agentic_readinessHow ready the catalogue is to be read by a shopping agent.
ace://account/usageget_usageUsage for the account behind the key.
ace://docslist_docsEvery documentation page, with its path.

Prompts are ready-made workflows that name the tools to call and the order to call them in.

PromptArgumentWhat it does
audit_cataloguefocus (optional)Assesses how well the catalogue can be found, read, and quoted by AI shopping agents, and ranks what to fix first. It does not write anything.
prepare_productproduct (required)Takes one product through rules, content, and a readiness check.
diagnose_visibilitytopic (optional)Works out why a catalogue is not showing up in AI assistants' answers.

Authentication and errors

  • Authentication: every tools/call to https://ace.authoritas.com/api/mcp must include a valid key as Authorization: Bearer <your-api-key>. Use the same keys as the REST API. See API Keys.
  • Scopes: a key without the scope a tool requires gets an error naming the scopes that would work. Use a key with those scopes rather than retrying.
  • Rate limits: keys have a requests per minute limit. Exceeding it returns a rate limit error. See API Reference.
  • Credits: enrichment, content, image, and translation tools are charged on a live key and use the free monthly quota on a test key. Check with get_usage, or GET /api/v1/usage.

Troubleshooting

SymptomCause and fix
401 on a tool callMissing or invalid key. Check the Authorization: Bearer <key> header and that the key is active.
Client shows no toolsWrong URL, or the client did not complete the handshake. tools/list is public, so test it with the curl above.
"tool is disabled"Enable it for your project under Settings, Developer console, MCP.
"requires one of these API key scopes"The key is valid but too narrow. Create a key with the scopes you need under Settings, Developer console, Keys.
Credits or 402Out of credits, or a test key has spent its monthly quota. Call get_usage or see Credits and usage.
Merchant Center tool failsIt needs a connected Merchant Center account. Connect one in Rezolve Ai first.
A job never finishesPoll get_enrichment_job. A partial status means some products failed; get_job_results shows which.

Tips for daily use

  • Ask your assistant to call list_docs and read_docs before it writes integration code, so it works from the current documentation.
  • Start with check_agentic_readiness on a sample. It is free and tells you which products are too thin to enrich well.
  • Prefer run_enrichment_pipeline for a first run and enrich_content with cached rules for later batches.
  • Keep the Merchant Center write tools disabled until you specifically need them.

On this page