Skip to content
Frontier Desk

Give your agent what the desk publishes.

A read-only MCP server 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.

What it is

MCP (Model Context Protocol) is the open standard for connecting an AI assistant to a source outside itself. This server is one address an assistant connects to. It reads the list of tools here and calls them while it works.

Every tool reads something Frontier Desk already publishes on this site, and every answer carries its source and its date. Nothing writes, nothing needs a key, and nothing about a particular company is held here.

Is this MCP server right for your work?

It is for people who would otherwise read the same pages by hand, and for the agents working for them.

  • Owners and their advisors

    Researching what AI-data buyer programs publish, which ones a company clears, and what a licence offer says before anyone signs it.

  • M&A advisors

    Looking up who buys, backs and lends in a sector, and what the desk has written about it.

  • Lenders

    Checking who lent to whom, and which firms are active in a line of work.

  • Analysts

    Reading the desk's notes and outlooks with their sources, and holding the buyer index whole as JSON or CSV.

Not for: A valuation of a company or its records, a run of an owner tool on your own answers (those run on their pages), or anything that writes. Frontier Desk is an advisor, not a broker.

The tools are the same functions the website runs, so an agent and a reader get the same answer. The owner tools that compute from your own answers (the first pass, the data check, the compute check) run on their pages. Here, an agent reads what those pages publish and the figures behind them.

The endpoint

https://www.frontierdesk.ai/mcp

Transport
Streamable HTTP
Authentication
None. No key, no account, no allow-list.
Protocol revisions
2025-11-25, 2025-06-18, 2025-03-26, 2024-11-05
Server
frontier-desk 1.2.0

Connect

Pick your client. Each one takes the same address and nothing else.

Claude Code

Add it for this project, on this machine (the default scope)

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

Add it for every project you open

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

Share it with the team: writes .mcp.json in the project root

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

Claude Code asks you to approve a project-scoped server the first time it starts in that project.

Client docs: code.claude.com

Claude (desktop app and claude.ai)

  1. Open Customize, then Connectors.
  2. Choose + and then Add custom connector.
  3. Name it Frontier Desk and paste https://www.frontierdesk.ai/mcp as the URL.
  4. Under Authentication choose No sign in, then Add.

On Team and Enterprise plans an Owner adds the connector under Organization settings, then Connectors, and members connect it from Customize. Anthropic lists custom connectors on its Free, Pro, Max, Ultra, Team and Enterprise plans, with Free limited to one. Claude reaches the server from Anthropic's cloud, which this endpoint allows.

Client docs: support.claude.com

Cursor

~/.cursor/mcp.json for every project, or .cursor/mcp.json in one project

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

Add to Cursor

Client docs: cursor.com, cursor.com

VS Code and GitHub Copilot

.vscode/mcp.json in the workspace. VS Code uses a servers key, not mcpServers

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

Or add it to your user profile from a terminal

code --add-mcp '{"name":"frontier-desk","type":"http","url":"https://www.frontierdesk.ai/mcp"}'

Install in VS Code

Client docs: code.visualstudio.com, code.visualstudio.com

ChatGPT

  1. On the web, open chatgpt.com/plugins.
  2. Choose + and then Add custom MCP server.
  3. Name it Frontier Desk, paste https://www.frontierdesk.ai/mcp as the server URL, and choose No authentication.
  4. Create it as a plugin, install it, and call it in a chat by typing @.

Which plans and workspaces can add a custom MCP server is OpenAI's to set, and its docs did not name them when this page was written; check them before you start. Every tool here is marked read-only, so ChatGPT does not treat a call as a write.

Client docs: developers.openai.com, developers.openai.com

Windsurf

Windsurf's MCP config file. Open it from Cascade's MCP settings; on macOS and Linux it is ~/.config/devin/mcp_config.json

{
  "mcpServers": {
    "frontier-desk": {
      "serverUrl": "https://www.frontierdesk.ai/mcp"
    }
  }
}

