Skip to content
All tools

report_friction

Diagnostics & system · macOS · Windows

Effect: send (strongest supported action). Status: gated.

Gated means the tool requires an installed app, a connected account, permission, or runtime availability. Check those requirements on the listed platform before using it.

macOS

Purpose

Sends the LMCP team an anonymous signal that an LMCP tool failed, returned nothing useful, or could not do what the user asked, so the team can fix it. Offer it to the user after such a failure and send it when they agree. It carries a category, the tool name and facts LMCP gathers by itself: the class of the error, the type and rough size of each argument of the failed call (never its value), the names and outcomes of the last ten tool calls, and whether the app is installed, running and permitted. It never carries the user's request, message or email content, account names or other personal data. It is sent on this call (there is no preview), and nothing is sent when the user has turned anonymous signals off.

Required inputs

Permissions and confirmation

No explicit confirmation parameter is exposed in this snapshot. This does not grant permission to act: obtain user authorization before any real action.

Full input schema — macOS
{
  "properties": {
    "attempt_count": {
      "description": "How many times this was attempted (optional).",
      "type": "integer"
    },
    "error_category": {
      "description": "Category of what went wrong (optional).",
      "enum": [
        "permission",
        "timeout",
        "empty",
        "not_found",
        "parse",
        "wrong_result",
        "missing_capability",
        "crash",
        "other"
      ],
      "type": "string"
    },
    "friction_type": {
      "description": "What kind of friction you observed.",
      "enum": [
        "repeated_failure",
        "task_abandoned",
        "workaround_needed",
        "cannot_complete",
        "other"
      ],
      "type": "string"
    },
    "intent_category": {
      "description": "What the user was trying to do, chosen from this list (optional). Pick the closest one; do not describe the request.",
      "enum": [
        "find_email",
        "read_email",
        "send_email",
        "send_message",
        "read_messages",
        "schedule_event",
        "read_calendar",
        "manage_reminder",
        "manage_note",
        "manage_contact",
        "read_file",
        "write_file",
        "search_files",
        "document_work",
        "cloud_storage",
        "browse_web",
        "run_command",
        "other"
      ],
      "type": "string"
    },
    "tool_attempted": {
      "description": "Name of the LMCP tool involved (e.g. list_emails). Optional.",
      "type": "string"
    }
  },
  "required": [
    "friction_type"
  ],
  "type": "object"
}

Documentation example

Do not execute this example. These concrete inputs refer to a fictional demonstration dataset. Resolve real handles and obtain user authorization before any real call.

{
  "friction_type": "cannot_complete"
}

Windows

Purpose

Sends the LMCP team an anonymous signal that an LMCP tool failed, returned nothing useful, or could not do what the user asked, so the team can fix it. Offer it to the user after such a failure and send it when they agree. It carries a category, the tool name and facts LMCP gathers by itself: the class of the error, the type and rough size of each argument of the failed call (never its value), the names and outcomes of the last ten tool calls, and whether the app is installed, running and permitted. It never carries the user's request, message or email content, account names or other personal data. It is sent on this call (there is no preview), and nothing is sent when the user has turned anonymous signals off.

Required inputs

Permissions and confirmation

No explicit confirmation parameter is exposed in this snapshot. This does not grant permission to act: obtain user authorization before any real action.

Full input schema — Windows
{
  "properties": {
    "attempt_count": {
      "description": "How many times this was attempted (optional).",
      "type": "integer"
    },
    "error_category": {
      "description": "Category of what went wrong (optional).",
      "enum": [
        "permission",
        "timeout",
        "empty",
        "not_found",
        "parse",
        "wrong_result",
        "missing_capability",
        "crash",
        "other"
      ],
      "type": "string"
    },
    "friction_type": {
      "description": "What kind of friction you observed.",
      "enum": [
        "repeated_failure",
        "task_abandoned",
        "workaround_needed",
        "cannot_complete",
        "other"
      ],
      "type": "string"
    },
    "intent_category": {
      "description": "What the user was trying to do, chosen from this list (optional). Pick the closest one; do not describe the request.",
      "enum": [
        "find_email",
        "read_email",
        "send_email",
        "send_message",
        "read_messages",
        "schedule_event",
        "read_calendar",
        "manage_reminder",
        "manage_note",
        "manage_contact",
        "read_file",
        "write_file",
        "search_files",
        "document_work",
        "cloud_storage",
        "browse_web",
        "run_command",
        "other"
      ],
      "type": "string"
    },
    "tool_attempted": {
      "description": "Name of the LMCP tool involved (e.g. list_emails). Optional.",
      "type": "string"
    }
  },
  "required": [
    "friction_type"
  ],
  "type": "object"
}

Documentation example

Do not execute this example. These concrete inputs refer to a fictional demonstration dataset. Resolve real handles and obtain user authorization before any real call.

{
  "friction_type": "cannot_complete"
}