Services Catalog
The services catalog is MarginFront’s record of every model and non-LLM service it can calculate cost for. When you fire a usage event withmodel and modelProvider, MarginFront looks up the catalog entry that matches and uses its rate to compute cost.
Use this endpoint to discover canonical names BEFORE firing events. If your service is in the catalog, sendThe catalog is global. It is not org-scoped. Every authenticated caller sees the same entries. The catalog is read-only via the API. Entries are managed by an internal sync script that pulls from OpenRouter, LiteLLM, and a hand-curated list of non-LLM services.model: '<canonicalName>'andmodelProvider: '<provider>'and cost auto-resolves on ingest. If not, the event still lands but cost stays null (NEEDS_COST_BACKFILL). ThePOST /v1/events/map-modelendpoint can then redirect an unknown name to an existing catalog entry. It cannot create new rates.
List services
Returns paginated catalog entries. Filter by provider, service type, LLM-vs-non-LLM, or full-text search. Method & URL:
Example: list every Google service
Get a single service
Using the catalog in your integration
Pattern that avoids theNEEDS_COST_BACKFILL cycle:
- Before adding a new service to your code, call
GET /v1/services?search=<your-service-name>(or?provider=<provider>). - If the response has a matching entry, use its
canonicalNameasmodeland itsproviderasmodelProvider. - Fire usage events. Cost auto-resolves on ingest.
- Map an existing entry. If your service is similar to one in the catalog (e.g. a Google Places sub-endpoint mapping to the bundled
google-placesentry), usePOST /v1/events/map-modelto redirect your unknown name to the existing entry. Cost backfills retroactively for events already saved withcost = null. - Catalog gap. If nothing in the catalog represents your service accurately, fire events anyway. Events are saved with
cost = nullandeventStatus = NEEDS_COST_BACKFILL. Email[email protected]with the service name and your provider’s pricing page; we’ll add it to the catalog.
Programmatic access
The same catalog is available via:- Node SDK:
client.services.list(...)andclient.services.get(id). Documented in the SDK reference. - MCP: the
list_catalog_servicestool. Documented in the MCP tools reference.

