[cron:3c0c2c17-0faa-41cb-bd7b-068b2a259b28 chad-email-smart] Smart email check for chad@cfrfl.com:

1. Query ms-365 for unread emails (isRead eq false) from last 30 minutes
2. Compare with previously seen emails (track IDs in memory)
3. If NEW unread emails found:
   - Categorize each (urgent/action/fyi/newsletter)
   - Draft responses in Chad's voice for action items
   - Send summary notification with categories and drafts
4. If no new emails, reply HEARTBEAT_OK (silent)

Use file /home/crogers2287/memory/last-email-check.json to track seen email IDs.
Only report when there's something actionable. Be efficient.
Current time: Tuesday, February 3rd, 2026 — 11:46 AM (UTC)


Path escapes sandbox root (~): /usr/lib/node_modules/clawdbot/skills/mcporter/SKILL.md


---
name: mcporter
description: Use the mcporter CLI to list, configure, auth, and call MCP servers/tools directly (HTTP or stdio), including ad-hoc servers, config edits, and CLI/type generation.
homepage: http://mcporter.dev
metadata: {"clawdbot":{"emoji":"📦","requires":{"bins":["mcporter"]},"install":[{"id":"node","kind":"node","package":"mcporter","bins":["mcporter"],"label":"Install mcporter (node)"}]}}
---

# mcporter

Use `mcporter` to work with MCP servers directly.

Quick start
- `mcporter list`
- `mcporter list <server> --schema`
- `mcporter call <server.tool> key=value`

Call tools
- Selector: `mcporter call linear.list_issues team=ENG limit:5`
- Function syntax: `mcporter call "linear.create_issue(title: \"Bug\")"`
- Full URL: `mcporter call https://api.example.com/mcp.fetch url:https://example.com`
- Stdio: `mcporter call --stdio "bun run ./server.ts" scrape url=https://example.com`
- JSON payload: `mcporter call <server.tool> --args '{"limit":5}'`

Auth + config
- OAuth: `mcporter auth <server | url> [--reset]`
- Config: `mcporter config list|get|add|remove|import|login|logout`

Daemon
- `mcporter daemon start|status|stop|restart`

Codegen
- CLI: `mcporter generate-cli --server <name>` or `--command <url>`
- Inspect: `mcporter inspect-cli <path> [--json]`
- TS: `mcporter emit-ts <server> --mode client|types`

Notes
- Config default: `./config/mcporter.json` (override with `--config`).
- Prefer `--output json` for machine-readable results.


Command still running (session vivid-dune, pid 2319915). Use process (list/poll/log/write/kill/clear/remove) for follow-up.

[error-handler] Error handlers installed
mcporter 0.7.3 — Listing 17 server(s) (per-server timeout: 30s)
- investigator (offline — unable to reach server, 0.0s)
- skills-sh (offline — unable to reach server, 0.1s)
- fast-port-checker (3 tools, 0.3s)
- llamaswap (2 tools, 0.2s)
- android (offline — unable to reach server, 0.7s)
- ace (18 tools, 0.7s)
- ms-365 (68 tools, 0.7s)
- code-execution-mode (2 tools, 0.8s)
- unified-orchestrator (30 tools, 0.9s)
- memlayer (6 tools, 0.9s)
- omada-mcp-server (17 tools, 0.9s)
- terminator (35 tools, 1.1s)
- onepanel (offline — unable to reach server, 1.0s)
- flowlens (8 tools, 2.7s)


[error-handler] Error handlers installed
mcporter 0.7.3 — Listing 17 server(s) (per-server timeout: 30s)
- investigator (offline — unable to reach server, 0.0s)
- skills-sh (offline — unable to reach server, 0.1s)
- fast-port-checker (3 tools, 0.3s)
- llamaswap (2 tools, 0.2s)
- android (offline — unable to reach server, 0.7s)
- ace (18 tools, 0.7s)
- ms-365 (68 tools, 0.7s)
- code-execution-mode (2 tools, 0.8s)
- unified-orchestrator (30 tools, 0.9s)
- memlayer (6 tools, 0.9s)
- omada-mcp-server (17 tools, 0.9s)
- terminator (35 tools, 1.1s)
- onepanel (offline — unable to reach server, 1.0s)
- flowlens (8 tools, 2.7s)

