Skip to content
Frontier Desk

Give your agent the desk.

A read-only endpoint over what Frontier Desk publishes: the dated index of AI-data buyer programs and the two readings built on it, the desk's notes, the five markets it maps, and its guides, outlooks and verticals. No key, no account.

https://www.frontierdesk.ai/mcp

What this is

MCP (Model Context Protocol) is the open standard for connecting an AI assistant to a source outside itself. A client connects to a server's address, reads the list of tools that server offers, and calls them while it works. This endpoint is one of those servers. Connect a client to the address above and the assistant can search the buyer index, set a company against the figures those buyers publish, read a data offer back clause by clause, open any note the desk has published, look a firm up in the markets we map, and read the guides, outlooks and verticals — with the source and the date on every answer.

Connect

Streamable HTTP at one address, on protocol 2026-07-28. A client that opens with the initialize handshake negotiates a 2025 revision instead, and both paths serve the same tools and the same resources. Nothing else is required: no key, no account, no allow-list.

Claude Code

claude mcp add --transport http frontier-desk https://www.frontierdesk.ai/mcp

Clients that read an mcpServers file

Claude Desktop, Cursor, Windsurf, VS Code and the other clients that keep their servers in JSON take this block.

{
  "mcpServers": {
    "frontier-desk": {
      "type": "http",
      "url": "https://www.frontierdesk.ai/mcp"
    }
  }
}

From a terminal

Lists the tools the endpoint serves right now, which is the list below.

curl -s https://www.frontierdesk.ai/mcp \
  -H 'content-type: application/json' \
  -H 'accept: application/json, text/event-stream' \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'

What it answers

Seventeen tools, grouped by what each group reads. Every argument is optional unless the row says required.

The AI-data buyer index

search_data_buyers

One row per buyer program: what it buys, the per-company figures and size screens it publishes, its stated payment trigger, exclusivity, de-identification and export method, a verbatim quote from its own page, and the day we read that page.

Rows, each with its program URL, source URL, source quote and check date. The same rows render at /data-buyers.

  • query string

    Words to find in a program name or in what it buys, such as “tickets” or “Handshake”.

  • publishes_a_range boolean

    true for only the programs that publish a per-company dollar figure; false for only those that do not.

  • limit integer, 1–50, default 25

    How many rows to return.

instant_range

The span of published figures across the programs a company of a given size and age clears, naming every source behind the span and every program screened out. It answers with no range, and a reason, when fewer than two programs qualify.

has_range, the low and high figures when there is a range, the programs behind them with their quotes, the programs screened out with the reason for each, and the check date.

  • headcount integer, 1–1000000

    Full-time employees. Omit if unknown; a company that has not stated one is not screened on it.

  • years integer, 0–200

    Years of records the company holds. Omit if unknown.

  • headcount_band string: 1_29, 30_99, 100_249, 250_plus

    A /data headcount band instead of an exact figure.

  • years_band string: under_3, 3_5, 6_10, 11_plus

    A /data years band instead of an exact figure.

read_data_offer

Reads a pasted offer: the figure against the published span, the payment trigger, exclusivity, export method and retention, each quoted back out of the offer, plus the terms to settle before signing. Nothing is stored.

Each term reported as stated or as not stated, with the offer's own words quoted, and a question to ask on each term worth settling. A term the offer is silent on is reported as a finding, not filled in.

  • offer string, 60–20000 characters, required

    The offer text: a term sheet, an email, or the part to be read.

  • headcount integer, 1–1000000

    Full-time employees, so the figure is set against the programs this company clears.

  • years integer, 0–200

    Years of records.

The desk's notes

list_notes

The desk's published notes, newest first: the title, the day it was published, its own address on the site, and its first sentences.

Rows, each with a slug to pass to get_note, the note's URL, its publication day, what kind of note it is, and how many sourced items it counted. The same notes render at /intel.

  • limit integer, 1–50, default 25

    How many notes to return, newest first.

  • since string, YYYY-MM-DD

    Only notes published on or after this day.

