Skip to main content
Glama
kite-connect-mcp

kite-connect-mcp

Modify an alert (dry run by default)

modify_alert
Destructive

Update an existing alert by sending its complete new definition, previewing changes with a dry run before sending. Use it to change conditions, name, or automated order basket safely.

Instructions

Modify an alert. Kite replaces the whole alert, so send its complete new definition: call get_alert first and change only what you mean to change. The fields are those of create_alert, with the same rules (for an ato alert that includes the whole basket orders). DRY RUN BY DEFAULT, confirmed like create_alert.

Safety: an ato alert's new basket is checked like place_order. A modification takes no new slot of the daily order count, but the full value of the new basket counts toward the day's value cap. The dry run shows the stored alert. Kite's docs do not say whether a basket sent here replaces the stored basket or adds to it, so the dry run warns when the alert already has one. Returns the updated alert when sent.

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "uuid": "<uuid>",
      "name": "<name>",
      "type": "<type>",
      "lhs_exchange": "<lhs_exchange>",
      "lhs_tradingsymbol": "<lhs_tradingsymbol>",
      "operator": "<operator>",
      "rhs_type": "<rhs_type>"
    },
    "name": "modify_alert"
  }
}

Input Schema

NameRequiredDescriptionDefault
nameYesa label for the alert
typeYessimple: only notify. ato: also place the basket `orders` by itself when the condition is true
uuidYesthe alert's uuid (see get_alerts)
ordersNothe basket of orders: required for type=ato (up to 20), not allowed for simple
dry_runNotrue (default): validate and preview only, nothing is sent. false: send it live, which needs live trading enabled on the server and the confirmation_token from a dry run
operatorYescomparison of the monitored value with the right-hand side
rhs_typeYesconstant: compare with rhs_constant. instrument: compare with another instrument (rhs_*)
lhs_exchangeYesexchange of the monitored instrument: NSE, BSE, NFO, CDS, BCD, MCX, or INDICES for indices
rhs_constantNothe number to compare with (INR for prices); only for rhs_type=constant
rhs_exchangeNoonly for rhs_type=instrument
lhs_attributeNowhat to monitor; LastTradedPrice is the only attribute Kite documentsLastTradedPrice
rhs_attributeNoonly for rhs_type=instrument; defaults to LastTradedPrice
lhs_tradingsymbolYestradingsymbol of the monitored instrument: INFY, 'NIFTY 50'
rhs_tradingsymbolNoonly for rhs_type=instrument
confirmation_tokenNothe confirmation_token returned by a dry run of this exact call (single use)

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.1.0

TDQS

A4.7/5.0
Behavior5/5

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

Beyond the annotations, the description discloses critical behavior: Kite replaces the whole alert, dry run is default and must be confirmed like create_alert, an ato basket is checked like place_order, no new daily order slot is used but basket value counts toward the daily cap, and the dry run warns about existing baskets. This adds substantial safety and operational context beyond destructiveHint=true.

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

Conciseness5/5

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

The description is dense and front-loaded: the action and replacement requirement come first, followed by dry-run confirmation and safety constraints. Each sentence carries operational meaning, with no filler.

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

Completeness5/5

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

For a 15-parameter destructive mutation with no output schema, the description covers the essential gaps: replacement semantics, dry-run default, confirmation token usage, safety checks, daily cap implications, and return behavior. It is complete enough for an agent to invoke it correctly.

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%, so every parameter already carries its own documentation. The description adds useful high-level semantics about complete replacement and ato basket rules, but does not meaningfully elaborate individual parameters beyond what the schema provides, matching the baseline for fully documented schemas.

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?

The description begins with the specific verb and resource ("Modify an alert") and immediately clarifies the replacement semantics, distinguishing it from create_alert and get_alert. An agent can tell exactly what operation this tool performs.

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

Usage Guidelines5/5

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

It explicitly instructs the agent to call get_alert first and send the complete new definition, references create_alert for field rules, and explains the dry-run/confirmation flow. The alternative read and create siblings are named, leaving little inference required.

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