{"data":{"skill":{"slug":"sickn33-freshdesk-automation","name":"freshdesk-automation","icon":"📦","repo":"https://github.com/sickn33/antigravity-awesome-skills/tree/main/skills/freshdesk-automation","status":"approved","author":"sickn33","authorVersion":null,"skillstoreRevision":2},"audit":{"id":"c13db9dd-6f94-471c-8040-981886a8d48b","skill_id":"4b1fcd41-2dbc-4878-9924-796f1fda820d","version":5,"content_hash":"v3:88a8e9a07f4c54ab105c1c41b6267c287146b07b:ce86179d05e431603a60ba9ae941ec99eb9fea73fee5227fa20874c0914fc3c2:078c4af382112c534b30f76afb06454cc14367bcac33e520e12821c6822f7a9a:736b696c6c732f7369636b6e33332f66726573686465736b2d6175746f6d6174696f6e:aa8974a2a3510215837f0f1df2217759","risk_level":"medium","is_blocked":false,"safe_to_publish":true,"analysis_status":"ok","agent_auto_install_policy":"allowed","manual_install_policy":"allowed","summary":"The 109 command-execution alerts and three reconnaissance alerts are false positives caused by Markdown tool names and ordinary Freshdesk guidance. The external MCP endpoint is a real low-severity dependency, while third-party data access, consequential writes, and sender overrides require safeguards.","remediation":[{"issue":"Rube MCP can receive Freshdesk customer data and perform account actions.","severity":"medium","suggestion":"Disclose the intermediary, verify its privacy terms, use least-privilege Freshdesk authorization, and restrict the connection to approved accounts."},{"issue":"Mutating workflows do not require a final confirmation.","severity":"medium","suggestion":"Preview target records, recipients, field changes, and batch size. Require explicit confirmation before writes, imports, public notes, or replies."},{"issue":"Reply tools support sender and agent identity overrides.","severity":"medium","suggestion":"Require proof of delegated authority before setting from_email or user_id. Otherwise, use the authenticated agent identity."}],"risk_factor_evidence":[{"factor":"external_commands","evidence":[{"file":"SKILL.md","line_end":16,"line_start":16},{"file":"SKILL.md","line_end":17,"line_start":17},{"file":"SKILL.md","line_end":21,"line_start":21},{"file":"SKILL.md","line_end":23,"line_start":23},{"file":"SKILL.md","line_end":24,"line_start":24},{"file":"SKILL.md","line_end":35,"line_start":35},{"file":"SKILL.md","line_end":36,"line_start":36},{"file":"SKILL.md","line_end":37,"line_start":37},{"file":"SKILL.md","line_end":38,"line_start":38},{"file":"SKILL.md","line_end":39,"line_start":39},{"file":"SKILL.md","line_end":42,"line_start":42},{"file":"SKILL.md","line_end":43,"line_start":43},{"file":"SKILL.md","line_end":44,"line_start":44},{"file":"SKILL.md","line_end":45,"line_start":45},{"file":"SKILL.md","line_end":46,"line_start":46},{"file":"SKILL.md","line_end":47,"line_start":47},{"file":"SKILL.md","line_end":48,"line_start":48},{"file":"SKILL.md","line_end":49,"line_start":49},{"file":"SKILL.md","line_end":50,"line_start":50},{"file":"SKILL.md","line_end":51,"line_start":51},{"file":"SKILL.md","line_end":52,"line_start":52},{"file":"SKILL.md","line_end":55,"line_start":55},{"file":"SKILL.md","line_end":56,"line_start":56},{"file":"SKILL.md","line_end":57,"line_start":57},{"file":"SKILL.md","line_end":58,"line_start":58},{"file":"SKILL.md","line_end":59,"line_start":59},{"file":"SKILL.md","line_end":67,"line_start":67},{"file":"SKILL.md","line_end":68,"line_start":68},{"file":"SKILL.md","line_end":69,"line_start":69},{"file":"SKILL.md","line_end":70,"line_start":70},{"file":"SKILL.md","line_end":73,"line_start":73},{"file":"SKILL.md","line_end":74,"line_start":74},{"file":"SKILL.md","line_end":75,"line_start":75},{"file":"SKILL.md","line_end":76,"line_start":76},{"file":"SKILL.md","line_end":77,"line_start":77},{"file":"SKILL.md","line_end":78,"line_start":78},{"file":"SKILL.md","line_end":79,"line_start":79},{"file":"SKILL.md","line_end":80,"line_start":80},{"file":"SKILL.md","line_end":83,"line_start":83},{"file":"SKILL.md","line_end":84,"line_start":84},{"file":"SKILL.md","line_end":87,"line_start":87},{"file":"SKILL.md","line_end":91,"line_start":91},{"file":"SKILL.md","line_end":92,"line_start":92},{"file":"SKILL.md","line_end":99,"line_start":99},{"file":"SKILL.md","line_end":100,"line_start":100},{"file":"SKILL.md","line_end":101,"line_start":101},{"file":"SKILL.md","line_end":102,"line_start":102},{"file":"SKILL.md","line_end":103,"line_start":103},{"file":"SKILL.md","line_end":106,"line_start":106},{"file":"SKILL.md","line_end":107,"line_start":107}]},{"factor":"network","evidence":[{"file":"SKILL.md","line_end":21,"line_start":21}]}],"critical_findings":[],"high_findings":[],"medium_findings":[{"title":"Third-Party MCP Handles Freshdesk Data","locations":[{"file":"SKILL.md","line_end":11,"line_start":11},{"file":"SKILL.md","line_end":25,"line_start":21}],"confidence":0.96,"description":"The skill routes support workflows through Rube MCP and asks users to authenticate Freshdesk through its returned link. The intermediary can access sensitive records and writes.","review_kind":"security","source_category":"semantic","source_severity":"medium","confidence_reasoning":"The source explicitly requires an external Rube MCP endpoint and a Freshdesk connection. The documented workflows include reading and changing customer support data."},{"title":"Consequential Actions Lack Explicit Confirmation Gates","locations":[{"file":"SKILL.md","line_end":38,"line_start":37},{"file":"SKILL.md","line_end":101,"line_start":99},{"file":"SKILL.md","line_end":135,"line_start":129}],"confidence":0.95,"description":"The workflows permit ticket writes, public replies, bulk contact imports, and company changes without a final preview or confirmation. Ambiguous requests could alter records or contact customers.","review_kind":"security","source_category":"semantic","source_severity":"medium","confidence_reasoning":"The listed sequences directly invoke mutating and externally visible tools. No cited workflow requires presenting the final scope and obtaining confirmation before execution."},{"title":"Agent Identity Overrides Lack Authorization Guidance","locations":[{"file":"SKILL.md","line_end":110,"line_start":109}],"confidence":0.91,"description":"Reply parameters can override the sender address or act on behalf of another agent. The skill does not require authorization checks before using these identity controls.","review_kind":"security","source_category":"semantic","source_severity":"medium","confidence_reasoning":"The source explicitly documents sender and agent overrides. Freshdesk may enforce permissions, but the skill provides no guidance to verify delegated authority."}],"low_findings":[{"title":"Hardcoded URL","locations":[{"file":"SKILL.md","line_end":21,"line_start":21}],"confidence":0.99,"description":"**Get Rube MCP**: Add `https://rube.app/mcp` as an MCP server in your client configuration. No API k","review_kind":"capability","source_category":"network","source_severity":"low","confidence_reasoning":"Line 21 directs users to configure the external Rube MCP endpoint. This is an intentional third-party network and trust dependency, although it is not evidence of malware."}],"dangerous_patterns":[],"files_scanned":1,"total_lines":228,"audit_model":"codex","audited_at":"2026-07-23T22:44:11.931+00:00","created_at":"2026-07-26T12:23:29.915135+00:00","static_findings":[{"id":"external_commands:SKILL.md:16:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- Active Freshdesk connection via `RUBE_MANAGE_CONNECTIONS` with toolkit `freshdesk`","category":"external_commands","line_end":16,"severity":"medium","line_start":16},{"id":"external_commands:SKILL.md:17:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- Always call `RUBE_SEARCH_TOOLS` first to get current tool schemas","category":"external_commands","line_end":17,"severity":"medium","line_start":17},{"id":"external_commands:SKILL.md:21:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"**Get Rube MCP**: Add `https://rube.app/mcp` as an MCP server in your client configuration. No API k","category":"external_commands","line_end":21,"severity":"medium","line_start":21},{"id":"external_commands:SKILL.md:23:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"1. Verify Rube MCP is available by confirming `RUBE_SEARCH_TOOLS` responds","category":"external_commands","line_end":23,"severity":"medium","line_start":23},{"id":"external_commands:SKILL.md:24:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"2. Call `RUBE_MANAGE_CONNECTIONS` with toolkit `freshdesk`","category":"external_commands","line_end":24,"severity":"medium","line_start":24},{"id":"external_commands:SKILL.md:35:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"1. `FRESHDESK_SEARCH_CONTACTS` - Find requester by email to get requester_id [Optional]","category":"external_commands","line_end":35,"severity":"medium","line_start":35},{"id":"external_commands:SKILL.md:36:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"2. `FRESHDESK_LIST_TICKET_FIELDS` - Check available custom fields and statuses [Optional]","category":"external_commands","line_end":36,"severity":"medium","line_start":36},{"id":"external_commands:SKILL.md:37:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"3. `FRESHDESK_CREATE_TICKET` - Create a new ticket with subject, description, requester info [Requir","category":"external_commands","line_end":37,"severity":"medium","line_start":37},{"id":"external_commands:SKILL.md:38:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"4. `FRESHDESK_UPDATE_TICKET` - Modify ticket status, priority, assignee, or other fields [Optional]","category":"external_commands","line_end":38,"severity":"medium","line_start":38},{"id":"external_commands:SKILL.md:39:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"5. `FRESHDESK_VIEW_TICKET` - Retrieve full ticket details by ID [Optional]","category":"external_commands","line_end":39,"severity":"medium","line_start":39},{"id":"external_commands:SKILL.md:42:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- `subject`: Ticket subject (required)","category":"external_commands","line_end":42,"severity":"medium","line_start":42},{"id":"external_commands:SKILL.md:43:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- `description`: HTML content of the ticket (required)","category":"external_commands","line_end":43,"severity":"medium","line_start":43},{"id":"external_commands:SKILL.md:44:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- `email`: Requester email (at least one requester identifier required)","category":"external_commands","line_end":44,"severity":"medium","line_start":44},{"id":"external_commands:SKILL.md:45:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- `requester_id`: User ID of requester (alternative to email)","category":"external_commands","line_end":45,"severity":"medium","line_start":45},{"id":"external_commands:SKILL.md:46:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- `status`: 2=Open, 3=Pending, 4=Resolved, 5=Closed (default 2)","category":"external_commands","line_end":46,"severity":"medium","line_start":46},{"id":"external_commands:SKILL.md:47:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- `priority`: 1=Low, 2=Medium, 3=High, 4=Urgent (default 1)","category":"external_commands","line_end":47,"severity":"medium","line_start":47},{"id":"external_commands:SKILL.md:48:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- `source`: 1=Email, 2=Portal, 3=Phone, 7=Chat (default 2)","category":"external_commands","line_end":48,"severity":"medium","line_start":48},{"id":"external_commands:SKILL.md:49:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- `responder_id`: Agent ID to assign the ticket to","category":"external_commands","line_end":49,"severity":"medium","line_start":49},{"id":"external_commands:SKILL.md:50:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- `group_id`: Group to assign the ticket to","category":"external_commands","line_end":50,"severity":"medium","line_start":50},{"id":"external_commands:SKILL.md:51:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- `tags`: Array of tag strings","category":"external_commands","line_end":51,"severity":"medium","line_start":51},{"id":"external_commands:SKILL.md:52:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- `custom_fields`: Object with `cf_<field_name>` keys","category":"external_commands","line_end":52,"severity":"medium","line_start":52},{"id":"external_commands:SKILL.md:55:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- At least one requester identifier is required: `requester_id`, `email`, `phone`, `facebook_id`, `t","category":"external_commands","line_end":55,"severity":"medium","line_start":55},{"id":"external_commands:SKILL.md:56:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- If `phone` is provided without `email`, then `name` becomes mandatory","category":"external_commands","line_end":56,"severity":"medium","line_start":56},{"id":"external_commands:SKILL.md:57:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- `description` supports HTML formatting","category":"external_commands","line_end":57,"severity":"medium","line_start":57},{"id":"external_commands:SKILL.md:58:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- `attachments` field expects multipart/form-data format, not file paths or URLs","category":"external_commands","line_end":58,"severity":"medium","line_start":58},{"id":"external_commands:SKILL.md:59:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- Custom field keys must be prefixed with `cf_` (e.g., `cf_reference_number`)","category":"external_commands","line_end":59,"severity":"medium","line_start":59},{"id":"external_commands:SKILL.md:67:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"1. `FRESHDESK_GET_TICKETS` - List tickets with simple filters (status, priority, agent) [Required]","category":"external_commands","line_end":67,"severity":"medium","line_start":67},{"id":"external_commands:SKILL.md:68:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"2. `FRESHDESK_GET_SEARCH` - Advanced ticket search with query syntax [Required]","category":"external_commands","line_end":68,"severity":"medium","line_start":68},{"id":"external_commands:SKILL.md:69:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"3. `FRESHDESK_VIEW_TICKET` - Get full details for specific tickets from results [Optional]","category":"external_commands","line_end":69,"severity":"medium","line_start":69},{"id":"external_commands:SKILL.md:70:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"4. `FRESHDESK_LIST_TICKET_FIELDS` - Check available fields for search queries [Optional]","category":"external_commands","line_end":70,"severity":"medium","line_start":70},{"id":"external_commands:SKILL.md:73:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- `status`: Filter by status integer (2=Open, 3=Pending, 4=Resolved, 5=Closed)","category":"external_commands","line_end":73,"severity":"medium","line_start":73},{"id":"external_commands:SKILL.md:74:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- `priority`: Filter by priority integer (1-4)","category":"external_commands","line_end":74,"severity":"medium","line_start":74},{"id":"external_commands:SKILL.md:75:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- `agent_id`: Filter by assigned agent","category":"external_commands","line_end":75,"severity":"medium","line_start":75},{"id":"external_commands:SKILL.md:76:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- `requester_id`: Filter by requester","category":"external_commands","line_end":76,"severity":"medium","line_start":76},{"id":"external_commands:SKILL.md:77:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- `email`: Filter by requester email","category":"external_commands","line_end":77,"severity":"medium","line_start":77},{"id":"external_commands:SKILL.md:78:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- `created_since`: ISO 8601 timestamp","category":"external_commands","line_end":78,"severity":"medium","line_start":78},{"id":"external_commands:SKILL.md:79:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- `page` / `per_page`: Pagination (default 30 per page)","category":"external_commands","line_end":79,"severity":"medium","line_start":79},{"id":"external_commands:SKILL.md:80:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- `sort_by` / `sort_order`: Sort field and direction","category":"external_commands","line_end":80,"severity":"medium","line_start":80},{"id":"external_commands:SKILL.md:83:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- `query`: Query string like `\"status:2 AND priority:3\"` or `\"(created_at:>'2024-01-01' AND tag:'urg","category":"external_commands","line_end":83,"severity":"medium","line_start":83},{"id":"external_commands:SKILL.md:84:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- `page`: Page number (1-10, max 300 total results)","category":"external_commands","line_end":84,"severity":"medium","line_start":84},{"id":"external_commands:SKILL.md:87:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- `FRESHDESK_GET_SEARCH` query must be enclosed in double quotes","category":"external_commands","line_end":87,"severity":"medium","line_start":87},{"id":"external_commands:SKILL.md:91:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- Use `null` keyword to find tickets with empty fields (e.g., `\"agent_id:null\"`)","category":"external_commands","line_end":91,"severity":"medium","line_start":91},{"id":"external_commands:SKILL.md:92:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- `FRESHDESK_LIST_ALL_TICKETS` takes no parameters and returns all tickets (use GET_TICKETS for filt","category":"external_commands","line_end":92,"severity":"medium","line_start":92},{"id":"external_commands:SKILL.md:99:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"1. `FRESHDESK_VIEW_TICKET` - Verify ticket exists and check current state [Prerequisite]","category":"external_commands","line_end":99,"severity":"medium","line_start":99},{"id":"external_commands:SKILL.md:100:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"2. `FRESHDESK_REPLY_TO_TICKET` - Send a public reply to the requester [Required]","category":"external_commands","line_end":100,"severity":"medium","line_start":100},{"id":"external_commands:SKILL.md:101:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"3. `FRESHDESK_ADD_NOTE_TO_TICKET` - Add a private or public note [Required]","category":"external_commands","line_end":101,"severity":"medium","line_start":101},{"id":"external_commands:SKILL.md:102:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"4. `FRESHDESK_LIST_ALL_TICKET_CONVERSATIONS` - View all messages and notes on a ticket [Optional]","category":"external_commands","line_end":102,"severity":"medium","line_start":102},{"id":"external_commands:SKILL.md:103:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"5. `FRESHDESK_UPDATE_CONVERSATIONS` - Edit an existing note [Optional]","category":"external_commands","line_end":103,"severity":"medium","line_start":103},{"id":"external_commands:SKILL.md:106:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- `ticket_id`: Ticket ID (integer, required)","category":"external_commands","line_end":106,"severity":"medium","line_start":106},{"id":"external_commands:SKILL.md:107:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- `body`: Reply content, supports HTML (required)","category":"external_commands","line_end":107,"severity":"medium","line_start":107},{"id":"external_commands:SKILL.md:108:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- `cc_emails` / `bcc_emails`: Additional recipients (max 50 total across to/cc/bcc)","category":"external_commands","line_end":108,"severity":"medium","line_start":108},{"id":"external_commands:SKILL.md:109:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- `from_email`: Override sender email if multiple support emails configured","category":"external_commands","line_end":109,"severity":"medium","line_start":109},{"id":"external_commands:SKILL.md:110:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- `user_id`: Agent ID to reply on behalf of","category":"external_commands","line_end":110,"severity":"medium","line_start":110},{"id":"external_commands:SKILL.md:113:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- `ticket_id`: Ticket ID (integer, required)","category":"external_commands","line_end":113,"severity":"medium","line_start":113},{"id":"external_commands:SKILL.md:114:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- `body`: Note content, supports HTML (required)","category":"external_commands","line_end":114,"severity":"medium","line_start":114},{"id":"external_commands:SKILL.md:115:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- `private`: true for agent-only visibility, false for public (default true)","category":"external_commands","line_end":115,"severity":"medium","line_start":115},{"id":"external_commands:SKILL.md:116:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- `notify_emails`: Only accepts agent email addresses, not external contacts","category":"external_commands","line_end":116,"severity":"medium","line_start":116},{"id":"external_commands:SKILL.md:119:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- There are two reply tools: `FRESHDESK_REPLY_TO_TICKET` (more features) and `FRESHDESK_REPLY_TICKET","category":"external_commands","line_end":119,"severity":"medium","line_start":119},{"id":"external_commands:SKILL.md:120:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- `FRESHDESK_ADD_NOTE_TO_TICKET` defaults to private (agent-only); set `private: false` for public n","category":"external_commands","line_end":120,"severity":"medium","line_start":120},{"id":"external_commands:SKILL.md:121:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- `notify_emails` in notes only accepts agent emails, not customer emails","category":"external_commands","line_end":121,"severity":"medium","line_start":121},{"id":"external_commands:SKILL.md:122:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- Only notes can be edited via `FRESHDESK_UPDATE_CONVERSATIONS`; incoming replies cannot be edited","category":"external_commands","line_end":122,"severity":"medium","line_start":122},{"id":"external_commands:SKILL.md:129:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"1. `FRESHDESK_SEARCH_CONTACTS` - Search contacts by email, phone, or company [Required]","category":"external_commands","line_end":129,"severity":"medium","line_start":129},{"id":"external_commands:SKILL.md:130:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"2. `FRESHDESK_GET_CONTACTS` - List contacts with filters [Optional]","category":"external_commands","line_end":130,"severity":"medium","line_start":130},{"id":"external_commands:SKILL.md:131:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"3. `FRESHDESK_IMPORT_CONTACT` - Bulk import contacts from CSV [Optional]","category":"external_commands","line_end":131,"severity":"medium","line_start":131},{"id":"external_commands:SKILL.md:132:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"4. `FRESHDESK_SEARCH_COMPANIES` - Search companies by custom fields [Required]","category":"external_commands","line_end":132,"severity":"medium","line_start":132},{"id":"external_commands:SKILL.md:133:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"5. `FRESHDESK_GET_COMPANIES` - List all companies [Optional]","category":"external_commands","line_end":133,"severity":"medium","line_start":133},{"id":"external_commands:SKILL.md:134:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"6. `FRESHDESK_CREATE_COMPANIES` - Create a new company [Optional]","category":"external_commands","line_end":134,"severity":"medium","line_start":134},{"id":"external_commands:SKILL.md:135:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"7. `FRESHDESK_UPDATE_COMPANIES` - Update company details [Optional]","category":"external_commands","line_end":135,"severity":"medium","line_start":135},{"id":"external_commands:SKILL.md:136:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"8. `FRESHDESK_LIST_COMPANY_FIELDS` - Check available company fields [Optional]","category":"external_commands","line_end":136,"severity":"medium","line_start":136},{"id":"external_commands:SKILL.md:139:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- `query`: Search string like `\"email:'user@example.com'\"` (required)","category":"external_commands","line_end":139,"severity":"medium","line_start":139},{"id":"external_commands:SKILL.md:140:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- `page`: Pagination (1-10, max 30 per page)","category":"external_commands","line_end":140,"severity":"medium","line_start":140},{"id":"external_commands:SKILL.md:143:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- `name`: Company name (required)","category":"external_commands","line_end":143,"severity":"medium","line_start":143},{"id":"external_commands:SKILL.md:144:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- `domains`: Array of domain strings for auto-association with contacts","category":"external_commands","line_end":144,"severity":"medium","line_start":144},{"id":"external_commands:SKILL.md:145:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- `health_score`: \"Happy\", \"Doing okay\", or \"At risk\"","category":"external_commands","line_end":145,"severity":"medium","line_start":145},{"id":"external_commands:SKILL.md:146:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- `account_tier`: \"Basic\", \"Premium\", or \"Enterprise\"","category":"external_commands","line_end":146,"severity":"medium","line_start":146},{"id":"external_commands:SKILL.md:147:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- `industry`: Standard industry classification","category":"external_commands","line_end":147,"severity":"medium","line_start":147},{"id":"external_commands:SKILL.md:150:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- `FRESHDESK_SEARCH_CONTACTS` requires exact matches; partial/regex searches are not supported","category":"external_commands","line_end":150,"severity":"medium","line_start":150},{"id":"external_commands:SKILL.md:151:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- `FRESHDESK_SEARCH_COMPANIES` cannot search by standard `name` field; use custom fields or `created","category":"external_commands","line_end":151,"severity":"medium","line_start":151},{"id":"external_commands:SKILL.md:152:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- Company custom fields do NOT use the `cf_` prefix (unlike ticket custom fields)","category":"external_commands","line_end":152,"severity":"medium","line_start":152},{"id":"external_commands:SKILL.md:153:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- `domains` on companies enables automatic contact-to-company association by email domain","category":"external_commands","line_end":153,"severity":"medium","line_start":153},{"id":"external_commands:SKILL.md:160:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- **Requester email -> requester_id**: `FRESHDESK_SEARCH_CONTACTS` with `\"email:'user@example.com'\"`","category":"external_commands","line_end":160,"severity":"medium","line_start":160},{"id":"external_commands:SKILL.md:161:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- **Company name -> company_id**: `FRESHDESK_GET_COMPANIES` and match by name (search by name not su","category":"external_commands","line_end":161,"severity":"medium","line_start":161},{"id":"external_commands:SKILL.md:166:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- `FRESHDESK_GET_TICKETS`: `page` (starting at 1) and `per_page` (max 100)","category":"external_commands","line_end":166,"severity":"medium","line_start":166},{"id":"external_commands:SKILL.md:167:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- `FRESHDESK_GET_SEARCH`: `page` (1-10, 30 results per page, max 300 total)","category":"external_commands","line_end":167,"severity":"medium","line_start":167},{"id":"external_commands:SKILL.md:168:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- `FRESHDESK_SEARCH_CONTACTS`: `page` (1-10, 30 per page)","category":"external_commands","line_end":168,"severity":"medium","line_start":168},{"id":"external_commands:SKILL.md:169:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- `FRESHDESK_LIST_ALL_TICKET_CONVERSATIONS`: `page` and `per_page` (max 100)","category":"external_commands","line_end":169,"severity":"medium","line_start":169},{"id":"external_commands:SKILL.md:186:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- Ticket custom fields use `cf_` prefix; company custom fields do NOT","category":"external_commands","line_end":186,"severity":"medium","line_start":186},{"id":"external_commands:SKILL.md:187:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- `description` in tickets supports HTML formatting","category":"external_commands","line_end":187,"severity":"medium","line_start":187},{"id":"external_commands:SKILL.md:189:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- `FRESHDESK_LIST_ALL_TICKETS` returns all tickets with no filter parameters","category":"external_commands","line_end":189,"severity":"medium","line_start":189},{"id":"external_commands:SKILL.md:200:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| Create ticket | `FRESHDESK_CREATE_TICKET` | `subject`, `description`, `email`, `priority` |","category":"external_commands","line_end":200,"severity":"medium","line_start":200},{"id":"external_commands:SKILL.md:201:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| Update ticket | `FRESHDESK_UPDATE_TICKET` | `ticket_id`, `status`, `priority` |","category":"external_commands","line_end":201,"severity":"medium","line_start":201},{"id":"external_commands:SKILL.md:202:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| View ticket | `FRESHDESK_VIEW_TICKET` | `ticket_id` |","category":"external_commands","line_end":202,"severity":"medium","line_start":202},{"id":"external_commands:SKILL.md:203:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| List tickets | `FRESHDESK_GET_TICKETS` | `status`, `priority`, `page`, `per_page` |","category":"external_commands","line_end":203,"severity":"medium","line_start":203},{"id":"external_commands:SKILL.md:204:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| List all tickets | `FRESHDESK_LIST_ALL_TICKETS` | (none) |","category":"external_commands","line_end":204,"severity":"medium","line_start":204},{"id":"external_commands:SKILL.md:205:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| Search tickets | `FRESHDESK_GET_SEARCH` | `query`, `page` |","category":"external_commands","line_end":205,"severity":"medium","line_start":205},{"id":"external_commands:SKILL.md:206:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| Reply to ticket | `FRESHDESK_REPLY_TO_TICKET` | `ticket_id`, `body`, `cc_emails` |","category":"external_commands","line_end":206,"severity":"medium","line_start":206},{"id":"external_commands:SKILL.md:207:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| Reply (simple) | `FRESHDESK_REPLY_TICKET` | `ticket_id`, `body` |","category":"external_commands","line_end":207,"severity":"medium","line_start":207},{"id":"external_commands:SKILL.md:208:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| Add note | `FRESHDESK_ADD_NOTE_TO_TICKET` | `ticket_id`, `body`, `private` |","category":"external_commands","line_end":208,"severity":"medium","line_start":208},{"id":"external_commands:SKILL.md:209:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| List conversations | `FRESHDESK_LIST_ALL_TICKET_CONVERSATIONS` | `ticket_id`, `page` |","category":"external_commands","line_end":209,"severity":"medium","line_start":209},{"id":"external_commands:SKILL.md:210:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| Update note | `FRESHDESK_UPDATE_CONVERSATIONS` | `conversation_id`, `body` |","category":"external_commands","line_end":210,"severity":"medium","line_start":210},{"id":"external_commands:SKILL.md:211:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| Search contacts | `FRESHDESK_SEARCH_CONTACTS` | `query`, `page` |","category":"external_commands","line_end":211,"severity":"medium","line_start":211},{"id":"external_commands:SKILL.md:212:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| List contacts | `FRESHDESK_GET_CONTACTS` | `email`, `company_id`, `page` |","category":"external_commands","line_end":212,"severity":"medium","line_start":212},{"id":"external_commands:SKILL.md:213:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| Import contacts | `FRESHDESK_IMPORT_CONTACT` | `file`, `name_column_index`, `email_column_index` |","category":"external_commands","line_end":213,"severity":"medium","line_start":213},{"id":"external_commands:SKILL.md:214:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| Create company | `FRESHDESK_CREATE_COMPANIES` | `name`, `domains`, `industry` |","category":"external_commands","line_end":214,"severity":"medium","line_start":214},{"id":"external_commands:SKILL.md:215:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| Update company | `FRESHDESK_UPDATE_COMPANIES` | `company_id`, `name`, `domains` |","category":"external_commands","line_end":215,"severity":"medium","line_start":215},{"id":"external_commands:SKILL.md:216:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| Search companies | `FRESHDESK_SEARCH_COMPANIES` | `query`, `page` |","category":"external_commands","line_end":216,"severity":"medium","line_start":216},{"id":"external_commands:SKILL.md:217:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| List companies | `FRESHDESK_GET_COMPANIES` | `page` |","category":"external_commands","line_end":217,"severity":"medium","line_start":217},{"id":"external_commands:SKILL.md:218:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| List ticket fields | `FRESHDESK_LIST_TICKET_FIELDS` | (none) |","category":"external_commands","line_end":218,"severity":"medium","line_start":218},{"id":"external_commands:SKILL.md:219:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| List company fields | `FRESHDESK_LIST_COMPANY_FIELDS` | (none) |","category":"external_commands","line_end":219,"severity":"medium","line_start":219},{"id":"network:SKILL.md:21:hardcoded-url","file":"SKILL.md","pattern":"Hardcoded URL","snippet":"**Get Rube MCP**: Add `https://rube.app/mcp` as an MCP server in your client configuration. No API k","category":"network","line_end":21,"severity":"low","line_start":21},{"id":"blocker:SKILL.md:35:system-reconnaissance","file":"SKILL.md","pattern":"System reconnaissance","snippet":"1. `FRESHDESK_SEARCH_CONTACTS` - Find requester by email to get requester_id [Optional]","category":"blocker","line_end":35,"severity":"low","line_start":35},{"id":"blocker:SKILL.md:162:system-reconnaissance","file":"SKILL.md","pattern":"System reconnaissance","snippet":"- **Agent name -> agent_id**: Not directly available; use agent_id from ticket responses or admin co","category":"blocker","line_end":162,"severity":"low","line_start":162},{"id":"blocker:SKILL.md:179:system-reconnaissance","file":"SKILL.md","pattern":"System reconnaissance","snippet":"- Bulk operations should be paced to avoid 429 responses","category":"blocker","line_end":179,"severity":"low","line_start":179}],"finding_verdicts":[{"id":"external_commands:SKILL.md:16:ruby-shell-backtick-execution","reason":"The backticks delimit inline Markdown names for Freshdesk fields or MCP tools. SKILL.md contains no Ruby, shell, subprocess, or executable command syntax.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:17:ruby-shell-backtick-execution","reason":"The backticks delimit inline Markdown names for Freshdesk fields or MCP tools. SKILL.md contains no Ruby, shell, subprocess, or executable command syntax.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:21:ruby-shell-backtick-execution","reason":"The backticks delimit inline Markdown names for Freshdesk fields or MCP tools. SKILL.md contains no Ruby, shell, subprocess, or executable command syntax.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:23:ruby-shell-backtick-execution","reason":"The backticks delimit inline Markdown names for Freshdesk fields or MCP tools. SKILL.md contains no Ruby, shell, subprocess, or executable command syntax.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:24:ruby-shell-backtick-execution","reason":"The backticks delimit inline Markdown names for Freshdesk fields or MCP tools. SKILL.md contains no Ruby, shell, subprocess, or executable command syntax.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:35:ruby-shell-backtick-execution","reason":"The backticks delimit inline Markdown names for Freshdesk fields or MCP tools. SKILL.md contains no Ruby, shell, subprocess, or executable command syntax.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:36:ruby-shell-backtick-execution","reason":"The backticks delimit inline Markdown names for Freshdesk fields or MCP tools. SKILL.md contains no Ruby, shell, subprocess, or executable command syntax.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:37:ruby-shell-backtick-execution","reason":"The backticks delimit inline Markdown names for Freshdesk fields or MCP tools. SKILL.md contains no Ruby, shell, subprocess, or executable command syntax.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:38:ruby-shell-backtick-execution","reason":"The backticks delimit inline Markdown names for Freshdesk fields or MCP tools. SKILL.md contains no Ruby, shell, subprocess, or executable command syntax.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:39:ruby-shell-backtick-execution","reason":"The backticks delimit inline Markdown names for Freshdesk fields or MCP tools. SKILL.md contains no Ruby, shell, subprocess, or executable command syntax.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:42:ruby-shell-backtick-execution","reason":"The backticks delimit inline Markdown names for Freshdesk fields or MCP tools. SKILL.md contains no Ruby, shell, subprocess, or executable command syntax.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:43:ruby-shell-backtick-execution","reason":"The backticks delimit inline Markdown names for Freshdesk fields or MCP tools. SKILL.md contains no Ruby, shell, subprocess, or executable command syntax.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:44:ruby-shell-backtick-execution","reason":"The backticks delimit inline Markdown names for Freshdesk fields or MCP tools. SKILL.md contains no Ruby, shell, subprocess, or executable command syntax.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:45:ruby-shell-backtick-execution","reason":"The backticks delimit inline Markdown names for Freshdesk fields or MCP tools. SKILL.md contains no Ruby, shell, subprocess, or executable command syntax.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:46:ruby-shell-backtick-execution","reason":"The backticks delimit inline Markdown names for Freshdesk fields or MCP tools. SKILL.md contains no Ruby, shell, subprocess, or executable command syntax.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:47:ruby-shell-backtick-execution","reason":"The backticks delimit inline Markdown names for Freshdesk fields or MCP tools. SKILL.md contains no Ruby, shell, subprocess, or executable command syntax.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:48:ruby-shell-backtick-execution","reason":"The backticks delimit inline Markdown names for Freshdesk fields or MCP tools. SKILL.md contains no Ruby, shell, subprocess, or executable command syntax.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:49:ruby-shell-backtick-execution","reason":"The backticks delimit inline Markdown names for Freshdesk fields or MCP tools. SKILL.md contains no Ruby, shell, subprocess, or executable command syntax.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:50:ruby-shell-backtick-execution","reason":"The backticks delimit inline Markdown names for Freshdesk fields or MCP tools. SKILL.md contains no Ruby, shell, subprocess, or executable command syntax.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:51:ruby-shell-backtick-execution","reason":"The backticks delimit inline Markdown names for Freshdesk fields or MCP tools. SKILL.md contains no Ruby, shell, subprocess, or executable command syntax.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:52:ruby-shell-backtick-execution","reason":"The backticks delimit inline Markdown names for Freshdesk fields or MCP tools. SKILL.md contains no Ruby, shell, subprocess, or executable command syntax.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:55:ruby-shell-backtick-execution","reason":"The backticks delimit inline Markdown names for Freshdesk fields or MCP tools. SKILL.md contains no Ruby, shell, subprocess, or executable command syntax.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:56:ruby-shell-backtick-execution","reason":"The backticks delimit inline Markdown names for Freshdesk fields or MCP tools. SKILL.md contains no Ruby, shell, subprocess, or executable command syntax.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:57:ruby-shell-backtick-execution","reason":"The backticks delimit inline Markdown names for Freshdesk fields or MCP tools. SKILL.md contains no Ruby, shell, subprocess, or executable command syntax.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:58:ruby-shell-backtick-execution","reason":"The backticks delimit inline Markdown names for Freshdesk fields or MCP tools. SKILL.md contains no Ruby, shell, subprocess, or executable command syntax.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:59:ruby-shell-backtick-execution","reason":"The backticks delimit inline Markdown names for Freshdesk fields or MCP tools. SKILL.md contains no Ruby, shell, subprocess, or executable command syntax.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:67:ruby-shell-backtick-execution","reason":"The backticks delimit inline Markdown names for Freshdesk fields or MCP tools. SKILL.md contains no Ruby, shell, subprocess, or executable command syntax.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:68:ruby-shell-backtick-execution","reason":"The backticks delimit inline Markdown names for Freshdesk fields or MCP tools. SKILL.md contains no Ruby, shell, subprocess, or executable command syntax.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:69:ruby-shell-backtick-execution","reason":"The backticks delimit inline Markdown names for Freshdesk fields or MCP tools. SKILL.md contains no Ruby, shell, subprocess, or executable command syntax.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:70:ruby-shell-backtick-execution","reason":"The backticks delimit inline Markdown names for Freshdesk fields or MCP tools. SKILL.md contains no Ruby, shell, subprocess, or executable command syntax.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:73:ruby-shell-backtick-execution","reason":"The backticks delimit inline Markdown names for Freshdesk fields or MCP tools. SKILL.md contains no Ruby, shell, subprocess, or executable command syntax.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:74:ruby-shell-backtick-execution","reason":"The backticks delimit inline Markdown names for Freshdesk fields or MCP tools. SKILL.md contains no Ruby, shell, subprocess, or executable command syntax.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:75:ruby-shell-backtick-execution","reason":"The backticks delimit inline Markdown names for Freshdesk fields or MCP tools. SKILL.md contains no Ruby, shell, subprocess, or executable command syntax.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:76:ruby-shell-backtick-execution","reason":"The backticks delimit inline Markdown names for Freshdesk fields or MCP tools. SKILL.md contains no Ruby, shell, subprocess, or executable command syntax.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:77:ruby-shell-backtick-execution","reason":"The backticks delimit inline Markdown names for Freshdesk fields or MCP tools. SKILL.md contains no Ruby, shell, subprocess, or executable command syntax.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:78:ruby-shell-backtick-execution","reason":"The backticks delimit inline Markdown names for Freshdesk fields or MCP tools. SKILL.md contains no Ruby, shell, subprocess, or executable command syntax.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:79:ruby-shell-backtick-execution","reason":"The backticks delimit inline Markdown names for Freshdesk fields or MCP tools. SKILL.md contains no Ruby, shell, subprocess, or executable command syntax.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:80:ruby-shell-backtick-execution","reason":"The backticks delimit inline Markdown names for Freshdesk fields or MCP tools. SKILL.md contains no Ruby, shell, subprocess, or executable command syntax.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:83:ruby-shell-backtick-execution","reason":"The backticks delimit inline Markdown names for Freshdesk fields or MCP tools. SKILL.md contains no Ruby, shell, subprocess, or executable command syntax.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:84:ruby-shell-backtick-execution","reason":"The backticks delimit inline Markdown names for Freshdesk fields or MCP tools. SKILL.md contains no Ruby, shell, subprocess, or executable command syntax.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:87:ruby-shell-backtick-execution","reason":"The backticks delimit inline Markdown names for Freshdesk fields or MCP tools. SKILL.md contains no Ruby, shell, subprocess, or executable command syntax.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:91:ruby-shell-backtick-execution","reason":"The backticks delimit inline Markdown names for Freshdesk fields or MCP tools. SKILL.md contains no Ruby, shell, subprocess, or executable command syntax.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:92:ruby-shell-backtick-execution","reason":"The backticks delimit inline Markdown names for Freshdesk fields or MCP tools. SKILL.md contains no Ruby, shell, subprocess, or executable command syntax.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:99:ruby-shell-backtick-execution","reason":"The backticks delimit inline Markdown names for Freshdesk fields or MCP tools. SKILL.md contains no Ruby, shell, subprocess, or executable command syntax.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:100:ruby-shell-backtick-execution","reason":"The backticks delimit inline Markdown names for Freshdesk fields or MCP tools. SKILL.md contains no Ruby, shell, subprocess, or executable command syntax.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:101:ruby-shell-backtick-execution","reason":"The backticks delimit inline Markdown names for Freshdesk fields or MCP tools. SKILL.md contains no Ruby, shell, subprocess, or executable command syntax.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:102:ruby-shell-backtick-execution","reason":"The backticks delimit inline Markdown names for Freshdesk fields or MCP tools. SKILL.md contains no Ruby, shell, subprocess, or executable command syntax.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:103:ruby-shell-backtick-execution","reason":"The backticks delimit inline Markdown names for Freshdesk fields or MCP tools. SKILL.md contains no Ruby, shell, subprocess, or executable command syntax.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:106:ruby-shell-backtick-execution","reason":"The backticks delimit inline Markdown names for Freshdesk fields or MCP tools. SKILL.md contains no Ruby, shell, subprocess, or executable command syntax.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:107:ruby-shell-backtick-execution","reason":"The backticks delimit inline Markdown names for Freshdesk fields or MCP tools. SKILL.md contains no Ruby, shell, subprocess, or executable command syntax.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:108:ruby-shell-backtick-execution","reason":"The backticks delimit inline Markdown names for Freshdesk fields or MCP tools. SKILL.md contains no Ruby, shell, subprocess, or executable command syntax.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:109:ruby-shell-backtick-execution","reason":"The backticks delimit inline Markdown names for Freshdesk fields or MCP tools. SKILL.md contains no Ruby, shell, subprocess, or executable command syntax.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:110:ruby-shell-backtick-execution","reason":"The backticks delimit inline Markdown names for Freshdesk fields or MCP tools. SKILL.md contains no Ruby, shell, subprocess, or executable command syntax.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:113:ruby-shell-backtick-execution","reason":"The backticks delimit inline Markdown names for Freshdesk fields or MCP tools. SKILL.md contains no Ruby, shell, subprocess, or executable command syntax.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:114:ruby-shell-backtick-execution","reason":"The backticks delimit inline Markdown names for Freshdesk fields or MCP tools. SKILL.md contains no Ruby, shell, subprocess, or executable command syntax.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:115:ruby-shell-backtick-execution","reason":"The backticks delimit inline Markdown names for Freshdesk fields or MCP tools. SKILL.md contains no Ruby, shell, subprocess, or executable command syntax.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:116:ruby-shell-backtick-execution","reason":"The backticks delimit inline Markdown names for Freshdesk fields or MCP tools. SKILL.md contains no Ruby, shell, subprocess, or executable command syntax.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:119:ruby-shell-backtick-execution","reason":"The backticks delimit inline Markdown names for Freshdesk fields or MCP tools. SKILL.md contains no Ruby, shell, subprocess, or executable command syntax.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:120:ruby-shell-backtick-execution","reason":"The backticks delimit inline Markdown names for Freshdesk fields or MCP tools. SKILL.md contains no Ruby, shell, subprocess, or executable command syntax.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:121:ruby-shell-backtick-execution","reason":"The backticks delimit inline Markdown names for Freshdesk fields or MCP tools. SKILL.md contains no Ruby, shell, subprocess, or executable command syntax.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:122:ruby-shell-backtick-execution","reason":"The backticks delimit inline Markdown names for Freshdesk fields or MCP tools. SKILL.md contains no Ruby, shell, subprocess, or executable command syntax.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:129:ruby-shell-backtick-execution","reason":"The backticks delimit inline Markdown names for Freshdesk fields or MCP tools. SKILL.md contains no Ruby, shell, subprocess, or executable command syntax.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:130:ruby-shell-backtick-execution","reason":"The backticks delimit inline Markdown names for Freshdesk fields or MCP tools. SKILL.md contains no Ruby, shell, subprocess, or executable command syntax.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:131:ruby-shell-backtick-execution","reason":"The backticks delimit inline Markdown names for Freshdesk fields or MCP tools. SKILL.md contains no Ruby, shell, subprocess, or executable command syntax.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:132:ruby-shell-backtick-execution","reason":"The backticks delimit inline Markdown names for Freshdesk fields or MCP tools. SKILL.md contains no Ruby, shell, subprocess, or executable command syntax.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:133:ruby-shell-backtick-execution","reason":"The backticks delimit inline Markdown names for Freshdesk fields or MCP tools. SKILL.md contains no Ruby, shell, subprocess, or executable command syntax.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:134:ruby-shell-backtick-execution","reason":"The backticks delimit inline Markdown names for Freshdesk fields or MCP tools. SKILL.md contains no Ruby, shell, subprocess, or executable command syntax.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:135:ruby-shell-backtick-execution","reason":"The backticks delimit inline Markdown names for Freshdesk fields or MCP tools. SKILL.md contains no Ruby, shell, subprocess, or executable command syntax.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:136:ruby-shell-backtick-execution","reason":"The backticks delimit inline Markdown names for Freshdesk fields or MCP tools. SKILL.md contains no Ruby, shell, subprocess, or executable command syntax.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:139:ruby-shell-backtick-execution","reason":"The backticks delimit inline Markdown names for Freshdesk fields or MCP tools. SKILL.md contains no Ruby, shell, subprocess, or executable command syntax.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:140:ruby-shell-backtick-execution","reason":"The backticks delimit inline Markdown names for Freshdesk fields or MCP tools. SKILL.md contains no Ruby, shell, subprocess, or executable command syntax.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:143:ruby-shell-backtick-execution","reason":"The backticks delimit inline Markdown names for Freshdesk fields or MCP tools. SKILL.md contains no Ruby, shell, subprocess, or executable command syntax.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:144:ruby-shell-backtick-execution","reason":"The backticks delimit inline Markdown names for Freshdesk fields or MCP tools. SKILL.md contains no Ruby, shell, subprocess, or executable command syntax.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:145:ruby-shell-backtick-execution","reason":"The backticks delimit inline Markdown names for Freshdesk fields or MCP tools. SKILL.md contains no Ruby, shell, subprocess, or executable command syntax.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:146:ruby-shell-backtick-execution","reason":"The backticks delimit inline Markdown names for Freshdesk fields or MCP tools. SKILL.md contains no Ruby, shell, subprocess, or executable command syntax.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:147:ruby-shell-backtick-execution","reason":"The backticks delimit inline Markdown names for Freshdesk fields or MCP tools. SKILL.md contains no Ruby, shell, subprocess, or executable command syntax.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:150:ruby-shell-backtick-execution","reason":"The backticks delimit inline Markdown names for Freshdesk fields or MCP tools. SKILL.md contains no Ruby, shell, subprocess, or executable command syntax.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:151:ruby-shell-backtick-execution","reason":"The backticks delimit inline Markdown names for Freshdesk fields or MCP tools. SKILL.md contains no Ruby, shell, subprocess, or executable command syntax.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:152:ruby-shell-backtick-execution","reason":"The backticks delimit inline Markdown names for Freshdesk fields or MCP tools. SKILL.md contains no Ruby, shell, subprocess, or executable command syntax.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:153:ruby-shell-backtick-execution","reason":"The backticks delimit inline Markdown names for Freshdesk fields or MCP tools. SKILL.md contains no Ruby, shell, subprocess, or executable command syntax.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:160:ruby-shell-backtick-execution","reason":"The backticks delimit inline Markdown names for Freshdesk fields or MCP tools. SKILL.md contains no Ruby, shell, subprocess, or executable command syntax.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:161:ruby-shell-backtick-execution","reason":"The backticks delimit inline Markdown names for Freshdesk fields or MCP tools. SKILL.md contains no Ruby, shell, subprocess, or executable command syntax.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:166:ruby-shell-backtick-execution","reason":"The backticks delimit inline Markdown names for Freshdesk fields or MCP tools. SKILL.md contains no Ruby, shell, subprocess, or executable command syntax.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:167:ruby-shell-backtick-execution","reason":"The backticks delimit inline Markdown names for Freshdesk fields or MCP tools. SKILL.md contains no Ruby, shell, subprocess, or executable command syntax.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:168:ruby-shell-backtick-execution","reason":"The backticks delimit inline Markdown names for Freshdesk fields or MCP tools. SKILL.md contains no Ruby, shell, subprocess, or executable command syntax.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:169:ruby-shell-backtick-execution","reason":"The backticks delimit inline Markdown names for Freshdesk fields or MCP tools. SKILL.md contains no Ruby, shell, subprocess, or executable command syntax.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:186:ruby-shell-backtick-execution","reason":"The backticks delimit inline Markdown names for Freshdesk fields or MCP tools. SKILL.md contains no Ruby, shell, subprocess, or executable command syntax.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:187:ruby-shell-backtick-execution","reason":"The backticks delimit inline Markdown names for Freshdesk fields or MCP tools. SKILL.md contains no Ruby, shell, subprocess, or executable command syntax.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:189:ruby-shell-backtick-execution","reason":"The backticks delimit inline Markdown names for Freshdesk fields or MCP tools. SKILL.md contains no Ruby, shell, subprocess, or executable command syntax.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:200:ruby-shell-backtick-execution","reason":"The backticks delimit inline Markdown names for Freshdesk fields or MCP tools. SKILL.md contains no Ruby, shell, subprocess, or executable command syntax.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:201:ruby-shell-backtick-execution","reason":"The backticks delimit inline Markdown names for Freshdesk fields or MCP tools. SKILL.md contains no Ruby, shell, subprocess, or executable command syntax.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:202:ruby-shell-backtick-execution","reason":"The backticks delimit inline Markdown names for Freshdesk fields or MCP tools. SKILL.md contains no Ruby, shell, subprocess, or executable command syntax.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:203:ruby-shell-backtick-execution","reason":"The backticks delimit inline Markdown names for Freshdesk fields or MCP tools. SKILL.md contains no Ruby, shell, subprocess, or executable command syntax.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:204:ruby-shell-backtick-execution","reason":"The backticks delimit inline Markdown names for Freshdesk fields or MCP tools. SKILL.md contains no Ruby, shell, subprocess, or executable command syntax.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:205:ruby-shell-backtick-execution","reason":"The backticks delimit inline Markdown names for Freshdesk fields or MCP tools. SKILL.md contains no Ruby, shell, subprocess, or executable command syntax.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:206:ruby-shell-backtick-execution","reason":"The backticks delimit inline Markdown names for Freshdesk fields or MCP tools. SKILL.md contains no Ruby, shell, subprocess, or executable command syntax.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:207:ruby-shell-backtick-execution","reason":"The backticks delimit inline Markdown names for Freshdesk fields or MCP tools. SKILL.md contains no Ruby, shell, subprocess, or executable command syntax.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:208:ruby-shell-backtick-execution","reason":"The backticks delimit inline Markdown names for Freshdesk fields or MCP tools. SKILL.md contains no Ruby, shell, subprocess, or executable command syntax.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:209:ruby-shell-backtick-execution","reason":"The backticks delimit inline Markdown names for Freshdesk fields or MCP tools. SKILL.md contains no Ruby, shell, subprocess, or executable command syntax.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:210:ruby-shell-backtick-execution","reason":"The backticks delimit inline Markdown names for Freshdesk fields or MCP tools. SKILL.md contains no Ruby, shell, subprocess, or executable command syntax.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:211:ruby-shell-backtick-execution","reason":"The backticks delimit inline Markdown names for Freshdesk fields or MCP tools. SKILL.md contains no Ruby, shell, subprocess, or executable command syntax.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:212:ruby-shell-backtick-execution","reason":"The backticks delimit inline Markdown names for Freshdesk fields or MCP tools. SKILL.md contains no Ruby, shell, subprocess, or executable command syntax.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:213:ruby-shell-backtick-execution","reason":"The backticks delimit inline Markdown names for Freshdesk fields or MCP tools. SKILL.md contains no Ruby, shell, subprocess, or executable command syntax.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:214:ruby-shell-backtick-execution","reason":"The backticks delimit inline Markdown names for Freshdesk fields or MCP tools. SKILL.md contains no Ruby, shell, subprocess, or executable command syntax.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:215:ruby-shell-backtick-execution","reason":"The backticks delimit inline Markdown names for Freshdesk fields or MCP tools. SKILL.md contains no Ruby, shell, subprocess, or executable command syntax.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:216:ruby-shell-backtick-execution","reason":"The backticks delimit inline Markdown names for Freshdesk fields or MCP tools. SKILL.md contains no Ruby, shell, subprocess, or executable command syntax.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:217:ruby-shell-backtick-execution","reason":"The backticks delimit inline Markdown names for Freshdesk fields or MCP tools. SKILL.md contains no Ruby, shell, subprocess, or executable command syntax.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:218:ruby-shell-backtick-execution","reason":"The backticks delimit inline Markdown names for Freshdesk fields or MCP tools. SKILL.md contains no Ruby, shell, subprocess, or executable command syntax.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:219:ruby-shell-backtick-execution","reason":"The backticks delimit inline Markdown names for Freshdesk fields or MCP tools. SKILL.md contains no Ruby, shell, subprocess, or executable command syntax.","verdict":"false_positive","confidence":0.99},{"id":"network:SKILL.md:21:hardcoded-url","reason":"Line 21 directs users to configure the external Rube MCP endpoint. This is an intentional third-party network and trust dependency, although it is not evidence of malware.","verdict":"confirmed","severity":"low","confidence":0.99},{"id":"blocker:SKILL.md:35:system-reconnaissance","reason":"Line 35 describes a Freshdesk contact lookup by email to resolve a requester ID. It does not inspect the host, network, operating system, or local environment.","verdict":"false_positive","confidence":0.99},{"id":"blocker:SKILL.md:162:system-reconnaissance","reason":"Line 162 documents how to obtain a Freshdesk agent ID from authorized application data. It is not host or system reconnaissance.","verdict":"false_positive","confidence":0.99},{"id":"blocker:SKILL.md:179:system-reconnaissance","reason":"Line 179 advises pacing Freshdesk operations to respect API rate limits. It performs no reconnaissance or discovery activity.","verdict":"false_positive","confidence":0.99}],"semantic_findings":[{"title":"Third-Party MCP Handles Freshdesk Data","severity":"medium","locations":[{"file":"SKILL.md","line_end":11,"line_start":11},{"file":"SKILL.md","line_end":25,"line_start":21}],"confidence":0.96,"description":"The skill routes support workflows through Rube MCP and asks users to authenticate Freshdesk through its returned link. The intermediary can access sensitive records and writes.","confidence_reasoning":"The source explicitly requires an external Rube MCP endpoint and a Freshdesk connection. The documented workflows include reading and changing customer support data."},{"title":"Consequential Actions Lack Explicit Confirmation Gates","severity":"medium","locations":[{"file":"SKILL.md","line_end":38,"line_start":37},{"file":"SKILL.md","line_end":101,"line_start":99},{"file":"SKILL.md","line_end":135,"line_start":129}],"confidence":0.95,"description":"The workflows permit ticket writes, public replies, bulk contact imports, and company changes without a final preview or confirmation. Ambiguous requests could alter records or contact customers.","confidence_reasoning":"The listed sequences directly invoke mutating and externally visible tools. No cited workflow requires presenting the final scope and obtaining confirmation before execution."},{"title":"Agent Identity Overrides Lack Authorization Guidance","severity":"medium","locations":[{"file":"SKILL.md","line_end":110,"line_start":109}],"confidence":0.91,"description":"Reply parameters can override the sender address or act on behalf of another agent. The skill does not require authorization checks before using these identity controls.","confidence_reasoning":"The source explicitly documents sender and agent overrides. Freshdesk may enforce permissions, but the skill provides no guidance to verify delegated authority."}],"subject_marketplace_commit_sha":"88a8e9a07f4c54ab105c1c41b6267c287146b07b","subject_content_hash":"ce86179d05e431603a60ba9ae941ec99eb9fea73fee5227fa20874c0914fc3c2","subject_tree_hash":"078c4af382112c534b30f76afb06454cc14367bcac33e520e12821c6822f7a9a","subject_plugin_path":"skills/sickn33/freshdesk-automation","audit_payload_hash":"aa8974a2a3510215837f0f1df2217759","confirmed_risk_level":"medium","scanner_version":"3.0.0","policy_version":"skillstore-security-audit-policy-v1","subject":{"marketplaceCommitSha":"88a8e9a07f4c54ab105c1c41b6267c287146b07b","contentHash":"ce86179d05e431603a60ba9ae941ec99eb9fea73fee5227fa20874c0914fc3c2","treeHash":"078c4af382112c534b30f76afb06454cc14367bcac33e520e12821c6822f7a9a","pluginPath":"skills/sickn33/freshdesk-automation","auditPayloadHash":"aa8974a2a3510215837f0f1df2217759"},"scannerVersion":"3.0.0","policyVersion":"skillstore-security-audit-policy-v1"},"auditTranslation":null,"localization":{"requestedLocale":"en","contentLocale":"en","availableLocales":["en"],"fallbackToEnglish":false},"attestation":{"availability":"issued","url":"/api/skills/sickn33-freshdesk-automation/audits/5/attestation","status":"active"},"trust":{"publicState":"public","auditState":"complete","auditCurrentness":null,"confirmedRiskLevel":"medium","confirmedFindingCount":3,"capabilityReviewCount":1,"needsReviewCount":0,"falsePositiveCount":0,"agentAutoInstallPolicy":"allowed","manualInstallPolicy":"allowed","artifactSignatureState":"available","attestationState":"active","verificationState":"not_verified"},"isLatest":true}}