MSP NavigatorMSP Navigator
CategoriesVendorsProductsNews FeedPartner DirectoryFor MSPsFor Vendors
LinkedInSearch

Developers & AI agents

A public, read-only, unauthenticated JSON API over the MSP Navigator software catalog — published products, active vendors, and the category tree. No API key, no signup.

https://www.msp-navigator.com/api/v1
Base URL
None for the public catalog
Authentication (a personal token is required for /api/v1/me and /api/v1/vendor)
JSON · GET only · CORS open
Format

What this is

Every product and vendor page on MSP Navigator is already public — this API just exposes the same catalog data as structured JSON instead of HTML, so developers and AI agents can query it directly instead of scraping pages. All endpoints are GET, return Content-Type: application/json, and work without any authentication, API key, or cookie.

Fair use: this runs on a small catalog app, not a high-throughput API tier. Please cache responses client-side and avoid high-frequency polling. There is no published rate limit today, but abusive traffic may be throttled or blocked.

Endpoints

GET/api/v1

API index: name, version, docs, and a list of endpoints.

curl https://www.msp-navigator.com/api/v1
GET/api/v1/products

List & search published products. Filters: q, category, vendor, hasAi, hasMcp, hasCli, hasApi, psa. Sort: name | updated | featured.

curl "https://www.msp-navigator.com/api/v1/products?hasMcp=true&limit=10"
GET/api/v1/products/{slug}

Full product detail: description, pricing tiers, features, PSA integrations, AI/automation capabilities, vendor.

curl https://www.msp-navigator.com/api/v1/products/connectwise-psa
GET/api/v1/vendors

List active vendors with published product counts. Supports q, sort, page, limit.

curl "https://www.msp-navigator.com/api/v1/vendors?sort=products"
GET/api/v1/vendors/{slug}

Full vendor detail: profile, products, recent news.

curl https://www.msp-navigator.com/api/v1/vendors/connectwise
GET/api/v1/categories

The active category tree (top-level categories with their children) and product counts.

curl https://www.msp-navigator.com/api/v1/categories
GET/api/v1/categories/{slug}

One category, its children, and a first page of its published products.

curl https://www.msp-navigator.com/api/v1/categories/security
GET/api/v1/search?q=

Unified search across products (top 10), vendors (top 5), and categories (top 5). q must be 2+ characters.

curl "https://www.msp-navigator.com/api/v1/search?q=backup"

Error format

Every non-2xx response — including a request to an unknown path under /api/v1 — returns the same JSON shape, so you can parse errors programmatically instead of branching on status text:

{
  "error": {
    "code": "not_found",
    "message": "No published product found with slug \"foo\".",
    "hint": "Check /api/v1/products for valid slugs, or GET /api/v1/search?q= to find one.",
    "docs": "https://www.msp-navigator.com/developers"
  }
}

code is one of bad_request (400), not_found (404), or internal_error (500).

Pagination

List endpoints (/api/v1/products, /api/v1/vendors) accept page (1-based, default 1) and limit (default 25, max 100), and return:

{
  "data": [ /* ... */ ],
  "meta": { "page": 1, "limit": 25, "total": 412, "totalPages": 17 },
  "links": {
    "self": "https://www.msp-navigator.com/api/v1/products?page=1&limit=25",
    "next": "https://www.msp-navigator.com/api/v1/products?page=2&limit=25"
  }
}

Authenticated access for your own AI agent

Beyond the public catalog above, a signed-in user can create a personal API token and let their own AI agent act on their behalf: read their profile, edit their MSP company profile, manage their company's shared product stack (the same stack every user on their team reads and writes), or — for a claimed vendor — edit their own products.

1. Create a token

Sign in, go to Settings → Connected agents, and create a token with the scopes your agent needs. The raw token (mspn_…) is shown exactly once — copy it immediately, since only its hash is stored afterward.

2. Scopes

ScopeGrants
readRead your profile, company and stack
write:profileUpdate your user and company profile
write:stackAdd, update and remove products in your company stack
write:vendorEdit products of the vendor you have claimed

Any write:* scope implies read.

3. Call the API

curl https://www.msp-navigator.com/api/v1/me \
  -H "Authorization: Bearer mspn_your_token_here"

Authenticated endpoints

GET/api/v1/meread

Your own user, MSP company summary, claimed vendor (if any), and token info.

GET/api/v1/me/companyread

Your editable MSP company profile.

PATCH/api/v1/me/companywrite:profile

Partially update your MSP company profile (description, website, headquarters, verticals/regions/languages/certifications, social links). name/slug/domain are read-only.

GET/api/v1/me/stackread

Your MSP company's shared product stack (status/notes/isPrimary and counts by status) — the same stack every user in your company reads and writes, not a personal list. 404 if you're not linked to a company.

PUT/api/v1/me/stack/{productSlug}write:stack

Idempotently add or update one product in your company's stack ({ status, notes?, isPrimary? }).

DELETE/api/v1/me/stack/{productSlug}write:stack

Idempotently remove one product from your company's stack. Always 204.

GET/api/v1/vendor/productsread

Every product of the vendor page you've claimed, including DRAFT/ARCHIVED ones.

PATCH/api/v1/vendor/products/{slug}write:vendor

