Skip to main content
Glama

Lovie Company Formation

Accept Rule Suggestion

transaction_accept_rule_suggestion

Accept a rule suggestion from transaction_get_list_rule_suggestions: saves a categorization rule giving that merchant that Category as a DRAFT. A draft books nothing and categorizes no transactions until a person approves it on the Rules screen, so tell the user it is a draft awaiting their approval, never that it is live; rule_status in the response confirms it. Accepting the same suggestion again reuses the draft; it fails if the merchant already has a live rule booking it another way.

Input Schema

NameRequiredDescriptionDefault
categoryYes
companyIdYesUUID value wrapper.
conditionsNo
counterpartyIdYesUUID value wrapper.

Output Schema

NameRequiredDescriptionDefault
ruleIdNo
failuresNo
ruleReusedNo
ruleStatusNo
skippedCountNo
updatedCountNo
closedMonthCountNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed3 schema fields changed
    • addedInput schema / properties / category
      Added value: +{
      +  "properties": {
      +    "key": {
      +      "description": "Lowercase kebab-case code identifier.",
      +      "properties": {
      +        "value": {
      +          "pattern": "^[a-z0-9]+(-[a-z0-9]+)*$",
      +          "type": "string"
      +        }
      +      },
      +      "type": "object"
      +    },
      +    "ownerKey": {
      +      "maxLength": 100,
      +      "pattern": "^[a-z0-9_-]*$",
      +      "type": "string"
      +    },
      +    "ownerType": {
      +      "enum": [
      +        "OWNER_TYPE_SYSTEM",
      +        "OWNER_TYPE_COMPANY",
      +        "OWNER_TYPE_INTEGRATION"
      +      ],
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "key"
      +  ],
      +  "type": "object"
      +}
    • removedInput schema / properties / glAccountPath
      Removed value: -{
      -  "maxLength": 200,
      -  "minLength": 1,
      -  "pattern": "^[a-z0-9]+(-[a-z0-9]+)*(/[a-z0-9]+(-[a-z0-9]+)*)*$",
      -  "type": "string"
      -}
    • changedInput schema / required
      Previous value: -[
      -  "companyId",
      -  "counterpartyId"
      -]New value: +[
      +  "companyId",
      +  "counterpartyId",
      +  "category"
      +]
  2. Added

TDQS

A4.3/5.0
Behavior5/5

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

Annotations only cover openWorldHint/destructiveHint, yet the description discloses the crucial non-obvious behavior: the rule is saved as DRAFT, books nothing and categorizes nothing until human approval, and the agent must tell the user it's pending rather than live. It also flags the response field (rule_status) that confirms this and the conflict failure mode — exactly the context an agent cannot infer.

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?

Effect is front-loaded in the first clause and every sentence adds behavioral value (draft semantics, wording guidance, idempotency, conflict). The long semicolon-chained sentences are dense but not padded.

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, so return values need not be explained, and the description still points to rule_status for verification. For a mutation with user-facing consequences it is well covered, with the unmentioned conditions parameter the main remaining gap.

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 coverage is only 50% across 4 params including a nested conditions array with 14 condition kinds. The description implies merchant (counterpartyId) and Category but never mentions the conditions array at all, leaving its purpose and interaction with the suggestion undocumented.

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

Purpose5/5

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

States a specific verb+resource ('Accept a rule suggestion ... saves a categorization rule') and names the originating sibling tool transaction_get_list_rule_suggestions, so the agent can place it among the rule tools without opening schemas.

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?

Names the prerequisite source of the suggestion and gives concrete failure/idempotency conditions (reuses the draft on repeat accept, fails when a live rule already books the merchant differently). It does not contrast with adjacent rule tools such as transaction_preview_categorization_rule or transaction_get_rule_suggestion_options, so 4 rather than 5.

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.