Press refresh in Cascade's MCP panel after saving.

Client docs: docs.windsurf.com

OpenAI Agents SDK (Python)

Lists the tools. Pass the server to Agent(mcp_servers=[server]) to use them

import asyncio
from agents.mcp import MCPServerStreamableHttp

async def main():
    async with MCPServerStreamableHttp(
        name="frontier-desk",
        params={"url": "https://www.frontierdesk.ai/mcp", "timeout": 30},
        cache_tools_list=True,
    ) as server:
        for tool in await server.list_tools():
            print(tool.name)

asyncio.run(main())

Client docs: github.com

OpenAI Responses API

The remote mcp tool. Use the model your account runs; OpenAI's docs show the current one

from openai import OpenAI

client = OpenAI()
response = client.responses.create(
    model="gpt-6-astra",
    tools=[{
        "type": "mcp",
        "server_label": "frontier-desk",
        "server_url": "https://www.frontierdesk.ai/mcp",
        "require_approval": "never",
    }],
    input="Which AI-data buyer programs publish a per-company figure?",
)
print(response.output_text)

require_approval can be never here because every tool is read-only.

Client docs: developers.openai.com

Any other client

  1. Point any client that speaks Streamable HTTP at the endpoint, with no headers and no key. A client that opens with initialize negotiates one of the revisions listed under The endpoint.

From a terminal: the handshake, then the tool list

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":"initialize","params":{"protocolVersion":"2025-06-18","capabilities":{},"clientInfo":{"name":"curl","version":"1"}}}'

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

MCP Inspector, from its command line

npx @modelcontextprotocol/inspector --cli https://www.frontierdesk.ai/mcp --transport http --method tools/list

Client docs: github.com, modelcontextprotocol.io

What you can use it for

Prompts people type, and the tools each one calls. Every example here runs against the live server in a daily check, and the check fails if one comes back empty.

  • An owner, or the advisor working for one

    See which buyer programs a company clears

    Which AI-data buyer programs would a 60-person accounting firm with 12 years of records clear, and what do they publish?

    Calls: instant_range, search_data_buyers

  • An owner holding an offer

    Read an offer before signing it

    Read this term sheet and tell me what to settle before signing.
    Is $45,000 for a non-exclusive licence inside what these programs publish?

    Calls: read_data_offer

  • A lender or an M&A advisor

    Look a firm up

    Who lent to Hidden Harbor recently?

    Calls: lookup_firm

  • An analyst

    Read what the desk has published on a subject

    What has the desk published on data-center power, and what odds does it give the paths ahead?

    Calls: search_notes, get_outlook

  • An M&A advisor

    Map who buys and lends in a sector

    Who lends to accounting and tax firms, and what kinds of lender are they?

    Calls: list_markets, get_market_sector

  • An owner thinking about a sale

    Find what buyers check

    What do buyers check when they look at an MSP?

    Calls: list_guides, get_guide

  • An owner who knows the bands, not the exact figures

    Start from a line of work

    What does a data licence look like for an accounting firm of 30 to 99 people with more than ten years of records?

    Calls: get_vertical, instant_range

  • An analyst or an investor

    Read a standing forecast

    What odds does Frontier Desk give on how company-record deals are structured by the end of 2027?

    Calls: list_outlooks, get_outlook

Tools

17 tools in 5 groups, listed here from the same registry the endpoint serves on tools/list. Every argument is optional unless it says required.

The AI-data buyer index

Every answer in this group carries this notice: “Figures are each buyer program's own published figures, quoted from the page named in the row and checked on the date given. A published range is an advertisement, not an offer, and not a valuation of any company's records. Frontier Desk advises the company on a sale or licence of its data; it is not a broker, a data buyer, or a law firm, and nothing here is legal advice.”

search_data_buyersSearch the AI-data buyer index