Edit one of your vendor's products: tagline, description, links, pricing, PSA integrations, AI/automation capability flags. name/slug/status/isFeatured are read-only.

Errors & rate limit

These endpoints use the same { error: { code, message, hint, docs } } envelope as the rest of the API, with a few additional codes:

{
  "error": {
    "code": "forbidden",
    "message": "This endpoint requires the \"write:vendor\" scope.",
    "hint": "Create a token with the \"write:vendor\" scope under Settings → Connected agents.",
    "docs": "https://www.msp-navigator.com/developers"
  }
}

code is one of unauthorized (401 — missing, invalid, expired, or revoked token), forbidden (403 — wrong scope, or you don't own the resource you're editing), validation_error (400 — with a details: [{ path, message }] array), not_found (404), or rate_limited (429 — with a Retry-After header).

Rate limit: 120 requests/minute per token. Every response from these endpoints — reads and writes — is sent with Cache-Control: no-store, since it reflects one caller's own account. Send an Idempotency-Key header and it's echoed back on the response.

Connect your agent

ChatGPT (custom GPT Actions)

Import https://www.msp-navigator.com/openapi.json as the Action's schema. Under Authentication, choose API Key, then set Auth Type to Bearer and paste the token.

Claude, or any agent with HTTP/OpenAPI tools

Load the same OpenAPI document as the tool definitions — every authenticated operation carries an x-required-scope extension saying which scope it needs — and send the token on every call as Authorization: Bearer mspn_….

Prefer native MCP tools over HTTP/OpenAPI? See the MCP server section below — same scopes, same token.

MCP server

A remote MCP (Model Context Protocol) server over Streamable HTTP, at the same catalog and personal-API-token data this page documents — for agents that speak MCP natively instead of HTTP/OpenAPI.

https://www.msp-navigator.com/mcp

Public tools (no token required)

ToolWhat it does
search_productsSearch & filter published products (q, category, vendor, hasAi/hasMcp/hasCli/hasApi, psa, sort, page, limit).
get_productFull product detail by slug.
list_vendorsList active vendors (q, sort, page, limit).
get_vendorFull vendor detail by slug: profile, products, recent news.
list_categoriesThe active category tree with product counts.
get_categoryOne category, its children, and a page of its products.
searchUnified search across products, vendors, and categories.
get_newsRecent MSP-relevant vendor announcements, optionally scoped to one vendor.

Account tools (personal API token required)

Same scopes as the REST API above. Call without a token (or without the required scope) and the tool returns a guided error explaining how to create one — it doesn't fail the whole connection.

ToolScopeWhat it does
get_my_profilereadYour user, MSP company summary, claimed vendor, and token info.
get_my_companyreadYour editable MSP company profile.
update_my_companywrite:profilePartially update your MSP company profile.
get_my_stackreadYour MSP company's shared product stack.
set_stack_itemwrite:stackIdempotently add or update one product in your company's stack.
remove_stack_itemwrite:stackIdempotently remove one product from your company's stack.
list_my_vendor_productsreadEvery product of the vendor page you've claimed.
update_my_vendor_productwrite:vendorEdit one of your claimed vendor's products.

Connect a client

Claude Code

claude mcp add --transport http msp-navigator https://www.msp-navigator.com/mcp \
  --header "Authorization: Bearer <token>"

Claude Desktop / claude.ai (custom connector)

Add https://www.msp-navigator.com/mcp as a custom connector URL. The public catalog tools work with no token at all; for account tools, supply the Authorization: Bearer <token> header where your client supports a custom header per connector.

Cursor (.cursor/mcp.json)

{
  "mcpServers": {
    "msp-navigator": {
      "url": "https://www.msp-navigator.com/mcp",
      "headers": { "Authorization": "Bearer <token>" }
    }
  }
}

Any other MCP client

Point it at https://www.msp-navigator.com/mcp over Streamable HTTP. If it supports per-server custom headers, set Authorization: Bearer <token> to use the account tools; without one, the public catalog tools still work.

Machine-readable resources

  • /openapi.json — OpenAPI 3.1 specification for this entire API (also served at /api/v1/openapi.json), with a unique operationId and a description written for LLM tool-calling on every endpoint.
  • /llms.txt — a plain-text summary of the site for LLMs.
  • Any public page on this site can also be fetched as clean Markdown by sending Accept: text/markdown instead of the default HTML — useful for feeding a product or vendor page straight into an LLM context window without extra parsing.

Using this with AI agents

Import /openapi.json directly as a tool/function definition source — most agent frameworks (OpenAI function calling, Claude tool use, LangChain, etc.) can load an OpenAPI 3.1 document and generate callable tools from it automatically. Every operation has a stable, unique operationId (e.g. listProducts, getProduct, search) you can use as the tool name.

Prefer native MCP tools? A remote MCP server at /mcp exposes the same catalog and personal-API-token data as callable tools over Streamable HTTP.

Questions, bugs, or a use case this API doesn't support yet? Contact us.

MSP Navigator

Discover and compare the best software solutions for IT service providers.

Browse

  • Categories
  • Vendors
  • Products

For Vendors

  • Why List With Us
  • Claim Your Page

Company

  • About Us
  • For MSPs
  • Contact
  • Privacy Policy
  • Terms of Service

© 2026 MSP Navigator. All rights reserved.