Process still running.


exec

mcporter list ms-365 --schema --output json 2>/dev/null | head -100


Killed session vivid-dune.


[error-handler] Error handlers installed
{
  "mode": "server",
  "name": "ms-365",
  "status": "ok",
  "durationMs": 768,
  "transport": "STDIO ms-365-mcp-server --toon",
  "source": {
    "kind": "local",
    "path": "/home/crogers2287/.mcporter/mcporter.json"
  },
  "tools": [
    {
      "name": "login",
      "description": "Authenticate with Microsoft using device code flow",
      "inputSchema": {
        "type": "object",
        "properties": {
          "force": {
            "type": "boolean",
            "default": false,
            "description": "Force a new login even if already logged in"
          }
        },
        "additionalProperties": false,
        "$schema": "http://json-schema.org/draft-07/schema#"
      },
      "options": [
        {
          "property": "force",
          "cliName": "force",
          "description": "Force a new login even if already logged in",
          "required": false,
          "type": "boolean",
          "placeholder": "<force:true|false>",
          "exampleValue": "false",
          "defaultValue": false
        }
      ]
    },
    {
      "name": "logout",
      "description": "Log out from Microsoft account",
      "inputSchema": {
        "type": "object",
        "properties": {},
        "$schema": "http://json-schema.org/draft-07/schema#"
      },
      "options": []
    },
    {
      "name": "verify-login",
      "description": "Check current Microsoft authentication status",
      "inputSchema": {
        "type": "object",
        "properties": {},
        "$schema": "http://json-schema.org/draft-07/schema#"
      },
      "options": []
    },
    {
      "name": "list-accounts",
      "description": "List all available Microsoft accounts",
      "inputSchema": {
        "type": "object",
        "properties": {},
        "$schema": "http://json-schema.org/draft-07/schema#"
      },
      "options": []
    },
    {
      "name": "select-account",
      "description": "Select a specific Microsoft account to use",
      "inputSchema": {
        "type": "object",
        "properties": {
          "accountId": {
            "type": "string",
            "description": "The account ID to select"
          }
        },
        "required": [
          "accountId"
        ],
        "additionalProperties": false,
        "$schema": "http://json-schema.org/draft-07/schema#"
      },
      "options": [
        {
          "property": "accountId",
          "cliName": "account-id",
          "description": "The account ID to select",
          "required": true,
          "type": "string",
          "placeholder": "<account-id>",
          "exampleValue": "example-id"
        }
      ]
    },
    {


mcporter call ms-365.verify-login --output json 2>/dev/null


[error-handler] Error handlers installed
{
  "success": true,
  "message": "Login successful",
  "userData": {
    "displayName": "Chad Rogers",
    "userPrincipalName": "chad@cfrfl.com"
  }
}


mcporter call ms-365.list_emails --output json 2>/dev/null | jq -r '.emails[] | select(.isRead == false) | {id, subject, from, receivedDateTime, importance}' | head -100


jq: parse error: Invalid numeric literal at line 1, column 15


mcporter call ms-365.list_emails filter="isRead eq false" --output json 2>/dev/null


[error-handler] Error handlers installed
{
  content: [
    {
      type: 'text',
      text: 'MCP error -32602: Tool list_emails not found'
    }
  ],
  isError: true
}


mcporter list ms-365 --output json 2>/dev/null | jq -r '.tools[].name' | grep -i email


jq: parse error: Invalid numeric literal at line 1, column 15

Command exited with code 1


mcporter list ms-365 --output json 2>/dev/null