MSP Software · Schema

Comparison

The two listings a /compare page shows, with the feature checklist rows it puts side by side.

DirectoryMSPSoftwareComparisonReviewsOpenAPI

Properties

Name Type Description
a object
b object
features array Every feature of the two primary categories, merged by name, with each side's mark.
eligible boolean Whether the pair is worth comparing: a shared category, at least 5 marked features on each side, and a price or a review on one of them. The comparison page is noindex and unlinked when false.
url string The comparison page, with the two slugs in alphabetical order.
View JSON Schema on GitHub

JSON Schema

mspsoftware-net-comparison-schema.json Raw ↑
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/mspsoftware-net/json-schema/mspsoftware-net-comparison-schema.json",
  "title": "Comparison",
  "description": "The two listings a /compare page shows, with the feature checklist rows it puts side by side.",
  "x-generated": "2026-10-29",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/mspsoftware-directory-api-openapi.json#/components/schemas/Comparison",
  "type": "object",
  "properties": {
    "a": {
      "$ref": "#/$defs/SoftwareDetail"
    },
    "b": {
      "$ref": "#/$defs/SoftwareDetail"
    },
    "features": {
      "type": "array",
      "description": "Every feature of the two primary categories, merged by name, with each side's mark.",
      "items": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "a": {
            "type": "string",
            "enum": [
              "yes",
              "no",
              "unknown"
            ]
          },
          "b": {
            "type": "string",
            "enum": [
              "yes",
              "no",
              "unknown"
            ]
          }
        }
      }
    },
    "eligible": {
      "type": "boolean",
      "description": "Whether the pair is worth comparing: a shared category, at least 5 marked features on each side, and a price or a review on one of them. The comparison page is noindex and unlinked when false."
    },
    "url": {
      "type": "string",
      "format": "uri",
      "description": "The comparison page, with the two slugs in alphabetical order."
    }
  },
  "$defs": {
    "FaqItem": {
      "type": "object",
      "title": "FaqItem",
      "properties": {
        "question": {
          "type": "string"
        },
        "answer": {
          "type": "string",
          "description": "Plain text, markdown stripped."
        }
      }
    },
    "Rating": {
      "type": [
        "object",
        "null"
      ],
      "title": "Rating",
      "properties": {
        "average": {
          "type": "number",
          "description": "Mean rating, one decimal place, out of 5."
        },
        "count": {
          "type": "integer",
          "description": "Published reviews counted in the average."
        }
      }
    },
    "ReportedPricing": {
      "type": "object",
      "title": "ReportedPricing",
      "description": "One (unit, currency) aggregate, only ever shown at 3 or more independent reporters.",
      "properties": {
        "unit": {
          "type": "string",
          "description": "What MSPs reported paying per: endpoint, technician, user, mailbox."
        },
        "currency": {
          "type": "string"
        },
        "n": {
          "type": "integer",
          "minimum": 3,
          "description": "Independent reporters behind the aggregate."
        },
        "median_minor": {
          "type": "integer",
          "description": "Median monthly price in minor units, normalised to one month."
        },
        "low_minor": {
          "type": [
            "integer",
            "null"
          ],
          "description": "Lowest reported monthly price in minor units."
        },
        "high_minor": {
          "type": [
            "integer",
            "null"
          ],
          "description": "Highest reported monthly price in minor units."
        },
        "window_months": {
          "type": "integer",
          "enum": [
            12,
            24
          ],
          "description": "How far back the reports behind this aggregate reach."
        },
        "latest_month": {
          "type": "string",
          "description": "Month of the most recent report, as YYYY-MM."
        },
        "auto_renew_yes": {
          "type": "integer",
          "description": "Reporters who said the contract auto-renews."
        },
        "auto_renew_n": {
          "type": "integer",
          "description": "Reporters who answered the auto-renewal question at all."
        },
        "typical_notice_days": {
          "type": [
            "integer",
            "null"
          ],
          "description": "Median notice period to cancel, in days."
        },
        "min_quantity_reported": {
          "type": [
            "integer",
            "null"
          ],
          "description": "Smallest quantity any reporter bought at this price."
        }
      }
    },
    "ReviewSummary": {
      "type": [
        "object",
        "null"
      ],
      "title": "ReviewSummary",
      "description": "Aggregate only. Never an individual review, never a reviewer identifier.",
      "properties": {
        "average": {
          "type": "number",
          "description": "Mean rating, one decimal place, out of 5."
        },
        "count": {
          "type": "integer"
        },
        "distribution": {
          "type": "array",
          "description": "Five entries, 5 stars first.",
          "items": {
            "type": "object",
            "properties": {
              "star": {
                "type": "integer",
                "minimum": 1,
                "maximum": 5
              },
              "count": {
                "type": "integer"
              }
            }
          }
        }
      }
    },
    "SoftwareDetail": {
      "type": "object",
      "title": "SoftwareDetail",
      "properties": {
        "slug": {
          "type": "string",
          "description": "The product name in lower case with hyphens, e.g. \"datto-rmm\"."
        },
        "name": {
          "type": "string"
        },
        "tagline": {
          "type": "string"
        },
        "summary": {
          "type": [
            "string",
            "null"
          ],
          "description": "The lead paragraph of the listing page, plain text."
        },
        "description": {
          "type": [
            "string",
            "null"
          ],
          "description": "The vendor description, plain text, markdown stripped."
        },
        "editor_note": {
          "type": [
            "string",
            "null"
          ],
          "deprecated": true,
          "description": "Deprecated. Always null; editorial notes are not public."
        },
        "vendor": {
          "type": "object",
          "properties": {
            "slug": {
              "type": "string"
            },
            "name": {
              "type": "string"
            },
            "url": {
              "type": "string",
              "format": "uri"
            },
            "claimed": {
              "type": "boolean",
              "description": "Whether a verified vendor account holds this vendor."
            }
          }
        },
        "primary_category": {
          "type": [
            "object",
            "null"
          ],
          "description": "Null while the primary category is not published.",
          "properties": {
            "slug": {
              "type": "string"
            },
            "name": {
              "type": "string"
            }
          }
        },
        "secondary_categories": {
          "type": "array",
          "description": "Up to two further published categories the product is also listed under.",
          "items": {
            "type": "object",
            "properties": {
              "slug": {
                "type": "string"
              },
              "name": {
                "type": "string"
              }
            }
          }
        },
        "url": {
          "type": "string",
          "format": "uri"
        },
        "website_url": {
          "type": "string",
          "format": "uri"
        },
        "pricing_url": {
          "type": [
            "string",
            "null"
          ],
          "format": "uri"
        },
        "featured": {
          "type": "boolean",
          "description": "Deprecated: the same value as sponsored."
        },
        "sponsored": {
          "type": "boolean",
          "description": "The product has a live paid placement somewhere on the site."
        },
        "sponsorship_label": {
          "type": [
            "string",
            "null"
          ],
          "enum": [
            "Sponsored",
            null
          ],
          "description": "The label the site shows on a paid placement: \"Sponsored\" when sponsored is true, else null."
        },
        "created_at": {
          "type": "string",
          "format": "date-time",
          "description": "When the listing was first published."
        },
        "updated_at": {
          "type": "string",
          "format": "date-time",
          "description": "Moves only when the content or facts of the listing actually change."
        },
        "editor_reviewed_at": {
          "type": [
            "string",
            "null"
          ],
          "format": "date-time",
          "description": "When MSP Software last checked the facts against the vendor site."
        },
        "facts": {
          "type": "object",
          "description": "Vendor-published facts. A null means the vendor does not publish one, never a guess.",
          "properties": {
            "starting_price": {
              "$ref": "#/$defs/StartingPrice"
            },
            "free_trial": {
              "type": [
                "boolean",
                "null"
              ]
            },
            "free_version": {
              "type": [
                "boolean",
                "null"
              ]
            },
            "pricing_plans": {
              "type": "array",
              "items": {
                "type": "object",
                "properties": {
                  "name": {
                    "type": "string"
                  },
                  "priceMinor": {
                    "type": "integer",
                    "description": "Integer minor units (pence, cents)."
                  },
                  "currency": {
                    "type": "string"
                  },
                  "unit": {
                    "type": "string",
                    "description": "What the plan price is charged per."
                  },
                  "period": {
                    "type": "string",
                    "enum": [
                      "month",
                      "year"
                    ]
                  },
                  "highlights": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  }
                }
              }
            },
            "support_options": {
              "type": "array",
              "items": {
                "type": "string"
              }
            },
            "training_options": {
              "type": "array",
              "items": {
                "type": "string"
              }
            },
            "deployment": {
              "type": "array",
              "items": {
                "type": "string"
              }
            },
            "platforms": {
              "type": "array",
              "items": {
                "type": "string"
              }
            },
            "typical_sizes": {
              "type": "array",
              "items": {
                "type": "string"
              },
              "description": "MSP sizes, in technicians, that report using it."
            },
            "hq_country": {
              "type": [
                "string",
                "null"
              ]
            },
            "founded_year": {
              "type": [
                "integer",
                "null"
              ]
            }
          }
        },
        "feature_list": {
          "type": "array",
          "description": "Grouped by category, since a product can carry secondary categories.",
          "items": {
            "type": "object",
            "properties": {
              "category": {
                "type": "object",
                "properties": {
                  "slug": {
                    "type": "string"
                  },
                  "name": {
                    "type": "string"
                  }
                }
              },
              "features": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "key": {
                      "type": "string"
                    },
                    "name": {
                      "type": "string"
                    },
                    "supported": {
                      "type": "string",
                      "enum": [
                        "yes",
                        "no",
                        "unknown"
                      ]
                    },
                    "note": {
                      "type": [
                        "string",
                        "null"
                      ]
                    }
                  }
                }
              }
            }
          }
        },
        "integrations": {
          "type": "array",
          "description": "What this vendor lists as an integration.",
          "items": {
            "type": "object",
            "properties": {
              "name": {
                "type": "string"
              },
              "url": {
                "type": "string",
                "format": "uri"
              },
              "integrates_with_slug": {
                "type": [
                  "string",
                  "null"
                ],
                "description": "Set when the integration is itself a listing on this site."
              }
            }
          }
        },
        "integrated_by": {
          "type": "array",
          "description": "The other direction: listings on this site that name this product as an integration of theirs.",
          "items": {
            "type": "object",
            "properties": {
              "slug": {
                "type": "string"
              },
              "name": {
                "type": "string"
              },
              "url": {
                "type": "string",
                "format": "uri"
              },
              "category": {
                "type": "object",
                "properties": {
                  "slug": {
                    "type": "string"
                  },
                  "name": {
                    "type": "string"
                  }
                }
              }
            }
          }
        },
        "faqs": {
          "type": "array",
          "description": "The FAQ shown on the listing page: generated from the facts first, then the editor-written questions.",
          "items": {
            "$ref": "#/$defs/FaqItem"
          }
        },
        "alternatives": {
          "type": "array",
          "description": "Up to four ranked alternatives. The full ranked list, with a feature table, is the page at /software/{slug}/alternatives.",
          "items": {
            "$ref": "#/$defs/SoftwareSummary"
          }
        },
        "reported_pricing": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/ReportedPricing"
          }
        },
        "review_summary": {
          "$ref": "#/$defs/ReviewSummary"
        },
        "sub_ratings": {
          "$ref": "#/$defs/SubRatings"
        }
      }
    },
    "SoftwareSummary": {
      "type": "object",
      "title": "SoftwareSummary",
      "properties": {
        "slug": {
          "type": "string",
          "description": "The product name in lower case with hyphens, e.g. \"datto-rmm\"."
        },
        "name": {
          "type": "string"
        },
        "tagline": {
          "type": "string"
        },
        "vendor": {
          "type": "object",
          "properties": {
            "slug": {
              "type": "string"
            },
            "name": {
              "type": "string"
            }
          }
        },
        "category": {
          "type": [
            "object",
            "null"
          ],
          "description": "The primary category only. Null while that category is not published.",
          "properties": {
            "slug": {
              "type": "string"
            },
            "name": {
              "type": "string"
            }
          }
        },
        "url": {
          "type": "string",
          "format": "uri"
        },
        "rating": {
          "$ref": "#/$defs/Rating"
        },
        "starting_price": {
          "$ref": "#/$defs/StartingPrice"
        },
        "free_trial": {
          "type": [
            "boolean",
            "null"
          ]
        },
        "deployment": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "featured": {
          "type": "boolean",
          "description": "Deprecated: the same value as sponsored."
        },
        "sponsored": {
          "type": "boolean",
          "description": "The product has a live paid placement somewhere on the site."
        },
        "sponsorship_label": {
          "type": [
            "string",
            "null"
          ],
          "enum": [
            "Sponsored",
            null
          ],
          "description": "The label the site shows on a paid placement: \"Sponsored\" when sponsored is true, else null."
        },
        "match": {
          "type": [
            "string",
            "null"
          ],
          "enum": [
            "product_name",
            "vendor_name",
            "previous_name",
            "parent_vendor_name",
            "domain",
            "tagline",
            null
          ],
          "description": "Present on search results only: the field q matched, the best-ranked one when several do (a slug match counts as product_name). Null when there is no q."
        },
        "placement": {
          "type": "string",
          "enum": [
            "sponsored",
            "organic"
          ],
          "description": "Present on search results only: \"sponsored\" for the at most two paid placements whose name matches q, shown first and labelled Sponsored; every other result is \"organic\" and ranked without regard to payment."
        },
        "via_vendor": {
          "type": [
            "object",
            "null"
          ],
          "description": "Present on a vendor's products only: the child company that makes this product, or null when the vendor makes it itself.",
          "properties": {
            "slug": {
              "type": "string"
            },
            "name": {
              "type": "string"
            }
          }
        },
        "compare_url": {
          "type": [
            "string",
            "null"
          ],
          "format": "uri",
          "description": "Present on alternatives only: the side-by-side comparison page for this product and the one it is an alternative to, or null when that pair is not comparable."
        }
      }
    },
    "StartingPrice": {
      "type": [
        "object",
        "null"
      ],
      "title": "StartingPrice",
      "description": "The vendor-published entry price. Null when the vendor publishes none.",
      "properties": {
        "minor": {
          "type": "integer",
          "description": "Integer minor units (pence, cents), never a decimal."
        },
        "currency": {
          "type": "string",
          "enum": [
            "GBP",
            "USD",
            "EUR",
            "AUD",
            "CAD"
          ]
        },
        "unit": {
          "type": "string",
          "enum": [
            "endpoint",
            "workstation",
            "server",
            "user",
            "technician",
            "site",
            "mailbox",
            "tb",
            "tenant",
            "network_device",
            "connection",
            "client",
            "flat"
          ],
          "description": "What the price is charged per: endpoint, workstation, server, user, technician, site, mailbox, tb, tenant, network_device, connection (a concurrent remote session), client (a managed client organisation), or flat (one price for the account, read as \"per month\")."
        },
        "period": {
          "type": "string",
          "enum": [
            "month",
            "year"
          ],
          "description": "How often the unit price recurs."
        }
      }
    },
    "SubRatings": {
      "type": [
        "object",
        "null"
      ],
      "title": "SubRatings",
      "description": "Mean of each sub-rating across published reviews, one decimal place out of 5. Null when the listing has no reviews; a field is null when no review scored it.",
      "properties": {
        "ease_of_use": {
          "type": [
            "number",
            "null"
          ]
        },
        "features": {
          "type": [
            "number",
            "null"
          ]
        },
        "support": {
          "type": [
            "number",
            "null"
          ]
        },
        "value": {
          "type": [
            "number",
            "null"
          ]
        }
      }
    }
  }
}

Work with this as data

Every JSON Schema here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for schemas

4 MCP tools reach this
  • find_json_schemasBrowse and filter every JSON Schema in the catalog.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This JSON Schema
curl "https://apis.io/api/v1/json-schemas/mspsoftware-net-comparison"
All schemas
curl "https://apis.io/api/v1/json-schemas?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.