From aef892b63393054bf8f9c45c02188a470040f8af Mon Sep 17 00:00:00 2001 From: Subotiz Date: Wed, 24 Jun 2026 14:57:22 +0800 Subject: [PATCH 1/4] feat: add Subotiz billing & payments plugin --- .github/plugin/marketplace.json | 6 +++ docs/README.plugins.md | 1 + docs/README.skills.md | 1 + plugins/subotiz/.github/plugin/plugin.json | 27 +++++++++++ plugins/subotiz/.mcp.json | 16 +++++++ plugins/subotiz/README.md | 50 ++++++++++++++++++++ skills/use-subotiz/SKILL.md | 54 ++++++++++++++++++++++ 7 files changed, 155 insertions(+) create mode 100644 plugins/subotiz/.github/plugin/plugin.json create mode 100644 plugins/subotiz/.mcp.json create mode 100644 plugins/subotiz/README.md create mode 100644 skills/use-subotiz/SKILL.md diff --git a/.github/plugin/marketplace.json b/.github/plugin/marketplace.json index e6eb1711a..e52d2c1fd 100644 --- a/.github/plugin/marketplace.json +++ b/.github/plugin/marketplace.json @@ -919,6 +919,12 @@ "description": "Premium planning, thrifty implementation", "version": "1.0.0" }, + { + "name": "subotiz", + "source": "subotiz", + "description": "Connect Copilot to Subotiz — a global subscription growth engine and Merchant-of-Record platform. Manage usage-based billing, subscriptions, global payments, tax compliance, invoices, refunds and revenue operations across 180+ countries and 150+ currencies via natural language.", + "version": "0.0.3" + }, { "name": "swift-mcp-development", "source": "swift-mcp-development", diff --git a/docs/README.plugins.md b/docs/README.plugins.md index 78780526d..c820b20f0 100644 --- a/docs/README.plugins.md +++ b/docs/README.plugins.md @@ -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 Copilot to Subotiz — a global subscription growth engine and Merchant-of-Record platform. Manage usage-based billing, subscriptions, global payments, tax compliance, invoices, refunds and revenue operations across 180+ countries and 150+ currencies via natural language. | 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 | diff --git a/docs/README.skills.md b/docs/README.skills.md index 361c6be64..085442f74 100644 --- a/docs/README.skills.md +++ b/docs/README.skills.md @@ -381,6 +381,7 @@ See [CONTRIBUTING.md](../CONTRIBUTING.md#adding-skills) for guidelines on how to | [update-llms](../skills/update-llms/SKILL.md)
`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)
`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)
`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)
`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)
`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)
`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)
`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 | diff --git a/plugins/subotiz/.github/plugin/plugin.json b/plugins/subotiz/.github/plugin/plugin.json new file mode 100644 index 000000000..f12624512 --- /dev/null +++ b/plugins/subotiz/.github/plugin/plugin.json @@ -0,0 +1,27 @@ +{ + "name": "subotiz", + "description": "Connect Copilot to Subotiz — a global subscription growth engine and Merchant-of-Record platform. Manage usage-based billing, subscriptions, global payments, tax compliance, invoices, refunds and revenue operations across 180+ countries and 150+ currencies via natural language.", + "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/" + ] +} diff --git a/plugins/subotiz/.mcp.json b/plugins/subotiz/.mcp.json new file mode 100644 index 000000000..1e517239d --- /dev/null +++ b/plugins/subotiz/.mcp.json @@ -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}" + } + } + } +} diff --git a/plugins/subotiz/README.md b/plugins/subotiz/README.md new file mode 100644 index 000000000..5689c659c --- /dev/null +++ b/plugins/subotiz/README.md @@ -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 [Subotiz homepage](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: [https://api.sandbox.subotiz.com/mcp](https://api.sandbox.subotiz.com/mcp) + +* prod: [https://api.subotiz.com/mcp](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 [Authentication guide](https://developer.subotiz.com/v1.0-zh-cn/reference/authentication-1). diff --git a/skills/use-subotiz/SKILL.md b/skills/use-subotiz/SKILL.md new file mode 100644 index 000000000..e090df20e --- /dev/null +++ b/skills/use-subotiz/SKILL.md @@ -0,0 +1,54 @@ +--- +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. + +## 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 From 00b360f8e71c9cb74b97176aeb73dd2015fd309c Mon Sep 17 00:00:00 2001 From: Subotiz Date: Wed, 24 Jun 2026 15:17:12 +0800 Subject: [PATCH 2/4] chore: allow 'mor' (Merchant of Record) in codespell --- .codespellrc | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.codespellrc b/.codespellrc index c554845f3..483f57e0b 100644 --- a/.codespellrc +++ b/.codespellrc @@ -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 From 46b8412a4bd07ebbfafe3926fb3383e1284673f5 Mon Sep 17 00:00:00 2001 From: Subotiz Date: Wed, 24 Jun 2026 15:19:06 +0800 Subject: [PATCH 3/4] docs: use concise Subotiz plugin description --- .github/plugin/marketplace.json | 2 +- docs/README.plugins.md | 2 +- plugins/subotiz/.github/plugin/plugin.json | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/plugin/marketplace.json b/.github/plugin/marketplace.json index e52d2c1fd..6dc8c046e 100644 --- a/.github/plugin/marketplace.json +++ b/.github/plugin/marketplace.json @@ -922,7 +922,7 @@ { "name": "subotiz", "source": "subotiz", - "description": "Connect Copilot to Subotiz — a global subscription growth engine and Merchant-of-Record platform. Manage usage-based billing, subscriptions, global payments, tax compliance, invoices, refunds and revenue operations across 180+ countries and 150+ currencies via natural language.", + "description": "Connect to Subotiz MCP to handle subscriptions, usage billing, payments, taxes, and invoices — and drive revenue growth.", "version": "0.0.3" }, { diff --git a/docs/README.plugins.md b/docs/README.plugins.md index c820b20f0..608f806ce 100644 --- a/docs/README.plugins.md +++ b/docs/README.plugins.md @@ -88,7 +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 Copilot to Subotiz — a global subscription growth engine and Merchant-of-Record platform. Manage usage-based billing, subscriptions, global payments, tax compliance, invoices, refunds and revenue operations across 180+ countries and 150+ currencies via natural language. | 1 items | subotiz, payments, subscriptions, usage-based-billing, invoices, refunds, merchant-of-record, mor, tax-compliance, mcp | +| [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 | diff --git a/plugins/subotiz/.github/plugin/plugin.json b/plugins/subotiz/.github/plugin/plugin.json index f12624512..c806f8c02 100644 --- a/plugins/subotiz/.github/plugin/plugin.json +++ b/plugins/subotiz/.github/plugin/plugin.json @@ -1,6 +1,6 @@ { "name": "subotiz", - "description": "Connect Copilot to Subotiz — a global subscription growth engine and Merchant-of-Record platform. Manage usage-based billing, subscriptions, global payments, tax compliance, invoices, refunds and revenue operations across 180+ countries and 150+ currencies via natural language.", + "description": "Connect to Subotiz MCP to handle subscriptions, usage billing, payments, taxes, and invoices — and drive revenue growth.", "version": "0.0.3", "keywords": [ "subotiz", From 45d475918086a204392ac0dd158a5866d94f9904 Mon Sep 17 00:00:00 2001 From: Subotiz Date: Wed, 24 Jun 2026 15:32:25 +0800 Subject: [PATCH 4/4] docs: add concrete examples to use-subotiz skill --- skills/use-subotiz/SKILL.md | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/skills/use-subotiz/SKILL.md b/skills/use-subotiz/SKILL.md index e090df20e..3c361743e 100644 --- a/skills/use-subotiz/SKILL.md +++ b/skills/use-subotiz/SKILL.md @@ -32,6 +32,34 @@ Apply this skill when the user: 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: