Skip to main content

AI assistants

Your AI assistant can run FreshVisit for you: start journeys, Explores, and audits, wait for them, and read back every step and finding. It connects over MCP, the standard most assistants now speak, with an access key from your settings.

Get an access key

  1. 1

    Open Settings

    Sign in, then go to Settings and find AI assistants. The card shows the Server URL every assistant connects to.

  2. 2

    Create a key

    Name it for where it will live (“Cursor on my laptop”) and press Create key. Copy it right away: it’s shown only once.

  3. 3

    Add it to your assistant

    Pick yours below. Each snippet has YOUR_ACCESS_KEY where the key goes.

Server URLhttps://www.freshvisit.app/api/mcp

Connect your assistant

Claude Code

Run this in a terminal. Settings has a Copy Claude Code command button that fills in your key for you.

claude mcp add --transport http freshvisit https://www.freshvisit.app/api/mcp \
  --header "Authorization: Bearer YOUR_ACCESS_KEY"

Add --scope project to save it in the project’s .mcp.json for everyone who works there. Then put the key in an environment variable and write the header as "Bearer ${FRESHVISIT_MCP_KEY}" so the key stays out of the repository.

Claude (web and desktop app)

In Claude, open Customize, then Connectors, choose Add, then Add custom connector. Name it, paste the Server URL, and choose Continue. Set Authentication to No sign in, then under Request headers add Authorization with the value Bearer followed by your key.

A connector you add on the web shows up in the desktop app too. On a Team or Enterprise plan, an owner adds it under Organization settings, then each person connects.

Cursor

Add this to .cursor/mcp.json in a project, or ~/.cursor/mcp.json for every project.

{
  "mcpServers": {
    "freshvisit": {
      "url": "https://www.freshvisit.app/api/mcp",
      "headers": {
        "Authorization": "Bearer ${env:FRESHVISIT_MCP_KEY}"
      }
    }
  }
}

It reads the key from the FRESHVISIT_MCP_KEY environment variable. Or write the key in its place.

VS Code with GitHub Copilot

Add this to .vscode/mcp.json in a workspace, or run MCP: Open User Configuration for every workspace. Note the top-level key is servers.

{
  "inputs": [
    {
      "type": "promptString",
      "id": "freshvisit-key",
      "description": "FreshVisit access key",
      "password": true
    }
  ],
  "servers": {
    "freshvisit": {
      "type": "http",
      "url": "https://www.freshvisit.app/api/mcp",
      "headers": {
        "Authorization": "Bearer ${input:freshvisit-key}"
      }
    }
  }
}

VS Code asks for the key the first time the server starts and stores it for you, so it never sits in the file.

OpenAI Codex

Add this to ~/.codex/config.toml, or .codex/config.toml in a trusted project.

[mcp_servers.freshvisit]
url = "https://www.freshvisit.app/api/mcp"
bearer_token_env_var = "FRESHVISIT_MCP_KEY"

Then set FRESHVISIT_MCP_KEY to your key in the shell Codex runs from.

Gemini CLI

Run this in a terminal (add -s user to use it in every project).

gemini mcp add --transport http \
  --header "Authorization: Bearer YOUR_ACCESS_KEY" \
  freshvisit https://www.freshvisit.app/api/mcp

Editing ~/.gemini/settings.json by hand? The address goes under httpUrl, not url.

Windsurf (Devin Desktop)

Open the MCP settings in Cascade and edit the raw config (mcp_config.json).

{
  "mcpServers": {
    "freshvisit": {
      "serverUrl": "https://www.freshvisit.app/api/mcp",
      "headers": {
        "Authorization": "Bearer ${env:FRESHVISIT_MCP_KEY}"
      }
    }
  }
}

The address goes under serverUrl. It reads the key from FRESHVISIT_MCP_KEY, or write the key in its place.

Zed

Run zed: open settings file and add this.

{
  "context_servers": {
    "freshvisit": {
      "url": "https://www.freshvisit.app/api/mcp",
      "headers": {
        "Authorization": "Bearer YOUR_ACCESS_KEY"
      }
    }
  }
}

Cline

Choose the MCP Servers icon, then Configure MCP Servers, and add this.

{
  "mcpServers": {
    "freshvisit": {
      "type": "streamableHttp",
      "url": "https://www.freshvisit.app/api/mcp",
      "headers": {
        "Authorization": "Bearer YOUR_ACCESS_KEY"
      },
      "disabled": false
    }
  }
}

Keep type as streamableHttp: without it, Cline tries an older protocol and can’t connect.

JetBrains IDEs (Junie and AI Assistant)

For Junie, add this to ~/.junie/mcp/mcp.json, or .junie/mcp/mcp.json in a project (Tools, then Junie, then MCP Settings).

{
  "mcpServers": {
    "freshvisit": {
      "url": "https://www.freshvisit.app/api/mcp",
      "headers": {
        "Authorization": "Bearer YOUR_ACCESS_KEY"
      }
    }
  }
}

AI Assistant’s MCP settings don’t take headers yet. Add it there as a command instead: npx mcp-remote with the Server URL, plus --header and the Authorization line.

Goose

Add this under extensions in ~/.config/goose/config.yaml (on Windows, %APPDATA%\Block\goose\config\config.yaml).

  freshvisit:
    type: streamable_http
    name: freshvisit
    enabled: true
    uri: "https://www.freshvisit.app/api/mcp"
    headers:
      Authorization: "Bearer ${FRESHVISIT_MCP_KEY}"
    env_keys: [FRESHVISIT_MCP_KEY]
    timeout: 300

Goose reads FRESHVISIT_MCP_KEY from your environment.

ChatGPT

Not yet. ChatGPT’s custom connectors only sign in with OAuth, and FreshVisit uses access keys for now. Codex, OpenAI’s coding assistant, works today (see above).

What your assistant can do

Once connected, your assistant has these tools. You don’t call them by name: ask in plain words and it picks the right one.

start_journey
Starts a goal journey (“find the refund policy”) or, without a goal, an Explore. Pick the devices and the most steps.
start_audit
Starts an audit: accessibility and style checks on every page it reaches.
run_again
Runs a journey or audit you already have once more.
get_run
How a run went: the verdict, every step, the answer, and what changed since the run before. It can wait up to 50 seconds at a time for a run that’s still going.
get_audit_findings
Every issue an audit found, with the elements, their CSS selectors, and a prompt to fix each one.
list_journeys
Your journeys and audits, newest first.

Runs take one to ten minutes, so the assistant starts one, then checks back until it’s done. Starts and lists use your personal space unless you name a workspace you’re in.

Things to ask

Findability
“Can a first-time visitor find the refund policy on example.com, on a phone?”
After a release
“Run my checkout journeys again and tell me which ones changed.”
Fix what it finds
“Audit example.com, then fix the accessibility issues it finds in this codebase.”
Competitors
“Compare how many clicks pricing takes on our site and on two competitors’.”

If it doesn’t connect

It says unauthorized
The key is missing, mistyped, or revoked. Check the header reads Authorization: Bearer, a space, then the whole key. Make a new key if you’ve lost it.
It can’t reach my site
Start pages must be public sites. An assistant can check a preview or your live site, but not one running on your own computer.
It ran out of runs
Runs from an assistant count toward your plan. Your plan shows how many are left this month.
I’m done with a key
Revoke it in Settings, under AI assistants. It stops working at once; runs it started keep going.