> ## Documentation Index
> Fetch the complete documentation index at: https://docs.qobra.co/llms.txt
> Use this file to discover all available pages before exploring further.

# get_company_settings

> Return your company's parameter sheet — statement periods, currencies, AI agents, enabled modules — one block per settings section.

Return how your company is configured, one block per settings section.

Reach for this when the question is about the *setup* rather than the figures
— "are draws activated?", "who can use the Sales Coach?", "since when do
statements exist?" — and when a tool comes back empty and you need to know
whether the feature is simply off.
[`get_identity`](/mcp_documentation/tools/get_identity) already carries the
fiscal calendar, the one piece that conditions every period label; the
`profile` block repeats it so the sheet reads on its own. The currency and
the timezone here are the *company's* — the ones on identity's user are what
you personally are paid in and work in.

Each block carries the settings page it is edited on, so an answer about a
setting can point at where to change it. A null `settings_url` means that
section is not self-serve and Qobra support changes it.

**An optional module that is unusable is absent, not a block of falsy fields.**
`requests`, `validation_workflow`, `draws` and `licences` are null in
that case, and `unavailable_modules` says why for each: the subscription tier
does not include it (the user has to talk to Qobra about upgrading — read
`package` for the tier they are on), it is included but switched off, or you
personally may not read it. Each row's `remedy` is the sentence to tell the
user. None of them is a reason to retry.

Takes no arguments: the company is the one your session is scoped to. For
exchange rates between the available currencies, and for what a *user* is paid
in, see the currency fields on the user and statement tools.

## Response

