Quick start
Make a personal key on noombat.ai under Settings, AI apps, then ask for your board's overview. Every answer is JSON.
- Base address:
https://noombat.ai/api/v1/board - OpenAPI 3.1: noombat.ai/api/v1/openapi.json. Sent with your key, it lists your board's own words.
- A plain-text guide for AI agents: noombat.ai/api/v1/llms.txt
Your key
A key belongs to one person and one board. No request names a board: the key decides which one it reads, and every request checks again that the person may still see it. Send the key in the Authorization header, never in the address (a key in the address is refused unread).
- Keys last 30 or 90 days, or never expire where your organization allows it. You can revoke one at any time on the same page.
- Removing someone from the organization, or from the board, ends their keys.
- Every request is written to your organization's access log: who, which read, when. Never what was asked or answered.
Connect your AI
The same reads are tools for Claude, ChatGPT, Cursor and VS Code at one address. Claude and ChatGPT ask you to sign in to noombat; the others can send your key instead. Every connection only reads.
Recipes
The reads
Each read answers what the MCP tool of the same name answers, byte for byte. Records carry a link to the board that opens only for a member who may see it.
Board overview
Describes the one noombat board this connection reads. Use it for the board's own words for groups, reasons, client types, roles, door strengths, seats and signal types, today's date, when the board was last read, how many companies sit in each group, which signal types count as buying, what this board does not hold, which fields are usually empty, and what it cannot answer. It lists no companies or people; search_companies, list_people, list_signals and search do.
Search the board
Finds companies, people and competitors on the connected noombat board by name or web domain, and returns at most 10 matches as id, title and link. Use it to turn a name the user mentions into an id: fetch takes it as it is (company:<id>, person:<id>, competitor:<id>), and so do get_company, get_person and get_competitor. It does not filter or rank by priority; search_companies does.
Search companies
Lists companies on the connected board, in the board's own order by default (what to do first, then Priority: 0–100 points, never a probability). Filters: name or domain text, group, reason, client type, role, a door (someone you know there), door_strength (at least this strong), signs, worked beside you, signal types, buying signals within N days. Use it for 'who do I call first', 'who has a warm way in' or 'who showed buying signals lately'. Row fields: priority_top, the line adding most; door_count counts people; best_door, the first door or, with signs true, the strongest signer, via: everyone on your side who knows them; signing_doors, up to 3 signers (compact: if 2+; signing_door_count counts them, signing_note when none is named); customer_label, what customer rests on; group is the to-do order, not payment or acquaintance. get_company returns the whole file. Pages of up to 50 with a cursor; the summary says what is left and, if empty, how many match without each filter.
Get a company
Returns one company's full file from the connected board, by id (search's company:<id> works too) or by name: profile (website, LinkedIn page, industry, size, city, country, founded, description), its group and the lines behind its Priority, why now, reasons with their labels, what stands in the way, the opening line, facts, the people you know there who are a way in (each person once, every path to them in via), the people on the People tab there, its newest dated signals with links, whether it is a paying client (customer_label says on what basis), a link to it on the board, and which fields are not on record. Use it to brief on one account or to answer 'who do I know at X and through whom'.
List people
Lists the People tab of the connected board: people at the companies on the list, with their seat in the sale and its class (with its label), Priority, LinkedIn profile, whether they are a door (is_door: someone you know who counts as a way in) and the first reason they matter. The summary says how many people the People tab holds; get_company's doors list the people known at a company. With company_id at a company the People tab holds nobody at, the answer carries that company's doors (doors) and no rows. Filters: name, title or company text, a company id, the company's group, a seat class, the seat that signs (signing_seat_only counts people, and one company can have several), and doors only (known_only). Use it to find the decision maker at a company or the people to approach this week; get_person returns one person's whole read. Pages of up to 50 with a cursor; the summary counts people and the companies they work at.
Get a person
Returns one person from the People tab of the connected board, by id or by name (with an optional company id to tell two people apart): title, headline, location, LinkedIn profile, seat in the sale, the lines behind their Priority, why they matter now, career, their own recent LinkedIn posts the board holds, the suggested opening line, a link to them on the board, and which fields are not on record. Use it before writing to or calling someone.
List signals
Lists dated public pages and events about the companies on the connected board, newest first: what happened, its type and class (buying, warmth, context, in the way, or a client using noombat), the date, how many days ago and how sure it is, the page's line and its link; the summary counts the signals and the companies they are about. Filters: one or more types, types to leave out, a class, buying signals only, a reason, a company, and a date window (since/until or the last N days). Use it for 'what changed recently' or 'who raised money'. A company's reasons (its why-now chip, a new leader for one) are company fields that search_companies' reason filter finds; reason here keeps the signals a board files under a reason. Pages of up to 50 with a cursor.
List competitors
Lists the Competitors tab of the connected board as compact rows: your own row as the benchmark, then each picked competitor with how hard they press on your buyers (and the parts of that number), how you win against them, their reach, how many companies on your list name them, and their latest dated move. Use it to see the field; get_competitor returns one competitor's whole read (leaders, what they post about, engagement from your list).
Get a competitor
Returns one competitor's full read from the connected board, by id or name: what they sell and lead with, ownership, size, stage, pressure on your buyers, social reach and post mix, engagement from people on your list, their leaders and themes, hiring, the companies on your list that name them, how you win, their latest dated move, a link to them on the board, and which fields are not on record.
Parameters and pages
- Parameter names are the tool's own. A list is the parameter repeated:
types=funding&types=new_leader. Booleans aretrueorfalse, daysYYYY-MM-DD. - An unknown, empty or doubled parameter is refused with a 400, never ignored.
- Where a parameter takes one of your board's words (its groups, reasons, signal types), the overview lists them under
vocabulary, each with its label. The OpenAPI document sent with your key lists them too. - Lists answer
total,returned,itemsandnext_cursor. The next page is the same request withcursoradded; theLinkheader carries it too. - Every answer has an
ETag. Send it back inIf-None-Matchand an unchanged answer comes back as a 304 with no body. - Fields ending in
_quotedhold text copied from public web pages: quotes, not statements by noombat or by you. An empty field means the board holds nothing there; records list those undernot_on_record.
Limits
Headers
On a 429
Errors
Errors are RFC 9457 problem details (application/problem+json). The fields error (a code) and message (plain words) are always there. Nothing you sent is ever repeated back.
Versions
This is version 2.0.0. New reads, fields and parameters arrive without notice and never break a script. A change that would break one keeps the old form for at least 90 days and says so in a Deprecation header.