Skip to main content
Create a quota (the target users are measured against) or duplicate an existing one. The call returns the quota. In MCP clients, the tool is titled Create or duplicate quota. What the tool does depends on what you pass:
  • To duplicate a quota, pass name and source_quota_id. Optionally pass description to replace the source’s. Pass nothing else: the copy takes the source’s frequency, type, default currency and every target value, and lands where the source lives (live or its sandbox), whatever sandbox_id says.
  • To create a quota from scratch, pass name, frequency, quota_type and currency_type. Optionally pass description and sandbox_id.
A duplicate is the same as one made from the web app. A quota synchronized from an integration is copied as a local quota, with its values kept as manual ones. Duplicate a quota to start from one that already works, for example for another team, rather than rebuild it and reload its values. The tool refuses these calls:
  • frequency, quota_type or currency_type passed with source_quota_id. The refusal names the arguments to leave out.
  • A call without source_quota_id that leaves out frequency, quota_type or currency_type. The refusal names the missing ones.
  • An archived source quota. Restore it first with archive_quota (archived false).
  • A source_quota_id that matches no quota you can reach. The refusal points you to list_quotas.
A quota created from scratch has no target values: every user reads as unset until you set them with update_quota_values, passing the id this call returns. Its name, description and currency type can be changed afterwards with update_quota; its frequency and type only in the Qobra web app. Quotas synchronized from an integration are not created here either. Set those up in the Qobra web app. Every write to the live environment is recorded in the audit trail as the Qobra MCP agent; writes to a sandbox are not audited.

Example

To copy the “New Business ARR” quota for the EMEA team, pass the id of the source quota, as list_quotas returns it, and the name of the copy:

Parameters

Body

string
required
Display name of the new quota, or of the copy (‘New Business ARR’, ‘Number of demos booked’).
string
To duplicate: the id of the quota to copy, from list_quotas. Pass only name and, optionally, description with it. Omit to create a quota from scratch.
string
Free-text note on what the quota targets. With source_quota_id it replaces the source’s description (pass "" to clear it); omit it to keep the source’s.
string
From scratch only (required there, refused with source_quota_id). The period one target covers; target values are written at that granularity (2026-03, 2026-Q1, 2026-S1, 2026). One of: monthly, quarterly, semesterly, annually.
string
From scratch only (required there, refused with source_quota_id). Unit of the target: amount (carries a currency), percentage, or float (a plain number, e.g. a count of deals). One of: amount, percentage, float.
string
From scratch only (required there, refused with source_quota_id). Default currency of an amount quota: ‘company’, ‘user’ (each user’s payment currency) or ‘calculation’ (the user’s calculation currency). Pass ‘company’ for a percentage or float quota. One of: company, user, calculation.
string
Id of a sandbox from list_sandboxes, to create this in instead of the live environment. Omit it to create in live, the company’s real data. Never a name, never the live id. Ignored with source_quota_id: the copy lands where the source lives.

Response

Body

object
The quota as it now exists — the same row list_quotas returns, so the id can be reused straight away.