Skip to main content
Glama

Cirra AI Salesforce Admin MCP Server

cirra_ai_init

Read-onlyIdempotent

IMPORTANT: call cirra_ai_init before calling any other tools of the Cirra AI MCP server. You MUST carefully read the instructions returned from this tool call before proceeding

Input Schema

NameRequiredDescriptionDefault
scopeNo(optional) Controls whether the provided `cirra_ai_team` and/or `sf_user` apply only to this chat (`thread`) or are saved as new defaults for future (`global`). Only use 'thread' if explicitly instructed by the user. Leave blank if not switching team or connection. Whatever the scope, pass the `context_handle` returned by this call as the `context_handle` argument on EVERY subsequent tool call: it carries the team and connection this call reported. A call made without it, and without `cirra_ai_team` + `sf_user`, is refused when the user has more than one place to work (several teams, or a team and a personal account).global
sf_userNo(optional) A Salesforce username identifying the Salesforce connection to use. Omit this to use the current default connection.
cirra_ai_teamNo(optional) The Cirra AI team to use. Use the literal value `__Personal__` to select the user's personal account (not allowed for team-only users). Omit this to use the previously selected default team (if any).
context_handleNo(optional) A context_handle returned by an earlier cirra_ai_init call in this same conversation. Pass it to keep the existing conversation context; omit on the first call in a conversation.

Output Schema

NameRequiredDescriptionDefault
textNoRaw response text, set only when the response could not be parsed into the fields above
teamsNo
accountNoCirra AI account info (user name, team, role, dashboard URL, and — for admins/personal accounts — subscription and credit details), or an explanatory string when the account info is unavailable
contextNoGeneral usage instructions for the Cirra AI MCP server. Read carefully before calling other tools.
cirraContactInfoNoCirra AI support contact details
salesforceConnectionsNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed4 schema fields changed
    • addedInput schema / additionalProperties
      Added value: +false
    • addedInput schema / properties / context_handle
      Added value: +{
      +  "description": "(optional) A context_handle returned by an earlier cirra_ai_init call in this same conversation. Pass it to keep the existing conversation context; omit on the first call in a conversation.",
      +  "type": "string"
      +}
    • changedInput schema / properties / scope / description
      Previous value: -"(optional) Controls whether the provided `cirra_ai_team` and/or `sf_user` apply only to this chat (`thread`) or are saved as new defaults for future (`global`). Only use 'thread' if explicitly instructed by the user. Leave blank if not switching team or connection."New value: +"(optional) Controls whether the provided `cirra_ai_team` and/or `sf_user` apply only to this chat (`thread`) or are saved as new defaults for future (`global`). Only use 'thread' if explicitly instructed by the user. Leave blank if not switching team or connection. Whatever the scope, pass the `context_handle` returned by this call as the `context_handle` argument on EVERY subsequent tool call: it carries the team and connection this call reported. A call made without it, and without `cirra_ai_team` + `sf_user`, is refused when the user has more than one place to work (several teams, or a team and a personal account)."
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "$schema": "http://json-schema.org/draft-07/schema#",
      +  "additionalProperties": true,
      +  "properties": {
      +    "account": {
      +      "description": "Cirra AI account info (user name, team, role, dashboard URL, and — for admins/personal accounts — subscription and credit details), or an explanatory string when the account info is unavailable"
      +    },
      +    "cirraContactInfo": {
      +      "additionalProperties": true,
      +      "description": "Cirra AI support contact details",
      +      "properties": {
      +        "docs": {
      +          "description": "Documentation URL",
      +          "type": "string"
      +        },
      +        "email": {
      +          "description": "Support email address",
      +          "type": "string"
      +        },
      +        "website": {
      +          "description": "Support website URL",
      +          "type": "string"
      +        }
      +      },
      +      "type": "object"
      +    },
      +    "context": {
      +      "description": "General usage instructions for the Cirra AI MCP server. Read carefully before calling other tools.",
      +      "type": "string"
      +    },
      +    "salesforceConnections": {
      +      "additionalProperties": true,
      +      "properties": {
      +        "available": {
      +          "description": "All Salesforce connections available to the user",
      +          "items": {
      +            "additionalProperties": true,
      +            "properties": {},
      +            "type": "object"
      +          },
      +          "type": "array"
      +        },
      +        "current": {
      +          "description": "Details of the currently selected Salesforce connection (username, org name/type, base URLs, capabilities), or null when none is connected"
      +        }
      +      },
      +      "type": "object"
      +    },
      +    "teams": {
      +      "additionalProperties": true,
      +      "properties": {
      +        "available": {
      +          "description": "Teams the user can switch to (tree structure with id, name and optional children)",
      +          "items": {
      +            "additionalProperties": true,
      +            "properties": {},
      +            "type": "object"
      +          },
      +          "type": "array"
      +        },
      +        "current": {
      +          "description": "The currently selected team ID, or __Personal__ for the personal account",
      +          "type": "string"
      +        }
      +      },
      +      "type": "object"
      +    },
      +    "text": {
      +      "description": "Raw response text, set only when the response could not be parsed into the fields above",
      +      "type": "string"
      +    }
      +  },
      +  "type": "object"
      +}
  2. Changed1 schema field changed
    • changedInput schema / properties / cirra_ai_team / description
      Previous value: -"(optional) The Cirra AI team to use. Use the literal value `__Personal__` to select the user's personal account. Omit this to use the previously selected default team (if any)."New value: +"(optional) The Cirra AI team to use. Use the literal value `__Personal__` to select the user's personal account (not allowed for team-only users). Omit this to use the previously selected default team (if any)."
  3. Added
  4. Removed
  5. Added
  6. Removed
  7. First observed

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is covered. The description adds one genuine behavioral fact beyond that: the call returns instructions the agent must read before proceeding. It does not mention that the tool can be refused when multiple teams/connections exist without a context_handle — a refusal behavior that lives only in the parameter schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, the imperative call-order requirement front-loaded with emphasis, and the must-read-the-response note immediately after. Nothing is wasted, though the second sentence is a meta-instruction rather than information about the tool itself.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists and the parameter schema is fully documented, so the description does not need to explain return values or arguments. What remains missing is a one-clause statement of what this call establishes (team + Salesforce connection context), which would make the mandatory sequencing self-explanatory rather than something the agent must infer from the schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and the scope/sf_user/cirra_ai_team/context_handle semantics are documented in detail there, including the enum behavior and the refusal condition. The description adds nothing about parameters, which is acceptable at full coverage but earns no credit above baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description establishes that this is a mandatory initialization step, and the name plus title make 'initialize session for Cirra AI' clear enough to distinguish it from every sibling (all of which are Salesforce operations). However, it never says what initialization actually establishes — the team and Salesforce connection — leaving that entirely to the schema, so the stated purpose is ordering-only rather than substantive.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Call cirra_ai_init before calling any other tools of the Cirra AI MCP server' is unambiguous sequencing guidance, which for a bootstrap tool is the most important when-to-use signal. It does not need to name an alternative since none exists, but it also gives no guidance on repeat calls or when to re-initialize mid-conversation (that is only implied by the schema's context_handle text).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources