Skip to main content
Glama
Tristiank

thebetween-mcp

by Tristiank

The Between — MCP server

A public, read-only MCP server over the verified company map at thebetween.ai, so an assistant can query it directly instead of scraping the site.

Nothing here writes anything, anywhere. All four tools are readOnlyHint.


The three words that matter

If you take one thing from this README, take this. MAPPED, VERIFIED MATCHES and MEMBERS are three different things, and conflating them misrepresents real companies:

  • Mapped — a company discovered and verified from public information. Being mapped is not consent, not a relationship, and not membership. These companies did not opt in.

  • Verified matches — evidenced pairings between two mapped companies. The badge proves the cited source was fetched and names the company. It is not a claim that the source is about that company, nor that it states the reason given for the match. Every card links to its source so you can judge that yourself.

  • Members — companies that have claimed their agent. The only consent-based number.

Every tool description opens with that distinction, and every response carries a _notice repeating it with the live counts. Please don't describe mapped companies as members, customers, users, clients or partners of The Between.

Related MCP server: Companies-House-MCP-Server

Tools

Tool

Returns

search_network(query, vertical?, location?, min_fit?, limit=10)

Matching companies: profile, whether they are an origin of the map, match count

get_matches(company, min_fit?, freshness?, limit=10)

Verified matches with the full evidence card — dated source URL, signal, fit score, reason

get_claim_info(company?)

How a company claims its agent, and what an agent would inherit from the evidence already on the map

get_census()

The live census, with definitions

get_claim_info returns the reserve URL and stops. The form on the site is the only write path into the network; this server cannot register, claim or change anything.

Connecting

The server speaks MCP over Streamable HTTP. Once it is deployed at https://mcp.thebetween.ai/mcp, point any MCP client at that URL — no authentication, no API key.

Not yet deployed. The public endpoint is not live. Run it locally in the meantime.

git clone https://github.com/Tristiank/thebetween-mcp
cd thebetween-mcp
python -m venv .venv && . .venv/bin/activate      # Windows: .venv\Scripts\activate
pip install -e ".[dev]"

thebetween-mcp                                     # serves on 127.0.0.1:8000
curl localhost:8000/healthz

Variable

Default

Meaning

BETWEEN_DATA_URL

https://thebetween.ai/data/discoveries.json

Where the map is read from

BETWEEN_DATA_PATH

unset

Read a local file instead

BETWEEN_REFRESH_SECONDS

900

Refresh interval

BETWEEN_TRUST_PROXY

off

Read the Fly-Client-IP header. Only turn on behind that proxy — see below

HOST / PORT

127.0.0.1 / 8000

Bind address

How it works

The data is never bundled. The map is fetched from the site on boot and every 15 minutes, ETag-conditional, keeping the last known good copy on failure and reporting staleness in every response's _data block. A bundled copy would go stale the moment the site is redeployed. It is a ~1.1 MB JSON file, so there is no database and no search index — it is loaded and indexed in memory.

The reverse index is the point. The published file is keyed origin → cards. 716 of the 887 mapped companies appear only as the discovered side of a card, so without indexing the other way they cannot be looked up at all. 145 companies are both, and their evidence lives in both directions — reading only one returns half of it.

Rate limiting protects the server, not the data. 30 requests/minute per IP, burst 10, 2,000/day, limit capped at 25. The whole dataset is a single public file: if you want all of it, fetch discoveries.json rather than paging this API. That is faster for you and kinder to a very small machine.

BETWEEN_TRUST_PROXY is off by default and should stay off unless the server is actually behind a proxy that overwrites the header. When on, the limiter reads Fly-Client-IP; anything able to reach the origin directly could then send a new value per request and get a fresh bucket. When off, all callers behind a proxy share one bucket — correct locally, wrong in production. There is no value that is right in both places, so it is an explicit switch.

Two things the data forces

vertical belongs to origins. The map classifies its 171 origin companies and nobody else. A discovered company gets matched_verticals — the verticals of the origins that matched it — and never a bare vertical. A logistics firm matched to a beverage brand is not a Food & Beverage company. search_network(vertical=...) therefore means "matched to an origin in this vertical".

min_fit excludes unscored matches. 165 of 991 cards carry no fit score. They are verified but were never scored, so they cannot be shown as clearing a bar. Responses report how many were excluded, so you can tell "no matches" from "no scored matches".

About src/thebetween_mcp/_vendored/

Those files are generated, not written, and the header in each says so.

The pipeline that builds the map is closed-source. This server needs a handful of functions from it — chiefly norm(), which decides whether two spellings are the same company — and a public package cannot install a private one, so they are copied in by a generator on the other side.

That is worth being careful about: norm() once existed in five places, and two production incidents were drift between those copies. A curly apostrophe (U+2019) split L'Oréal so a screened-out company reached the public map; a macron split Inde Wīld into two census rows, inflating the mapped count and inventing a connector. So the copy is policed from both sides:

  • tests/test_vendored.py asserts it still reproduces golden vectors generated by the canonical implementation — it catches drift between the repositories.

  • tests/test_norm_contract.py asserts what norm() must mean — accents fold rather than vanish, every apostrophe variant collapses, distinct companies do not merge. It catches a change made badly in both, which the vectors would happily record as correct.

Please don't edit anything under _vendored/ — it will be overwritten. Everything else is ordinary code and pull requests are welcome.

Tests

pytest                                # synthetic fixture only
BETWEEN_MCP_LIVE_TESTS=1 pytest       # also the census-parity regression, against the live map

Two layers. A synthetic six-company map, hand-countable, exercises every awkward shape in miniature — an origin that is also discovered, an origin nobody discovered, a connector, an unscored card, an accented name. Against the real map, the regression tests assert census parity: the indexes must reproduce mapped 887 · verified matches 991 · connectors 58 · fresh 691 exactly, the same recomputation the site's own launch gate runs before every deploy. That catches the subtlety that is easiest to get wrong — a connector is a discovered company matched to more than one origin, and counting origins too gives 94.

Removal, contact, licence

Any mapped company can email tristian@thebetween.ai and be removed from the public map within 7 days. No reason required, and no form. If something about an entry is wrong, say so and it gets fixed whether or not you want to stay.

MIT licensed — see LICENSE. The licence covers this server's code. It does not grant rights in the map's contents, which are published at thebetween.ai under the terms linked above.

A
license - permissive license
Not graded
quality - not tested
C
maintenance

Maintenance

UpdatingMaintainers
UpdatingResponse time
Release cycle
0Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

  • F
    license
    A
    quality
    D
    maintenance
    An MCP server that gives AI agents access to US business entity data, enabling searches across 9 state registries, SEC EDGAR filings, federal contracts, and lobbying disclosures.
    6
    1
  • F
    license
    Not graded
    quality
    B
    maintenance
    MCP server exposing the full UK Companies House Public Data API, enabling natural language queries for company profiles, search, officers, filing history, charges, insolvency, and persons with significant control, as well as downloading and reading PDF documents.
  • A
    license
    Not graded
    quality
    B
    maintenance
    MCP server for querying the Norwegian Brønnøysundregistrene business register, including companies, roles, subunits, and annual accounts, with built-in guards against common data traps like retired NACE codes and withheld employee counts.
    18
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Remote MCP server that exposes CreationLoop's canonical company information and allows submitting design-partner applications on behalf of a user.
    MIT

View all related MCP servers

Related MCP Connectors

  • Remote MCP server to enrich company profiles with structured B2B data and confidence scores.

  • Companies House MCP — UK statutory company registry (BYO key)

  • Live Google Maps business search, review, and photo data for AI agents over MCP.

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/Tristiank/thebetween-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server