Frontier Desk's dated index of AI-data buyer programs, one row per 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 that page was read. Filter by a word in the program's name or in what it buys, or narrow to the programs that publish a per-company figure. The same rows render at https://www.frontierdesk.ai/data-buyers, with .csv and .json twins.

Returns: Rows, each with its program URL, source URL, source quote and check date, and the total that matched. The same rows render at /data-buyers.

Arguments

  • query string, 0–120 characters

    Words to find in a program name or in what it buys, for example "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.

Annotations: readOnlyHint: true · destructiveHint: false · idempotentHint: true · openWorldHint: false

instant_rangePublished range for a company

The span of published per-company figures across the buyer programs a company of this size and age clears, with every source named and quoted. Give headcount and years if you know them; a company that has not stated one is not screened on it. A program is dropped only when the company certainly cannot meet its own stated floor. A /data band is screened the way /data screens it, at the top of the band, so a program is dropped only when the whole band is below its floor; the answer echoes the band, the figure it was screened as, and the programs that depend on where in the band the company sits. Returns has_range: false, with a reason, when fewer than two programs qualify — one program's advertisement is not a range, and no figure is estimated to fill the gap.

Returns: has_range; the low and high figures and a label when there is a range; the programs behind it with their quotes; the programs screened out with the reason for each; the inputs as screened, including any band and how it was read; and the check date.

Arguments

  • headcount integer, 1–1000000

    Full-time employees. Omit if unknown.

  • years integer, 0–200

    Years of records the company holds. Omit if unknown.

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

    A /data headcount band instead of an exact figure: 1_29, 30_99, 100_249, 250_plus.

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

    A /data years band instead of an exact figure: under_3, 3_5, 6_10, 11_plus.

Annotations: readOnlyHint: true · destructiveHint: false · idempotentHint: true · openWorldHint: false

read_data_offerRead a data-licensing offer

Reads a pasted data-licensing offer and returns what it finds, with the offer's own words quoted back: the figure set against the published span, the payment trigger, exclusivity, export method and data retention — each reported as stated or as not stated — plus the terms worth settling before signing and the question to ask on each. A term the offer is silent on is reported as a finding, not filled in. Nothing is stored, and this is not legal advice.

Returns: The price set against the published span, each term reported as stated or not stated with the offer's own words quoted, and the terms to settle before signing with a question for each. stored is always false.

Arguments

  • 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 price is set against the programs this company clears. Omit if unknown.

  • years integer, 0–200

    Years of records. Omit if unknown.

Annotations: readOnlyHint: true · destructiveHint: false · idempotentHint: true · openWorldHint: false

The desk's notes

Every answer in this group carries this notice: “A note is Frontier Desk's own reading, as published on the day it carries. The links it cites are its sources: check a claim against them rather than the note's word, and read a figure as of the note's date. Frontier Desk advises the company on a sale or licence of its data; it is not a broker, a data buyer, or a law firm, and nothing here is legal advice.”

list_notesList the desk's published notes

Frontier Desk's published notes, newest first: each one's title, the day it was published, its own address on the site, and its first sentence. Pass a slug from here to get_note for the whole note. The same notes render at https://www.frontierdesk.ai/intel, with an RSS feed at https://www.frontierdesk.ai/intel/rss.xml.

Returns: 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.

Arguments

  • limit integer, 1–50, default 25

    How many notes to return, newest first.

  • since string, 0–10 characters

    Only notes published on or after this day, as YYYY-MM-DD. For example "2026-10-01".

Annotations: readOnlyHint: true · destructiveHint: false · idempotentHint: true · openWorldHint: false

search_notesSearch the desk's published 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, so an empty answer means the words are not in the corpus rather than that the desk has no view. Pass a slug from here to get_note for the whole note.

Returns: 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.

Arguments

  • query string, 2–120 characters, required

    Words every matching note has to carry, for example "carve-out" or "data centre power".

  • limit integer, 1–50, default 25

    How many notes to return.

Annotations: readOnlyHint: true · destructiveHint: false · idempotentHint: true · openWorldHint: false

