Setup lamps, balance, caps and this key
The six setup checks Setup shows, with times in UTC. Also the ad balance read from Whop (cached up to a minute), the hard daily cap and what it allows, whether live writes are on, today's allowances, and which scopes this key holds.
MCP tool get_account
curl
curl https://app.greenset.ai/v1/account \
-H "Authorization: Bearer $GREENSET_KEY"JavaScript
// Node 18 or later. Save as greenset.mjs, then: node greenset.mjs
const res = await fetch("https://app.greenset.ai/v1/account", {
headers: {
Authorization: `Bearer ${process.env.GREENSET_KEY}`,
},
});
const data = await res.json();
if (!res.ok) throw new Error(`${res.status} ${data.error.code}: ${data.error.message}`);
console.log(data);Python
# Python 3, standard library only.
import json, os, urllib.request
from urllib.error import HTTPError
req = urllib.request.Request(
"https://app.greenset.ai/v1/account",
headers={
"Authorization": "Bearer " + os.environ["GREENSET_KEY"],
},
)
try:
with urllib.request.urlopen(req) as res:
data = json.load(res)
except HTTPError as e:
err = json.load(e)["error"]
raise SystemExit(f"{e.code} {err['code']}: {err['message']}")
print(data)Example answer · 200
{
"workspace": {
"name": "Northfield Coffee"
},
"ad_account": {
"id": "biz_LiveChild001",
"name": "Northfield Coffee",
"linked_at": "2026-10-01T09:14:02.000Z"
},
"setup": [
{
"id": "account",
"status": "pass",
"fact": "owner@northfieldcoffee.example · confirmed 2026-10-01 09:12 UTC"
},
{
"id": "adaccount",
"status": "pass",
"fact": "biz_••d001 · pays from your ad balance · since 2026-10-01 09:14 UTC"
},
{
"id": "facebook",
"status": "pass",
"fact": "\"Northfield Coffee\" · sacc••Qp1Z · can advertise"
},
{
"id": "pixel",
"status": "pass",
"fact": "Whop confirmed the pixel on northfieldcoffee.example · 2026-10-02 10:30 UTC"
},
{
"id": "balance",
"status": "pass",
"fact": "$412.50 available"
},
{
"id": "draft",
"status": "next",
"fact": "Draw ads for what you sell in Studio"
}
],
"balance": {
"available_usd": 412.5,
"pending_usd": 0,
"credits_usd": 0
},
"payment_failed": null,
"caps": {
"hard_daily_cap_usd": 500,
"max_single_daily_usd": 238.09,
"min_daily_budget_usd": 5,
"overdelivery": 2.1
},
"live_writes": {
"enabled": true
},
"quotas": {
"scrape": {
"used": 0,
"limit": 120
},
"photos": {
"used": 0,
"limit": 40
},
"copilot": {
"used": 0,
"limit": 200
},
"elements": {
"used": 0,
"limit": 120
}
},
"key": {
"id": "key_Ab12Cd34Ef56",
"name": "Zapier",
"scopes": [
"read",
"stores",
"studio",
"drafts",
"activate",
"stop"
],
"expires_at": "2026-11-04T13:29:30.000Z"
},
"as_of": "2026-10-05T13:31:07.000Z"
}Answer fields · Account
workspaceobject · requiredworkspace.namestring · requiredad_accountobject, or null · requiredad_account.idstring · requiredThe Whop account (biz_…).ad_account.namestring · requiredad_account.linked_atstring, or null · requiredsetuparray of object · requiredThe six setup checks Setup shows, with times in UTC. The first check's fact names the sign-in email of the person who made this key.setup[].idstring · requiredaccount, adaccount, facebook, pixel, balance or draft.setup[].statusstring, one of pass, next, todo, fail · requiredsetup[].factstring · requiredbalanceobject, or null · requiredbalance.available_usdnumber, or null · requiredbalance.pending_usdnumber, or null · requiredbalance.credits_usdnumber, or null · requiredpayment_failedobject, or null · requiredpayment_failed.sincestring · requiredpayment_failed.issuestring, or null · requiredcapsobject · requiredcaps.hard_daily_cap_usdnumber · requiredcaps.max_single_daily_usdnumber · requiredcaps.min_daily_budget_usdnumber · requiredcaps.overdeliverynumber · requiredlive_writesobject · requiredlive_writes.enabledboolean · requiredlive_writes.reasonstringquotasobject · requiredToday's allowances by kind (UTC day): scrape is store reads, photos is Studio photo sets, copilot is questions to Greeni, elements is money screens opened in Setup. Growth runs and Autopilot cycles count against daily limits of their own (100 each unless set otherwise), not listed here. Images drawn are not here: they are counted by plan, and POST /v1/concepts answers today's count as images.keyobject · requiredkey.idstring, key_… · requiredThis key's id.key.namestring · requiredkey.scopesarray of string, one of read, stores, studio, drafts, activate, stop, autopilot, webhooks · requiredkey.expires_atstring, or null · requiredas_ofstring · requiredRefusals
Plus the refusals every call can get (401, 403, 429, 500): Errors.