Developing for Solvimon

Use LLMs and AI coding agents to build your Solvimon integration: machine-readable docs, an installable agent skill, plus an MCP server that lets your agent call the Solvimon API directly.

Looking to use Claude as a billing copilot rather than build an integration? See the Claude integration instead.


Using the documentation with LLMs

llms.txt

The llms.txt standard helps LLMs index documentation efficiently, similar to how a sitemap helps search engines. We host two files:

Paste either URL into your AI tool, or reference it from your agent’s instructions file (for example CLAUDE.md or .cursorrules):

Agent instructions
1When working on Solvimon billing code, consult https://docs.solvimon.com/llms.txt
2to find the relevant documentation pages.

The Solvimon agent skill

Agent Skills are instruction files that coding agents such as Claude Code load on demand. The solvimon skill gives your agent a working knowledge of the platform: the API surface across all four domains, status lifecycles, the meter-to-invoice setup workflow, event ingestion semantics, and common pitfalls like invoice grace periods and asynchronous event deduplication.

Install it with the skills CLI:

$npx skills add https://docs.solvimon.com

The skill pairs well with the MCP server below: the skill tells your agent how Solvimon works, and the MCP server lets it act on your sandbox.

The Solvimon MCP server

The Model Context Protocol (MCP) is an open standard that lets AI tools call external services. The Solvimon MCP server exposes the Solvimon API as a set of tools, so a coding agent can create meters, pricing plans, and test customers in your sandbox while you build, instead of you hand-writing API calls to set up test data.

The server runs at https://test.mcp.solvimon.com and authenticates with your test API key (Desk → Settings → API keys).

Test environment. The test.mcp.solvimon.com endpoint connects to your test sandbox, so agents can experiment freely without touching live billing data. Use your test API key; live keys will not work against this endpoint. Production access is enabled per account; contact us to get set up.

Connect your coding agent

Run the following command, replacing <your-api-key> with your test API key:

$claude mcp add solvimon-test --transport http https://test.mcp.solvimon.com --header "X-API-KEY:<your-api-key>"

For Claude Desktop setup, see the Claude integration.


Tool reference

The MCP server exposes 13 tools. Most follow the same input pattern:

FieldMeaning
actionWhat to do: list, get, create, update, and tool-specific actions
resource_typeWhich resource, for tools that cover more than one
idResource id or reference, for single-resource actions
bodyRequest body for create/update, same shape as the REST API
filterQuery params for list actions, e.g. {"limit": "20"}

Overview

ToolWhat it does
get_solvimon_accountVerify the API key and list billing entities. Call first.
manage_billing_entitiesBilling entities and tax registrations
manage_product_catalogProduct categories, products, product items, features
create_meter_setupShortcut: meter, meter value, and calculation in one call
manage_meteringMeters, event ingestion, meter data
manage_pricing_plansPricing plans and plan versions
manage_customersCustomers, including search, GDPR forget, entitlements
manage_subscriptionsSubscriptions and subscription groups
create_checkout_linkHosted checkout URL for self-serve signup
manage_invoicesInvoices, payments, payment schedules
manage_wallets_creditsCredit types, wallet types, wallets
analyticsRead-only queries on dashboard data (revenue, MRR, churn, usage)
solvimon_api_callRaw API passthrough for anything not covered above

A typical setup flow chains the tools in dependency order:

get_solvimon_account → manage_product_catalog → create_meter_setup (if usage-based)
→ manage_pricing_plans → create_checkout_link or manage_subscriptions (init)

get_solvimon_account

Verifies credentials and returns the billing entities available to the API key. Takes no input. This is a good first call to confirm the server is correctly configured.

manage_billing_entities

Actions: list, get, update, list_tax_registrations, add_tax_registration, remove_tax_registration

Get a billing entity
1{"action": "get", "id": "bile_Kq2mVx8RnT4uLpWe9AhZ3"}

manage_product_catalog

Actions: list, get, create, update, delete, activate, archive, deprecate

Resource types: product_categories, products, product_items, features

Create a usage-based product item
1{
2 "action": "create",
3 "resource_type": "product_items",
4 "body": {
5 "name": "API calls",
6 "reference": "api-calls",
7 "product_id": "prod_Xw3nQr7KmY2vBs8TfLc41",
8 "model_type": "USAGE_BASED",
9 "meter_value_calculation_id": "mvc_Jh5tRw9PnX3kMq7VbYd28"
10 }
11}

model_type is immutable after creation.

create_meter_setup

Creates a meter, a meter value, and a meter value calculation in one call. Returns the mvc_... id to use in usage-based pricing configurations and product items.

ParameterRequiredDescription
meter_nameYesDisplay name for the meter (e.g. "API requests")
meter_referenceYesUnique reference slug (e.g. "api-requests")
value_nameYesDisplay name for the meter value (e.g. "count")
value_referenceYesUnique reference for the meter value
calculation_typeNoAggregation method: SUM (default), MAX, MIN, AVERAGE, or UNIQUE
value_typeNoData type of the meter value. Default NUMBER.
persistNoWhether to persist the calculation output. Default false.
Create a meter setup
1{
2 "meter_name": "API requests",
3 "meter_reference": "api-requests",
4 "value_name": "count",
5 "value_reference": "api-requests-count"
6}