get_noteRead one published 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. Takes the slug from list_notes or search_notes, or the last part of a note's own URL.

Returns: 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.

Arguments

  • slug string, 8–160 characters, required

    The note's slug, for example "2026-10-28-a-note-title-1a2b3c4d". A full /intel/... path works too.

Annotations: readOnlyHint: true · destructiveHint: false · idempotentHint: true · openWorldHint: false

The five markets

Every answer in this group carries this notice: “This is the public projection of the markets Frontier Desk maps, as of the read date given: what kind of firm each one is and the relationships held for it, in reader words. A firm or a relationship listed here is not a recommendation and not a rating. Frontier Desk advises the company on a sale or licence of its data; it is not a broker, a data buyer, or a law firm, and nothing here is legal advice.”

list_marketsList the five 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 a caller can pick, and counts of what is drawn. Pass a sector slug from here to get_market_sector for that sector's graphs. The whole-field graphs render at https://www.frontierdesk.ai/markets.

Returns: 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.

Arguments

No arguments.

Annotations: readOnlyHint: true · destructiveHint: false · idempotentHint: true · openWorldHint: false

lookup_firmLook up a firm in the markets directory

A firm in Frontier Desk's markets directory, by name: what kind of firm it is in plain words, its own site, the relationships held for it (what it bought, backed, lent to or borrowed from, each naming the other party), and a line on its recent activity. Up to eight firms per call. This is the public projection: no internal ids, codes, tags, evidence text or third-party scores cross it, and no client, mandate or engagement is reachable here.

Returns: 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.

Arguments

  • query string, 2–60 characters, required

    Part of a firm's name, for example "Monroe" or "CORE Industrial".

Annotations: readOnlyHint: true · destructiveHint: false · idempotentHint: true · openWorldHint: false

get_market_sectorOne sector's relationship graphs

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. Takes a sector slug from list_markets: accounting, insurance, wealth, it, healthcare, staffing, legal, engineering, marketing, logistics, distribution, operators, software, business-services, property, manufacturing, build-out. By default (detail "summary") it answers compactly: per graph, the counts, the columns, the lines on what the connections show, and the first firms and relations in the order the page draws them, each named, with a link to the full JSON. detail "full" answers with the same JSON the /markets page loads when a visitor picks that sector, which can run past 100 KB.

Returns: By default, each graph's counts, columns, lines on what the connections show, and its first firms and relations by name, with full_json linking the rest. With detail "full", the same JSON the /markets page loads when a visitor picks that sector. Either way, the graphs this sector is not drawn in, which is a fact about the sector rather than a gap.

Arguments

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

    The sector to draw: accounting, insurance, wealth, it, healthcare, staffing, legal, engineering, marketing, logistics, distribution, operators, software, business-services, property, manufacturing, build-out.

  • graph string, 0–40 characters

    One graph instead of all of them, by key, for example "services" or "credit". Omit for every graph the sector has.

  • detail string, one of: summary, full, default "summary"

    "summary" (the default) for counts and the first firms and relations in each graph; "full" for the whole JSON the page loads.

  • limit integer, 1–50, default 12

    With detail "summary": how many firms and relations to name per graph. Default 12.

Annotations: readOnlyHint: true · destructiveHint: false · idempotentHint: true · openWorldHint: false

The written library

Every answer in this group carries this notice: “Guides, outlooks and vertical pages are Frontier Desk's own published writing, dated on each answer. An outlook's odds are the desk's own judgement, settled only by the dated public sources the report names; a vertical's card is an illustration, not a figure for any company. Frontier Desk advises the company on a sale or licence of its data; it is not a broker, a data buyer, or a law firm, and nothing here is legal advice.”

list_guidesList the desk's guides

Frontier Desk's guides: one page per question an owner asks before a sale, a loan or a data licence. Each row carries the question the guide answers, a forty-to-sixty-word answer to it, the day the guide was last updated, and its address. Pass a slug from here to get_guide for the whole guide. Newest first.

