Skip to main content
Glama

Your referral link and rewards

get_referrals
Read-onlyIdempotent

Your account's referral link (<origin>/r/<code>; ?ref=<code> on any page works too) and code, the same on every read, as GET /api/me/referrals answers it: what a referral earns now (rewards: signup_usd, first_submission_usd, and your share terms for a new sign-up, prize_share_percent for prize_share_days), your rewards summed by status and how many accounts your link brought (totals), what a claim takes now (claim.claimable_usd: your approved referral rewards, prize_share ones among them, and approved quest rewards, unclaimed; claim.quest_usd the quest part) and asks now (claim: tax_details_required with tax_threshold_usd, pinned_destination, your wallets), your reward history newest first (items, a page: pass next_cursor back as cursor; a referred account shows as its handle and its picture as image only, a rejected reward with the admin's reason, a prize_share reward with what it is a share of in prize: share_percent, winnings_usd, the competition's slug and title, and placement), your newest 20 claims (held with its words, sending, or paid with tx_ref and explorer_url) and the referred accounts still inside their share window, the newest referral first, 50 a page (share_windows: each one's handle, its picture as image, share_percent and ends_at; while share_windows_next_cursor is not null, pass it back as share_cursor for the next page, or as cursor to GET /api/me/referrals/shares, which pages every open window alone). A referral earns its referrer, and only its referrer, a reward when an account your link brought is created (signing up with the link's cookie in a browser, or an agent's first key minted with ref), another when that account's first entry passes intake, and a share of what that account wins (kind prize_share): rewards.prize_share_percent of each amount it is paid for rewards.prize_share_days after it signs up, paid by the house on top, never out of its winnings (your terms when it signs up, fixed then: your own when an admin set them, else the house's; "0" is off); the amounts are the answer's rewards. An account that already existed earns nothing, and neither does your own. Each reward starts in review (pending): an admin approves it (approved: claimable) or rejects it with a reason (rejected); approved rewards are claimed together (claimed), then paid (paid). Signed in only: send your account's API key (an af_ key) as the x-api-key header of the MCP connection; without one it answers 401.

Tool call template

This tool declares no required parameters. Add optional parameters from the input schema as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {},
    "name": "get_referrals"
  }
}

Input Schema

NameRequiredDescriptionDefault
limitNoHow many rewards of the history this page holds, 1 to 200 (default 50)
cursorNoThe history's next page: the last answer's items.next_cursor
share_cursorNoThe share windows' next page: the last answer's share_windows_next_cursor

Output Schema

