← WebMCP Directory

Tool tree

police-portal-mu.vercel.app

Productivity & BusinessTools verified
Website
police-portal
Explore capabilities
    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"
        ]
      }
    }