Connector action

get_plan_and_usage

ReadIdempotent

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

json
{
  "readOnlyHint": true,
  "destructiveHint": false,
  "idempotentHint": true,
  "openWorldHint": false
}

Parameters

This action takes no parameters. Send an empty arguments object.

Input schema as JSON Schema
inputSchema
{
  "type": "object",
  "properties": {}
}

Example

Request

tools/call
{
  "jsonrpc": "2.0",
  "id": 2,
  "method": "tools/call",
  "params": {
    "name": "get_plan_and_usage",
    "arguments": {}
  }
}

With curl

bash
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.

json
{
  "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.

MessageWhen
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