QuotaPath MCP by usefulapi

Read deals, payouts, plans, teams and users, and create, update or delete deals in QuotaPath.

Should I use this

Quality & Safety

A
Description quality
98%
Schema completeness
94%
Naming quality
77%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Findings (2)

  • LOWTool 'quotapath_list_resolved_payouts' name length outside 3-30 rangein quotapath_list_resolved_payouts
  • LOWTool 'quotapath_list_unresolved_payouts' name length outside 3-30 rangein quotapath_list_unresolved_payouts

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~3,163Tokens (tool definitions)
~2.2 KBTypical response size
Significant attention impact (2.47% of 128k context)

This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.

Install

One-Click Install

Add this to your `claude_desktop_config.json` file:

{
  "mcpServers": {
    "quotapath": {
      "url": "https://quotapath.usefulapi.io/mcp"
    }
  }
}

Remote endpoints

https://quotapath.usefulapi.io/mcpstreamable-http

What it can do

Tool inventory

Tools (12)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟢quotapath_list_deals(id, integration_id, path_id, user_email, limit, ...)

List deals in the QuotaPath workspace. Filter by id, integration_id (your system's id), path_id or user_email (deal owner). Uses GET /v1/deal/.

Input Schema

{
  "type": "object",
  "properties": {
    "id": {
      "description": "Filter by QuotaPath deal id.",
      "type": "string"
    },
    "integration_id": {
      "description": "Filter by your system's id for the deal.",
      "type": "string"
    },
    "path_id": {
      "description": "Filter by path uuid.",
      "type": "string"
    },
    "user_email": {
      "description": "Filter by deal owner email.",
      "type": "string"
    },
    "limit": {
      "description": "Maximum records to return (vendor default when omitted).",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    },
    "offset": {
      "description": "Records to skip, for paging.",
      "type": "integer",
      "minimum": 0,
      "maximum": 9007199254740991
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢quotapath_get_deal(deal_id)

Get one deal by uuid, with its deal values, metadata and state. Uses GET /v1/deal/{uuid}/.

Input Schema

{
  "type": "object",
  "properties": {
    "deal_id": {
      "type": "string",
      "minLength": 1,
      "description": "The deal uuid (from quotapath_list_deals)."
    }
  },
  "required": [
    "deal_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🔴quotapath_create_deal(name, user_email, deal_values, integration_id, date, ...)

Create one deal in QuotaPath, with its owner, amounts per path and state. This changes commission data: confirm the owner, path ids and amounts first. Uses POST /v1/deal/.

Input Schema

{
  "type": "object",
  "properties": {
    "name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 255,
      "description": "Deal name (up to 255 characters)."
    },
    "user_email": {
      "type": "string",
      "format": "email",
      "pattern": "^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$",
      "description": "Email of the deal owner (a QuotaPath user)."
    },
    "deal_values": {
      "minItems": 1,
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "value": {
            "type": "number",
            "description": "Deal amount as a number."
          },
          "path_id": {
            "type": "string",
            "minLength": 1,
            "description": "Path uuid this amount applies to (from quotapath_list_plans)."
          }
        },
        "required": [
          "value",
          "path_id"
        ]
      },
      "description": "Amounts per path. Each needs path_id and value."
    },
    "integration_id": {
      "description": "Your system's id for this deal. Keeps the deal linked to your CRM record.",
      "type": "string",
      "minLength": 1
    },
    "date": {
      "description": "Deal date (yyyy-mm-dd).",
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
    },
    "state": {
      "description": "Deal state.",
      "type": "string",
      "enum": [
        "open",
        "closed",
        "lost"
      ]
    },
    "admin_locked": {
      "description": "Lock the deal so only admins can change it.",
      "type": "boolean"
    },
    "metadata": {
      "type": "object",
      "properties": {
        "date_field_1": {
          "type": "string",
          "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
          "description": "Date as yyyy-mm-dd."
        },
        "date_field_2": {
          "type": "string",
          "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
          "description": "Date as yyyy-mm-dd."
        },
        "number_field_1": {
          "type": "string",
          "description": "Decimal number as a string."
        }
      },
      "required": [
        "date_field_1",
        "date_field_2",
        "number_field_1"
      ],
      "description": "Optional custom fields used by the plan's paths."
    }
  },
  "required": [
    "name",
    "user_email",
    "deal_values"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🔴quotapath_bulk_create_deals(deals)

Create many deals in one call. Each item uses the same fields as quotapath_create_deal. This changes commission data. Uses POST /v1/deal/bulk/.

Input Schema

{
  "type": "object",
  "properties": {
    "deals": {
      "minItems": 1,
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "minLength": 1,
            "maxLength": 255,
            "description": "Deal name (up to 255 characters)."
          },
          "user_email": {
            "type": "string",
            "format": "email",
            "pattern": "^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$",
            "description": "Email of the deal owner (a QuotaPath user)."
          },
          "deal_values": {
            "minItems": 1,
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "value": {
                  "type": "number",
                  "description": "Deal amount as a number."
                },
                "path_id": {
                  "type": "string",
                  "minLength": 1,
                  "description": "Path uuid this amount applies to (from quotapath_list_plans)."
                }
              },
              "required": [
                "value",
                "path_id"
              ]
            },
            "description": "Amounts per path. Each needs path_id and value."
          },
          "integration_id": {
            "description": "Your system's id for this deal. Keeps the deal linked to your CRM record.",
            "type": "string",
            "minLength": 1
          },
          "date": {
            "description": "Deal date (yyyy-mm-dd).",
            "type": "string",
            "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
          },
          "state": {
            "description": "Deal state.",
            "type": "string",
            "enum": [
              "open",
              "closed",
              "lost"
            ]
          },
          "admin_locked": {
            "description": "Lock the deal so only admins can change it.",
            "type": "boolean"
          },
          "metadata": {
            "type": "object",
            "properties": {
              "date_field_1": {
                "type": "string",
                "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
                "description": "Date as yyyy-mm-dd."
              },
              "date_field_2": {
                "type": "string",
                "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
                "description": "Date as yyyy-mm-dd."
              },
              "number_field_1": {
                "type": "string",
                "description": "Decimal number as a string."
              }
            },
            "required": [
              "date_field_1",
              "date_field_2",
              "number_field_1"
            ],
            "description": "Optional custom fields used by the plan's paths."
          }
        },
        "required": [
          "name",
          "user_email",
          "deal_values"
        ]
      },
      "description": "Deals to create."
    }
  },
  "required": [
    "deals"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟡quotapath_update_deal(deal_id, name, user_email, deal_values, integration_id, ...)

Change some fields of one deal. Send only the fields to change; the others stay as they are. Uses PATCH /v1/deal/{uuid}/.

Input Schema

{
  "type": "object",
  "properties": {
    "deal_id": {
      "type": "string",
      "minLength": 1,
      "description": "The deal uuid (from quotapath_list_deals)."
    },
    "name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 255,
      "description": "Deal name (up to 255 characters)."
    },
    "user_email": {
      "type": "string",
      "format": "email",
      "pattern": "^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$",
      "description": "Email of the deal owner (a QuotaPath user)."
    },
    "deal_values": {
      "minItems": 1,
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "value": {
            "type": "number",
            "description": "Deal amount as a number."
          },
          "path_id": {
            "type": "string",
            "minLength": 1,
            "description": "Path uuid this amount applies to (from quotapath_list_plans)."
          }
        },
        "required": [
          "value",
          "path_id"
        ]
      },
      "description": "Amounts per path. Each needs path_id and value."
    },
    "integration_id": {
      "description": "Your system's id for this deal. Keeps the deal linked to your CRM record.",
      "type": "string",
      "minLength": 1
    },
    "date": {
      "description": "Deal date (yyyy-mm-dd).",
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
    },
    "state": {
      "description": "Deal state.",
      "type": "string",
      "enum": [
        "open",
        "closed",
        "lost"
      ]
    },
    "admin_locked": {
      "description": "Lock the deal so only admins can change it.",
      "type": "boolean"
    },
    "metadata": {
      "type": "object",
      "properties": {
        "date_field_1": {
          "type": "string",
          "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
          "description": "Date as yyyy-mm-dd."
        },
        "date_field_2": {
          "type": "string",
          "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
          "description": "Date as yyyy-mm-dd."
        },
        "number_field_1": {
          "type": "string",
          "description": "Decimal number as a string."
        }
      },
      "required": [
        "date_field_1",
        "date_field_2",
        "number_field_1"
      ],
      "description": "Optional custom fields used by the plan's paths."
    }
  },
  "required": [
    "deal_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🔴quotapath_delete_deal(deal_id, confirm)

Remove one deal from QuotaPath. This cannot be undone through this server. Check the deal with quotapath_get_deal first, and get the user's OK. Uses DELETE /v1/deal/{uuid}/.

Input Schema

{
  "type": "object",
  "properties": {
    "deal_id": {
      "type": "string",
      "minLength": 1,
      "description": "The deal uuid (from quotapath_list_deals)."
    },
    "confirm": {
      "type": "boolean",
      "const": true,
      "description": "Must be true. Set it only after the user confirms this deletion."
    }
  },
  "required": [
    "deal_id",
    "confirm"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢quotapath_list_payouts(updated_since, limit, offset)

List all payouts, resolved and unresolved. Use updated_since to fetch only changes since a Unix time in seconds. Uses GET /v1/payout/.

Input Schema

{
  "type": "object",
  "properties": {
    "updated_since": {
      "description": "Unix timestamp in seconds. Returns records updated after it.",
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991
    },
    "limit": {
      "description": "Maximum records to return (vendor default when omitted).",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    },
    "offset": {
      "description": "Records to skip, for paging.",
      "type": "integer",
      "minimum": 0,
      "maximum": 9007199254740991
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢quotapath_list_resolved_payouts(updated_since, limit, offset)

List resolved payouts, the ones that can go to your external software systems. Use updated_since to fetch only changes. Uses GET /v1/payout/resolved/.

Input Schema

{
  "type": "object",
  "properties": {
    "updated_since": {
      "description": "Unix timestamp in seconds. Returns records updated after it.",
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991
    },
    "limit": {
      "description": "Maximum records to return (vendor default when omitted).",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    },
    "offset": {
      "description": "Records to skip, for paging.",
      "type": "integer",
      "minimum": 0,
      "maximum": 9007199254740991
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢quotapath_list_unresolved_payouts(limit, offset)

List payouts that are not resolved yet. Uses GET /v1/payout/unresolved/.

Input Schema

{
  "type": "object",
  "properties": {
    "limit": {
      "description": "Maximum records to return (vendor default when omitted).",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    },
    "offset": {
      "description": "Records to skip, for paging.",
      "type": "integer",
      "minimum": 0,
      "maximum": 9007199254740991
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢quotapath_list_plans(limit, offset)

List compensation plans with their assignments and paths. Path uuids from here go into deal values. Uses GET /v1/plan/.

Input Schema

{
  "type": "object",
  "properties": {
    "limit": {
      "description": "Maximum records to return (vendor default when omitted).",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    },
    "offset": {
      "description": "Records to skip, for paging.",
      "type": "integer",
      "minimum": 0,
      "maximum": 9007199254740991
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢quotapath_list_teams(limit, offset)

List teams in the QuotaPath workspace with their current members and managers. Uses GET /v1/team/.

Input Schema

{
  "type": "object",
  "properties": {
    "limit": {
      "description": "Maximum records to return (vendor default when omitted).",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    },
    "offset": {
      "description": "Records to skip, for paging.",
      "type": "integer",
      "minimum": 0,
      "maximum": 9007199254740991
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢quotapath_list_users(limit, offset)

List users in the QuotaPath workspace (name and email). Use the email as user_email on a deal. Uses GET /v1/user/.

Input Schema

{
  "type": "object",
  "properties": {
    "limit": {
      "description": "Maximum records to return (vendor default when omitted).",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    },
    "offset": {
      "description": "Records to skip, for paging.",
      "type": "integer",
      "minimum": 0,
      "maximum": 9007199254740991
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded12 tools