@buygolinks/mcp 0.24.0 → 0.25.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -72,6 +72,7 @@ Most MCP clients use the same shape. Point them at the `npx -y @buygolinks/mcp`
72
72
  | `create_domain` | Register a new branded domain (e.g. `go.acme.com`). Returns the CNAME target. |
73
73
  | `verify_domain` | Force a fresh Cloudflare status check after DNS is added. |
74
74
  | `delete_domain` | Remove a branded domain. |
75
+ | `get_universal_postback_url` | Get the account's **universal postback URL** (Voluum-style, `/postback/u/{token}`): ONE URL that works for every campaign and every network. It matches the click by `clickid` (alias `cid`) and credits whichever campaign the click belongs to — paste it once into any network's S2S settings or your own webhook (n8n, Zapier, store order webhooks) and never update it again. Optional `payout`, `currency`, `txid` params. Prefer this over per-campaign/per-network postbacks unless you want campaign-scoped validation. |
75
76
  | `list_affiliate_networks` / `create_affiliate_network` / `update_affiliate_network` / `delete_affiliate_network` | Manage affiliate networks. Each network exposes a per-network postback URL (`/postback/n/{token}`) the user pastes into the network's S2S settings. Set `amazon_tag` (e.g. `yourtagid-20`) on an Amazon network to auto-tag every Amazon link with `?tag=…` at click time. |
76
77
  | `list_offers` / `create_offer` / `update_offer` / `delete_offer` | Manage destination URLs ("offers"). Optionally tied to an affiliate network so the right conversion-param name is propagated on outbound clicks. |
77
78
  | `list_landers` / `create_lander` / `update_lander` / `delete_lander` | Manage landing pages. Lander URLs may contain `{clickid}` tokens which the resolver expands. |
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@buygolinks/mcp",
3
- "version": "0.24.0",
3
+ "version": "0.25.0",
4
4
  "description": "MCP server for buygolinks.com — create and manage branded short links with Amazon affiliate geo-routing from any MCP-compatible AI agent (Claude Desktop, Cursor, Cline, Continue, Hermes).",
5
5
  "type": "module",
6
6
  "bin": {
package/src/index.js CHANGED
@@ -197,6 +197,12 @@ const TOOLS = [
197
197
  },
198
198
 
199
199
  // ─── Tracker: affiliate networks ────────────────────────────────────────
200
+ {
201
+ name: 'get_universal_postback_url',
202
+ description:
203
+ 'Get the account\'s UNIVERSAL postback URL (Voluum-style): ONE URL that works for every campaign and every affiliate network. It matches the click by click_id alone and credits whichever campaign the click belongs to, so the user pastes it once into any network\'s S2S settings or their own webhook (n8n, Zapier, a store\'s order webhook) and never updates it again. Format: https://buygolinks.com/postback/u/{token}?clickid={clickid}&payout={payout}&currency={currency}&txid={txid} — payout/currency/txid optional; `cid` is accepted as an alias for `clickid`. Prefer this over per-campaign or per-network postback URLs unless the user explicitly wants campaign-scoped validation (the per-campaign URL rejects clicks from other campaigns with a 400).',
204
+ inputSchema: { type: 'object', properties: {} },
205
+ },
200
206
  {
201
207
  name: 'list_affiliate_networks',
202
208
  description:
@@ -832,6 +838,16 @@ server.setRequestHandler(CallToolRequestSchema, async (req) => {
832
838
  }
833
839
 
834
840
  // ── Tracker: networks ──
841
+ case 'get_universal_postback_url': {
842
+ const me = await api('/api/me');
843
+ const base = me.user && me.user.postback_url;
844
+ result = {
845
+ postback_url: base,
846
+ template: base ? `${base}?clickid=REPLACE&payout=OPTIONAL&currency=OPTIONAL&txid=OPTIONAL` : null,
847
+ note: 'Universal: works for every campaign and every network. payout/currency/txid are optional; cid is accepted as an alias for clickid.',
848
+ };
849
+ break;
850
+ }
835
851
  case 'list_affiliate_networks': {
836
852
  result = await api('/api/affiliate-networks');
837
853
  break;