search_notes

The published notes that carry every word asked for, in their title or their text, newest first. Matching is literal and case-insensitive: nothing is stemmed, ranked or inferred.

The same rows list_notes returns, filtered. An empty answer means the words are not in the corpus, not that the desk has no view on them.

  • query string, 2–120 characters, required

    Words every matching note has to carry, such as “carve-out” or “data centre power”.

  • limit integer, 1–50, default 25

    How many notes to return.

get_note

One published note in full: its text as written, the day it was published, its address on the site, and every link it cites.

The note's body as markdown, plus a sources list of every link in it, so a reader can check the note rather than take its word.

  • slug string, 8–160 characters, required

    The note's slug from list_notes or search_notes. A full /intel/… path works too.

The five markets

list_markets

The five markets Frontier Desk maps — services, compute, data, credit and capital — with the relationship graphs drawn in each, the columns each graph runs through, the sectors you can pick, and counts of what is drawn.

One entry per market with its graphs and their columns, the sector slugs to pass to get_market_sector, and the day the model was read. The whole-field graphs render at /markets.

lookup_firm

A firm in the markets directory by name: what kind of firm it is in plain words, its own site, the relationships held for it, and a line on its recent activity. Up to eight firms per call.

Each firm with its type in reader words, its site where we hold one, and each relation naming the other party — what it bought, backed, lent to or borrowed from. No internal ids, codes, tags, evidence text or third-party scores cross this.

  • query string, 2–60 characters, required

    Part of a firm's name, such as “Monroe” or “CORE Industrial”.

get_market_sector

One sector's relationship graphs: the firms drawn in each column, the relations between them in each side's own words, the roster of who does what, and the lines on what the connections show.

The same JSON the /markets page loads when a visitor picks that sector, plus the graphs this sector is not drawn in, which is a fact about the sector rather than a gap.

  • sector string: accounting, insurance, wealth, it, healthcare, staffing, legal, engineering, marketing, logistics, distribution, operators, software, business-services, property, manufacturing, build-out, required

    The sector to draw, as list_markets gives it.

  • graph string

    One graph instead of all of them, by key, such as “services” or “credit”.

The written library

list_guides

The guides: one page per question an owner asks before a sale, a loan or a data licence, each with the question it answers and a forty-to-sixty-word answer to it.

Rows with a slug to pass to get_guide, the guide's URL, its quick answer, and the day it was last updated. Newest first.

  • query string

    Words to find in a guide's title, question or description, such as “MSP” or “data room”.

  • limit integer, 1–50, default 25

    How many guides to return.

get_guide

One guide in full: its quick answer, its text as markdown, the day it was last updated, and its address on the site.

The guide's body as markdown, written to be quoted, with the question it answers and its update date beside it.

  • slug string, 2–120 characters, required

    The guide's slug from list_guides, such as “sell-an-msp”.

list_outlooks

The standing forecasts: what each one forecasts and over what horizon, the day it was published, and the date it is next rescored.

One row per outlook with its route, to pass to get_outlook, and its own summary and publication date, imported from the report rather than retyped.

get_outlook

One standing forecast: the odds Frontier Desk gives every path at each of the two dates it is scored on, the readings behind them, and the scenarios with the markers that say which one we are on.

Odds tables whose columns each sum to 100, the bottom-line readings with their confidences, and the scenarios. The odds are the desk's own and are settled only by the dated public sources the report names. The whole report is on its page.

  • outlook string: /outlook/company-data-market-2027, /outlook/ai-jobs-and-income-2035, required

    The outlook's route, as list_outlooks gives it.

list_verticals

The services verticals the desk writes a page for: what a data licence looks like in that line of work, and the shape of firm each page illustrates.

One row per vertical with the key to pass to get_vertical, its heading and lead, and whether its card is an illustration or built from aggregate data.

get_vertical

One services vertical: the example firm it illustrates, what changes in that line of work, and what decides whether a firm in it may license at all.