Returns: 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.

Arguments

  • query string, 0–120 characters

    Words to find in a guide's title, question or description, for example "MSP" or "data room".

  • limit integer, 1–50, default 25

    How many guides to return.

Annotations: readOnlyHint: true · destructiveHint: false · idempotentHint: true · openWorldHint: false

get_guideRead one guide

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

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

Arguments

  • slug string, 2–120 characters, required

    The guide's slug, for example "sell-an-msp".

Annotations: readOnlyHint: true · destructiveHint: false · idempotentHint: true · openWorldHint: false

list_outlooksList the standing outlooks

Frontier Desk's standing forecasts: what each one forecasts and over what horizon, the day it was published, and the date it is next rescored. Pass a route from here to get_outlook for the odds on every path.

Returns: 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.

Arguments

No arguments.

Annotations: readOnlyHint: true · destructiveHint: false · idempotentHint: true · openWorldHint: false

get_outlookRead one outlook's odds and readings

One standing forecast: the odds Frontier Desk gives every path at each of the two dates it is scored on, the readings behind them, the scenarios with the markers that say which one we are on, and when it is next rescored. Odds come from a simulation of chained steps and are the desk's own; they are not a market price and nothing settles them but the dated public sources each report names. The whole report is on its page.

Returns: Odds tables whose columns each sum to 100, the bottom-line readings with their confidences, the scenarios, and — on the reports published from November 2026 — the signposts and the dated calls. Every call names the public source that settles it. The whole report is on its page.

Arguments

  • outlook string, one of: /outlook/company-data-market-2027, /outlook/ai-jobs-and-income-2035, /outlook/compute-financing-2028, /outlook/data-center-power-2028, /outlook/private-credit-lower-middle-market-2028, /outlook/accounting-firm-rollups-2028, /outlook/insurance-agency-consolidation-2028, /outlook/autonomous-companies-2028, required

    The outlook's route, as list_outlooks gives it: /outlook/company-data-market-2027, /outlook/ai-jobs-and-income-2035, /outlook/compute-financing-2028, /outlook/data-center-power-2028, /outlook/private-credit-lower-middle-market-2028, /outlook/accounting-firm-rollups-2028, /outlook/insurance-agency-consolidation-2028, /outlook/autonomous-companies-2028.

Annotations: readOnlyHint: true · destructiveHint: false · idempotentHint: true · openWorldHint: false

list_verticalsList the services verticals

The services verticals Frontier Desk writes a page for: what a data licence looks like in that line of work, the shape of firm each page illustrates, and what decides whether a firm in it may license at all. Pass a key from here to get_vertical. Each page's example card is an illustration, labelled as one; no dollar figure is ever stored on a vertical.

Returns: 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.

Arguments

No arguments.

Annotations: readOnlyHint: true · destructiveHint: false · idempotentHint: true · openWorldHint: false

get_verticalRead one services vertical

One services vertical in full: the example firm it illustrates (headcount band, the tools such a firm runs on, how far its records go back, and the routes worth weighing), what changes in that line of work, and what decides whether a firm in it may license at all. The card is an illustration and says so in `evidence`. Figures for a real company come from instant_range, which quotes each buyer program's own published page.

Returns: 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.

Arguments

  • vertical string, 2–60 characters, required

    The vertical's key, as list_verticals gives it.

Annotations: readOnlyHint: true · destructiveHint: false · idempotentHint: true · openWorldHint: false

The public pages, as written

Every answer in this group carries this notice: “This is a public page's copy as written, not a run of the tool on it: the tools on these pages compute from a reader's own answers. Frontier Desk advises the company on a sale or licence of its data; it is not a broker, a data buyer, or a law firm, and nothing here is legal advice.”

list_public_pagesList the desk's public tool pages