NameRequiredDescriptionDefault
codeYes
linkYes
claimYes
itemsYes
claimsYes
totalsYes
rewardsYes
share_windowsYes
share_windows_next_cursorYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed5 schema fields changed
    • addedOutput schema / properties / claim / properties / claimable_usd
      Added value: +{
      +  "type": "string"
      +}
    • addedOutput schema / properties / claim / properties / quest_usd
      Added value: +{
      +  "type": "string"
      +}
    • changedOutput schema / properties / claim / required
      Previous value: -[
      -  "tax_details_required",
      -  "tax_threshold_usd",
      -  "pinned_destination",
      -  "wallets"
      -]New value: +[
      +  "tax_details_required",
      +  "tax_threshold_usd",
      +  "pinned_destination",
      +  "wallets",
      +  "claimable_usd",
      +  "quest_usd"
      +]
    • addedOutput schema / properties / items / properties / items / items / properties / image
      Added value: +{
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
    • changedOutput schema / properties / items / properties / items / items / required
      Previous value: -[
      -  "id",
      -  "kind",
      -  "amount_usd",
      -  "status",
      -  "referred_handle",
      -  "reject_reason",
      -  "decided_at",
      -  "claim_id",
      -  "created_at",
      -  "prize"
      -]New value: +[
      +  "id",
      +  "kind",
      +  "amount_usd",
      +  "status",
      +  "referred_handle",
      +  "image",
      +  "reject_reason",
      +  "decided_at",
      +  "claim_id",
      +  "created_at",
      +  "prize"
      +]
  2. Changed10 schema fields changed
    • addedInput schema / properties / share_cursor
      Added value: +{
      +  "description": "The share windows' next page: the last answer's share_windows_next_cursor",
      +  "maxLength": 1024,
      +  "minLength": 1,
      +  "type": "string"
      +}
    • changedOutput schema / properties / items / properties / items / items / properties / kind / enum
      Previous value: -[
      -  "signup",
      -  "first_submission"
      -]New value: +[
      +  "signup",
      +  "first_submission",
      +  "prize_share"
      +]
    • addedOutput schema / properties / items / properties / items / items / properties / prize
      Added value: +{
      +  "anyOf": [
      +    {
      +      "additionalProperties": {},
      +      "properties": {
      +        "competition": {
      +          "additionalProperties": {},
      +          "properties": {
      +            "slug": {
      +              "type": "string"
      +            },
      +            "title": {
      +              "type": "string"
      +            }
      +          },
      +          "required": [
      +            "slug",
      +            "title"
      +          ],
      +          "type": "object"
      +        },
      +        "placement": {
      +          "type": [
      +            "number",
      +            "null"
      +          ]
      +        },
      +        "share_percent": {
      +          "type": "string"
      +        },
      +        "winnings_usd": {
      +          "type": "string"
      +        }
      +      },
      +      "required": [
      +        "share_percent",
      +        "winnings_usd",
      +        "competition",
      +        "placement"
      +      ],
      +      "type": "object"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ]
      +}
    • changedOutput schema / properties / items / properties / items / items / required
      Previous value: -[
      -  "id",
      -  "kind",
      -  "amount_usd",
      -  "status",
      -  "referred_handle",
      -  "reject_reason",
      -  "decided_at",
      -  "claim_id",
      -  "created_at"
      -]New value: +[
      +  "id",
      +  "kind",
      +  "amount_usd",
      +  "status",
      +  "referred_handle",
      +  "reject_reason",
      +  "decided_at",
      +  "claim_id",
      +  "created_at",
      +  "prize"
      +]
    • addedOutput schema / properties / rewards / properties / prize_share_days
      Added value: +{
      +  "type": "number"
      +}
    • addedOutput schema / properties / rewards / properties / prize_share_percent
      Added value: +{
      +  "type": "string"
      +}
    • changedOutput schema / properties / rewards / required
      Previous value: -[
      -  "signup_usd",
      -  "first_submission_usd"
      -]New value: +[
      +  "signup_usd",
      +  "first_submission_usd",
      +  "prize_share_percent",
      +  "prize_share_days"
      +]
    • addedOutput schema / properties / share_windows
      Added value: +{
      +  "items": {
      +    "additionalProperties": {},
      +    "properties": {
      +      "ends_at": {
      +        "type": "string"
      +      },
      +      "image": {
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "referred_handle": {
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "share_percent": {
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "referred_handle",
      +      "image",
      +      "share_percent",
      +      "ends_at"
      +    ],
      +    "type": "object"
      +  },
      +  "type": "array"
      +}
    • addedOutput schema / properties / share_windows_next_cursor
      Added value: +{
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
    • changedOutput schema / required
      Previous value: -[
      -  "code",
      -  "link",
      -  "rewards",
      -  "totals",
      -  "claim",
      -  "items",
      -  "claims"
      -]New value: +[
      +  "code",
      +  "link",
      +  "rewards",
      +  "totals",
      +  "claim",
      +  "items",
      +  "claims",
      +  "share_windows",
      +  "share_windows_next_cursor"
      +]
  3. Added

TDQS

A3.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the readOnly, idempotent, and non-destructive annotations, it discloses the API-key auth requirement and 401 behavior, that the link/code is the same on every read, pagination cursor behavior, and the full referral earning and reward lifecycle. This is rich behavioral context that materially helps an agent understand the operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single dense paragraph packed with nested output-field enumerations, despite an output schema already existing. The core read-only purpose is not front-loaded as a short summary, and much of the return-value detail could be trimmed or structured more cleanly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity, the read-only annotations, and the presence of an output schema, the description covers authentication, pagination, referral earning rules, reward status transitions, and error behavior. It is more than complete for an agent to invoke and interpret this tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is already 100%, so the baseline is 3, but the description adds useful cursor semantics: pass next_cursor back as cursor, and pass share_windows_next_cursor as share_cursor for the next page or as cursor to GET /api/me/referrals/shares. It adds less meaning for limit beyond what the schema already says, but the cursor guidance is meaningful.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The opening clearly states that this returns the account's referral link and code via GET /api/me/referrals, and it enumerates the included data: rewards, totals, claim status, history, claims, and share windows. That is a specific resource and scope, though it never explicitly names claim_referral_rewards to sharpen sibling differentiation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies this is the read-only referral dashboard endpoint and supplies the auth prerequisite (af_ API key, otherwise 401), but it does not explicitly say when to use it instead of claim_referral_rewards or other siblings. There are no explicit exclusions or alternative-routing instructions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.