Documentation

MCP tools

The tool reference for any agent that talks to Sitearc over MCP.

Sitearc runs an MCP server at https://app.sitearc.ai/mcp. It gives your agent access to site context, research, feedback and the tools listed below. A person still approves proposals.

Connecting

For Claude Code, the plugin is the easy path. See the plugin doc.

For any MCP client, add the hosted server:

claude mcp add --transport http sitearc https://app.sitearc.ai/mcp

The OAuth flow

The server is an OAuth resource, and the flow is standard.

  1. Your client hits /mcp with no token and gets invalid_token back.
  2. It reads the resource metadata and finds the authorization server.
  3. It registers itself dynamically, if it has not already.
  4. You sign in at app.sitearc.ai and approve.
  5. The client receives a token and refreshes it from then on.

Two scopes are requested. mcp grants tool access and is required. The offline_access scope is what lets the client refresh without sending you back to a browser.

Your grant is per client. Revoke it from your account and that client stops working, with no effect on the others.

Wire names

Inside Claude Code and most MCP clients, a tool is namespaced by its server. The wire names look like this:

mcp__sitearc__get_project_brief
mcp__sitearc__research_keywords
mcp__sitearc__ship_experiment

The short name is the tool’s own. The prefix is what your client adds.

The loop

Tool Purpose
get_project_brief The session’s starting point: connections, learnings, running experiments, confounders
get_budget_status Remaining spend before anything metered is called
link_repo Connect the project to the repository a change lands in
create_proposal A change with evidence and a prediction, for a person to approve
list_proposals The queue for a project
get_proposal One proposal’s change, evidence and status
resolve_preview_url The preview deployment a proposal’s pull request produced
ship_experiment Ship an approved proposal and open its measurement window
list_experiments What is running and when each window closes
get_experiment One experiment, its prediction and its state
get_measurements The collected rows for an experiment, cohort and holdout
conclude_experiment Apply the standard and return a verdict
record_confounder Anything else that moved during a window
list_confounders Confounders recorded against a project
record_learning Write a learning at the tier its evidence earns
search_learnings What this project has already proved, with tiers

Projects and memory

Tool Purpose
whoami Who the token belongs to, and what it can reach
list_projects Every site in the organisation
create_project Add a site
get_project_context Shared business memory: goal, positioning, key pages
update_project_context Write that memory back

Keyword and SERP research

Tool Purpose
research_keywords Discover keyword ideas from seed topics
get_keyword_metrics Volume, difficulty and intent for named keywords
save_keywords Save and tag terms worth targeting
list_saved_keywords The saved set for a project
get_serp_results The live result page for a query
find_serp_competitors Who else ranks across a keyword set
get_domain_overview A domain’s organic footprint
get_domain_keyword_suggestions Keywords a domain could plausibly target

Rank tracking

Tool Purpose
create_rank_tracker Set up tracking for a project
get_rank_tracker Read a tracker and its latest positions
add_rank_tracking_keywords Add terms to a tracker
remove_rank_tracking_keywords Drop terms from a tracker
estimate_rank_tracker_cost What a run will spend, before it spends it
run_rank_tracker Run the tracker now
get_ranked_keywords Everything a domain currently ranks for
Tool Purpose
get_backlinks_overview Referring domains, authority and totals
get_backlinks_profile The individual links, with anchors and targets

Site audits

Tool Purpose
run_site_audit Start a technical crawl and audit
get_audit_status Whether the audit has finished
get_audit_issues The findings, grouped and prioritised
get_audit_pages Per-page results from the audit

Content engine

Tool Purpose
create_content_brief Add a keyword opportunity to the backlog; a person approves it before anything is written
list_content_backlog The briefs waiting on a person, with target keyword, volume and difficulty
generate_content_draft One model call writes a draft for an approved brief; spends credits
get_content_document One document in full: body, metadata, state, review notes, versions, change rounds
revise_content_document A new version with a mechanical fix; stays in review
submit_content_for_approval Put a verified draft in front of a person; approves nothing
request_content_changes Send a document awaiting approval back with a numbered round of notes
publish_content Publish an approved draft as a WordPress draft or a pull request; never live

Brand and compliance

Tool Purpose
get_brand_profile The versioned brand document: identity, vocabulary, colors and type by role, rules
propose_brand_patch File a change to the brand document for a person to apply; changes nothing itself
get_compliance_profile Banned words, banned claims, hedging rules and name styling; optionally check a text

Site crawl

Tool Purpose
discover_urls Every same-origin URL from robots.txt, the sitemaps and the home page navigation
fetch_page One URL’s raw HTML and redirect chain; a JavaScript render spends credits
extract_page What an SEO review reads from one page: title, meta, headings, body, links, images, schema
crawl_site A breadth-first crawl bounded by the plan’s page cap; rendered pages spend credits

Recommendations

Tool Purpose
list_recommendations The project’s queue of drafted changes waiting on a person
get_recommendation One recommendation in full: evidence with tiers, the change, the prediction, the cost
update_recommendation_status Accept or dismiss; dismissing needs a reason, accepting creates a proposal
claim_work Claim accepted or in-progress queue work for a short lease
renew_work_claim Renew the lease before expiry; stop work if renewal fails
release_work_claim Release a live claim without marking the work shipped or approved
submit_work_for_review Submit structured work after a live claim; queues human review only
get_work_review Read submitted revisions and human decisions for one recommendation
verify_work_revision Save GitHub evidence for one human-approved revision
list_work_verifications Read saved provider checks for one approved work revision

