vyra-mcp 0.1.0 → 0.2.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
@@ -24,9 +24,11 @@ performance-based creator campaigns in plain English.
24
24
  | `get_campaign` | One campaign by id |
25
25
  | `list_campaign_slots` | Creators who joined, with status + views |
26
26
  | `get_submission` | One submission's metrics, cost, watch-window |
27
- | `create_campaign` | Create a draft campaign |
27
+ | `create_campaign` | Create a draft campaign (optionally with assets) |
28
28
  | `activate_campaign` | Fund-check, reserve budget, go live |
29
29
  | `pause_campaign` | Stop new creators from joining |
30
+ | `list_campaign_assets` | List a campaign's brand assets |
31
+ | `attach_campaign_asset` | Attach a logo / demo video / screenshot by URL |
30
32
 
31
33
  ## Manual config
32
34
 
package/dist/server.js CHANGED
@@ -20,7 +20,7 @@ async function run(fn) {
20
20
  }
21
21
  }
22
22
  export function buildServer() {
23
- const server = new McpServer({ name: "vyra", version: "0.1.0" });
23
+ const server = new McpServer({ name: "vyra", version: "0.2.0" });
24
24
  // --- Wallet -------------------------------------------------------------
25
25
  server.registerTool("get_wallet_balance", {
26
26
  title: "Get wallet balance",
@@ -101,8 +101,37 @@ export function buildServer() {
101
101
  .describe("The brief / what creators should communicate"),
102
102
  hashtags: z.array(z.string()).optional(),
103
103
  promo_link: z.string().optional(),
104
+ assets: z
105
+ .array(z.object({
106
+ kind: z.enum(["logo", "video", "screenshot"]),
107
+ url: z.string().describe("Hosted URL of the asset"),
108
+ file_name: z.string().optional(),
109
+ }))
110
+ .optional()
111
+ .describe("Brand assets to attach, by URL (logo/demo video/screenshots)"),
104
112
  },
105
113
  }, (args) => run(() => apiRequest("POST", "/campaigns", args)));
114
+ server.registerTool("list_campaign_assets", {
115
+ title: "List campaign assets",
116
+ description: "List the brand assets (logo, demo video, screenshots) attached to a campaign.",
117
+ inputSchema: {
118
+ campaign_id: z.string().describe("The campaign id"),
119
+ },
120
+ }, ({ campaign_id }) => run(() => apiRequest("GET", `/campaigns/${campaign_id}/assets`)));
121
+ server.registerTool("attach_campaign_asset", {
122
+ title: "Attach campaign asset",
123
+ description: "Attach a brand asset to a campaign by URL. Use for a logo, demo video, or screenshot the creator downloads to make their video.",
124
+ inputSchema: {
125
+ campaign_id: z.string().describe("The campaign id"),
126
+ kind: z
127
+ .enum(["logo", "video", "screenshot"])
128
+ .describe("Asset type (use 'video' for a demo video)"),
129
+ url: z.string().describe("Hosted URL of the asset"),
130
+ file_name: z.string().optional().describe("Display name for the file"),
131
+ },
132
+ }, ({ campaign_id, kind, url, file_name }) => run(() => apiRequest("POST", `/campaigns/${campaign_id}/assets`, {
133
+ assets: [{ kind, url, file_name }],
134
+ })));
106
135
  server.registerTool("activate_campaign", {
107
136
  title: "Activate campaign",
108
137
  description: "Activate a draft campaign: checks funds, reserves budget, and makes it live for creators. Fails if the wallet balance is too low.",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vyra-mcp",
3
- "version": "0.1.0",
3
+ "version": "0.2.0",
4
4
  "description": "Drive Vyra from Claude, ChatGPT, or any MCP client — manage performance-based creator campaigns in plain English.",
5
5
  "license": "MIT",
6
6
  "type": "module",