Assistants
Connect an assistant to jewl.
Claude, ChatGPT, Cursor, and Grok Bot can read your partners, referrals, and payouts, add a referral, or email a partner invite. They use a company API key. A key cannot mark a payout paid, and it cannot see another company.
Create a key
- Sign in at app.jewl.io and open the dashboard.
- In API keys, name the key for where you will use it, then choose Create key.
- Copy the key. jewl shows the full key once. If you lose it, revoke it and create another. The dashboard keeps the prefix, like jewl_live_a1b2c3d4...
- Owners and admins can create and revoke keys. A paused account's keys stop working until jewl turns the account back on.
Send the key on every request:
Authorization: Bearer jewl_live_YOUR_KEY
The assistant server is https://app.jewl.io/api/mcp. The REST API is https://app.jewl.io/api/v1.
Claude
- Open Customize, then Connectors, then Add custom connector.
- Name it jewl. Paste the server URL: https://app.jewl.io/api/mcp
- Choose No sign-in. Under Request headers, add Authorization. The value is Bearer, a space, then your key.
- If you do not see Request headers, that option is not on your Claude account yet. Use Cursor, Claude Code, or Grok Bot, or call the REST API below.
- In a chat, turn the jewl connector on, then ask it to list your partners.
Claude Code, from a terminal:
claude mcp add --transport http jewl https://app.jewl.io/api/mcp --header "Authorization: Bearer jewl_live_YOUR_KEY"
ChatGPT
ChatGPT can add a remote MCP server with OAuth, or with no authentication. jewl does not offer sign-in yet, and these tools are not public, so ChatGPT cannot connect to the MCP server today.
Until sign-in ships, call the REST API with your key from your own code. The curl examples below are the same data the tools use. Sign-in with a jewl account is the next step for ChatGPT, and for Claude accounts that cannot send a request header.
Cursor
Add this to ~/.cursor/mcp.json for every project, or to .cursor/mcp.json in one project. Do not commit the key. Keep it on your machine.
{
"mcpServers": {
"jewl": {
"url": "https://app.jewl.io/api/mcp",
"headers": {
"Authorization": "Bearer jewl_live_YOUR_KEY"
}
}
}
}Save the file, then open Customize in Cursor and turn jewl on. Ask it to list your partners. Cursor asks before it runs a tool.
Grok Bot
Grok Bot connects from the internet, so use the public https address, not localhost.
- Open a chat with the Bot that should use jewl.
- Send: Add a custom MCP server named jewl at https://app.jewl.io/api/mcp. It needs the header Authorization: Bearer followed by my jewl API key. Ask me for the key in a masked secret request. Do not show the key in the chat.
- Paste the key in the secret box when the Bot asks. Do not paste it in the chat itself.
- In the next message, ask it to list your partners.
If you see Plugins instead, add a custom MCP server, paste https://app.jewl.io/api/mcp, and set Authorization to Bearer, a space, and your key.
REST API
Every path is under https://app.jewl.io/api/v1 and needs the Bearer key. Amounts are whole dollars. A fee is owed when a referral is Completed and not yet marked paid.
- GET /partners lists partners. GET /partners/{id} gets one.
- GET /referrals lists referrals. Filters: status, partner_id, created_from, created_to, limit, offset. A date like 2026-11-01 covers that whole UTC day.
- POST /referrals adds a referral for a partner. Send partner_id, name, and a phone or email.
- GET /payouts/owed is unpaid referral fees by partner. GET /payouts is payouts you already recorded.
- GET /company is the summary: counts, conversion, revenue, owed, and paid.
- POST /partners/invite emails a partner invite. Send { "email": "ada@example.com" }.
There is no endpoint that marks a payout paid.
curl https://app.jewl.io/api/v1/partners \ -H "Authorization: Bearer jewl_live_YOUR_KEY"
curl https://app.jewl.io/api/v1/referrals \
-H "Authorization: Bearer jewl_live_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"partner_id":"PARTNER_ID","name":"Jordan Lee","phone":"407-555-0100"}'Errors look like this. A bad or revoked key is 401. A paused company is 403. Over 120 requests in a minute is 429.
{ "error": { "code": "unauthorized", "message": "This API key is not valid." } }