Skip to content
HILLS API v1 Early access

MCP server

streams_and_revenue

Streams and revenue (USD) from store statements, grouped by month, store, country, release, track or artist/label, over a period, optionally for one release, track…

Tool streams_and_revenue · Read-only · Every account with MCP access · Role permission: royalties.view

Streams and revenue (USD) from store statements, grouped by month, store, country, release, track or artist/label, over a period, optionally for one release, track (ISRC), store or country. Statements are monthly and arrive 1–3 months late: there are no daily or weekly numbers. Includes the totals and the change against the previous period of the same length.

Arguments

Argument Type Required Description
period this_month | last_month | this_quarter | last_quarter | last_3_months | last_6_months | last_12_months | this_year | last_year | all_time No last_N_months = the N full months before this one. Ignored when from_month/to_month are given. Default “last_12_months”.
from_month string No First month, YYYY-MM.
to_month string No Last month, YYYY-MM (default: from_month, or this month).
group_by month | store | country | release | track | member No member = per artist/label (clients and staff). Default “month”.
release_id integer No
isrc string No
store string No Store, e.g. spotify, apple_music, youtube, tiktok, amazon.
country string No
member_id integer No Clients: one of your artists/labels. Staff: any account.
limit integer (1–100) No Default 25.

Example call

Assistants make this call for you; this is what goes to https://app.hillsmusic.com/mcp over JSON-RPC.

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "streams_and_revenue",
    "arguments": {
      "period": "last_12_months",
      "group_by": "month",
      "limit": 25
    }
  }
}

Result

A one-line summary as text, then the same data as JSON in structuredContent, with these fields:

Field Type Description
currency USD
period object
group_by string
latest_month_with_data string or null
totals object
previous_period object or null
rows array of object
truncated boolean
note string

A refusal (no permission, not found, bad input) comes back as a tool error (isError: true) whose text says why.

Ready to integrate?

Request API access and we get back to you within 1–3 business days.