{
  "schema_version": "1.0",
  "name": "expensepro",
  "title": "ExpensePro Agent Skills",
  "description": "Named workflows for managing expenses, receipts, vendors, and approvals in ExpensePro.",
  "publisher": {
    "name": "ExpensePro",
    "url": "https://expensepro.ai"
  },
  "auth": {
    "type": "oauth2",
    "protected_resource": "https://expensepro.ai/.well-known/oauth-protected-resource"
  },
  "transport": {
    "type": "mcp-streamable-http",
    "url": "https://expensepro.ai/mcp"
  },
  "skills": [
    {
      "name": "capture-receipt",
      "title": "Capture and extract a receipt",
      "description": "Upload a receipt or invoice (PDF or image), run AI extraction, and return structured fields (vendor, amount, dates, line items, tax). Detects duplicates against existing documents.",
      "inputs": [
        {
          "name": "file",
          "type": "file",
          "required": true,
          "description": "PDF or image of the receipt/invoice"
        },
        {
          "name": "organization_id",
          "type": "string",
          "required": false
        }
      ],
      "outputs": [
        "document_id",
        "extraction",
        "duplicate_of"
      ],
      "scopes": [
        "documents:write"
      ]
    },
    {
      "name": "find-document",
      "title": "Find a document",
      "description": "Find an expense document by vendor, amount range, date range, or free-text search.",
      "inputs": [
        {
          "name": "query",
          "type": "string",
          "required": false
        },
        {
          "name": "vendor",
          "type": "string",
          "required": false
        },
        {
          "name": "min_amount",
          "type": "number",
          "required": false
        },
        {
          "name": "max_amount",
          "type": "number",
          "required": false
        },
        {
          "name": "date_from",
          "type": "string",
          "required": false,
          "format": "date"
        },
        {
          "name": "date_to",
          "type": "string",
          "required": false,
          "format": "date"
        },
        {
          "name": "status",
          "type": "string",
          "enum": [
            "pending",
            "approved",
            "synced",
            "error"
          ],
          "required": false
        }
      ],
      "outputs": [
        "documents"
      ],
      "scopes": [
        "documents:read"
      ]
    },
    {
      "name": "approve-document",
      "title": "Approve or reject a pending document",
      "description": "Act on an approval request that is assigned to the authenticated user.",
      "inputs": [
        {
          "name": "approval_id",
          "type": "string",
          "required": true
        },
        {
          "name": "decision",
          "type": "string",
          "enum": [
            "approve",
            "reject"
          ],
          "required": true
        },
        {
          "name": "note",
          "type": "string",
          "required": false
        }
      ],
      "outputs": [
        "approval"
      ],
      "scopes": [
        "documents:write"
      ]
    },
    {
      "name": "spend-report",
      "title": "Spend report",
      "description": "Aggregate spend by vendor, category, or period for reporting.",
      "inputs": [
        {
          "name": "group_by",
          "type": "string",
          "enum": [
            "vendor",
            "category",
            "month"
          ],
          "required": true
        },
        {
          "name": "date_from",
          "type": "string",
          "required": false,
          "format": "date"
        },
        {
          "name": "date_to",
          "type": "string",
          "required": false,
          "format": "date"
        },
        {
          "name": "currency",
          "type": "string",
          "required": false
        }
      ],
      "outputs": [
        "rows",
        "total"
      ],
      "scopes": [
        "reports:read"
      ]
    },
    {
      "name": "sync-to-quickbooks",
      "title": "Sync approved documents to QuickBooks",
      "description": "Push approved bills, vendors, and tax codes to a connected QuickBooks Online account.",
      "inputs": [
        {
          "name": "document_ids",
          "type": "array",
          "items": {
            "type": "string"
          },
          "required": false,
          "description": "Defaults to all approved-but-unsynced documents."
        }
      ],
      "outputs": [
        "synced",
        "errors"
      ],
      "scopes": [
        "documents:write"
      ]
    }
  ],
  "documentation_url": "https://expensepro.ai/docs/agent-skills"
}