# Costs and balance

> What each FoodPerfect MCP tool costs, how the dollar balance is charged, and how refunds and low balances work.

Agents pay exactly what the app pays. Each plan tops up a dollar balance every month, and generations draw from it at the plan's rates. Reading, planning, captions, scheduling and publishing are free.

## Prices per call

| Tool | Charged as | Starter | Growth | Scale |
|---|---|---|---|---|
| `generate_photo` | 1 image | $0.24 | $0.20 | $0.15 |
| `edit_image` | 1 image | $0.24 | $0.20 | $0.15 |
| `remove_background` | 1 image | $0.24 | $0.20 | $0.15 |
| `upscale_image` | free (needs a plan or the trial; 100 a day) | — | — | — |
| `generate_promo` | 1 design | $0.60 | $0.50 | $0.40 |
| `generate_menu` | 1 design | $0.60 | $0.50 | $0.40 |
| `generate_post_example` | free (with generateImage: 1 image) | — | — | — |
| `generate_video_from_image` | 1 video clip ≤8 s | $3.00 | $3.00 | $2.50 |
| `generate_reel_script` | 1 post | $0.48 | $0.40 | $0.30 |
| `animate_reel_shot` | 1 animated shot (clip_5s) | $0.80 | $0.70 | $0.60 |
| `generate_scheduled_post_content` | free (with generateImage: 1 post) | — | — | — |
| `send_reply` | 1 reply (if AI draft) | $0.005 | $0.004 | $0.0035 |
| `resolve_reel_generators` (legacy) | 1 reel segment per AI clip block | $4.00 | $3.50 | $3.00 |
| Everything else | free | — | — | — |

The trial uses Starter rates. Enterprise uses its agreed rates. The prices shown in the app and in [Billing and Refund Terms](https://app.foodperfect.ai/legal/subscription-terms.md) are the ones that apply.

First-generation promos and menus are charged at the `design` rate (high quality, GPT Image 2.5). Photos, templates, and edits of existing promos or menus are charged at the `image` rate.

Some free tools have daily or hourly limits: `generate_reel_storyboard` 60 a day and `scrape_trending_hooks` 10 an hour. Brand analysis tools have rate limits: `run_brand_analysis` 5/h, `regenerate_brand_dna` 10/h. Inbox tools: `draft_reply` 30/min, `sync_inbox` 1/min.

## How the balance is charged

- The charge is taken when the call starts. Your monthly plan balance is used first, then top-up packs, which never expire.
- `get_account` returns the balance as `totalBalanceUsd`, and exactly as integer micro-dollars (`totalBalanceMicros`; 1,000,000 = $1).
- A failed generation is refunded automatically ([async jobs](/docs/jobs/#failures-and-refunds)).

## Running low

When the balance can't cover a call, the tool returns `insufficient_credits` with what's needed:

```json title="Tool result"
{ "error": { "code": "insufficient_credits", "retryable": false,
  "details": { "availableMicros": 120000, "requiredMicros": 240000 } } }
```

Your agent should stop and tell you, not retry. Top up or change plan in the app under **Billing**. If a paid subscription is past due or cancelled, paid tools return `unauthorized` until it's active again; free tools keep working.

## Keep spending predictable

- Give agents that shouldn't spend a key without **Generation Tools** ([scopes](/docs/authentication/#scopes)).
- Ask the agent to state the cost before paid calls. The [system prompt](/docs/agent-prompt/) does this, and waits for your OK above three items.
- Check the balance with `get_account` before and after a batch, or in the app's Billing page.
