HTTP API
A read-only API over the tile catalog, the driver reference, and the lookup tables. No authentication, CORS open to any origin, responses cached at the edge.
Basics
Tiles are identified as Family.Name — for example Sense.BP — optionally pinned to a revision as Family.Name@rev. That identifier is stable across the catalog, the driver reference, Studio and the datasheets.
Responses reflect the public tier. A tile that isn’t publicly available returns 404, exactly as it does in the catalog — this API is not a side door around that.
Errors always take the shape { error: { code, message, hint? } }. Branch on code; hint is for humans.
Machine-readable description: /api/openapi.json (OpenAPI 3.1). For the whole site, see /llms.txt; for the entire generated documentation corpus in one request, /llms-full.txt.
MCP server
The same knowledge is available as a Model Context Protocol server at https://bergsonne.io/mcp — JSON-RPC 2.0 over HTTP POST. Read-only and unauthenticated: it performs no writes, spends nothing, and reads no session, so an agent can attach it without any grant.
Point an MCP client at it with a config entry like { "bergsonne": { "url": "https://bergsonne.io/mcp" } }, then call initialize followed by tools/list. Tile definitions and driver references are also addressable as resources — tile://sense/tof, driver://sense/bp.
| Tool | Purpose |
|---|---|
| search_bergsonne | Search everything Bergsonne publishes: tiles, tile drivers, individual driver functions, SDK symbols (core_/hal_/ll_), documentation pages, and the I²C/pad lookup tables. |
| list_tiles | Every publicly available Bergsonne tile, with package, interfaces, primary part and links. |
| get_tile | The full definition of one tile: package and real dimensions, onboard components with their vendor part numbers, power rails with voltage and current limits, every pad and its functions, and the interfaces with their I²C addresses. |
| get_driver | A tile driver's complete C API: every public function with its signature, parameters and return value, plus enums, structs and defines. |
| list_drivers | Every documented tile driver with its API size and — usefully — its count of declared capability gaps. |
| lookup_reference | The two lookup tables, generated from the canonical tile definitions. |
| list_shared_designs | Real projects whose authors chose to publish them, showing which tiles get used together and how they are wired. |
| get_documentation_index | Where to read more, as URLs. |
These serve the same projections as the HTTP endpoints below, so the two surfaces never disagree. The distinct one to know about is get_driver: alongside a driver’s C API it returns the chip capabilities that driver does not expose, tagged hardware-gated or driver-deferred.
Tiles
The tile catalog — what exists, and each tile’s definition.
Every tile visible to the public tier, with package, interfaces, primary part, and links to its other representations. Filters combine with AND.
| Parameter | In | Description |
|---|---|---|
| family | query | Exact family, case-insensitive. e.g. Sense |
| interface | query | Tile exposes this interface. e.g. I2C |
| package | query | Package type. e.g. T44 |
| q | query | Substring match over id, headline and primary part. e.g. pressure |
A single tile with its full definition. `Family.Name` resolves the newest publicly visible revision; `Family.Name@rev` pins one.
| Parameter | In | Description |
|---|---|---|
| id* | path | Tile identifier: `Family.Name` or `Family.Name@rev`. e.g. Sense.TOF |
A tile that is not publicly visible returns 404, exactly as the catalog does. This API is not a side door around tier gating.
The digital-twin simulator source and internal database ids are withheld; `twin.score` and `twin.status` are returned instead.
Drivers
Tile driver reference, including the capabilities each driver does NOT expose.
Every documented driver with its API size and its count of declared capability gaps.
The parsed driver header: every public function with signature, parameters and return, plus enums, structs, defines, and the declared gaps.
| Parameter | In | Description |
|---|---|---|
| tile* | path | Tile identifier, e.g. `Sense.BP`. e.g. Sense.BP |
`driver.studio_unsupported` lists chip capabilities this driver does NOT expose, tagged hardware-gated or driver-deferred. Prefer it over inferring an API from the chip datasheet.
Reference
Lookup tables: I²C addresses and pad assignments.
Generated from the canonical tile definitions. `i2c` returns default and alternate addresses; `pads` returns each pad’s default function and alternates.
| Parameter | In | Description |
|---|---|---|
| table* | path | Either `i2c` or `pads`. e.g. i2c |
Tier-gated and fail-closed: if tile visibility cannot be determined the table is withheld with 503 rather than over-published.
Commons
Compositions shared by their authors — real designs showing which tiles get used together and how they are wired.
Projects whose authors set their visibility to `commons`. Each carries the tiles used (with per-tile configuration and behaviour), and the netlist connecting them.
Only projects explicitly shared as `commons` appear. Private and internal projects are never published.
Author identity, originating prompts, and model-generated design narrative are withheld — sharing a composition is not the same as sharing who made it or what they asked for.
Search
Site-wide search.
Tiles, drivers, driver functions, SDK symbols, documentation pages and reference lookups. Exact symbol matches rank first.
| Parameter | In | Description |
|---|---|---|
| q* | query | Query string. Fewer than two characters returns an empty list. e.g. core_i2c_write |
Results depend on the caller’s tier, so this endpoint is never shared-cacheable.

