MCP Server Documentation
108 Tools · Model Context Protocol Server for AI Agents
Connect Claude, Cursor, VS Code, and any MCP-compatible AI agent directly to DYNO Mapper. Crawl public sites and private SharePoint sites, edit sitemaps, run accessibility audits, analyze website inventory, monitor keyword visibility, and surface SEO issues, all through natural conversation without leaving your AI client.
Hosted (recommended):
https://mcp.dynomapper.com/mcp· Sign-in: OAuth with your DYNO Mapper accountLocal:
@dynomapper/mcp-server· Transport: stdio · Runtime: Node.js · Sign-in: Personal Access Token
| 108 | 15 | 2 | OAuth / PAT |
|---|---|---|---|
| Tools | Modules | Ways to connect (hosted or local) | Sign-in methods |
Quick Navigation
Quickstart · Architecture · User · Projects · Logins & Sign-in Prompts · Categories, Statuses & Groups · V.A.C.Q. & D.A.C.Q. Scores · Sitemap Items · Sitemap Editing · Inventory · SEO Audit · Analytics · Comments · Visibility & Keywords · Accessibility (Web) · Accessibility (PDF) · Assignments · Workflow Examples · Configuration
What is MCP?
The Model Context Protocol is an open standard that lets AI agents securely connect to external tools and data sources. It was created by Anthropic and is now governed by the Agentic AI Foundation under the Linux Foundation. Instead of writing a custom integration for every AI client, you connect one MCP server and it works with Claude, Cursor, VS Code, Windsurf, and any other MCP-compatible host.
The DYNO Mapper MCP server translates AI tool calls into DYNO Mapper actions. Your agent can plan a redesign, restructure a sitemap, audit a client site for WCAG issues, surface SEO problems, or pull keyword rankings, all through natural language.
Quickstart
⚡ Option 1: Hosted Server (recommended)
Nothing to install and no token to copy. Add the server URL to your AI client, then sign in with your DYNO Mapper account when prompted.
https://mcp.dynomapper.com/mcp
Claude (web and desktop)
- Open Settings → Connectors and choose Add custom connector.
- Name it DYNO Mapper and paste
https://mcp.dynomapper.com/mcpas the server URL. - Click Connect, sign in to DYNO Mapper, and approve access.
On Team and Enterprise plans, an owner may need to add the connector for the organization first.
Claude Code
claude mcp add --transport http dynomapper https://mcp.dynomapper.com/mcp
Then run /mcp inside Claude Code and choose Authenticate to sign in.
Cursor
Add this to ~/.cursor/mcp.json (or .cursor/mcp.json in a project). Cursor opens the DYNO Mapper sign-in the first time it connects.
{
"mcpServers": {
"dynomapper": {
"url": "https://mcp.dynomapper.com/mcp"
}
}
}
VS Code
Add this to .vscode/mcp.json, then start the server from the MCP view and sign in when prompted.
{
"servers": {
"dynomapper": {
"type": "http",
"url": "https://mcp.dynomapper.com/mcp"
}
}
}
Any other client that supports remote MCP servers with OAuth works the same way: give it the URL and sign in.
Once connected, try a prompt like:
“List my DYNO Mapper projects, then summarize the latest SEO audit for the most recent one and give me its top three issues.”
Option 2: Local Server (npm)
Run the server on your own machine with Node.js. The local server signs in with a Personal Access Token.
1. Generate a Personal Access Token
Log in to DYNO Mapper and navigate to app.dynomapper.com/developer. In the Personal Access Tokens section, click Generate, name your token, and copy it somewhere safe.
Keep your Personal Access Tokens secure and never share them publicly or commit them to source control.
2. Add to your client’s MCP configuration
For Claude Desktop, edit your config file:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Windows:
%APPDATA%\Claude\claude_desktop_config.json
Add the DYNO Mapper server. The same block works in Cursor, Windsurf, and other MCP clients that run local servers:
{
"mcpServers": {
"dynomapper": {
"command": "npx",
"args": ["-y", "@dynomapper/mcp-server"],
"env": {
"MCP_API_KEY": "your_personal_access_token_here"
}
}
}
}
3. Restart your client
The DYNO Mapper tools will appear in your client’s tool list.
Global Install (optional)
To skip the npx download on each launch:
npm install -g @dynomapper/mcp-server
Architecture
┌──────────────┐ HTTPS · OAuth ┌──────────────────────────┐
│ AI client │ ───────────────────► │ mcp.dynomapper.com/mcp │ ──┐
│ (Claude, │ └──────────────────────────┘ │ ┌───────────────┐
│ Cursor, │ ├──► │ DYNO Mapper │
│ VS Code) │ stdio · PAT (local) ┌──────────────────────────┐ │ └───────┬───────┘
│ │ ───────────────────► │ @dynomapper/mcp-server │ ──┘ │
└──────────────┘ └──────────────────────────┘ ┌────────┼─────────┐
▼ ▼ ▼
Crawler & Accessibility Visibility
Inventory Engine Tracking
Agents can both read and change your DYNO Mapper data. Of the 108 tools, 66 read reports, audits, analytics, rankings, and sitemaps. The other 42 create, change, or delete things: crawls and imports, sitemap items and page content, comments, categories, workflow statuses, keyword tracking, and accessibility runs.
- Sitemap edits can be undone. They share the project’s undo history with the sitemap editor in the app, which keeps the 30 most recent edits.
- Some deletes are permanent. Deleted comments and accessibility runs cannot be restored through the MCP server.
- Review write actions. Most MCP clients can ask for your approval before a tool runs. Consider keeping that on for tools that change data.
The tool reference below describes the hosted server.
Tool Reference
All 108 tools are grouped into 15 modules below. Parameters use camelCase, for example projectId.
User
| Tool | Description |
|---|---|
get_current_user |
Get the signed-in user and the account the tools act on. The quickest way to check that a connection works. |
Projects
Create projects by crawling a public URL or a private SharePoint team site, or by importing a list of URLs or an XML sitemap. Track crawl status, refresh, or cancel any project operation in flight.
| Tool | Description |
|---|---|
get_projects |
List the account’s published or archived projects, with search, sorting, and paging |
get_project_details |
Get one project with its item, page, and container counts |
create_project_from_url |
Crawl a website and create a project from it, with scope rules, JavaScript rendering, and optional sign-in |
create_project_from_sharepoint |
Crawl a private SharePoint team site using a Microsoft account; the crawl pauses for MFA prompts when needed |
create_project_from_file |
Import a project from a plain-text list of URLs or an XML sitemap, fetched from a URL |
get_project_url_job_status |
Get the status (pending, running, saving, finished) and progress of a URL or SharePoint crawl |
get_project_file_job_status |
Get the status of a text or XML import |
cancel_project_url_job |
Cancel a crawl in progress |
cancel_project_file_job |
Cancel an import in progress |
refresh_project_url |
Re-crawl a URL project and merge the results, choosing whether to add new pages and overwrite titles, metadata, or content |
refresh_project_file |
Re-import a file project from its source URL |
cancel_project_url_refresh |
Cancel a refresh of a URL-based project |
cancel_project_file_refresh |
Cancel a refresh of a file-based project |
SharePoint credentials: the username and password are passed to the crawler and never stored by DYNO Mapper. Because they are tool arguments, they will appear in your AI conversation and in any client-side logs.
File imports: the hosted server cannot read files from your computer, so
create_project_from_filefetches the file from a URL. A project imported from a URL can be refreshed later.
Logins & Sign-in Prompts
Crawl sites that sit behind a login. Saved login definitions are created in the DYNO Mapper app; these tools list and test them. When a crawl needs a value mid-sign-in, such as an MFA code, it pauses until you answer the prompt. Prompts expire about an hour after they appear.
| Tool | Description |
|---|---|
get_project_custom_logins |
List the saved login definitions a crawl can sign in with |
test_project_custom_login |
Test a saved login definition |
get_project_custom_login_test_result |
Get the result of a login test |
get_project_login_inputs |
List the sign-in prompts, such as an MFA code, that a crawl is waiting on |
submit_project_login_input |
Answer a sign-in prompt so the crawl can continue |
Categories, Workflow Statuses & Groups
Account-wide labels for sitemap pages. The ten built-in workflow statuses can be recoloured, reordered, and hidden, but not renamed or deleted.
| Tool | Description |
|---|---|
get_project_categories |
List the categories available for labelling pages |
create_project_category |
Create a category, or return it if one with that name already exists |
update_project_category |
Rename or recolour a category |
delete_project_category |
Remove a category from the account’s list; pages keep the value they carry |
move_project_category |
Change a category’s position in the list |
get_project_workflow_statuses |
List the workflow statuses, built-in and custom |
create_project_workflow_status |
Create a workflow status, optionally nested one level under another |
update_project_workflow_status |
Rename a custom status or recolour any status |
delete_project_workflow_status |
Remove a status from the account’s list; pages keep the value they carry |
move_project_workflow_status |
Reorder a status, nest it under another, or move it back to the top level |
get_project_groups |
List the project groups |
V.A.C.Q. & D.A.C.Q. Scores
V.A.C.Q. (Visibility, Accessibility, and Content Quality) scores publicly reachable sites. D.A.C.Q. (Discoverability, Accessibility, and Content Quality) scores private SharePoint projects, which have no search visibility to measure. Each pillar stays empty until it has been measured, and the overall score appears once all three are available: Accessibility needs a completed run of run_accessibility_checker, and V.A.C.Q. Visibility needs keywords tracked for the project’s domain.
| Tool | Description |
|---|---|
get_project_vacq_score |
Get the V.A.C.Q. score for a public project |
get_project_dacq_score |
Get the D.A.C.Q. score for a private SharePoint project |
Sitemap Items
| Tool | Description |
|---|---|
get_project_sitemap_items |
List a project’s sitemap tree, or one item’s subtree |
get_project_sitemap_item_details |
Get one sitemap item with its metadata |
get_project_sitemap_item_content |
Get a page’s content blocks (rich text, text, link, image, file, video) |
Sitemap Editing
Build and restructure sitemaps the same way the sitemap editor does. Every edit is recorded in the project’s undo history, which is shared with the app and keeps the 30 most recent edits. Bulk tools accept up to 500 items per call.
| Tool | Description |
|---|---|
create_project_sitemap_item |
Add a page or container to the sitemap |
update_project_sitemap_item |
Change an item’s title, URL, metadata, category, workflow status, tags, or colours |
delete_project_sitemap_item |
Delete an item and everything beneath it |
duplicate_project_sitemap_item |
Copy an item and, optionally, its direct children |
move_project_sitemap_item |
Move an item to a new parent or position |
sort_project_sitemap_items |
Sort a container’s children by title |
bulk_update_project_sitemap_items |
Set a category, workflow status, tags, or colours on many items at once |
bulk_move_project_sitemap_items |
Move many items in one all-or-nothing operation |
bulk_delete_project_sitemap_items |
Delete many items in one all-or-nothing operation |
replace_project_sitemap_item_content |
Replace a page’s content blocks |
undo_project_sitemap_edit |
Undo the most recent sitemap edit, whether made by an agent or in the app |
redo_project_sitemap_edit |
Redo the most recently undone edit |
get_project_sitemap_undo |
Preview the edit the next undo would reverse |
get_project_sitemap_redo |
Preview the edit the next redo would replay |
Inventory
Full content inventory: pages, links, and link occurrence tracking across the project.
| Tool | Description |
|---|---|
get_inventory |
Get the inventory of a project |
get_inventory_summary |
Get page, link, and failed-link counts for a project |
get_inventory_item_links |
Get links of a specific sitemap item |
get_inventory_link_occurrences |
Get occurrences of a link in inventory |
SEO Audit
A full breakdown of on-page issues, with dedicated tools for each issue type so agents can pull just the slice they need. Audits are run in the DYNO Mapper app; these tools read the results. The issue tools read the latest audit. Requires the Content Audit feature.
| Tool | Description |
|---|---|
get_audit_results |
List a project’s audit runs, newest first, with the issue counts from each run |
get_audit_score |
Get the content audit score (0 to 100) from the latest run |
get_audit_broken_links |
Get links that returned an error (4xx, 5xx, or a failed request) |
get_audit_client_error |
Get client errors (4xx) |
get_audit_duplicate_title |
Get pages with duplicate titles |
get_audit_missing_title |
Get pages with missing titles |
get_audit_long_title |
Get pages with overly long titles |
get_audit_duplicate_description |
Get pages with duplicate meta descriptions |
get_audit_missing_description |
Get pages with missing meta descriptions |
get_audit_long_description |
Get pages with overly long meta descriptions |
get_audit_non_crawlable |
Get non-crawlable pages |
get_audit_non_indexable |
Get non-indexable pages |
get_audit_orphan_pages |
Get orphan pages (not linked from any other page) |
Analytics
Project-level and page-level analytics, daily series, traffic sources, and events from the Google Analytics 4 properties linked to the project. Each request takes a start and end date. When several properties are linked, their figures are added together.
| Tool | Description |
|---|---|
get_analytics_project |
Get traffic totals for a project over a date range |
get_analytics_project_daily |
Get daily analytics data |
get_analytics_project_traffic_source |
Get traffic by channel |
get_analytics_project_events |
Get events |
get_analytics_project_pages |
Get analytics for project pages |
get_analytics_sitemap_item |
Get analytics of a single sitemap item |
get_analytics_sitemap_item_daily |
Get daily analytics of a sitemap item |
Comments
Read and write comments on sitemap items. Comments are published immediately, and a deleted comment cannot be restored.
| Tool | Description |
|---|---|
get_commented_items |
Get commented items for a project |
get_item_comments |
Get the comment thread for one item |
get_all_project_comments |
Get every comment in a project, newest first, with text search |
create_item_comment |
Post a comment on a sitemap item |
update_item_comment |
Edit a comment |
delete_item_comment |
Delete a comment |
Visibility & Keywords
Track keyword rankings on Google, Bing, and Yahoo by locale and device (desktop, tablet, or mobile), and organize keywords into groups. New keywords are checked in the background, so allow a few days for first positions.
| Tool | Description |
|---|---|
get_visibility_project_ranking |
Get keyword rankings for a date range, with the change over that range |
get_visibility_project_score |
Get the visibility score of a project |
get_visibility_project_groups |
Get keyword groups |
get_visibility_keyword_ranking |
Get the daily ranking of a single keyword |
get_visibility_locales |
Get supported visibility locales |
create_visibility_keyword_group |
Create a keyword group |
delete_visibility_keyword_group |
Delete a keyword group |
create_visibility_keywords |
Add up to 100 keywords to track, with locale, device, and an optional group |
update_visibility_keywords_group |
Move one or more keywords into a group, or out of all groups |
update_visibility_keyword_setting |
Move keywords that have not been checked yet to a different locale or device |
Accessibility (Web)
Run and review accessibility audits against WCAG 1.0, 2.0, 2.1, and 2.2 (levels A, AA, and AAA), Section 508, BITV 1.0, and the Stanca Act. The default is WCAG 2.2 AAA. Choose whether to record likely problems, potential problems, and manual checks. Runs are asynchronous: run_accessibility_checker returns a report id that the other tools take as reportId.
| Tool | Description |
|---|---|
run_accessibility_checker |
Start an accessibility check of a project and return the run’s report id |
get_accessibility_results |
List a project’s accessibility runs, newest first, with their scores and problem counts |
delete_accessibility_report |
Delete an accessibility run |
get_accessibility_report_items |
Get the pages checked in a run |
get_accessibility_history |
Get finished runs as a time series, optionally within a date range |
get_accessibility_score |
Get the current accessibility score (0 to 100) and the change since the previous run |
get_accessibility_report_problems |
Summarize a run’s problems by guideline |
get_accessibility_report_groups |
Get the guidelines and success criteria a run found problems in |
get_accessibility_report_item_result |
Get the result for a specific page in a run |
get_accessibility_login_inputs |
List the sign-in prompts, such as an MFA code, that a run is waiting on |
submit_accessibility_login_input |
Answer a sign-in prompt so the run can continue |
Accessibility (PDF)
| Tool | Description |
|---|---|
get_accessibility_pdf_files |
List PDF accessibility files |
get_accessibility_pdf_guidelines |
List PDF accessibility guidelines |
get_accessibility_pdf_item_result |
Get the result for a specific PDF accessibility item |
Assignments
Surface and triage content workflow assignments at the account or project level.
| Tool | Description |
|---|---|
get_assignments |
Get a paginated list of assignments, with status, date, and tag filters |
get_project_assignments |
Get a paginated list of assignments by project |
get_assignments_totals |
Get total, open, completed, recent, and past-due counts across projects |
get_project_assignments_totals |
Get the same counts for one project |
get_assignment_details |
Get an assignment by id, with its assignees |
Workflow Examples
A few prompts to illustrate how tool calls chain together in practice.
Crawl a New Site and Check Accessibility
“Create a DYNO Mapper project for example.com, wait until the crawl is done, summarize the inventory, then run a WCAG 2.2 AA check.”
create_project_from_url(url="https://example.com") # returns the project id
get_project_url_job_status(id=…) # poll until status is FINISHED
get_inventory_summary(projectId=…)
run_accessibility_checker(projectId=…, guidelines=["WCAG22-AA"]) # returns the report id
get_accessibility_results(projectId=…) # poll until the run has a score
Review the Latest SEO Audit
“Give me the audit score for project 256 and list its 404s, missing titles, and orphan pages.”
get_audit_score(projectId=256)
get_audit_broken_links(projectId=256, search="404")
get_audit_missing_title(projectId=256)
get_audit_orphan_pages(projectId=256)
Run a WCAG Audit on an Existing Project
“Run the accessibility checker on project 412 and show me the problems grouped by guideline.”
run_accessibility_checker(projectId=412, guidelines=["WCAG22-AA"]) # returns reportId
get_accessibility_results(projectId=412) # poll until the run has a score
get_accessibility_score(projectId=412)
get_accessibility_report_problems(projectId=412, reportId=…)
get_accessibility_report_groups(projectId=412, reportId=…)
Track Keywords for a Client
“Add the keywords ‘enterprise CMS’, ‘headless CMS’, and ‘CMS migration’ to project 88 under a ‘CMS Core’ group, then pull their rankings for November.”
create_visibility_keyword_group(projectId=88, name="CMS Core") # returns the group id
create_visibility_keywords(projectId=88, keywords=[...], group=…, locale="en-us", device="desktop")
get_visibility_project_ranking(projectId=88, startDate="2026-11-01", endDate="2026-11-30")
Rankings fill in as the first checks run, usually within a few days.
Crawl a Private SharePoint Site
“Crawl our SharePoint intranet at mycompany.sharepoint.com and give me its D.A.C.Q. score.”
create_project_from_sharepoint(subdomain="mycompany", username="crawler@mycompany.com", password="…")
get_project_url_job_status(id=…) # poll; RUNNING may mean it is waiting on MFA
get_project_login_inputs(projectId=…) # if a prompt is ready
submit_project_login_input(projectId=…, inputId=0, value="123456")
run_accessibility_checker(projectId=…) # D.A.C.Q. needs an accessibility run
get_project_dacq_score(projectId=…)
Restructure a Sitemap
“In project 512, create an Archive section, move the 2019 blog posts into it, and mark them for consolidation.”
get_project_sitemap_items(projectId=512)
create_project_sitemap_item(projectId=512, parentId=…, title="Archive") # returns the new item id
bulk_move_project_sitemap_items(projectId=512, items=[{itemId: …, parentId: …}, …])
bulk_update_project_sitemap_items(projectId=512, itemIds=[…], workflowStatus="consolidate")
undo_project_sitemap_edit(projectId=512) # if you change your mind
Triage Outstanding Assignments
“Show me assignment totals across my projects, then drill into the five oldest open ones.”
get_assignments_totals()
get_assignments(status="open", orderBy="created", orderDir="asc", limit=5)
get_assignment_details(id=…) # for each
Refresh a Project on Demand
“Re-crawl project 256 and pick up any new pages.”
refresh_project_url(id=256, addNewPages=true, updateTitles=true)
get_project_details(projectId=256) # check later for updated counts
A refresh is queued and does not report progress. A project that signs in must include its login values in authOptions on every refresh.
Configuration
Hosted Server
No configuration is needed. Your client stores the sign-in after you approve access. To disconnect, remove the DYNO Mapper connector from your client.
Local Server
The local server is configured through environment variables.
| Variable | Required | Description |
|---|---|---|
MCP_API_KEY |
✓ | Your DYNO Mapper Personal Access Token. Generate one at app.dynomapper.com/developer. |
Where to Find Your Token
- Log in to DYNO Mapper.
- Go to https://app.dynomapper.com/developer.
- Open the Personal Access Tokens section.
- Click Generate, name your token, and copy it.
Treat your token like a password. Never commit it to source control, share it in screenshots, or paste it into untrusted clients. You can revoke and regenerate tokens at any time from the same page.
Resources
- Hosted server:
https://mcp.dynomapper.com/mcp - npm:
@dynomapper/mcp-server - MCP Specification: modelcontextprotocol.io
Have questions, run into a bug, or want to request a tool? Contact the DYNO Mapper team.