Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 3 additions & 1 deletion .codespellrc
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,9 @@

# ans - bash and powershell variable short for answer

ignore-words-list = numer,wit,aks,edn,ser,ois,gir,rouge,categor,aline,ative,afterall,deques,dateA,dateB,TE,FillIn,alle,vai,LOD,InOut,pixelX,aNULL,Wee,Sherif,queston,Vertexes,nin,FO,CAF,Parth,ans
# mor - Merchant of Record (MoR) abbreviation used by the Subotiz billing plugin

ignore-words-list = numer,wit,aks,edn,ser,ois,gir,rouge,categor,aline,ative,afterall,deques,dateA,dateB,TE,FillIn,alle,vai,LOD,InOut,pixelX,aNULL,Wee,Sherif,queston,Vertexes,nin,FO,CAF,Parth,ans,mor

# Skip certain files and directories

Expand Down
6 changes: 6 additions & 0 deletions .github/plugin/marketplace.json
Original file line number Diff line number Diff line change
Expand Up @@ -919,6 +919,12 @@
"description": "Premium planning, thrifty implementation",
"version": "1.0.0"
},
{
"name": "subotiz",
"source": "subotiz",
"description": "Connect to Subotiz MCP to handle subscriptions, usage billing, payments, taxes, and invoices — and drive revenue growth.",
"version": "0.0.3"
},
{
"name": "swift-mcp-development",
"source": "swift-mcp-development",
Expand Down
1 change: 1 addition & 0 deletions docs/README.plugins.md
Original file line number Diff line number Diff line change
Expand Up @@ -88,6 +88,7 @@ See [CONTRIBUTING.md](../CONTRIBUTING.md#adding-plugins) for guidelines on how t
| [skill-image-gen](../plugins/skill-image-gen/README.md) | Generate images using AI directly from your coding workflow. Supports OpenAI (gpt-image-2) and Google Gemini. BYO API key — the skill guides you through setup on first use. | 1 items | image-generation, openai, gemini, ai, art, sprites, textures, icons |
| [software-engineering-team](../plugins/software-engineering-team/README.md) | 7 specialized agents covering the full software development lifecycle from UX design and architecture to security and DevOps. | 7 items | team, enterprise, security, devops, ux, architecture, product, ai-ethics |
| [structured-autonomy](../plugins/structured-autonomy/README.md) | Premium planning, thrifty implementation | 3 items | |
| [subotiz](../plugins/subotiz/README.md) | Connect to Subotiz MCP to handle subscriptions, usage billing, payments, taxes, and invoices — and drive revenue growth. | 1 items | subotiz, payments, subscriptions, usage-based-billing, invoices, refunds, merchant-of-record, mor, tax-compliance, mcp |
| [swift-mcp-development](../plugins/swift-mcp-development/README.md) | Comprehensive collection for building Model Context Protocol servers in Swift using the official MCP Swift SDK with modern concurrency features. | 2 items | swift, mcp, model-context-protocol, server-development, sdk, ios, macos, concurrency, actor, async-await |
| [technical-spike](../plugins/technical-spike/README.md) | Tools for creation, management and research of technical spikes to reduce unknowns and assumptions before proceeding to specification and implementation of solutions. | 2 items | technical-spike, assumption-testing, validation, research |
| [testing-automation](../plugins/testing-automation/README.md) | Comprehensive collection for writing tests, test automation, and test-driven development including unit tests, integration tests, and end-to-end testing strategies. | 9 items | testing, tdd, automation, unit-tests, integration, playwright, jest, nunit |
Expand Down
1 change: 1 addition & 0 deletions docs/README.skills.md
Original file line number Diff line number Diff line change
Expand Up @@ -381,6 +381,7 @@ See [CONTRIBUTING.md](../CONTRIBUTING.md#adding-skills) for guidelines on how to
| [update-llms](../skills/update-llms/SKILL.md)<br />`gh skills install github/awesome-copilot update-llms` | Update the llms.txt file in the root folder to reflect changes in documentation or specifications following the llms.txt specification at https://llmstxt.org/ | None |
| [update-markdown-file-index](../skills/update-markdown-file-index/SKILL.md)<br />`gh skills install github/awesome-copilot update-markdown-file-index` | Update a markdown file section with an index/table of files from a specified folder. | None |
| [update-specification](../skills/update-specification/SKILL.md)<br />`gh skills install github/awesome-copilot update-specification` | Update an existing specification file for the solution, optimized for Generative AI consumption based on new requirements or updates to any existing code. | None |
| [use-subotiz](../skills/use-subotiz/SKILL.md)<br />`gh skills install github/awesome-copilot use-subotiz` | Operate Subotiz billing and payments through the subotiz MCP server: list/create customers, products and prices, inspect subscriptions, trades, refunds, invoices and webhook events. Use when the user asks to manage subscriptions, set up usage-based billing, create products/prices, look up payments or invoices, issue or inspect refunds, or work with Subotiz / Merchant-of-Record revenue operations. | None |
| [vardoger-analyze](../skills/vardoger-analyze/SKILL.md)<br />`gh skills install github/awesome-copilot vardoger-analyze` | Use when the user asks to personalize the GitHub Copilot CLI assistant, adapt Copilot to their style, use vardoger, or analyze their Copilot CLI conversation history. Reads the local session directory at `~/.copilot/session-state/`, extracts recurring preferences and conventions, and writes a fenced personalization block into `~/.copilot/copilot-instructions.md`. Runs entirely on the user's machine via the local `vardoger` CLI (`pipx install vardoger`); no network calls and no uploads. Triggers: 'personalize my copilot', 'analyze my copilot history', 'tailor copilot to me', 'run vardoger', 'update my copilot instructions from history', 'make copilot learn my style'. | None |
| [vscode-ext-commands](../skills/vscode-ext-commands/SKILL.md)<br />`gh skills install github/awesome-copilot vscode-ext-commands` | Guidelines for contributing commands in VS Code extensions. Indicates naming convention, visibility, localization and other relevant attributes, following VS Code extension development guidelines, libraries and good practices | None |
| [vscode-ext-localization](../skills/vscode-ext-localization/SKILL.md)<br />`gh skills install github/awesome-copilot vscode-ext-localization` | Guidelines for proper localization of VS Code extensions, following VS Code extension development guidelines, libraries and good practices | None |
Expand Down
27 changes: 27 additions & 0 deletions plugins/subotiz/.github/plugin/plugin.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
{
"name": "subotiz",
"description": "Connect to Subotiz MCP to handle subscriptions, usage billing, payments, taxes, and invoices — and drive revenue growth.",
"version": "0.0.3",
"keywords": [
"subotiz",
"payments",
"subscriptions",
"usage-based-billing",
"invoices",
"refunds",
"merchant-of-record",
"mor",
"tax-compliance",
"mcp"
],
"author": {
"name": "Subotiz",
"url": "https://www.subotiz.com"
},
"homepage": "https://www.subotiz.com",
"repository": "https://github.com/github/awesome-copilot",
"license": "MIT",
"skills": [
"./skills/use-subotiz/"
]
}
16 changes: 16 additions & 0 deletions plugins/subotiz/.mcp.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
{
"mcpServers": {
"subotiz": {
"url": "https://api.subotiz.com/mcp",
"headers": {
"Authorization": "Bearer ${SUBOTIZ_API_KEY}"
}
},
"subotiz-sandbox": {
"url": "https://api.sandbox.subotiz.com/mcp",
"headers": {
"Authorization": "Bearer ${SUBOTIZ_SANDBOX_API_KEY}"
}
}
}
}
50 changes: 50 additions & 0 deletions plugins/subotiz/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
Connect to Subotiz MCP to handle subscriptions, usage billing, payments, taxes, and invoices — and drive revenue growth.



Subotiz is a global **subscription growth engine** and **MoR** platform built for **AI products, SaaS, and digital businesses**. Supporting over 180 countries and 150+ currencies, Subotiz enables developers to manage **usage-based billing, subscriptions, global payments, tax compliance, and revenue operations** all within a single platform. By integrating the Subotiz MCP, you can let your agents manage product pricing, handle subscriptions, process transactions or refunds, issue invoices to accelerate your monetization.



**Learn more**: For an overview of Subotiz products and capabilities, visit the [<u>Subotiz homepage</u>](https://www.subotiz.com/).

***

### Prerequisites

1. A host that supports Streamable HTTP MCP (e.g. VS Code 1.101+, Claude Desktop, Cursor, Trae, etc.)

2. A valid Subotiz access token

***

### Subotiz MCP URL

* sandbox: [<u>https://api.sandbox.subotiz.com/mcp</u>](https://api.sandbox.subotiz.com/mcp)

* prod: [<u>https://api.subotiz.com/mcp</u>](https://api.subotiz.com/mcp)

***

### MCP Configuration

When connecting to the official hosted service, you only need to configure the URL and `Authorization: Bearer`; no other request headers are required.

Cursor example (add to Cursor’s MCP settings):

```json
{
"mcpServers": {
"my-remote-server": {
"url": "{{MCP_URL}}",
"headers": {
"Authorization": "Bearer YOUR_TOKEN_HERE"
}
}
}
}
```

Replace `{{MCP_URL}}` with the MCP URL for your target environment and `{{YOUR_TOKEN_HERE}}` with your Subotiz access token. In hosts such as VS Code, Cursor, or Claude Desktop, merge the above into their respective MCP configuration (e.g. `servers` or `mcpServers`) to use it.

Obtaining an API Key: The token in the configuration is your Subotiz API Key. For steps to create one and authentication details, see the [<u>Authentication guide</u>](https://developer.subotiz.com/v1.0-zh-cn/reference/authentication-1).
82 changes: 82 additions & 0 deletions skills/use-subotiz/SKILL.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,82 @@
---
name: use-subotiz
description: 'Operate Subotiz billing and payments through the subotiz MCP server: list/create customers, products and prices, inspect subscriptions, trades, refunds, invoices and webhook events. Use when the user asks to manage subscriptions, set up usage-based billing, create products/prices, look up payments or invoices, issue or inspect refunds, or work with Subotiz / Merchant-of-Record revenue operations.'
---

# Subotiz Billing & Payments

Use the `subotiz` MCP server for all Subotiz operations. Do not rely on training data for Subotiz endpoints, parameters, or pricing models — query the server's tools and developer docs instead.

## When to Apply

Apply this skill when the user:
- Manages subscriptions, plans, or usage-based billing on Subotiz
- Creates or lists products and prices
- Looks up customers, payments (trades), invoices, or webhook events
- Issues or inspects refunds
- Asks anything about Subotiz revenue operations or Merchant-of-Record flows

## Tools

| Tool | Purpose |
|------|---------|
| `list_customer` / `create_customer` | List or create customers |
| `list_products` / `create_product` | List or create products |
| `list_prices` / `create_price` | List or create prices |
| `list_subscription` | List subscriptions |
| `list_trades` | List payments/transactions |
| `list_refund` | List refunds for a trade |
| `list_invoice` | List invoices |
| `list_webhook_event_v2` | List webhook events (v2) |
| `get_llm_doc` / `get_llm_full_doc` | Fetch Subotiz developer documentation |

When unsure about parameters or an endpoint not listed above, call `get_llm_doc` (condensed) or `get_llm_full_doc` (full) before guessing.

## Example Workflow

Set the API key for the environment you target before any call:

```bash
export SUBOTIZ_API_KEY="sk_live_..." # production → subotiz
export SUBOTIZ_SANDBOX_API_KEY="sk_test_..." # sandbox → subotiz-sandbox
```

Read-only investigation — "show a customer's active subscriptions and recent payments":

```text
list_customer(email="alex@example.com") # resolve the customer id
list_subscription(customer_id="cus_123", status="active")
list_trades(customer_id="cus_123", limit=5)
list_refund(trade_id="trd_456") # only if a refund is in question
```

Creating a billable resource — restate the payload, get explicit confirmation, then call:

```text
# 1. Confirm with the user first (never auto-create):
# create_product "Pro Plan" -> create_price 2900 USD / month
# 2. Only after an explicit "yes":
create_product(name="Pro Plan", description="Pro tier")
create_price(product_id="prod_789", unit_amount=2900, currency="USD", recurring_interval="month")
```

## Safety Rules (payment-grade)

Subotiz handles real money. Treat write operations as high-risk:

1. **Confirm before any write.** Before `create_customer`, `create_product`, `create_price`, or any mutating action, restate the exact payload to the user and get explicit confirmation. Never auto-create billable resources.
2. **Refunds and charges are irreversible.** Always echo amount, currency, and the target trade/customer, and require an explicit "yes" before proceeding.
3. **Never log or echo the API key.** The token lives in the `Authorization` header / `SUBOTIZ_API_KEY` env var — never print it, never write it to files or commits.
4. **Default to read-only for discovery.** Use `list_*` tools to inspect state before proposing any change.
5. **Sandbox first.** This plugin ships two servers — `subotiz` (production) and `subotiz-sandbox`. For any experimentation or destructive testing, prefer the `subotiz-sandbox` tools so no real money or live customer data is touched.

## Setup

This plugin ships two remote MCP servers via `.mcp.json`:

| Server | Environment | API key env var |
|--------|-------------|-----------------|
| `subotiz` | Production | `SUBOTIZ_API_KEY` |
| `subotiz-sandbox` | Sandbox / testing | `SUBOTIZ_SANDBOX_API_KEY` |

The user only needs to set the key(s) for the environment(s) they use; the other server simply stays disconnected (harmless). If a tool call returns `401 Unauthorized`, the matching key is missing, expired, or lacks the `Bearer ` prefix — tell the user to set/rotate the right env var. Key creation: https://developer.subotiz.com/v1.0-zh-cn/reference/authentication-1
Loading