The card's headcount and years bands, the tools such a firm runs on, and the routes worth weighing — labelled as an illustration in `evidence`. No dollar figure is ever stored on a vertical; pass the bands to instant_range for the figures the buyer programs publish.

  • vertical string, 2–60 characters, required

    The vertical's key, as list_verticals gives it.

The public pages, as written

list_public_pages

The tools Frontier Desk publishes for owners, what each one answers, and the written pages behind them.

Each tool with its route and what a reader gets from running it, and the routes get_public_page carries. One row is a Frontier Desk tool on its own domain and says so.

get_public_page

One public page as written: its heading, its lead, and the sections it carries — what the page says it does, what it covers, and what it does not.

The page's own copy. This is not a run of the tool on it: /first-pass ranks a list from a live read for whoever answers its four questions, and nothing here invents one.

  • page string: /tools, /first-pass, /deal-ready-ai, /roadmap, /data, /second-opinion, /compute, /build, /agents, required

    The page's route, as list_public_pages gives it.

Files it serves whole

A resource is for a run that wants the whole of something rather than a page of it. Each one is byte for byte the file the site already serves over plain HTTP, built by the same function, so the two can never drift. A client reads one with resources/read.

fd://data-buyers.json
The whole buyer index as JSON: every row with its published terms, the quote from its own page and the day that page was read, under a dataset name, a citation line and the index's check date. /data-buyers.json
fd://data-buyers.csv
The same index as RFC 4180 CSV, one row per program, with the source URL, the quote and the check date on every row. /data-buyers.csv
fd://llms.txt
What the desk does, and a link to every public page worth reading, grouped. Nothing in it is hidden from the site. /llms.txt
fd://intel/rss.xml
The published notes as RSS 2.0 — the same notes list_notes returns, newest first. /intel/rss.xml

What it will and will not do

  • Every figure carries its source

    Each index row names the page the figure came from, quotes that page, and gives the day it was read. A note carries its own address and every link it cites. Quote those alongside the number.

  • A published range is an advertisement

    It is not an offer, and it is not a valuation of any company's records. Two programs publishing $100K to $4M says what those two advertise, and nothing about what a particular company would be paid.

  • It will not estimate

    With fewer than two qualifying programs, instant_range returns no range and says why. Nothing here interpolates, weights or fills a gap.

  • An unreadable source says so

    A tool whose source is down answers with the reason, not an empty list. An empty list means the desk has published nothing, and only ever means that.

  • It reads, and it keeps nothing

    Every tool is read-only. An offer passed to read_data_offer is read and forgotten; saving a note is a form on the site, not a tool.

  • It holds nothing about any company

    The tools reach what the site publishes and the caller's own text. Where a tool reads one of the desk's own tables, it reads the same published projection the page renders, behind the same gate. No client, mandate or engagement is reachable through this endpoint.

What is not on this endpoint

Seventeen tools and four resources, and nothing else. Everything they reach is already on the site, in public, at an address anyone can open. What stays off is the desk's own book.

Anything priced for a particular company
A figure here is a buyer program's own published figure, quoted from its page. Nothing on this endpoint values a company or its records.
Clients, mandates and engagements
Not reachable, and not readable. Where a tool reads one of the desk's tables it reads the published projection the public page renders, behind that page's own gate.
A run of a tool on the site
get_public_page returns a page's words. /first-pass, /data and /compute compute from a reader's own answers, and those runs belong to whoever answered.
Anything that writes
Every tool is read-only. Saving a note, sending a company, or joining is a form on the site. If any of this changes, it changes here and on tools/list, not quietly.

Limits

Sixty calls a minute per caller, and a request body up to 64 KB. A call over the limit answers 429 with Retry-After.

Where Frontier Desk fits

Frontier Desk advises the company on a sale or licence of its data: which buyer, which terms, and how the licence sits with a raise, a loan, a sale of the company, or putting the proceeds back into the business. The buyer programs in the index are destinations the records can go to. Frontier Desk is not a broker, not a data buyer, and not a law firm, and nothing these tools return is legal advice.