<Accordion title="Body" defaultOpen>
  <ResponseField name="company" type="object">
    <Expandable title="object properties">
      <ResponseField name="id" type="string" />

      <ResponseField name="name" type="string" />
    </Expandable>
  </ResponseField>

  <ResponseField name="package" type="string">
    The company's Qobra subscription tier: core, advanced, scale, or others.
    What a tier includes is why a module below may be absent — see
    `unavailable_modules`. One of: `core`, `advanced`, `scale`, `others`.
  </ResponseField>

  <ResponseField name="profile" type="object">
    Always present.

    <Expandable title="object properties">
      <ResponseField name="timezone" type="string">
        IANA timezone the company's dates are expressed in.
      </ResponseField>

      <ResponseField name="fiscal_calendar" type="object">
        Same shape as on `get_identity`: the fiscal year in progress, as a
        plain month range. Repeated here so the sheet reads on its own.

        <Expandable title="object properties">
          <ResponseField name="current_year" type="string">
            The fiscal year label the current calendar day falls in, formatted
            like `FY2027`.
          </ResponseField>

          <ResponseField name="starts_on" type="string">
            First month of the fiscal year, `YYYY-MM`.
          </ResponseField>

          <ResponseField name="ends_on" type="string">
            Last month of the fiscal year, `YYYY-MM`.
          </ResponseField>
        </Expandable>
      </ResponseField>

      <ResponseField name="settings_url" type="string">
        Deep link to the company settings page.
      </ResponseField>
    </Expandable>
  </ResponseField>

  <ResponseField name="statements" type="object">
    Always present.

    <Expandable title="object properties">
      <ResponseField name="start_period" type="string">
        `YYYY-MM`; the earliest period the company's statement navigation
        offers. A display floor, not an existence boundary — statements before
        it can still exist, and `list_statements` will return them if you ask
        for that period. Null means no floor was configured.
      </ResponseField>

      <ResponseField name="future_periods" type="integer">
        How many periods beyond the current one are opened ahead of time.
      </ResponseField>

      <ResponseField name="recalculation_hour_utc" type="integer">
        Hour of the day (0-23, UTC) statements are recalculated automatically
        — when figures refresh without anyone acting.
      </ResponseField>

      <ResponseField name="settings_url" type="string">
        Always null: these are set by Qobra, not on a settings page. Ask Qobra
        support to change them.
      </ResponseField>
    </Expandable>
  </ResponseField>

  <ResponseField name="currencies" type="object">
    Always present.

    <Expandable title="object properties">
      <ResponseField name="company_currency" type="string">
        The currency the company consolidates totals in.
      </ResponseField>

      <ResponseField name="calculation_currency_activated" type="boolean">
        Whether commissions may be computed in a currency other than the one
        they are paid in — the multi-currency feature AND the company's own
        switch.
      </ResponseField>

      <ResponseField name="available_currencies" type="string[]">
        Every currency the company has exchange rates for. Empty means it
        operates in a single currency.
      </ResponseField>

      <ResponseField name="settings_url" type="string">
        Deep link to the currencies settings page.
      </ResponseField>
    </Expandable>
  </ResponseField>

  <ResponseField name="ai" type="object">
    Always present. One row per AI agent Qobra ships.

    <Expandable title="object properties">
      <ResponseField name="agents" type="object[]">
        <Expandable title="object properties">
          <ResponseField name="agent" type="string">
            Which AI agent this row is about: `sales_coach` (explains a rep
            their statement), `analyst` (answers reporting questions),
            `architect` (builds compensation plans), `mcp` (the Qobra MCP
            server). One of: `sales_coach`, `analyst`, `architect`, `mcp`.
          </ResponseField>

          <ResponseField name="settings_url" type="string">
            Deep link to this agent's settings page.
          </ResponseField>

          <ResponseField name="available" type="boolean">
            Whether the agent is usable in this company — the subscription
            feature AND the company's AI switches, not one of the two. False
            is the answer to "why can nobody use it?".
          </ResponseField>

          <ResponseField name="available_to_you" type="boolean">
            Whether *you*, the calling user, may use the agent — `available`
            narrowed by the pilot group when the agent is in pilot mode.
          </ResponseField>

          <ResponseField name="mode" type="string">
            Rollout mode: `all` (everyone in the company) or `pilot` (only the
            users listed in `pilot_users`). One of: `all`, `pilot`.
          </ResponseField>

          <ResponseField name="pilot_users" type="object[]">
            The users allowed to use the agent while it is in pilot mode.
            Empty when mode is `all` — the whole company is then allowed — and
            empty as well when you may not read the company's AI settings,
            which never affects your own `available_to_you`.

            <Expandable title="object properties">
              <ResponseField name="id" type="string" />

              <ResponseField name="name" type="string" />

              <ResponseField name="email" type="string" />
            </Expandable>
          </ResponseField>
        </Expandable>
      </ResponseField>

      <ResponseField name="settings_url" type="string">
        Deep link to the AI settings page.
      </ResponseField>
    </Expandable>
  </ResponseField>

  <ResponseField name="requests" type="object">
    Null when requests are unusable — see `unavailable_modules`.

    <Expandable title="object properties">
      <ResponseField name="topics" type="object[]">
        The topics a request can be filed under. Empty when the company
        defined none.

        <Expandable title="object properties">
          <ResponseField name="id" type="string" />

          <ResponseField name="name" type="string" />
        </Expandable>
      </ResponseField>

      <ResponseField name="settings_url" type="string">
        Deep link to the requests settings page.
      </ResponseField>
    </Expandable>
  </ResponseField>

  <ResponseField name="validation_workflow" type="object">
    Null when the approval workflow is unusable — see `unavailable_modules`.

    <Expandable title="object properties">
      <ResponseField name="settings_url" type="string">
        Deep link to the validation-workflow settings page.
      </ResponseField>
    </Expandable>
  </ResponseField>

  <ResponseField name="draws" type="object">
    Null when draws are unusable — see `unavailable_modules`.

    <Expandable title="object properties">
      <ResponseField name="settings_url" type="string">
        Always null: draws are switched on by Qobra, not on a settings page.
        Ask Qobra support to modify this.
      </ResponseField>
    </Expandable>
  </ResponseField>

  <ResponseField name="licences" type="object">
    Null when seats are unusable, or when you may not read the company's
    subscription — see `unavailable_modules`.

    <Expandable title="object properties">
      <ResponseField name="activated" type="boolean">
        Whether seats are enforced. When true, only a licensed user's
        commissions are computed.
      </ResponseField>

      <ResponseField name="granted" type="integer">
        How many seats the company has been granted.
      </ResponseField>

      <ResponseField name="settings_url" type="string">
        Deep link to the subscription settings page.
      </ResponseField>
    </Expandable>
  </ResponseField>

  <ResponseField name="unavailable_modules" type="object[]">
    One row per null block above, saying why it is null and what would bring
    it back. Empty when every module is available to you.

    <Expandable title="object properties">
      <ResponseField name="module" type="string">
        Which block is absent: `requests` (collaboration threads), `draws`
        (recoverable advances), `validation_workflow` (statement approval),
        `licences` (seats). One of: `requests`, `draws`, `validation_workflow`,
        `licences`.
      </ResponseField>

      <ResponseField name="reason" type="string">
        `not_in_package` (the subscription tier does not include it),
        `switched_off` (included but nobody turned it on), `not_yours_to_read`
        (it may well be on — you lack the permission). One of:
        `not_in_package`, `switched_off`, `not_yours_to_read`.
      </ResponseField>

      <ResponseField name="remedy" type="string">
        What to tell the user, in a sentence. Says whether this is a package
        upgrade, a settings change, or a word to Qobra support — never retry
        the tool.
      </ResponseField>
    </Expandable>
  </ResponseField>
</Accordion>
