Skip to content

MCP Integration

Connect an MCP-compatible AI assistant to Goodeye and it can manage your skills, publish templates, run verifiers, and generate images from natural language.

Overview

Everything Goodeye does is reachable over MCP. Once connected, your AI assistant can:

  • Design, save, fetch, and manage skills
  • Publish, search, fork, and verify templates
  • Deploy and run semantic verifiers
  • Deploy and invoke image generators
  • Upload and manage hosted images
  • Manage teams, invitations, and grants
  • Mint and revoke API keys
  • Check your current usage and credits
  • View and redeem referral codes

Agent contract: when your assistant calls get_skill or get_template and receives a body back, it executes that body as your runbook. It follows the instructions itself rather than summarizing or just displaying them.

Your skills are account-scoped, not client-scoped. Connect Goodeye in more than one client and each of them reads the same skills at the same current version, so a skill you improve in one is the skill every other one runs next. The same holds for the CLI: goodeye skills sync mirrors those skills into the directories a tool reads from disk, which covers assistants that load skill files instead of speaking MCP. See Syncing a bundle locally.

The endpoint

https://mcp.goodeye.dev/mcp

Authentication

There are two ways in.

OAuth (sign-in flow): connect in your MCP client and it prompts you to sign in. On the hosted sign-in page you can continue with your Google account or with email, and your client is authorized once you approve. Use this for interactive assistants like Claude.ai, Cursor, and VS Code.

API key: create a good_live_ key with goodeye auth create-key (or POST /v1/api-keys), then pass it as a Bearer token in your MCP client config. Use this for automated agents and CI pipelines.

Authorization: Bearer good_live_EXAMPLE_xxxxxxxx

Anonymous callers cannot use the MCP server. Public template catalog browsing is available over the REST API without auth (see REST API).

Client setup

Claude Code

Add the server with one command:

claude mcp add --transport http goodeye \
  https://mcp.goodeye.dev/mcp

This adds Goodeye to your user-level config, available in all projects. To scope it to a specific project instead, add --scope project before the server name.

To connect with an API key instead of OAuth:

claude mcp add --transport http goodeye \
  https://mcp.goodeye.dev/mcp \
  --header "Authorization: Bearer good_live_EXAMPLE_xxxxxxxx"

Claude.ai and Claude Desktop

Claude.ai and Claude Desktop share the same connectors, so you only need to set this up once.

  1. Go to Customize > Connectors
  2. Click Add custom connector
  3. Enter:
    • Name: Goodeye
    • URL: https://mcp.goodeye.dev/mcp
  4. Click Add
  5. When prompted, sign in with your Goodeye account to authorize access
  6. Enable the connector in any conversation via the + button

To connect with an API key on Claude Desktop, you need a bridge tool. Add this to your claude_desktop_config.json:

{
  "mcpServers": {
    "goodeye": {
      "command": "npx",
      "args": [
        "mcp-remote",
        "https://mcp.goodeye.dev/mcp",
        "--header",
        "Authorization:${GOODEYE_MCP_AUTH_HEADER}"
      ],
      "env": {
        "GOODEYE_MCP_AUTH_HEADER": "Bearer good_live_EXAMPLE_xxxxxxxx"
      }
    }
  }
}

Replace good_live_EXAMPLE_xxxxxxxx with your actual API key and restart Claude. This variable holds a whole header value, Bearer prefix included, which is why it is not named GOODEYE_API_KEY: the CLI reads that one as the raw key, and a prefixed value there would fail to authenticate.

Codex

Add Goodeye to ~/.codex/config.toml:

[mcp_servers.goodeye]
url = "https://mcp.goodeye.dev/mcp"

Start Codex and sign in when prompted.

A project-scoped .codex/config.toml works too, but only once you have marked that project trusted: Codex reads an untrusted project's config and leaves it switched off, so the entry is ignored with no error. Use ~/.codex/config.toml if you want Goodeye available everywhere.

To connect with an API key instead, point Codex at an environment variable holding the key:

