Skip to content
Charming Docs
Esc
navigateopen⌘Jpreview
On this page

List App Feedback

List feedback rows for the caller's apps.

MCP name: list_feedback

Tool contract

{
  "annotations": {
    "destructiveHint": false,
    "openWorldHint": false,
    "readOnlyHint": true,
    "title": "List App Feedback"
  },
  "description": "List feedback rows for the caller's apps. Use this to review feedback previously recorded for an app. When `app_id` is set, returns rows for that one app (owner-checked); when omitted, returns rows across every app the caller owns. Paginate with `cursor` from a prior call's `cursor` field. Newest rows come first.",
  "execution": {
    "taskSupport": "forbidden"
  },
  "inputSchema": {
    "$schema": "https://json-schema.org/draft/2020-12/schema",
    "properties": {
      "app_id": {
        "description": "Optional app ID (UUID) to restrict to. When omitted, returns feedback across every app the caller owns.",
        "format": "uuid",
        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
        "type": "string"
      },
      "category": {
        "description": "Optional category filter. One of: bug, crash, enhancement, praise, other.",
        "enum": [
          "bug",
          "crash",
          "enhancement",
          "praise",
          "other"
        ],
        "type": "string"
      },
      "cursor": {
        "description": "Opaque cursor from a prior call's `cursor` to fetch the next page.",
        "type": "string"
      },
      "limit": {
        "description": "Max rows to return (1-50, default 20).",
        "maximum": 50,
        "minimum": 1,
        "type": "integer"
      },
      "since": {
        "description": "Optional inclusive lower bound on `created_at` as an ISO-8601 timestamp.",
        "format": "date-time",
        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$",
        "type": "string"
      }
    },
    "type": "object"
  },
  "name": "list_feedback",
  "outputSchema": {
    "$schema": "https://json-schema.org/draft/2020-12/schema",
    "additionalProperties": false,
    "properties": {
      "cursor": {
        "anyOf": [
          {
            "type": "string"
          },
          {
            "type": "null"
          }
        ],
        "description": "Opaque cursor for the next page. Null when this page is the last. Pass back as `cursor` on the next list_feedback call."
      },
      "items": {
        "description": "Feedback rows ordered by `created_at DESC, id DESC` (newest-first).",
        "items": {
          "additionalProperties": false,
          "properties": {
            "app_id": {
              "description": "UUID of the app the feedback is attached to.",
              "type": "string"
            },
            "category": {
              "description": "Feedback category. One of: bug, crash, enhancement, praise, other.",
              "type": "string"
            },
            "crash_data": {
              "anyOf": [
                {
                  "additionalProperties": {},
                  "propertyNames": {
                    "type": "string"
                  },
                  "type": "object"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Crash details (message + optional stack/url/userAgent/traceId). Null unless category=crash."
            },
            "created_at": {
              "description": "ISO-8601 timestamp when the row was inserted.",
              "type": "string"
            },
            "id": {
              "description": "UUID of the feedback row.",
              "type": "string"
            },
            "source": {
              "description": "Origin of the row: \"user\", \"agent\", or \"auto-crash\". Server-enforced.",
              "type": "string"
            },
            "structured_data": {
              "anyOf": [
                {
                  "additionalProperties": {},
                  "propertyNames": {
                    "type": "string"
                  },
                  "type": "object"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Caller-supplied JSON payload. Null when not supplied."
            },
            "text": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Free-form feedback body. Null when not supplied."
            },
            "user_id": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Owning user id, denormalised from the app row. Null for unclaimed apps."
            }
          },
          "required": [
            "id",
            "app_id",
            "user_id",
            "category",
            "text",
            "structured_data",
            "crash_data",
            "source",
            "created_at"
          ],
          "type": "object"
        },
        "type": "array"
      },
      "ok": {
        "const": true,
        "description": "Indicates success. Errors arrive as content with isError:true.",
        "type": "boolean"
      }
    },
    "required": [
      "ok",
      "items",
      "cursor"
    ],
    "type": "object"
  }
}

Was this page helpful?