manage_metering

Actions: list, get, delete, ingest, batch_ingest, calculate

Resource types: meters, meter_values, meter_value_calculations, meter_properties, meter_data, events

Creating meters goes through create_meter_setup; this tool covers everything else, including sending test usage events.

Ingest a usage event
1{
2 "action": "ingest",
3 "resource_type": "events",
4 "body": {
5 "meter_reference": "api-calls",
6 "value": 1,
7 "customer_id": "cust_AbD3DqausjOYiMNDZY11F"
8 }
9}

manage_pricing_plans

Actions: list, get, create, update, delete

Resource types: pricing_plans, pricing_plan_versions

Get a plan version
1{"action": "get", "resource_type": "pricing_plan_versions", "id": "ppve_Zt6yUw2QmK9nXr4VcHb37"}

To change pricing, create a new plan version, never a new plan.

manage_customers

Actions: list, get, create, update, delete, search, activate, archive, forget, entitlements

Create a customer
1{
2 "action": "create",
3 "body": {
4 "type": "ORGANIZATION",
5 "reference": "acme-001",
6 "billing_entity_id": "bile_Kq2mVx8RnT4uLpWe9AhZ3",
7 "country_code": "NL",
8 "timezone": "Europe/Amsterdam",
9 "organization": {"legal_name": "Acme Corp"}
10 }
11}

type, country_code, and timezone are immutable after creation.

manage_subscriptions

Actions: list, get, create, update, delete, cancel, archive, void, copy, init

Resource types: pricing_plan_subscriptions, pricing_plan_subscription_groups

The init action subscribes an existing customer directly, without a checkout:

Subscribe an existing customer
1{
2 "action": "init",
3 "resource_type": "pricing_plan_subscriptions",
4 "body": {
5 "pricing_plan_version_id": "ppve_Zt6yUw2QmK9nXr4VcHb37",
6 "customer_id": "cust_AbD3DqausjOYiMNDZY11F",
7 "billing_period": {"type": "MONTH", "value": 1}
8 }
9}

Returns a hosted checkout URL. The customer and subscription are created automatically when the end-customer completes checkout.

ParameterRequiredDescription
pricing_plan_version_idYesppve_... id of the plan version to activate
billing_entity_idNobile_... id. Defaults to your first billing entity.
billing_periodNoe.g. {"type": "MONTH", "value": 1}
billing_timeNoEXACT (default) or END_OF_PERIOD
expiry_daysNoLink lifetime in days. Default 30.
success_urlNoHTTPS URL to redirect the customer to after checkout
Create a checkout link
1{
2 "pricing_plan_version_id": "ppve_Zt6yUw2QmK9nXr4VcHb37",
3 "billing_period": {"type": "MONTH", "value": 1},
4 "success_url": "https://acme.com/billing/done"
5}

manage_invoices

Actions: list, get, create, update, preview, pay, refund, credit, archive, send_by_email, authorize, activate, cancel, pause

Resource types: invoices, payments, payment_schedules

Preview an invoice
1{
2 "action": "preview",
3 "resource_type": "invoices",
4 "body": {
5 "customer_id": "cust_AbD3DqausjOYiMNDZY11F",
6 "billing_currency": "EUR"
7 }
8}

manage_wallets_credits

Actions: list, get, create, update, activate, deactivate, archive

Resource types: wallets, wallet_types, credit_types

Create a credit type
1{
2 "action": "create",
3 "resource_type": "credit_types",
4 "body": {"name": "API Credits", "reference": "api-credits"}
5}

analytics

Read-only queries over dashboard data (revenue, MRR, churn, usage). Use the three actions in sequence:

  1. list_datasets returns available datasets and their datasetId
  2. list_fields returns exact field names in model.field form
  3. query runs the query

The optional customer_id parameter scopes results to one or more customers.

Query invoiced revenue by product
1{
2 "action": "query",
3 "query": {
4 "datasetId": "dast_Vc7wPx3TnR8mKq5YbJd92",
5 "measures": ["invoice_v2.invoice_line_base_rep_amount_sum"],
6 "dimensions": ["invoice_v2.product_names"]
7 }
8}

solvimon_api_call

Raw API request. Use when no other tool fits.

ParameterRequiredDescription
methodYesHTTP method: GET, POST, PATCH, PUT, or DELETE
pathYesAPI path starting with /v1/... (e.g. /v1/customers)
targetNoSolvimon service to call: CONFIG (default), TRANSACTION, EVENT, or IDENTITY
bodyNoRequest body
queryNoQuery parameters as a map of string → string
List products via the raw API
1{"method": "GET", "path": "/v1/products", "query": {"limit": "10"}}