[mcp_servers.goodeye]
url = "https://mcp.goodeye.dev/mcp"
bearer_token_env_var = "GOODEYE_API_KEY"
export GOODEYE_API_KEY="good_live_EXAMPLE_xxxxxxxx"

The variable holds the raw key with no Bearer prefix; Codex adds it when it sends the header. Current Codex releases reach remote MCP servers over HTTP with no extra setting. If Codex ignores the url entry and only starts servers it launches locally, upgrade it. Older guides mention an experimental flag for turning on remote servers; that setting has since been removed and no longer does anything, so delete it if you have it. Codex ignores keys it does not recognize, so a leftover entry causes no error, which is exactly why it is worth clearing out rather than leaving to look meaningful.

Cursor

Add Goodeye manually to your project's .cursor/mcp.json:

{
  "mcpServers": {
    "goodeye": {
      "url": "https://mcp.goodeye.dev/mcp"
    }
  }
}

Restart Cursor after adding the config, then sign in when prompted.

To use an API key instead:

{
  "mcpServers": {
    "goodeye": {
      "url": "https://mcp.goodeye.dev/mcp",
      "headers": {
        "Authorization": "Bearer good_live_EXAMPLE_xxxxxxxx"
      }
    }
  }
}

VS Code

  1. Open VS Code and press Cmd/Ctrl + Shift + P
  2. Run MCP: Add Server
  3. Select HTTP as the server type
  4. Enter the URL: https://mcp.goodeye.dev/mcp
  5. Give it the name goodeye

Or add it directly to .vscode/settings.json:

{
  "mcp": {
    "servers": {
      "goodeye": {
        "url": "https://mcp.goodeye.dev/mcp"
      }
    }
  }
}

To use an API key:

{
  "mcp": {
    "servers": {
      "goodeye": {
        "url": "https://mcp.goodeye.dev/mcp",
        "headers": {
          "Authorization": "Bearer good_live_EXAMPLE_xxxxxxxx"
        }
      }
    }
  }
}

Requires VS Code 1.99+ with GitHub Copilot enabled.

Windsurf

  1. Open Windsurf and press Cmd/Ctrl + , to open Settings
  2. Search for MCP or navigate to Cascade > MCP Servers > View raw config
  3. Add the Goodeye server to the mcpServers object:
{
  "mcpServers": {
    "goodeye": {
      "serverUrl": "https://mcp.goodeye.dev/mcp",
      "disabled": false
    }
  }
}
  1. Save and click Refresh (or restart Windsurf)
  2. Sign in with your Goodeye account when prompted

To use an API key:

{
  "mcpServers": {
    "goodeye": {
      "serverUrl": "https://mcp.goodeye.dev/mcp",
      "headers": {
        "Authorization": "Bearer good_live_EXAMPLE_xxxxxxxx"
      },
      "disabled": false
    }
  }
}

Available tools

Any authenticated caller gets every tool. The groups below follow the main resource areas.

Skills

ToolWhat it does
design_skillStart a guided skill and verifier design session. Returns the skill designer prompt pack.
save_skillCreate or update a skill. Accepts multi-file bundles.
update_skill_filesChange or remove named files in an existing skill, including SKILL.md, while keeping every path you do not name.
list_skillsList skills you own or have been granted access to.
search_skillsNatural language search across your skills.
get_skillFetch a skill by id or slug. The agent executes the returned body as a runbook.
get_skill_fileFetch a single file from a skill's file bundle.
get_skill_filesFetch multiple files from a skill bundle in one call.
archive_skillReversibly hide a skill (slug stays occupied).
unarchive_skillRestore an archived skill.
delete_skillPermanently erase a skill. No recovery.
delete_skill_versionPermanently erase a single non-current skill version.
teach_skillTeach an existing skill with new examples.
optimize_skillRun an agent-driven iteration loop to improve a skill.
optimize_descriptionTune a skill's trigger description for accuracy (description-only).
audit_skillAudit a hosted skill, or a skill file on disk, against the authoring checks; returns a priority-ranked report with concrete fixes.
check_skill_safetyRun platform safety checks on a skill version.
grant_skillShare a skill with another user or team.
revoke_skill_grantRemove an access grant.
list_skill_grantsList who has access to a skill.
leave_shared_skillLeave a skill someone else shared with you.
transfer_skill_ownershipTransfer ownership to another user (returns an invitation).
lookup_fork_lineageTrace a skill back to its template source.

