{
  "slug": "jmespath-query",
  "name": "gizza-ai/jmespath-query",
  "version": "0.1.0",
  "title": "JMESPath Query Tool — gizza.ai",
  "description": "Filter and reshape JSON with a JMESPath expression locally in your browser, including AWS CLI --query style projections, filters, functions, and raw output.",
  "tags": [
    "jmespath",
    "json",
    "query",
    "aws cli",
    "developer",
    "filter",
    "transform",
    "data"
  ],
  "category": "data",
  "urls": {
    "page": "https://gizza.ai/tools/jmespath-query/",
    "markdown": "https://gizza.ai/tools/jmespath-query/index.md",
    "descriptor": "https://gizza.ai/tools/jmespath-query/tool.json",
    "deep_link_example": "https://gizza.ai/tools/jmespath-query/?expression=people%5B%3Fage%20%3E%20%6030%60%5D.%7Bname%3A%20name%2C%20state%3A%20state%7D&json=%7B%22people%22%3A%5B%7B%22name%22%3A%22Alice%22%2C%22age%22%3A34%2C%22state%22%3A%22WA%22%7D%2C%7B%22name%22%3A%22Bob%22%2C%22age%22%3A25%2C%22state%22%3A%22OR%22%7D%2C%7B%22name%22%3A%22Carol%22%2C%22age%22%3A41%2C%22state%22%3A%22WA%22%7D%5D%7D&pretty=true&raw=true"
  },
  "cli": "gizza tool jmespath-query 'people[?age > `30`].{name: name, state: state}' 'json={\"people\":[{\"name\":\"Alice\",\"age\":34,\"state\":\"WA\"},{\"name\":\"Bob\",\"age\":25,\"state\":\"OR\"},{\"name\":\"Carol\",\"age\":41,\"state\":\"WA\"}]}'",
  "tool": {
    "description": "Filter and reshape a JSON document with a JMESPath expression, using the pure-Rust reference engine. JMESPath is the query language behind the AWS CLI --query flag: it can project fields ('people[*].name'), filter ('people[?state == `WA`]', 'people[?age > `30`]'), slice ('items[:3]'), flatten nested arrays ('people[].skills[]'), pipe ('people[*].name | [0]'), construct new shapes with multiselect hashes/lists ('people[0].{who: name, howOld: age}'), and call built-ins (length, sort_by, max_by, min_by, join, keys, values, to_string, contains, starts_with, map, reverse, sum, avg). An expression always evaluates to exactly ONE JSON value — 'null' when nothing matches, which is a result and not an error. The serialized value is returned in `result` and its JSON type in `kind`; pretty=true (the default) indents it, raw=true emits strings unquoted the way `aws --output text` does. String literals use single quotes; JSON literals use backticks.",
    "parameters": {
      "additionalProperties": false,
      "properties": {
        "expression": {
          "description": "The JMESPath expression — the same syntax as the AWS CLI --query flag. Examples: 'people[*].name', \"people[?state == 'WA'].name\", 'people[?age > `30`]', 'sort_by(people, &age)[0]', 'people[0].{who: name, howOld: age}', 'length(items)'. Quote string literals with single quotes and JSON literals with backticks.",
          "type": "string"
        },
        "json": {
          "description": "The JSON document to query.",
          "type": "string"
        },
        "pretty": {
          "default": true,
          "description": "Pretty-print (indent by 2 spaces) the JSON result. Default true; set false for compact single-line JSON.",
          "type": "boolean"
        },
        "raw": {
          "default": false,
          "description": "Emit strings unquoted, like `aws --output text` or `jq -r`: a string result loses its quotes and a top-level array prints one element per line. Non-string results are unchanged. Default false.",
          "type": "boolean"
        }
      },
      "required": [
        "expression",
        "json"
      ],
      "type": "object"
    }
  }
}