Connector action
get_plan_and_usage
Get my plan and usage
Which plan the account is on, its subscription status and paid-through date, whether the free first event is used, and how many events exist. Call it before create_event when the assistant needs to say whether the next event will need payment.
What the client is told
The description an MCP client receives from tools/list, word for word:
Which plan the account is on (per event, monthly or annual), the subscription status, its renewal or paid-through date, whether the free first event has been used, and how many events exist. No card or payment details.
Annotations
{
"readOnlyHint": true,
"destructiveHint": false,
"idempotentHint": true,
"openWorldHint": false
}Parameters
This action takes no parameters. Send an empty arguments object.
Input schema as JSON Schema
{
"type": "object",
"properties": {}
}Example
Request
{
"jsonrpc": "2.0",
"id": 2,
"method": "tools/call",
"params": {
"name": "get_plan_and_usage",
"arguments": {}
}
}With curl
curl -X POST https://www.happyhearaudio.com/api/mcp \
-H "Authorization: Bearer $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-H "MCP-Protocol-Version: 2025-06-18" \
-d '{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"get_plan_and_usage","arguments":{}}}'Response
Fake data in a real shape. content[0].text is the same object as a JSON string for clients that read text only.
{
"jsonrpc": "2.0",
"id": 2,
"result": {
"content": [
{
"type": "text",
"text": "{\"plan\":\"monthly\",\"unlimited_events\":true,\"subscription_status\":\"active\",\"paid_through\":\"2026-11-23\",\"pause_ends_on\":null,\"free_event_used\":true,\"first_event_created_on\":\"2026-06-18\",\"events_created\":27,\"note\":\"Unlimited events are included while the subscription is paid.\",\"billing_url\":\"https://www.happyhearaudio.com/dashboard/settings\"}"
}
],
"structuredContent": {
"plan": "monthly",
"unlimited_events": true,
"subscription_status": "active",
"paid_through": "2026-11-23",
"pause_ends_on": null,
"free_event_used": true,
"first_event_created_on": "2026-06-18",
"events_created": 27,
"note": "Unlimited events are included while the subscription is paid.",
"billing_url": "https://www.happyhearaudio.com/dashboard/settings"
}
}
}Errors
Each of these comes back as a normal JSON-RPC result with isError: true and the message as its single text item. Arguments the schema rejects are a JSON-RPC -32602 error instead. See Errors for the HTTP-level refusals that happen before any tool runs.
| Message | When |
|---|---|
| Could not read your plan right now. | A database read failed. Retry after a short wait. |
Limits
- 60 requests per minute per operator across all actions, answered with HTTP 429 and a Retry-After header past that.
- No daily cap. Read actions are not logged and not counted.
Worth knowing
- plan is per_event, monthly or annual. unlimited_events is the entitlement that matters for create_event.
- A paused subscription is paid only through paid_through; pause_ends_on says when billing resumes.
- No card, invoice or payment detail is ever included.
See also
- The operator-facing description of this action: Get my plan and usage.
- Machine-readable schema: tools.json.