Submitted work keeps up to fifty revisions. Each artifact is capped at 128 KiB. submit_work_for_review needs a fresh requestId UUID for new work. Reuse the same requestId only when retrying the exact same artifact.

get_work_review may show currentDecision and prior decisions. Those are human decisions already recorded in the dashboard. The returned effects fields mean this tool did not approve, verify, deploy, or ship the work. They do not state whether some other path deployed it.

verify_work_revision records provider evidence only. It can read the PR head, merge state, merge commit, deployment state and preview match. It does not approve, merge, deploy, publish or ship anything.

list_work_verifications reads saved checks. It does not contact GitHub, use credits or change the work.

Feedback sessions

Tool Purpose
create_review Open a shareable feedback session over pages of a site and return its link
list_review_comments Every comment on a session, public and internal, for triage
resolve_review_comment Mark a comment resolved, optionally queueing it as a recommendation

Connected sites

Tool Purpose
wp_list_posts Posts and pages on the connected WordPress site, with status and modified date
wp_get_post One post or page: title, body, excerpt, slug and SEO meta
wp_update_post Rewrite the title, body, excerpt or slug of an existing post; never changes publication status
wp_create_draft A new post or page saved as a draft for a person to review
wp_set_seo_meta The SEO title and meta description, through the installed SEO plugin
wp_upload_media Add an image to the media library, with alt text
github_open_pull_request Open a pull request on the connected repository for a code change

Search Console and Analytics

Tool Purpose
get_search_console_performance Clicks, impressions, position and queries
inspect_urls Google’s own index status for specific URLs
get_search_opportunities Pages close to ranking, from your own data
get_google_analytics_organic_overview Organic sessions and their shape
get_google_analytics_organic_landing_pages Which pages organic traffic lands on
get_google_analytics_page_performance Engagement per page
get_google_analytics_traffic_acquisition Where the traffic came from
get_google_analytics_key_events Conversions, as your property defines them
get_google_analytics_ecommerce_performance Revenue and product performance
get_google_analytics_site_search What people search for on your own site
get_google_analytics_audience_breakdown Who is arriving, by dimension
get_google_analytics_measurement_health Whether the property is measuring correctly

Local presence

Tool Purpose
search_local_businesses Find a business in Google’s local index
get_business_profile The profile as Google holds it
get_business_reviews Reviews on the profile
get_business_updates Posts on the profile
get_google_business_questions Questions asked on the profile
list_business_categories The category taxonomy to choose from
get_local_serp_results The local pack for a query and place
get_local_rank_grid Maps visibility across a geography

Answer engine visibility

Tool Purpose
get_llm_prompts Questions assistants are answering in your topic
get_llm_visibility Whether a site is cited in those answers

What the tools refuse

Refusals are in the code, not in a prompt. There are six on the shipping path.

  1. A proposal that is not approved.
  2. A proposal marked approved with no recorded decider.
  3. A proposal that has already shipped.
  4. A measurement window that disagrees with the prediction.
  5. A failed preview audit.
  6. No measurement source connected to read the result.

Two more sit earlier. create_proposal refuses a proposal carrying no evidence. It also refuses a new_page proposal outright.

And one is structural. There is no approval tool, and none can be added by accident. The module that records a decision is not importable from the agent-facing code. A test fails if it becomes so.

conclude_experiment has no field for a verdict. An agent cannot state its own outcome, only ask for one.

Rate limits

Requests per minute are counted per organisation, not per token.

Free allows thirty MCP requests per minute.

Pro has defined allowances.

The in-app chat is being built. Current free chat budget is eight tool calls per turn.

A capped turn should stop and say so.

Cost

Research tools spend credits. The server tells every agent to ask you before a planned batch over 2,000 credits.

get_budget_status is free and reports what is left.

Website forms

Tool Purpose
list_forms Find forms for a site before creating another
create_form Save a field definition and return its public POST endpoint
get_form Read the saved fields, allowed origin, status and retention
list_form_destinations Read configured email and webhook destinations
create_form_destination Add a future email or webhook notification destination
disable_form_destination Stop future queued delivery to one destination
submit_test_form Save a labeled test response and queue real test notifications
verify_form_receipt Check that a real response was saved and read notification states

Install the returned endpoint in your website source, then submit a response through the website. Pass its receipt ID to verify_form_receipt. A saved configuration alone does not prove the form works.

submit_test_form checks backend validation and storage. It does not visit your website or check its installed form. Use synthetic contents and reuse the idempotency key when retrying. Configured destinations can receive real test notifications. Ask before sending a notification test. Webhook setup returns its signing secret once. Save it in the receiving service’s secret store, never in website source.

The verification result separates saved responses from notifications. provider_accepted means the destination accepted the request. It does not prove that an email reached a person’s inbox. Pending deliveries need another check after the background job runs.

Next step

Connect your agent to the current app.

Docs explain the setup path and the tool boundaries.