The tools Frontier Desk publishes for owners, each with what a reader gets from running it, plus the written pages behind them. Pass a route from here to get_public_page for that page's framing as written. The hub renders at https://www.frontierdesk.ai/tools. Every tool on this page runs on what you already know about the company and answers in one sitting. None of them asks for a data room, and none of them is a form that goes somewhere to be read later.

Returns: 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.

Arguments

No arguments.

Annotations: readOnlyHint: true · destructiveHint: false · idempotentHint: true · openWorldHint: false

get_public_pageRead one public page's framing

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. This returns copy, not a run: the tools on these pages compute from a reader's own answers, and nothing here invents one. Routes: /tools, /first-pass, /deal-ready-ai, /roadmap, /data, /second-opinion, /compute, /build, /agents, /tools/mcp.

Returns: 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.

Arguments

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

    The page's route, as list_public_pages gives it: /tools, /first-pass, /deal-ready-ai, /roadmap, /data, /second-opinion, /compute, /build, /agents, /tools/mcp.

Annotations: readOnlyHint: true · destructiveHint: false · idempotentHint: true · openWorldHint: false

What it returns whole

4 resources: files the site already serves, each built by the same function as its HTTP twin, so the bytes match. A client reads one with resources/read.

fd://data-buyers.json · application/json
The whole buyer index as JSON, byte for byte the file at https://www.frontierdesk.ai/data-buyers.json: one object per program 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. Use search_data_buyers to filter; use this to hold the set.
fd://data-buyers.csv · text/csv
The same index as RFC 4180 CSV, byte for byte the file at https://www.frontierdesk.ai/data-buyers.csv. One row per program, with the source URL, the quote and the check date on every row.
fd://llms.txt · text/plain
Frontier Desk's llms.txt, the file at https://www.frontierdesk.ai/llms.txt: what the desk does, and a link to every public page worth reading, grouped. Nothing in it is hidden from the site.
fd://intel/rss.xml · application/rss+xml
The desk's published notes as RSS 2.0, byte for byte the feed at https://www.frontierdesk.ai/intel/rss.xml: the same published, public notes list_notes returns, newest first, each with its title, its address and its first sentences.

Limits and guarantees

  • Read-only

    Every tool is annotated read-only and non-destructive, and none writes. Saving a note or sending a company is a form on the site, not a tool.

  • Keyless, and it keeps nothing

    No key, no account, no cookie. An offer passed to read_data_offer is read and forgotten.

  • Sources and dates on every answer

    An index row names the page its figure came from, quotes that page and gives the day it was read. A note carries its own address and every link it cites. The markets carry their as-of time.

  • A published range is not an offer

    It is what a buyer program advertises. It is not an offer, and it is not a valuation of any company's records. With fewer than two qualifying programs, instant_range returns no range and says why.

  • An advisor, not a broker

    Frontier Desk advises the company on a sale or licence of its data. It is not a broker, a data buyer or a law firm, and nothing these tools return is legal advice.

  • Rate and size

    Up to 60 calls a minute from one address, counted by each server instance, and a request body up to 64 KB. A call over the limit is answered 429 with Retry-After: 60; a body over it is answered 413.

Questions

Does it need a key?
No. There is no key, no account and no allow-list. Point a client at the endpoint and it works.
Does it write anything?
No. Every tool reads. Nothing you send is stored, including an offer passed to read_data_offer.
What does it never expose?
Anything about Frontier Desk's clients, mandates or engagements, and anything priced for a particular company. Where a tool reads one of the desk's own tables, it reads the same published projection the public page renders: no internal ids, codes, scores or evidence text cross it.
How fresh is the data?
Every answer carries its date. Each buyer-index row gives the day its source page was checked, each note its publication day, and the markets the time they were read, which is usually within six hours of the answer. Guides and outlooks carry their own update and publication dates.
Which version is running?
The server reports its version in the handshake, and this page shows the same number under Version, above. A change to what a tool takes or returns moves it.
How do I report a problem?
Write to info@frontierdesk.ai with the tool, the arguments and what came back. The same address is on the About page.