Templates

ToolWhat it does
publish_template_versionPublish a skill as a new public template version. Runs safety checks first.
unpublish_template_versionHide a published template version.
deprecate_template_versionFlag a version as deprecated without hiding it.
delete_template_versionPermanently erase an unpublished template version.
delete_templatePermanently erase a template and all its versions.
archive_templateReversibly hide a template from public listing.
unarchive_templateRestore an archived template.
list_templatesList public templates.
search_templatesNatural language search across public templates.
get_templateFetch a template by UUID or @handle/slug. The agent executes the returned body as a runbook.
get_template_fileFetch a single file from a template version's file tree.
fork_templateCopy a public template into a private skill.
check_template_safetyRun platform safety checks on a published template version.
transfer_template_ownershipTransfer template ownership to another user.

Verifiers

ToolWhat it does
deploy_verifierCreate or update a semantic verifier.
list_verifiersList your verifiers.
get_verifierFetch a verifier version including criterion and calibration.
run_verifierExecute a verifier judgment. Accepts UUID or system:<name> for platform verifiers.
revoke_verifierDeactivate a verifier without erasing run history.
delete_verifierPermanently erase a verifier and all its data.

Note: platform-managed system verifiers are run-only via system:<name> aliases. They do not appear in list_verifiers or get_verifier, and their configuration is not exposed.

Image generators

ToolWhat it does
deploy_image_generatorCreate or update an image generator.
list_image_generatorsList your image generators.
get_image_generatorFetch an image generator version.
generate_imageRun an image generation call.
revoke_image_generatorDeactivate an image generator.
delete_image_generatorPermanently erase an image generator and all its run records.

Images

ToolWhat it does
upload_imageUpload an image and get a hosted URL.
list_imagesList your hosted images.
get_imageFetch one hosted image.
update_imageChange visibility, expiry, or view link.
delete_imagePermanently delete a hosted image.

Teams and invitations

ToolWhat it does
create_teamCreate a team with a handle.
list_teamsList teams you own or belong to.
delete_teamDelete a team you own.
list_team_membersList members of a team.
add_team_memberInvite a user to a team (returns an invitation).
remove_team_memberRemove a member from a team.
transfer_team_ownershipTransfer team ownership (returns an invitation).
list_invitationsList pending invitations sent to or by you.
accept_invitationAccept a pending invitation.
decline_invitationDecline a pending invitation.
cancel_invitationCancel an invitation you sent.

Account

ToolWhat it does
claim_handleClaim a public handle for publishing templates.
rename_handleRename your claimed handle (limited to once per 90 days, 3 per calendar year).
mint_api_keyCreate a new API key.
list_api_keysList your API keys (metadata only, secrets never returned again).
revoke_api_keyRevoke an API key.
get_usageGet your current-period usage summary (granted, used, remaining).
get_referral_statusGet your referral code, redemptions, and credits earned.
redeem_referral_codeRedeem another user's referral code for bonus credits.

Troubleshooting

"Authentication required" or 401 errors

  • Try disconnecting and reconnecting Goodeye in your client settings
  • Make sure you are signing in with the same account that owns your skills and keys
  • If using an API key, verify the key is active and the Authorization header is formatted correctly: Bearer good_live_...

Tools not appearing

  • Restart your MCP client after adding the configuration
  • Verify the endpoint URL is exactly https://mcp.goodeye.dev/mcp
  • In Windsurf, make sure the server is not set to "disabled": true
  • In VS Code, verify GitHub Copilot agent mode is enabled (requires VS Code 1.99+)
  • Check your MCP client's logs for connection errors

Budget or account errors

  • budget_exhausted (402): your monthly credit grant is spent. Run goodeye usage or GET /v1/me/usage to check your balance. See Accounts and billing.
  • account_suspended (403): contact hello@goodeye.dev

See also