dolphin-anty-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| DOLPHIN_API_TOKEN | No | JWT for the remote APIs. Without it only Local API tools work. | |
| DOLPHIN_TIMEOUT_MS | No | Per-request timeout. | 60000 |
| DOLPHIN_LOCAL_API_URL | No | Local API origin. | http://localhost:3001 |
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
| resources | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| list_profilesA | List browser profiles with pagination, full-text search and filters. Each item carries a full fingerprint, so keep |
| list_profiles_cursorA | Cursor-paginated profile listing. Prefer this over |
| get_profileA | Fetch one browser profile by id, including its full fingerprint. |
| create_profileA | Create a NEW browser profile. If the user named a profile and asked you to open, run or 'spin up' it, that is start_profile with By default this pulls a real, internally coherent fingerprint from the Dolphin dataset and applies it — which is what you want, since Dolphin does NOT generate fingerprints server-side and an incoherent one defeats the point of an anti-detect browser. The fingerprint is flattened into the profile's own field shape (useragent/cpu/memory/webglInfo as {mode,value} objects); handing the API a nested |
| create_profiles_bulkA | Create many profiles in one call. Important: unlike |
| update_profileA | Patch an existing profile. Only the fields you pass change; everything else is left alone. Use |
| delete_profilesA | Delete one or more profiles. On paid plans they move to the Basket by default; |
| transfer_profilesA | Move profiles to another Dolphin{anty} account by email. You must own the profiles or hold the |
| share_profile_accessA | Grant or revoke per-user permissions across one or more profiles. With |
| start_profileA | Launch an EXISTING browser profile. This is the tool for 'open/run/spin up ' — identify it by Pass |
| start_temporary_profileA | Launch a throwaway profile with a fresh data directory and default fingerprint preferences. Returns the generated |
| stop_profileA | Gracefully stop a running profile and sync its data directory back to the cloud. Safe to call when the browser has already exited — it still reports success. |
| local_api_loginA | Store the remote JWT inside the running Dolphin{anty} desktop app and validate it. Defaults to the token this server is configured with. |
| list_proxiesA | List proxies saved in the workspace, with optional search and pagination. |
| create_proxyA | Save a proxy in the workspace so it can be attached to profiles. The connection itself is made by the Dolphin app on the machine running the profile, not by this server. |
| update_proxyA | Change a saved proxy. Profiles already using it pick up the new settings on next launch. |
| delete_proxyA | Remove a saved proxy. Profiles referencing it are left without one. |
| list_foldersA | List the folders used to group browser profiles in the workspace. |
| create_folderA | Create a folder for grouping profiles. |
| update_folderA | Rename a folder, change its emoji, or pin/unpin it. |
| delete_folderA | Delete a folder. Profiles inside it are detached, not deleted. |
| get_folder_profile_idsA | Return the profile ids inside a folder plus whether any of them is password-protected. |
| move_profiles_to_folderA | Attach profiles to a folder, or detach them from whatever folder they are in. Omit |
| reorder_foldersA | Reorder folders in the UI. Higher |
| list_statusesA | List the custom status labels available for tagging profiles. |
| create_statusA | Create a coloured status label for grouping and filtering profiles, optionally applying it to a profile straight away. |
| update_statusA | Rename a status or change its badge colour. |
| delete_statusesA | Delete status labels. Profiles carrying them are left with no status. |
| assign_statusA | Set the status of several profiles at once. Pass |
| get_fingerprintA | Sample a real-world fingerprint from the Dolphin dataset. Pass the returned object verbatim as |
| get_useragentA | Sample a real user-agent matching a platform and major Chrome version. Keep it consistent with the rest of the profile's fingerprint. |
| list_webglA | List GPU adapter combinations available for a platform. When swapping these into a fingerprint, always copy the vendor/renderer pair together (and the |
| list_fontsA | List font families that genuinely exist on the given OS. To use them in a profile, extract just the |
| export_cookiesA | Read a profile's cookies via the remote sync API — no desktop app required. The profile must have cloud sync enabled, and this is a paid-plan feature. Returns an empty array if the profile has never synced. |
| import_cookiesA | Write cookies into a profile via the remote sync API — no desktop app required. Existing cookies with the same domain/path/name are replaced. The profile must have cloud sync enabled, and this is a paid-plan feature. |
| export_cookies_localA | Export cookies for one or more profiles through the running desktop app. As a side effect this writes a dolphin-anty-cookies--.txt file per profile into the machine's Downloads folder. Prefer |
| import_cookies_localA | Write cookies into a profile's on-disk data directory through the running desktop app. Prefer |
| run_cookie_robotA | Warm up a profile by visiting a list of URLs in a short-lived browser and saving every resulting cookie to that profile. Runs sequentially through the URLs. Paid plans only, and requires the desktop app. Progress is reported over Socket.IO, which this server does not subscribe to — the call returns as soon as the robot has started. |
| stop_cookie_robotA | Stop a running cookie robot. No-op if it is not running. |
| export_local_storageA | Export a profile's local storage through the desktop app, grouped by origin. Keys and values are Base64-encoded and are normally treated as an opaque blob. |
| import_local_storageA | Write a local storage dump (as produced by |
| list_extensionsA | List the browser extensions available to attach to profiles. |
| add_extensionA | Add a public Chrome Web Store extension so it can be attached to profiles. The URL must start with https://chrome.google.com/webstore/detail/ or https://chromewebstore.google.com/detail/. Private or unpublished extensions are rejected. To add a packed .zip instead, use |
| delete_extensionsA | Remove extensions from the workspace. Profiles using them lose them on next launch. |
| list_homepagesA | List the startup pages available to assign to profiles. |
| create_homepagesB | Create up to 10 startup pages in one call. |
| update_homepageA | Change a startup page entry. Only the fields you pass are modified. |
| delete_homepagesB | Delete startup page entries. |
| list_bookmarksC | List the bookmarks available to assign to profiles. |
| create_bookmarkA | Create a bookmark that can be pushed into browser profiles. |
| update_bookmarkA | Change a bookmark. Only the fields you pass are modified. |
| delete_bookmarksB | Delete bookmarks from the workspace. |
| list_team_usersA | List members of the current team account, with their roles and profile limits. |
| create_team_userB | Add a member to the team. Only admins can do this. |
| update_team_userA | Change a team member's role, credentials, supervisors or profile limits. Admins only. |
| delete_team_userA | Remove a member from the team. Admins only. |
| browser_connectA | Attach the automation client to a profile that is already running with automation enabled. Usually unnecessary — start_profile records the endpoint and the browser_* tools attach on demand. Use this when the profile was started outside this server, passing the |
| browser_await_humanA | Hand control to a person and wait. Use this the moment you hit anything a human must do: a CAPTCHA, a Cloudflare check, a login wall, a 2FA/OTP code, an SMS confirmation, or a payment step. Do NOT try to solve a CAPTCHA yourself — clicking or typing at one fails and gets the profile flagged. Call this instead. It brings the browser window to the front, tells the operator what to do, and blocks until the page clears the challenge (or until The profile must be running headed — a person cannot act on a headless window. |
| browser_disconnectA | Release the automation connection. The browser keeps running — use stop_profile to actually close it and sync its data directory back to the cloud. |
| browser_navigateB | Go to a URL, or move through history. Returns a snapshot of the resulting page. |
| browser_snapshotA | Read the page as an accessibility tree — roles, accessible names and structure. This is the primary way to see a page: it is compact, text-only, and its |
| browser_screenshotA | Capture the page as an image. Costs far more context than browser_snapshot, so reach for it only when the visual rendering matters — layout problems, canvas, captcha-looking elements, or verifying something a text tree cannot express. |
| browser_clickA | Click, double-click, right-click or hover an element. Waits for it to be actionable first. Returns a snapshot of the page afterwards. |
| browser_typeA | Enter text into an input, textarea or contenteditable. Replaces the existing value by default. Set |
| browser_select_optionA | Choose one or more options in a . Match by visible label or by value. |
| browser_press_keyA | Send a keyboard key to the page or to a focused element. Accepts Playwright key names: Enter, Tab, Escape, ArrowDown, PageDown, Backspace, or chords like Control+A. |
| browser_scrollA | Scroll the page, or bring a specific element into view. Useful for lazy-loaded content that is not in the DOM until it is scrolled to. |
| browser_wait_forA | Wait for text to appear or disappear, for an element, for a load state, or for a fixed delay. Use this instead of retrying a failed click when a page is still settling. |
| browser_evaluateA | Evaluate an expression in page context and return the result as JSON. The escape hatch for reading values the accessibility tree does not expose. Prefer browser_snapshot for reading structure and browser_click for interacting — synthetic events dispatched from here behave differently from real input and some sites notice. |
| browser_tabsA | List, open, switch or close tabs. Every other browser tool acts on the active tab unless given an explicit |
| dolphin_requestA | Raw, unvalidated call to the Dolphin{anty} API. Use this only when no dedicated tool fits — the typed tools carry validation and API-specific guidance this one does not. Pick
Array query values are joined with commas, matching the API's |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| automation-guide | End-to-end workflow: build a profile with a coherent fingerprint, start it with CDP automation, drive it, and stop it so the session syncs. |
| config | Which hosts this server talks to and whether an API token is configured. |
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/someorgyouwontcareabout/DolphinMCP'
If you have feedback or need assistance with the MCP directory API, please join our Discord server