gradeNot graded
fir.identify_required_fieldsAnswer
FIR helper. You call me to know which FIR fields are required now and which become required once a given IPC section is set (e.g. theft switches "property" to required). Do NOT try to read the form on screen for this — I compute it authoritatively. Read me first, then populate via fir.fill_field.
View tool JSON
{
"name": "fir.identify_required_fields",
"kind": "answer",
"impl": "imperative",
"description": "FIR helper. You call me to know which FIR fields are required now and which become required once a given IPC section is set (e.g. theft switches \"property\" to required). Do NOT try to read the form on screen for this — I compute it authoritatively. Read me first, then populate via fir.fill_field.",
"inputSchema": {
"type": "object",
"properties": {
"sections": {
"type": "array",
"items": {
"type": "string"
},
"description": "IPC / special-act section codes, e.g. [\"379\"] (must match formSchema option values)."
},
"recordId": {
"type": "string",
"description": "Incident id to target; defaults to the selected/most recent record."
}
},
"required": [
"sections"
]
}
}fir.fill_fieldAction
FIR action. I write one FIR field by dotted path and value into the record and the live form updates. This is how you file paperwork — do NOT click/type into the browser. Call me repeatedly (complainant.name, offense.sections, accused.*, narrative, and conditional property/witnesses) until fir.validate_form passes.
View tool JSON
{
"name": "fir.fill_field",
"kind": "act",
"impl": "imperative",
"description": "FIR action. I write one FIR field by dotted path and value into the record and the live form updates. This is how you file paperwork — do NOT click/type into the browser. Call me repeatedly (complainant.name, offense.sections, accused.*, narrative, and conditional property/witnesses) until fir.validate_form passes.",
"inputSchema": {
"type": "object",
"properties": {
"field": {
"type": "string",
"description": "Dotted field path. Always-visible: complainant.name, complainant.fatherName, complainant.address, complainant.phone, complainant.email, offense.date, offense.time, offense.place, offense.beat, offense.sections, accused.name, accused.age, accused.sex, accused.description, narrative. Conditional (shown for some sections): property, witnesses."
},
"value": {
"description": "Value to set. Use a string for text, array of strings for offense.sections/property.",
"type": [
"string",
"number",
"boolean",
"array"
]
},
"recordId": {
"type": "string",
"description": "Incident id to target; defaults to the selected/most recent record."
}
},
"required": [
"field",
"value"
]
}
}fir.flag_missingAction
FIR action. I mark FIR fields as needing an officer to review before submission (e.g. ambiguous identity). Call me instead of guessing a value you cannot confirm.
View tool JSON
{
"name": "fir.flag_missing",
"kind": "act",
"impl": "imperative",
"description": "FIR action. I mark FIR fields as needing an officer to review before submission (e.g. ambiguous identity). Call me instead of guessing a value you cannot confirm.",
"inputSchema": {
"type": "object",
"properties": {
"fields": {
"type": "array",
"items": {
"type": "string"
},
"description": "Dotted field paths that are incomplete or ambiguous (e.g. [\"complainant.address\"])."
},
"reason": {
"type": "string",
"description": "Why these need human review."
},
"recordId": {
"type": "string",
"description": "Incident id to target; defaults to the selected/most recent record."
}
},
"required": [
"fields"
]
}
}fir.validate_formAction
FIR action. I run the same validation the officer's form uses and return { valid, errors } with field->message. Call me before fir.submit to confirm the FIR is complete — this is the source of truth, not reading the page.
View tool JSON
{
"name": "fir.validate_form",
"kind": "act",
"impl": "imperative",
"description": "FIR action. I run the same validation the officer's form uses and return { valid, errors } with field->message. Call me before fir.submit to confirm the FIR is complete — this is the source of truth, not reading the page.",
"inputSchema": {
"type": "object",
"properties": {
"recordId": {
"type": "string",
"description": "Incident id to target; defaults to the selected/most recent record."
}
}
}
}fir.submitSensitive Action
FIR action. I submit the completed FIR after full-form validation passes and return the persisted id, firNumber and status. Call me to file the record — never press a button in the browser. I reject with errors if anything is missing; fix via fir.fill_field.
View tool JSON
{
"name": "fir.submit",
"kind": "transact",
"impl": "imperative",
"description": "FIR action. I submit the completed FIR after full-form validation passes and return the persisted id, firNumber and status. Call me to file the record — never press a button in the browser. I reject with errors if anything is missing; fix via fir.fill_field.",
"inputSchema": {
"type": "object",
"properties": {
"recordId": {
"type": "string",
"description": "Incident id to target; defaults to the selected/most recent record."
}
}
}
}fir.find_similar_casesAnswer
FIR research helper. I search the case archive for prior FIRs matching given IPC sections (optional location filter) and return precedents for repeat offenders. Read-only; call me for background, not to change records.
View tool JSON
{
"name": "fir.find_similar_cases",
"kind": "answer",
"impl": "imperative",
"description": "FIR research helper. I search the case archive for prior FIRs matching given IPC sections (optional location filter) and return precedents for repeat offenders. Read-only; call me for background, not to change records.",
"inputSchema": {
"type": "object",
"properties": {
"sections": {
"type": "array",
"items": {
"type": "string"
},
"description": "IPC section codes to match, e.g. [\"379\"]."
},
"location": {
"type": "string",
"description": "Optional place / area substring to constrain search."
}
},
"required": [
"sections"
]
}
}fir.createAction
FIR action. I create a fresh blank FIR and select it so later calls act on it. Optionally pre-seed complainantName / sections / narrative. Call me to start a case instead of clicking the UI.
View tool JSON
{
"name": "fir.create",
"kind": "act",
"impl": "imperative",
"description": "FIR action. I create a fresh blank FIR and select it so later calls act on it. Optionally pre-seed complainantName / sections / narrative. Call me to start a case instead of clicking the UI.",
"inputSchema": {
"type": "object",
"properties": {
"complainantName": {
"type": "string",
"description": "Optional complainant name to pre-fill."
},
"sections": {
"type": "array",
"items": {
"type": "string"
},
"description": "Optional IPC section codes to pre-fill, e.g. [\"279\", \"304A\"] for a hit-and-run / rash driving."
},
"narrative": {
"type": "string",
"description": "Optional narrative describing the incident."
}
}
}
}fir.link_erssAction
FIR action. I link an FIR back to the ERSS-112 call that led to it, so the officer sees the source (an "Escalated from ERSS-112" marker appears). Pass the ERSS record id. Call me after you escalate a call — do not edit the UI.
View tool JSON
{
"name": "fir.link_erss",
"kind": "act",
"impl": "imperative",
"description": "FIR action. I link an FIR back to the ERSS-112 call that led to it, so the officer sees the source (an \"Escalated from ERSS-112\" marker appears). Pass the ERSS record id. Call me after you escalate a call — do not edit the UI.",
"inputSchema": {
"type": "object",
"properties": {
"erssId": {
"type": "string",
"description": "The ERSS-112 record id to reference."
},
"recordId": {
"type": "string",
"description": "The FIR incident id to link (defaults to selected/most recent)."
}
},
"required": [
"erssId"
]
}
}challan.lookup_rcAction
Challan helper. I look up a vehicle by its registration number in the transport database and return owner, address, vehicle class and fuel type. Call me to identify a vehicle — do not search the page.
View tool JSON
{
"name": "challan.lookup_rc",
"kind": "act",
"impl": "imperative",
"description": "Challan helper. I look up a vehicle by its registration number in the transport database and return owner, address, vehicle class and fuel type. Call me to identify a vehicle — do not search the page.",
"inputSchema": {
"type": "object",
"properties": {
"rcNumber": {
"type": "string",
"description": "Vehicle registration number, e.g. UP14C1234."
}
},
"required": [
"rcNumber"
]
}
}challan.auto_calculate_fineAnswer
Challan helper. I compute the traffic fine for an MVA offence + vehicle class from the statutory matrix and return the amount in rupees. Call me to price a challan before challan.submit.
View tool JSON
{
"name": "challan.auto_calculate_fine",
"kind": "answer",
"impl": "imperative",
"description": "Challan helper. I compute the traffic fine for an MVA offence + vehicle class from the statutory matrix and return the amount in rupees. Call me to price a challan before challan.submit.",
"inputSchema": {
"type": "object",
"properties": {
"offenseCode": {
"type": "string",
"description": "MVA section code, e.g. 180, 123, 119."
},
"vehicleClass": {
"type": "string",
"description": "e.g. LMV, MCWG, HMV, Bus."
}
},
"required": [
"offenseCode"
]
}
}challan.submitSensitive Action
Challan action. I persist a traffic challan onto the active record and cross-link it to the FIR. Pass rcNumber, offenseCode and fineAmount (from challan.lookup_rc / challan.auto_calculate_fine). Call me to issue the challan — do not fill the form in the browser.
View tool JSON
{
"name": "challan.submit",
"kind": "transact",
"impl": "imperative",
"description": "Challan action. I persist a traffic challan onto the active record and cross-link it to the FIR. Pass rcNumber, offenseCode and fineAmount (from challan.lookup_rc / challan.auto_calculate_fine). Call me to issue the challan — do not fill the form in the browser.",
"inputSchema": {
"type": "object",
"properties": {
"rcNumber": {
"type": "string",
"description": "Vehicle registration number from challan.lookup_rc."
},
"offenseCode": {
"type": "string",
"description": "MVA section code used to compute the fine."
},
"fineAmount": {
"type": "number",
"description": "Fine in rupees from challan.auto_calculate_fine."
},
"recordId": {
"type": "string",
"description": "Incident id to attach the challan to (defaults to selected/most recent)."
}
}
}
}dispatch.classify_natureAction
ERSS helper. I map a natural-language emergency into an official ERSS-112 nature code ("heart attack" -> MED-001, "fire" -> FIR-003). Call me to classify a call.
View tool JSON
{
"name": "dispatch.classify_nature",
"kind": "act",
"impl": "imperative",
"description": "ERSS helper. I map a natural-language emergency into an official ERSS-112 nature code (\"heart attack\" -> MED-001, \"fire\" -> FIR-003). Call me to classify a call.",
"inputSchema": {
"type": "object",
"properties": {
"description": {
"type": "string",
"description": "Free-text emergency description."
}
},
"required": [
"description"
]
}
}dispatch.get_available_unitsAnswer
ERSS action. I return the units you can dispatch (ambulance, patrol, fire) with ETA. Call me before dispatch.assign_unit to pick a unit id.
View tool JSON
{
"name": "dispatch.get_available_units",
"kind": "answer",
"impl": "imperative",
"description": "ERSS action. I return the units you can dispatch (ambulance, patrol, fire) with ETA. Call me before dispatch.assign_unit to pick a unit id.",
"inputSchema": {
"type": "object",
"properties": {
"type": {
"type": "string",
"description": "Optional unit type filter (e.g. Ambulance)."
}
}
}
}erss.create_callAction
ERSS action. I create a standalone ERSS-112 emergency call from free text: classify the nature, set priority and select the record. Returns id, erssNumber and nature. Call me to log an incoming 112 call — do not open/locate the Emergency Call Log in the browser.
View tool JSON
{
"name": "erss.create_call",
"kind": "act",
"impl": "imperative",
"description": "ERSS action. I create a standalone ERSS-112 emergency call from free text: classify the nature, set priority and select the record. Returns id, erssNumber and nature. Call me to log an incoming 112 call — do not open/locate the Emergency Call Log in the browser.",
"inputSchema": {
"type": "object",
"properties": {
"description": {
"type": "string",
"description": "Free-text emergency description, e.g. \"hit and run on MG Road\"."
},
"channel": {
"type": "string",
"enum": [
"Voice",
"SMS",
"WhatsApp"
],
"description": "Reporting channel (default Voice)."
}
},
"required": [
"description"
]
}
}dispatch.assign_unitAction
ERSS action. I assign a response unit to an incident and set its status to dispatched. Pass unitId from dispatch.get_available_units. Call me to dispatch — never manipulate the dispatch UI.
View tool JSON
{
"name": "dispatch.assign_unit",
"kind": "act",
"impl": "imperative",
"description": "ERSS action. I assign a response unit to an incident and set its status to dispatched. Pass unitId from dispatch.get_available_units. Call me to dispatch — never manipulate the dispatch UI.",
"inputSchema": {
"type": "object",
"properties": {
"unitId": {
"type": "string",
"description": "Unit id from dispatch.get_available_units, e.g. PCR-88."
},
"recordId": {
"type": "string",
"description": "Incident id; defaults to the selected/most recent incident."
},
"incidentId": {
"type": "string",
"description": "Deprecated alias for recordId."
}
},
"required": [
"unitId"
]
}
}record.listAction
Record helper — call me FIRST. I return the portal's records (FIR / e-Challan / ERSS-112) with optional module/status/text filters and each record's id. Always call me to discover a record id before acting, instead of reading the on-screen list.
View tool JSON
{
"name": "record.list",
"kind": "act",
"impl": "imperative",
"description": "Record helper — call me FIRST. I return the portal's records (FIR / e-Challan / ERSS-112) with optional module/status/text filters and each record's id. Always call me to discover a record id before acting, instead of reading the on-screen list.",
"inputSchema": {
"type": "object",
"properties": {
"module": {
"type": "string",
"enum": [
"fir",
"challan",
"dispatch",
""
],
"description": "Optional module filter: fir, challan, dispatch, or empty for all."
},
"status": {
"type": "string",
"description": "Optional status filter (draft, acknowledged, dispatched, closed)."
},
"text": {
"type": "string",
"description": "Optional free-text search across firNumber / complainant / narrative / RC."
}
}
}
}record.selectAction
Record action. I set which record later calls (fir.*, challan.submit, dispatch.*) act on by default. Pass recordId from record.list. Call me to focus work on one record instead of interacting with the list UI.
View tool JSON
{
"name": "record.select",
"kind": "act",
"impl": "imperative",
"description": "Record action. I set which record later calls (fir.*, challan.submit, dispatch.*) act on by default. Pass recordId from record.list. Call me to focus work on one record instead of interacting with the list UI.",
"inputSchema": {
"type": "object",
"properties": {
"recordId": {
"type": "string",
"description": "The incident id to select (from record.list)."
}
},
"required": [
"recordId"
]
}
}nav.switch_tabAction
Navigation action. I switch the portal to a module tab (fir, challan, dispatch, metrics) so the agent and officer share the same screen. Call me to move views — do not click the nav bar.
View tool JSON
{
"name": "nav.switch_tab",
"kind": "act",
"impl": "imperative",
"description": "Navigation action. I switch the portal to a module tab (fir, challan, dispatch, metrics) so the agent and officer share the same screen. Call me to move views — do not click the nav bar.",
"inputSchema": {
"type": "object",
"properties": {
"tab": {
"type": "string",
"enum": [
"fir",
"challan",
"dispatch",
"metrics"
],
"description": "Which tab to switch to: fir, challan, dispatch, or metrics."
}
},
"required": [
"tab"
]
}
}