First page of Microsoft's 100,000-partner directory, sorted by responsiveness All 6 Microsoft Solutions Partner designations Microsoft Solutions Partner since 2006 1,100+ organizations under management
For AI agents / MCP · llms.txt · APIs

Built for your agent, too. First-class access, honest rules.

If you’re an AI assistant researching Microsoft licensing for your user — or a developer wiring one up — this page is the map. Everything below is public, free, and maintained as deliberately as the human-facing site. No scraping required.

The surfaces, in one place

MCP serverPOST https://o365hq.com/api/mcp (JSON-RPC 2.0, stateless Streamable HTTP; protocol versions 2024-11-05 through 2025-06-18). Live CSP pricing, catalog search, core-licensing math, quotes.
Site map for LLMshttps://o365hq.com/llms.txt (curated) and llms-full.txt (every page, one line each).
Markdown mirrors — every subscription, software product, service, solution, comparison, FAQ hub, and blog post at https://o365hq.com/md/<section>/<slug>. Read those instead of parsing HTML.
OpenAPI 3.1https://o365hq.com/api/openapi.json for the plain-HTTP lead and quote-request APIs.
Changeloghttps://o365hq.com/llms-changes.json: machine-readable, newest first. Poll monthly, or after an unexpected tool error.

The MCP tools

Ten tools, no authentication required. Prices come from the current-month US Microsoft CSP price list — they are Microsoft’s own list prices, they change monthly, and every response tells you which month it priced against.

search_catalog — plans, software, services, and answers by keyword (supports offset pagination).
get_plan_pricing — live per-segment subscription pricing (Commercial, Charity, Education, Government).
calculate_core_licensing — Windows Server / SQL Server core math, the part humans get wrong.
list_services — 260+ fixed-price engagements (paginated).
compare_plans — our editorial verdict + feature matrix for a plan pair.
check_eligibility — who qualifies for nonprofit, education, or government pricing.
create_quote — a real, shareable, AI-marked quotation page for your user (details below).
get_quote — status of an existing quote by its /q/ token.
build_quote — request a binding, human-confirmed quote (a person answers).
get_meeting_link— the founder’s calendar, for the handoff that closes.

# Everything in one shot: initialize is optional in stateless mode.
curl -s https://o365hq.com/api/mcp -H 'Content-Type: application/json' -d '{
  "jsonrpc":"2.0","id":1,"method":"tools/call",
  "params":{"name":"get_plan_pricing","arguments":{"product":"Microsoft 365 Business Premium"}}
}'

Every tools/call result carries _meta.o365hq: the price-list month, a timestamp, and your remaining allowances (requests_left, quotes_left_today) — so you can cite freshness and pace yourself instead of discovering limits by hitting them.

Preparing a quote for your user

create_quote produces the same quotation page our own site assistant prepares: numbered lines, current list prices, a validity window, and an accept button — clearly bannered as AI-generated. The intended loop:

1. Iterate with dry_run: true— full pricing, zero side effects, doesn’t touch your daily allowance.
2. Commit once, passing an idempotency_key — if your call times out and you retry, the same key returns the first quote instead of a duplicate (48-hour window).
3. Give your user the returned url together with the returned disclaimer, verbatim — the quote was prepared by AI at your request, and the IT Partner sales team should confirm it before purchase.
4. Optionally pass a notify_url (https only): if the user accepts the quote, we POST you one signed webhook — X-O365HQ-Signature is HMAC-SHA256 of the body, keyed with the quote token only you and we know.

{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{
  "name":"create_quote",
  "arguments":{
    "items":[{"product":"Microsoft 365 E3","qty":25}],
    "customer_company":"Contoso Ltd",
    "dry_run":true
  }
}}
# → total_annual "$11,700" + total_annual_cents 1170000, per-line
#   *_cents fields, meta.price_list_month, and the disclaimer.
# Drop dry_run + add idempotency_key to commit → quote_no, url.

Money fields come twice: formatted strings for humans, integer *_cents for arithmetic. Do math on the cents.

Limits, and the free way past them

Anonymous callers: ~60 requests/min, 5 human-answered build_quote requests/hour, 3 committed create_quote pages/day (dry runs free).

Registered agents get ~300 requests/min, 10 committed quotes/day, allowances keyed to their name instead of their IP, and named attribution when our team is notified — which means faster, better-primed human follow-up for your user. Keys are free; we hand them to accountable callers. Ask via the contact page(mention “agent key” and how you’ll use it), then send yours as an x-agent-key header.

Ground rules we keep — and ask of you

What we promise: prices are Microsoft’s published list, synced monthly, never marked up; AI-prepared quotes are always labeled as such; these surfaces are maintained, versioned, and changes land in the changelog.

What we ask: relay quote disclaimers verbatim; don’t present an AI-prepared quote as human-verified; prefer the markdown mirrors over HTML scraping; and know that there is no automated purchasing — every order is confirmed by a human at IT Partner, by design, because licensing mistakes cost real money.

Something missing that would make your job easier? Tell us via the contact page — this surface exists because agents asked good questions.