@apteva/integrations 0.2.3 → 0.3.1

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.
Files changed (236) hide show
  1. package/package.json +1 -1
  2. package/src/apps/activecampaign.json +209 -0
  3. package/src/apps/activecollab.json +417 -0
  4. package/src/apps/airtable.json +235 -0
  5. package/src/apps/alpaca-trading.json +1554 -0
  6. package/src/apps/amadeus.json +225 -0
  7. package/src/apps/anthropic-api.json +96 -0
  8. package/src/apps/apify.json +203 -0
  9. package/src/apps/apollo.json +748 -0
  10. package/src/apps/apple-podcasts.json +116 -0
  11. package/src/apps/archive-api.json +104 -0
  12. package/src/apps/archive.json +151 -0
  13. package/src/apps/arduino-cloud.json +301 -0
  14. package/src/apps/arest.json +492 -0
  15. package/src/apps/asana.json +184 -0
  16. package/src/apps/ashby.json +176 -0
  17. package/src/apps/assemblyai.json +163 -0
  18. package/src/apps/attio.json +243 -0
  19. package/src/apps/aws-cloudfront.json +132 -0
  20. package/src/apps/aws-dynamodb.json +295 -0
  21. package/src/apps/aws-ec2.json +184 -0
  22. package/src/apps/aws-lambda.json +361 -0
  23. package/src/apps/aws-route53.json +110 -0
  24. package/src/apps/aws-s3.json +303 -0
  25. package/src/apps/aws-ses.json +556 -0
  26. package/src/apps/aws-sns.json +217 -0
  27. package/src/apps/aws-sqs.json +234 -0
  28. package/src/apps/axiom.json +123 -0
  29. package/src/apps/beehiiv.json +252 -0
  30. package/src/apps/binance-trading.json +555 -0
  31. package/src/apps/bitly.json +175 -0
  32. package/src/apps/bloobirds.json +246 -0
  33. package/src/apps/bluesky.json +201 -0
  34. package/src/apps/blynk.json +316 -0
  35. package/src/apps/booking-com.json +144 -0
  36. package/src/apps/box.json +289 -0
  37. package/src/apps/brevo.json +1423 -0
  38. package/src/apps/browse-ai.json +148 -0
  39. package/src/apps/bunny-cdn.json +330 -0
  40. package/src/apps/bunny-stream.json +387 -0
  41. package/src/apps/cal-com.json +240 -0
  42. package/src/apps/calendly.json +578 -0
  43. package/src/apps/calflow-calendar.json +706 -0
  44. package/src/apps/callrail.json +190 -0
  45. package/src/apps/canva.json +197 -0
  46. package/src/apps/cartesia.json +201 -0
  47. package/src/apps/castbase.json +753 -0
  48. package/src/apps/chargebee.json +226 -0
  49. package/src/apps/cleanster.json +359 -0
  50. package/src/apps/clicksend.json +278 -0
  51. package/src/apps/clickup.json +266 -0
  52. package/src/apps/clipkit.json +517 -0
  53. package/src/apps/close.json +359 -0
  54. package/src/apps/cloudflare.json +329 -0
  55. package/src/apps/cloudinary.json +164 -0
  56. package/src/apps/coda.json +288 -0
  57. package/src/apps/cohere.json +158 -0
  58. package/src/apps/coinbase.json +268 -0
  59. package/src/apps/composio.json +146 -0
  60. package/src/apps/confluence.json +270 -0
  61. package/src/apps/consensus.json +879 -0
  62. package/src/apps/contabo.json +733 -0
  63. package/src/apps/convertkit.json +211 -0
  64. package/src/apps/core-image.json +426 -0
  65. package/src/apps/core-video.json +1246 -0
  66. package/src/apps/craftcloud.json +298 -0
  67. package/src/apps/datadog.json +401 -0
  68. package/src/apps/dataforseo.json +1273 -0
  69. package/src/apps/deepseek.json +150 -0
  70. package/src/apps/dialpad.json +229 -0
  71. package/src/apps/discord.json +239 -0
  72. package/src/apps/dnsimple.json +405 -0
  73. package/src/apps/docusign.json +214 -0
  74. package/src/apps/docx.json +282 -0
  75. package/src/apps/dropbox.json +185 -0
  76. package/src/apps/duffel.json +231 -0
  77. package/src/apps/dux-soup.json +694 -0
  78. package/src/apps/dynadot.json +250 -0
  79. package/src/apps/elevenlabs.json +327 -0
  80. package/src/apps/eventbrite-events.json +598 -0
  81. package/src/apps/facebook-ads.json +1399 -0
  82. package/src/apps/facebook-api.json +282 -0
  83. package/src/apps/fal-ai.json +400 -0
  84. package/src/apps/fathom.json +86 -0
  85. package/src/apps/figma.json +162 -0
  86. package/src/apps/filestack.json +159 -0
  87. package/src/apps/firebase.json +271 -0
  88. package/src/apps/firecrawl.json +278 -0
  89. package/src/apps/folk.json +564 -0
  90. package/src/apps/forecast-app.json +377 -0
  91. package/src/apps/freshdesk.json +283 -0
  92. package/src/apps/gemini.json +528 -0
  93. package/src/apps/ghost.json +439 -0
  94. package/src/apps/gigs-marketplace.json +1442 -0
  95. package/src/apps/github.json +1479 -47
  96. package/src/apps/gitlab.json +448 -0
  97. package/src/apps/gmail.json +839 -28
  98. package/src/apps/gohighlevel.json +596 -0
  99. package/src/apps/google-ads.json +270 -0
  100. package/src/apps/google-calendar.json +996 -36
  101. package/src/apps/google-docs.json +278 -0
  102. package/src/apps/google-drive.json +360 -0
  103. package/src/apps/google-maps.json +473 -0
  104. package/src/apps/google-sheets.json +330 -0
  105. package/src/apps/gooten.json +411 -0
  106. package/src/apps/gravity-forms.json +385 -0
  107. package/src/apps/gusto.json +171 -0
  108. package/src/apps/hackernews.json +221 -0
  109. package/src/apps/harmonic.json +86 -0
  110. package/src/apps/helpscout.json +664 -0
  111. package/src/apps/hetzner.json +658 -0
  112. package/src/apps/heygen.json +184 -0
  113. package/src/apps/heyreach.json +388 -0
  114. package/src/apps/hospitable.json +340 -0
  115. package/src/apps/hostinger.json +374 -0
  116. package/src/apps/hubspot.json +682 -0
  117. package/src/apps/huggingface.json +97 -0
  118. package/src/apps/hunter.json +504 -0
  119. package/src/apps/ig-trading.json +849 -0
  120. package/src/apps/imaterialise.json +349 -0
  121. package/src/apps/instagram-api.json +538 -0
  122. package/src/apps/intercom.json +648 -0
  123. package/src/apps/jira.json +226 -0
  124. package/src/apps/klaviyo.json +199 -0
  125. package/src/apps/kling-ai.json +206 -0
  126. package/src/apps/kraken.json +870 -0
  127. package/src/apps/late.json +1056 -0
  128. package/src/apps/leadpages.json +243 -0
  129. package/src/apps/learning-platform.json +2244 -0
  130. package/src/apps/linear.json +184 -57
  131. package/src/apps/linkedin.json +179 -0
  132. package/src/apps/listen-notes.json +136 -0
  133. package/src/apps/lnk-bio.json +125 -0
  134. package/src/apps/loom.json +188 -0
  135. package/src/apps/luma.json +280 -0
  136. package/src/apps/mailchimp.json +238 -0
  137. package/src/apps/mailgun.json +310 -0
  138. package/src/apps/manychat.json +312 -0
  139. package/src/apps/marin-software.json +843 -0
  140. package/src/apps/media-downloader.json +157 -0
  141. package/src/apps/meetup-events.json +361 -0
  142. package/src/apps/meshy.json +248 -0
  143. package/src/apps/microsoft-teams.json +162 -0
  144. package/src/apps/monday.json +213 -0
  145. package/src/apps/mongodb-atlas.json +467 -0
  146. package/src/apps/namecheap.json +252 -0
  147. package/src/apps/nexar.json +289 -0
  148. package/src/apps/notion.json +530 -50
  149. package/src/apps/omnikit-analytics.json +374 -0
  150. package/src/apps/omnikit-api-gateway.json +660 -0
  151. package/src/apps/omnikit-billing.json +1781 -0
  152. package/src/apps/omnikit-cms.json +899 -0
  153. package/src/apps/omnikit-functions.json +329 -0
  154. package/src/apps/omnikit-intelligence.json +650 -0
  155. package/src/apps/omnikit-management.json +214 -0
  156. package/src/apps/omnikit-media.json +646 -0
  157. package/src/apps/omnikit-messaging.json +1826 -0
  158. package/src/apps/omnikit-redirects.json +209 -0
  159. package/src/apps/omnikit-webhooks.json +269 -0
  160. package/src/apps/omnikit-workflows.json +323 -0
  161. package/src/apps/openai-api.json +462 -0
  162. package/src/apps/openmeteo-weather.json +75 -0
  163. package/src/apps/optinmonster.json +244 -0
  164. package/src/apps/paidkit.json +1218 -0
  165. package/src/apps/paypal.json +254 -0
  166. package/src/apps/pdf.json +366 -0
  167. package/src/apps/pipedrive.json +255 -0
  168. package/src/apps/polymarket.json +653 -0
  169. package/src/apps/porkbun.json +417 -0
  170. package/src/apps/portfolio.json +501 -0
  171. package/src/apps/postmark.json +257 -0
  172. package/src/apps/printful.json +273 -0
  173. package/src/apps/printify.json +295 -0
  174. package/src/apps/producthunt.json +346 -0
  175. package/src/apps/pushover-notifications.json +113 -0
  176. package/src/apps/qonto.json +366 -0
  177. package/src/apps/quickbooks.json +234 -0
  178. package/src/apps/replicate.json +106 -0
  179. package/src/apps/rss.json +281 -0
  180. package/src/apps/salesflow.json +538 -0
  181. package/src/apps/salesforce-crm.json +216 -0
  182. package/src/apps/sap.json +256 -0
  183. package/src/apps/scaleway.json +911 -0
  184. package/src/apps/sculpteo.json +234 -0
  185. package/src/apps/sendgrid-email.json +233 -0
  186. package/src/apps/sendgrid.json +160 -35
  187. package/src/apps/shapeways.json +188 -0
  188. package/src/apps/shopify.json +1217 -0
  189. package/src/apps/skai.json +779 -0
  190. package/src/apps/slack.json +228 -38
  191. package/src/apps/slant3d.json +231 -0
  192. package/src/apps/slides.json +760 -0
  193. package/src/apps/smartly.json +504 -0
  194. package/src/apps/snov.json +467 -0
  195. package/src/apps/socialcast.json +553 -63
  196. package/src/apps/square.json +274 -0
  197. package/src/apps/storage-management.json +788 -0
  198. package/src/apps/storylane.json +180 -0
  199. package/src/apps/strapi.json +338 -0
  200. package/src/apps/stripe-payments.json +847 -0
  201. package/src/apps/stripe.json +472 -35
  202. package/src/apps/supabase.json +169 -0
  203. package/src/apps/supademo.json +115 -0
  204. package/src/apps/taskflow.json +714 -0
  205. package/src/apps/teamwork.json +457 -0
  206. package/src/apps/telegram.json +444 -0
  207. package/src/apps/thinger.json +458 -0
  208. package/src/apps/ticktick.json +169 -0
  209. package/src/apps/tiktok-api.json +406 -0
  210. package/src/apps/todoist.json +151 -0
  211. package/src/apps/together.json +123 -0
  212. package/src/apps/torrent.json +267 -0
  213. package/src/apps/trading.json +1012 -0
  214. package/src/apps/trading212.json +383 -0
  215. package/src/apps/trello.json +205 -0
  216. package/src/apps/tripo.json +157 -0
  217. package/src/apps/twilio.json +1008 -0
  218. package/src/apps/twitter-ads.json +875 -0
  219. package/src/apps/twitter-api.json +1151 -0
  220. package/src/apps/twitterapiio.json +548 -0
  221. package/src/apps/typeform.json +210 -0
  222. package/src/apps/vidforge.json +1020 -0
  223. package/src/apps/vonage.json +394 -0
  224. package/src/apps/vultr.json +225 -0
  225. package/src/apps/webflow.json +223 -0
  226. package/src/apps/wise.json +273 -0
  227. package/src/apps/wistia.json +283 -0
  228. package/src/apps/woocommerce.json +288 -0
  229. package/src/apps/wordpress.json +1675 -0
  230. package/src/apps/xero.json +257 -0
  231. package/src/apps/youtube-api.json +861 -0
  232. package/src/apps/zendesk.json +295 -0
  233. package/src/apps/zite.json +173 -0
  234. package/src/apps/zoho-crm.json +386 -0
  235. package/src/apps/zoo.json +193 -0
  236. package/src/apps/zoom.json +334 -0
@@ -0,0 +1,1442 @@
1
+ {
2
+ "slug": "gigs-marketplace",
3
+ "name": "Gigs Marketplace",
4
+ "description": "MCP server for managing gigs, instructions, templates, and work submissions in a marketplace platform",
5
+ "logo": "https://www.google.com/s2/favicons?domain=upwork.com&sz=128",
6
+ "categories": [
7
+ "gigs",
8
+ "marketplace",
9
+ "freelance",
10
+ "workflow",
11
+ "project-management"
12
+ ],
13
+ "base_url": "https://gigsapi.schwartzindustries.com",
14
+ "auth": {
15
+ "types": [
16
+ "bearer"
17
+ ],
18
+ "headers": {
19
+ "Authorization": "Bearer {{token}}"
20
+ },
21
+ "credential_fields": [
22
+ {
23
+ "name": "token",
24
+ "label": "API Key"
25
+ }
26
+ ]
27
+ },
28
+ "tools": [
29
+ {
30
+ "name": "create_gig",
31
+ "description": "Create a new gig with optional template application",
32
+ "method": "POST",
33
+ "path": "/gigs",
34
+ "input_schema": {
35
+ "type": "object",
36
+ "properties": {
37
+ "title": {
38
+ "type": "string",
39
+ "description": "Gig title/name",
40
+ "minLength": 1,
41
+ "maxLength": 255
42
+ },
43
+ "description": {
44
+ "type": "string",
45
+ "description": "Detailed description of the gig"
46
+ },
47
+ "budget": {
48
+ "type": "number",
49
+ "description": "Budget amount in USD"
50
+ },
51
+ "deadline": {
52
+ "type": "string",
53
+ "description": "Deadline in ISO 8601 format (YYYY-MM-DD)",
54
+ "format": "date"
55
+ },
56
+ "project_id": {
57
+ "type": "integer",
58
+ "description": "Associated project ID"
59
+ },
60
+ "template_id": {
61
+ "type": "integer",
62
+ "description": "Template ID to apply instructions from"
63
+ },
64
+ "status": {
65
+ "type": "string",
66
+ "description": "Initial gig status",
67
+ "enum": [
68
+ "open",
69
+ "assigned",
70
+ "in_progress",
71
+ "submitted",
72
+ "completed",
73
+ "cancelled"
74
+ ],
75
+ "default": "open"
76
+ },
77
+ "userId": {
78
+ "type": "integer",
79
+ "description": "User ID creating the gig (client)"
80
+ }
81
+ },
82
+ "required": [
83
+ "title",
84
+ "userId"
85
+ ]
86
+ }
87
+ },
88
+ {
89
+ "name": "list_gigs",
90
+ "description": "List gigs filtered by user role (client, worker, or available)",
91
+ "method": "GET",
92
+ "path": "/gigs",
93
+ "input_schema": {
94
+ "type": "object",
95
+ "properties": {
96
+ "userId": {
97
+ "type": "integer",
98
+ "description": "User ID for filtering"
99
+ },
100
+ "role": {
101
+ "type": "string",
102
+ "description": "Filter by role perspective",
103
+ "enum": [
104
+ "all",
105
+ "client",
106
+ "worker",
107
+ "available"
108
+ ],
109
+ "default": "all"
110
+ },
111
+ "status": {
112
+ "type": "string",
113
+ "description": "Filter by gig status",
114
+ "enum": [
115
+ "open",
116
+ "assigned",
117
+ "in_progress",
118
+ "submitted",
119
+ "completed",
120
+ "cancelled"
121
+ ]
122
+ },
123
+ "limit": {
124
+ "type": "integer",
125
+ "description": "Number of gigs to return",
126
+ "default": 50,
127
+ "minimum": 1,
128
+ "maximum": 100
129
+ },
130
+ "offset": {
131
+ "type": "integer",
132
+ "description": "Pagination offset",
133
+ "default": 0,
134
+ "minimum": 0
135
+ }
136
+ }
137
+ }
138
+ },
139
+ {
140
+ "name": "get_gig_details",
141
+ "description": "Get detailed information about a specific gig",
142
+ "method": "GET",
143
+ "path": "/gigs/%7B%7Bid%7D%7D",
144
+ "input_schema": {
145
+ "type": "object",
146
+ "properties": {
147
+ "id": {
148
+ "type": "integer",
149
+ "description": "Gig ID"
150
+ }
151
+ },
152
+ "required": [
153
+ "id"
154
+ ]
155
+ }
156
+ },
157
+ {
158
+ "name": "assign_gig",
159
+ "description": "Assign a gig to a worker (client only)",
160
+ "method": "POST",
161
+ "path": "/gigs/%7B%7Bid%7D%7D/assign",
162
+ "input_schema": {
163
+ "type": "object",
164
+ "properties": {
165
+ "id": {
166
+ "type": "integer",
167
+ "description": "Gig ID to assign"
168
+ },
169
+ "worker_id": {
170
+ "type": "integer",
171
+ "description": "Worker user ID to assign to"
172
+ },
173
+ "userId": {
174
+ "type": "integer",
175
+ "description": "Client user ID (must be gig owner)"
176
+ }
177
+ },
178
+ "required": [
179
+ "id",
180
+ "worker_id",
181
+ "userId"
182
+ ]
183
+ }
184
+ },
185
+ {
186
+ "name": "update_gig_status",
187
+ "description": "Update the status of a gig",
188
+ "method": "PUT",
189
+ "path": "/gigs/%7B%7Bid%7D%7D/status",
190
+ "input_schema": {
191
+ "type": "object",
192
+ "properties": {
193
+ "id": {
194
+ "type": "integer",
195
+ "description": "Gig ID"
196
+ },
197
+ "status": {
198
+ "type": "string",
199
+ "description": "New status",
200
+ "enum": [
201
+ "open",
202
+ "assigned",
203
+ "in_progress",
204
+ "submitted",
205
+ "completed",
206
+ "cancelled"
207
+ ]
208
+ },
209
+ "userId": {
210
+ "type": "integer",
211
+ "description": "User ID performing the update"
212
+ }
213
+ },
214
+ "required": [
215
+ "id",
216
+ "status",
217
+ "userId"
218
+ ]
219
+ }
220
+ },
221
+ {
222
+ "name": "update_gig",
223
+ "description": "Update gig details such as title, description, budget, deadline, or priority",
224
+ "method": "PUT",
225
+ "path": "/gigs/%7B%7Bid%7D%7D",
226
+ "input_schema": {
227
+ "type": "object",
228
+ "properties": {
229
+ "id": {
230
+ "type": "integer",
231
+ "description": "Gig ID to update"
232
+ },
233
+ "title": {
234
+ "type": "string",
235
+ "description": "Updated gig title"
236
+ },
237
+ "description": {
238
+ "type": "string",
239
+ "description": "Updated gig description"
240
+ },
241
+ "budget": {
242
+ "type": "number",
243
+ "description": "Updated budget amount in USD"
244
+ },
245
+ "deadline": {
246
+ "type": "string",
247
+ "description": "Updated deadline in ISO 8601 format (YYYY-MM-DD)",
248
+ "format": "date"
249
+ },
250
+ "priority": {
251
+ "type": "string",
252
+ "description": "Updated priority level",
253
+ "enum": [
254
+ "low",
255
+ "medium",
256
+ "high",
257
+ "urgent"
258
+ ]
259
+ }
260
+ },
261
+ "required": [
262
+ "id"
263
+ ]
264
+ }
265
+ },
266
+ {
267
+ "name": "cancel_gig",
268
+ "description": "Cancel a gig (client only)",
269
+ "method": "DELETE",
270
+ "path": "/gigs/%7B%7Bid%7D%7D",
271
+ "input_schema": {
272
+ "type": "object",
273
+ "properties": {
274
+ "id": {
275
+ "type": "integer",
276
+ "description": "Gig ID to cancel"
277
+ },
278
+ "reason": {
279
+ "type": "string",
280
+ "description": "Cancellation reason"
281
+ },
282
+ "userId": {
283
+ "type": "integer",
284
+ "description": "User ID (must be client)"
285
+ }
286
+ },
287
+ "required": [
288
+ "id",
289
+ "userId"
290
+ ]
291
+ }
292
+ },
293
+ {
294
+ "name": "create_instruction",
295
+ "description": "Create a reusable instruction in the library",
296
+ "method": "POST",
297
+ "path": "/instructions",
298
+ "input_schema": {
299
+ "type": "object",
300
+ "properties": {
301
+ "name": {
302
+ "type": "string",
303
+ "description": "Instruction name",
304
+ "minLength": 1,
305
+ "maxLength": 255
306
+ },
307
+ "description": {
308
+ "type": "string",
309
+ "description": "Instruction description"
310
+ },
311
+ "content": {
312
+ "type": "string",
313
+ "description": "Instruction content/details"
314
+ },
315
+ "category": {
316
+ "type": "string",
317
+ "description": "Instruction category"
318
+ },
319
+ "tags": {
320
+ "type": "array",
321
+ "description": "Tags for categorization",
322
+ "items": {
323
+ "type": "string"
324
+ }
325
+ },
326
+ "media_type": {
327
+ "type": "string",
328
+ "description": "Type of media",
329
+ "enum": [
330
+ "text",
331
+ "video",
332
+ "image",
333
+ "audio",
334
+ "document"
335
+ ],
336
+ "default": "text"
337
+ },
338
+ "media_url": {
339
+ "type": "string",
340
+ "description": "URL to media file"
341
+ },
342
+ "is_public": {
343
+ "type": "boolean",
344
+ "description": "Whether instruction is publicly visible",
345
+ "default": false
346
+ },
347
+ "duration_minutes": {
348
+ "type": "integer",
349
+ "description": "Expected duration in minutes"
350
+ },
351
+ "userId": {
352
+ "type": "integer",
353
+ "description": "User ID creating the instruction"
354
+ }
355
+ },
356
+ "required": [
357
+ "name",
358
+ "content",
359
+ "userId"
360
+ ]
361
+ }
362
+ },
363
+ {
364
+ "name": "list_instructions",
365
+ "description": "List instructions from the library with filtering",
366
+ "method": "GET",
367
+ "path": "/instructions",
368
+ "input_schema": {
369
+ "type": "object",
370
+ "properties": {
371
+ "category": {
372
+ "type": "string",
373
+ "description": "Filter by category"
374
+ },
375
+ "is_public": {
376
+ "type": "boolean",
377
+ "description": "Filter by public visibility"
378
+ },
379
+ "userId": {
380
+ "type": "integer",
381
+ "description": "Filter by creator user ID"
382
+ },
383
+ "limit": {
384
+ "type": "integer",
385
+ "description": "Number of instructions to return",
386
+ "default": 50,
387
+ "minimum": 1,
388
+ "maximum": 100
389
+ },
390
+ "offset": {
391
+ "type": "integer",
392
+ "description": "Pagination offset",
393
+ "default": 0,
394
+ "minimum": 0
395
+ }
396
+ }
397
+ }
398
+ },
399
+ {
400
+ "name": "search_instructions",
401
+ "description": "Search instructions by keyword in name, description, or content. Results are ranked by relevance (name matches first, then description, then content).",
402
+ "method": "GET",
403
+ "path": "/instructions/search",
404
+ "input_schema": {
405
+ "type": "object",
406
+ "properties": {
407
+ "query": {
408
+ "type": "string",
409
+ "description": "Search query to find in name, description, or content",
410
+ "minLength": 1
411
+ },
412
+ "category": {
413
+ "type": "string",
414
+ "description": "Filter by instruction category"
415
+ },
416
+ "userId": {
417
+ "type": "integer",
418
+ "description": "User ID to include their private instructions in results"
419
+ },
420
+ "limit": {
421
+ "type": "integer",
422
+ "description": "Number of results to return",
423
+ "default": 20,
424
+ "minimum": 1,
425
+ "maximum": 50
426
+ },
427
+ "offset": {
428
+ "type": "integer",
429
+ "description": "Pagination offset",
430
+ "default": 0,
431
+ "minimum": 0
432
+ }
433
+ },
434
+ "required": [
435
+ "query"
436
+ ]
437
+ }
438
+ },
439
+ {
440
+ "name": "create_template",
441
+ "description": "Create a reusable gig template with instructions",
442
+ "method": "POST",
443
+ "path": "/templates",
444
+ "input_schema": {
445
+ "type": "object",
446
+ "properties": {
447
+ "name": {
448
+ "type": "string",
449
+ "description": "Template name",
450
+ "minLength": 1,
451
+ "maxLength": 255
452
+ },
453
+ "description": {
454
+ "type": "string",
455
+ "description": "Template description"
456
+ },
457
+ "category": {
458
+ "type": "string",
459
+ "description": "Template category"
460
+ },
461
+ "is_public": {
462
+ "type": "boolean",
463
+ "description": "Whether template is publicly available",
464
+ "default": true
465
+ },
466
+ "userId": {
467
+ "type": "integer",
468
+ "description": "User ID creating the template"
469
+ }
470
+ },
471
+ "required": [
472
+ "name",
473
+ "userId"
474
+ ]
475
+ }
476
+ },
477
+ {
478
+ "name": "list_templates",
479
+ "description": "List available gig templates",
480
+ "method": "GET",
481
+ "path": "/templates",
482
+ "input_schema": {
483
+ "type": "object",
484
+ "properties": {
485
+ "category": {
486
+ "type": "string",
487
+ "description": "Filter by category"
488
+ },
489
+ "is_public": {
490
+ "type": "boolean",
491
+ "description": "Filter by public visibility"
492
+ },
493
+ "userId": {
494
+ "type": "integer",
495
+ "description": "Filter by creator user ID"
496
+ },
497
+ "limit": {
498
+ "type": "integer",
499
+ "description": "Number of templates to return",
500
+ "default": 50,
501
+ "minimum": 1,
502
+ "maximum": 100
503
+ },
504
+ "offset": {
505
+ "type": "integer",
506
+ "description": "Pagination offset",
507
+ "default": 0,
508
+ "minimum": 0
509
+ }
510
+ }
511
+ }
512
+ },
513
+ {
514
+ "name": "apply_template_to_gig",
515
+ "description": "Apply a template's instructions to a gig",
516
+ "method": "POST",
517
+ "path": "/gigs/%7B%7Bid%7D%7D/apply-template",
518
+ "input_schema": {
519
+ "type": "object",
520
+ "properties": {
521
+ "id": {
522
+ "type": "integer",
523
+ "description": "Gig ID"
524
+ },
525
+ "template_id": {
526
+ "type": "integer",
527
+ "description": "Template ID to apply"
528
+ },
529
+ "userId": {
530
+ "type": "integer",
531
+ "description": "User ID performing the action"
532
+ }
533
+ },
534
+ "required": [
535
+ "id",
536
+ "template_id",
537
+ "userId"
538
+ ]
539
+ }
540
+ },
541
+ {
542
+ "name": "add_instruction_to_gig",
543
+ "description": "Add an instruction from the instruction library to a gig. Use 'List Instructions' or 'Search Instructions' to find the library instruction_id.",
544
+ "method": "POST",
545
+ "path": "/gigs/%7B%7Bid%7D%7D/instructions",
546
+ "input_schema": {
547
+ "type": "object",
548
+ "properties": {
549
+ "id": {
550
+ "type": "integer",
551
+ "description": "Gig ID"
552
+ },
553
+ "instruction_id": {
554
+ "type": "integer",
555
+ "description": "Instruction library ID (from List/Search Instructions), NOT the gig_instructions record ID"
556
+ },
557
+ "custom_content": {
558
+ "type": "string",
559
+ "description": "Optional custom content override for this gig"
560
+ },
561
+ "order_index": {
562
+ "type": "integer",
563
+ "description": "Step number/position in instruction list (auto-assigned if omitted)"
564
+ },
565
+ "userId": {
566
+ "type": "integer",
567
+ "description": "User ID performing the action (must be gig owner)"
568
+ }
569
+ },
570
+ "required": [
571
+ "id",
572
+ "instruction_id",
573
+ "userId"
574
+ ]
575
+ }
576
+ },
577
+ {
578
+ "name": "get_gig_instructions",
579
+ "description": "Get all instructions attached to a gig. Returns gig_instructions records with their 'id' (needed for remove/complete/customize/reset operations), instruction details, completion status, and submitted files.",
580
+ "method": "GET",
581
+ "path": "/gigs/%7B%7Bid%7D%7D/instructions",
582
+ "input_schema": {
583
+ "type": "object",
584
+ "properties": {
585
+ "id": {
586
+ "type": "integer",
587
+ "description": "Gig ID"
588
+ }
589
+ },
590
+ "required": [
591
+ "id"
592
+ ]
593
+ }
594
+ },
595
+ {
596
+ "name": "mark_instruction_complete",
597
+ "description": "Mark a gig instruction as completed. Use 'Get Gig Instructions' first to find the gig_instructions record ID.",
598
+ "method": "PUT",
599
+ "path": "/gigs/%7B%7Bid%7D%7D/instructions/%7B%7BinstructionId%7D%7D/complete",
600
+ "input_schema": {
601
+ "type": "object",
602
+ "properties": {
603
+ "id": {
604
+ "type": "integer",
605
+ "description": "Gig ID"
606
+ },
607
+ "instructionId": {
608
+ "type": "integer",
609
+ "description": "The gig_instructions record ID (the 'id' field returned by Get Gig Instructions), NOT the instruction library ID"
610
+ },
611
+ "userId": {
612
+ "type": "integer",
613
+ "description": "User ID performing the action"
614
+ }
615
+ },
616
+ "required": [
617
+ "id",
618
+ "instructionId",
619
+ "userId"
620
+ ]
621
+ }
622
+ },
623
+ {
624
+ "name": "submit_work",
625
+ "description": "Submit work files for a gig",
626
+ "method": "POST",
627
+ "path": "/gigs/%7B%7Bid%7D%7D/submissions",
628
+ "input_schema": {
629
+ "type": "object",
630
+ "properties": {
631
+ "id": {
632
+ "type": "integer",
633
+ "description": "Gig ID"
634
+ },
635
+ "file_name": {
636
+ "type": "string",
637
+ "description": "Name of the submitted file"
638
+ },
639
+ "file_url": {
640
+ "type": "string",
641
+ "description": "URL to the submitted file"
642
+ },
643
+ "file_type": {
644
+ "type": "string",
645
+ "description": "MIME type of the file"
646
+ },
647
+ "file_size": {
648
+ "type": "integer",
649
+ "description": "File size in bytes"
650
+ },
651
+ "submission_notes": {
652
+ "type": "string",
653
+ "description": "Notes accompanying the submission"
654
+ },
655
+ "userId": {
656
+ "type": "integer",
657
+ "description": "Worker user ID submitting work"
658
+ }
659
+ },
660
+ "required": [
661
+ "id",
662
+ "file_name",
663
+ "file_url",
664
+ "userId"
665
+ ]
666
+ }
667
+ },
668
+ {
669
+ "name": "get_submissions",
670
+ "description": "Get all submissions for a gig",
671
+ "method": "GET",
672
+ "path": "/gigs/%7B%7Bid%7D%7D/submissions",
673
+ "input_schema": {
674
+ "type": "object",
675
+ "properties": {
676
+ "id": {
677
+ "type": "integer",
678
+ "description": "Gig ID"
679
+ }
680
+ },
681
+ "required": [
682
+ "id"
683
+ ]
684
+ }
685
+ },
686
+ {
687
+ "name": "review_submission",
688
+ "description": "Review and approve/reject a work submission (client only)",
689
+ "method": "POST",
690
+ "path": "/gigs/%7B%7Bid%7D%7D/submissions/%7B%7BsubmissionId%7D%7D/review",
691
+ "input_schema": {
692
+ "type": "object",
693
+ "properties": {
694
+ "id": {
695
+ "type": "integer",
696
+ "description": "Gig ID"
697
+ },
698
+ "submissionId": {
699
+ "type": "integer",
700
+ "description": "Submission ID to review"
701
+ },
702
+ "status": {
703
+ "type": "string",
704
+ "description": "Review decision",
705
+ "enum": [
706
+ "approved",
707
+ "rejected",
708
+ "revision_requested"
709
+ ]
710
+ },
711
+ "review_notes": {
712
+ "type": "string",
713
+ "description": "Review feedback"
714
+ },
715
+ "userId": {
716
+ "type": "integer",
717
+ "description": "Client user ID reviewing submission"
718
+ }
719
+ },
720
+ "required": [
721
+ "id",
722
+ "submissionId",
723
+ "status",
724
+ "userId"
725
+ ]
726
+ }
727
+ },
728
+ {
729
+ "name": "request_revision",
730
+ "description": "Request changes to a work submission",
731
+ "method": "POST",
732
+ "path": "/gigs/%7B%7Bid%7D%7D/submissions/%7B%7BsubmissionId%7D%7D/revision",
733
+ "input_schema": {
734
+ "type": "object",
735
+ "properties": {
736
+ "id": {
737
+ "type": "integer",
738
+ "description": "Gig ID"
739
+ },
740
+ "submissionId": {
741
+ "type": "integer",
742
+ "description": "Submission ID to request revision for"
743
+ },
744
+ "revision_notes": {
745
+ "type": "string",
746
+ "description": "Detailed revision requirements"
747
+ },
748
+ "userId": {
749
+ "type": "integer",
750
+ "description": "User ID requesting revision"
751
+ }
752
+ },
753
+ "required": [
754
+ "id",
755
+ "submissionId",
756
+ "revision_notes",
757
+ "userId"
758
+ ]
759
+ }
760
+ },
761
+ {
762
+ "name": "get_gig_activity",
763
+ "description": "Get activity log/history for a gig",
764
+ "method": "GET",
765
+ "path": "/gigs/%7B%7Bid%7D%7D/activity",
766
+ "input_schema": {
767
+ "type": "object",
768
+ "properties": {
769
+ "id": {
770
+ "type": "integer",
771
+ "description": "Gig ID"
772
+ }
773
+ },
774
+ "required": [
775
+ "id"
776
+ ]
777
+ }
778
+ },
779
+ {
780
+ "name": "list_users",
781
+ "description": "List available workers and clients in the system with optional role and project filtering",
782
+ "method": "GET",
783
+ "path": "/users",
784
+ "input_schema": {
785
+ "type": "object",
786
+ "properties": {
787
+ "role": {
788
+ "type": "string",
789
+ "description": "Filter by user role",
790
+ "enum": [
791
+ "all",
792
+ "worker",
793
+ "client"
794
+ ],
795
+ "default": "all"
796
+ },
797
+ "project_id": {
798
+ "type": "integer",
799
+ "description": "Filter by project ID"
800
+ },
801
+ "limit": {
802
+ "type": "integer",
803
+ "description": "Number of users to return",
804
+ "default": 50,
805
+ "minimum": 1,
806
+ "maximum": 100
807
+ },
808
+ "offset": {
809
+ "type": "integer",
810
+ "description": "Pagination offset",
811
+ "default": 0,
812
+ "minimum": 0
813
+ }
814
+ }
815
+ }
816
+ },
817
+ {
818
+ "name": "get_instruction",
819
+ "description": "Get a single instruction from the library by ID",
820
+ "method": "GET",
821
+ "path": "/instructions/%7B%7Bid%7D%7D",
822
+ "input_schema": {
823
+ "type": "object",
824
+ "properties": {
825
+ "id": {
826
+ "type": "integer",
827
+ "description": "Instruction ID"
828
+ },
829
+ "userId": {
830
+ "type": "integer",
831
+ "description": "User ID requesting the instruction"
832
+ }
833
+ },
834
+ "required": [
835
+ "id"
836
+ ]
837
+ }
838
+ },
839
+ {
840
+ "name": "update_instruction",
841
+ "description": "Update an instruction's content, media, or settings",
842
+ "method": "PUT",
843
+ "path": "/instructions/%7B%7Bid%7D%7D",
844
+ "input_schema": {
845
+ "type": "object",
846
+ "properties": {
847
+ "id": {
848
+ "type": "integer",
849
+ "description": "Instruction ID to update"
850
+ },
851
+ "name": {
852
+ "type": "string",
853
+ "description": "Updated instruction name"
854
+ },
855
+ "description": {
856
+ "type": "string",
857
+ "description": "Updated description"
858
+ },
859
+ "content": {
860
+ "type": "string",
861
+ "description": "Updated instruction content"
862
+ },
863
+ "category": {
864
+ "type": "string",
865
+ "description": "Updated category"
866
+ },
867
+ "tags": {
868
+ "type": "array",
869
+ "description": "Updated tags",
870
+ "items": {
871
+ "type": "string"
872
+ }
873
+ },
874
+ "media_type": {
875
+ "type": "string",
876
+ "description": "Media type",
877
+ "enum": [
878
+ "text",
879
+ "video",
880
+ "image",
881
+ "audio",
882
+ "document"
883
+ ]
884
+ },
885
+ "media_url": {
886
+ "type": "string",
887
+ "description": "URL to media file"
888
+ },
889
+ "is_public": {
890
+ "type": "boolean",
891
+ "description": "Whether instruction is publicly visible"
892
+ },
893
+ "duration_minutes": {
894
+ "type": "integer",
895
+ "description": "Expected duration in minutes"
896
+ }
897
+ },
898
+ "required": [
899
+ "id"
900
+ ]
901
+ }
902
+ },
903
+ {
904
+ "name": "delete_instruction",
905
+ "description": "Delete an instruction from the library",
906
+ "method": "DELETE",
907
+ "path": "/instructions/%7B%7Bid%7D%7D",
908
+ "input_schema": {
909
+ "type": "object",
910
+ "properties": {
911
+ "id": {
912
+ "type": "integer",
913
+ "description": "Instruction ID to delete"
914
+ },
915
+ "userId": {
916
+ "type": "integer",
917
+ "description": "User ID (must be owner)"
918
+ }
919
+ },
920
+ "required": [
921
+ "id",
922
+ "userId"
923
+ ]
924
+ }
925
+ },
926
+ {
927
+ "name": "get_template",
928
+ "description": "Get a template with its instructions",
929
+ "method": "GET",
930
+ "path": "/templates/%7B%7Bid%7D%7D",
931
+ "input_schema": {
932
+ "type": "object",
933
+ "properties": {
934
+ "id": {
935
+ "type": "integer",
936
+ "description": "Template ID"
937
+ },
938
+ "userId": {
939
+ "type": "integer",
940
+ "description": "User ID requesting the template"
941
+ }
942
+ },
943
+ "required": [
944
+ "id"
945
+ ]
946
+ }
947
+ },
948
+ {
949
+ "name": "update_template",
950
+ "description": "Update a gig template's name, description, or settings",
951
+ "method": "PUT",
952
+ "path": "/update-template",
953
+ "input_schema": {
954
+ "type": "object",
955
+ "properties": {
956
+ "id": {
957
+ "type": "integer",
958
+ "description": "Template ID to update"
959
+ },
960
+ "name": {
961
+ "type": "string",
962
+ "description": "Updated template name"
963
+ },
964
+ "description": {
965
+ "type": "string",
966
+ "description": "Updated description"
967
+ },
968
+ "category": {
969
+ "type": "string",
970
+ "description": "Updated category"
971
+ },
972
+ "is_public": {
973
+ "type": "boolean",
974
+ "description": "Whether template is publicly available"
975
+ },
976
+ "userId": {
977
+ "type": "integer",
978
+ "description": "User ID (must be owner)"
979
+ }
980
+ },
981
+ "required": [
982
+ "id",
983
+ "userId"
984
+ ]
985
+ }
986
+ },
987
+ {
988
+ "name": "delete_template",
989
+ "description": "Delete a gig template",
990
+ "method": "DELETE",
991
+ "path": "/gigs/templates/%7B%7Bid%7D%7D",
992
+ "input_schema": {
993
+ "type": "object",
994
+ "properties": {
995
+ "id": {
996
+ "type": "integer",
997
+ "description": "Template ID to delete"
998
+ },
999
+ "userId": {
1000
+ "type": "integer",
1001
+ "description": "User ID (must be owner)"
1002
+ }
1003
+ },
1004
+ "required": [
1005
+ "id",
1006
+ "userId"
1007
+ ]
1008
+ }
1009
+ },
1010
+ {
1011
+ "name": "clone_template",
1012
+ "description": "Create a copy of a template for customization",
1013
+ "method": "POST",
1014
+ "path": "/gigs/templates/%7B%7Bid%7D%7D/clone",
1015
+ "input_schema": {
1016
+ "type": "object",
1017
+ "properties": {
1018
+ "id": {
1019
+ "type": "integer",
1020
+ "description": "Template ID to clone"
1021
+ },
1022
+ "name": {
1023
+ "type": "string",
1024
+ "description": "Name for the new cloned template"
1025
+ },
1026
+ "userId": {
1027
+ "type": "integer",
1028
+ "description": "User ID creating the clone"
1029
+ }
1030
+ },
1031
+ "required": [
1032
+ "id",
1033
+ "name",
1034
+ "userId"
1035
+ ]
1036
+ }
1037
+ },
1038
+ {
1039
+ "name": "add_instruction_to_template",
1040
+ "description": "Add an instruction from the library to a template",
1041
+ "method": "POST",
1042
+ "path": "/templates/%7B%7Bid%7D%7D/instructions",
1043
+ "input_schema": {
1044
+ "type": "object",
1045
+ "properties": {
1046
+ "id": {
1047
+ "type": "integer",
1048
+ "description": "Template ID"
1049
+ },
1050
+ "instruction_id": {
1051
+ "type": "integer",
1052
+ "description": "Instruction ID to add"
1053
+ },
1054
+ "step_number": {
1055
+ "type": "integer",
1056
+ "description": "Step/order number in the template"
1057
+ },
1058
+ "is_required": {
1059
+ "type": "boolean",
1060
+ "description": "Whether this instruction is required",
1061
+ "default": true
1062
+ },
1063
+ "userId": {
1064
+ "type": "integer",
1065
+ "description": "User ID (must be template owner)"
1066
+ }
1067
+ },
1068
+ "required": [
1069
+ "id",
1070
+ "instruction_id",
1071
+ "step_number"
1072
+ ]
1073
+ }
1074
+ },
1075
+ {
1076
+ "name": "remove_instruction_from_template",
1077
+ "description": "Remove an instruction from a template",
1078
+ "method": "DELETE",
1079
+ "path": "/templates/%7B%7Bid%7D%7D/instructions/%7B%7BinstructionId%7D%7D",
1080
+ "input_schema": {
1081
+ "type": "object",
1082
+ "properties": {
1083
+ "id": {
1084
+ "type": "integer",
1085
+ "description": "Template ID"
1086
+ },
1087
+ "instructionId": {
1088
+ "type": "integer",
1089
+ "description": "Instruction ID to remove"
1090
+ },
1091
+ "userId": {
1092
+ "type": "integer",
1093
+ "description": "User ID (must be template owner)"
1094
+ }
1095
+ },
1096
+ "required": [
1097
+ "id",
1098
+ "instructionId"
1099
+ ]
1100
+ }
1101
+ },
1102
+ {
1103
+ "name": "reorder_template_instructions",
1104
+ "description": "Reorder the instructions within a template",
1105
+ "method": "PUT",
1106
+ "path": "/gigs/templates/%7B%7Bid%7D%7D/instructions/reorder",
1107
+ "input_schema": {
1108
+ "type": "object",
1109
+ "properties": {
1110
+ "id": {
1111
+ "type": "integer",
1112
+ "description": "Template ID"
1113
+ },
1114
+ "instructions": {
1115
+ "type": "array",
1116
+ "description": "Array of instruction order objects",
1117
+ "items": {
1118
+ "type": "object",
1119
+ "properties": {
1120
+ "instruction_id": {
1121
+ "type": "integer"
1122
+ },
1123
+ "step_number": {
1124
+ "type": "integer"
1125
+ }
1126
+ }
1127
+ }
1128
+ },
1129
+ "userId": {
1130
+ "type": "integer",
1131
+ "description": "User ID (must be template owner)"
1132
+ }
1133
+ },
1134
+ "required": [
1135
+ "id",
1136
+ "instructions",
1137
+ "userId"
1138
+ ]
1139
+ }
1140
+ },
1141
+ {
1142
+ "name": "update_template_instruction",
1143
+ "description": "Update settings for an instruction within a template (e.g., required status)",
1144
+ "method": "PUT",
1145
+ "path": "/update-template-instruction",
1146
+ "input_schema": {
1147
+ "type": "object",
1148
+ "properties": {
1149
+ "id": {
1150
+ "type": "integer",
1151
+ "description": "Template instruction ID"
1152
+ },
1153
+ "template_id": {
1154
+ "type": "integer",
1155
+ "description": "Template ID"
1156
+ },
1157
+ "is_required": {
1158
+ "type": "boolean",
1159
+ "description": "Whether this instruction is required"
1160
+ },
1161
+ "userId": {
1162
+ "type": "integer",
1163
+ "description": "User ID (must be template owner)"
1164
+ }
1165
+ },
1166
+ "required": [
1167
+ "id",
1168
+ "template_id",
1169
+ "is_required",
1170
+ "userId"
1171
+ ]
1172
+ }
1173
+ },
1174
+ {
1175
+ "name": "remove_gig_instruction",
1176
+ "description": "Remove an instruction from a gig. Use 'Get Gig Instructions' first to find the gig_instructions record ID for the instruction you want to remove.",
1177
+ "method": "DELETE",
1178
+ "path": "/gigs/%7B%7Bid%7D%7D/instructions/%7B%7BinstructionId%7D%7D",
1179
+ "input_schema": {
1180
+ "type": "object",
1181
+ "properties": {
1182
+ "id": {
1183
+ "type": "integer",
1184
+ "description": "Gig ID"
1185
+ },
1186
+ "instructionId": {
1187
+ "type": "integer",
1188
+ "description": "The gig_instructions record ID (the 'id' field returned by Get Gig Instructions), NOT the instruction library ID"
1189
+ }
1190
+ },
1191
+ "required": [
1192
+ "id",
1193
+ "instructionId"
1194
+ ]
1195
+ }
1196
+ },
1197
+ {
1198
+ "name": "customize_gig_instruction",
1199
+ "description": "Customize an instruction for a specific gig with custom content or media. Use 'Get Gig Instructions' first to find the gig_instructions record ID.",
1200
+ "method": "PUT",
1201
+ "path": "/gigs/%7B%7Bid%7D%7D/instructions/%7B%7BinstructionId%7D%7D",
1202
+ "input_schema": {
1203
+ "type": "object",
1204
+ "properties": {
1205
+ "id": {
1206
+ "type": "integer",
1207
+ "description": "Gig ID"
1208
+ },
1209
+ "instructionId": {
1210
+ "type": "integer",
1211
+ "description": "The gig_instructions record ID (the 'id' field returned by Get Gig Instructions), NOT the instruction library ID"
1212
+ },
1213
+ "custom_content": {
1214
+ "type": "string",
1215
+ "description": "Custom content for this gig"
1216
+ },
1217
+ "custom_media_url": {
1218
+ "type": "string",
1219
+ "description": "Custom media URL for this gig"
1220
+ },
1221
+ "is_required": {
1222
+ "type": "boolean",
1223
+ "description": "Whether this instruction is required"
1224
+ },
1225
+ "userId": {
1226
+ "type": "integer",
1227
+ "description": "User ID (must be gig owner)"
1228
+ }
1229
+ },
1230
+ "required": [
1231
+ "id",
1232
+ "instructionId",
1233
+ "userId"
1234
+ ]
1235
+ }
1236
+ },
1237
+ {
1238
+ "name": "list_user_submissions",
1239
+ "description": "List all submissions by a specific user across all gigs",
1240
+ "method": "GET",
1241
+ "path": "/submissions",
1242
+ "input_schema": {
1243
+ "type": "object",
1244
+ "properties": {
1245
+ "submitted_by": {
1246
+ "type": "integer",
1247
+ "description": "User ID who submitted the work"
1248
+ },
1249
+ "status": {
1250
+ "type": "string",
1251
+ "description": "Filter by submission status",
1252
+ "enum": [
1253
+ "pending",
1254
+ "approved",
1255
+ "rejected",
1256
+ "revision_requested"
1257
+ ]
1258
+ },
1259
+ "limit": {
1260
+ "type": "integer",
1261
+ "description": "Number of submissions to return",
1262
+ "default": 100
1263
+ },
1264
+ "offset": {
1265
+ "type": "integer",
1266
+ "description": "Pagination offset",
1267
+ "default": 0
1268
+ }
1269
+ }
1270
+ }
1271
+ },
1272
+ {
1273
+ "name": "delete_submission",
1274
+ "description": "Delete a work submission from a gig",
1275
+ "method": "DELETE",
1276
+ "path": "/gigs/%7B%7Bid%7D%7D/submissions/%7B%7BsubmissionId%7D%7D",
1277
+ "input_schema": {
1278
+ "type": "object",
1279
+ "properties": {
1280
+ "id": {
1281
+ "type": "integer",
1282
+ "description": "Gig ID"
1283
+ },
1284
+ "submissionId": {
1285
+ "type": "integer",
1286
+ "description": "Submission ID to delete"
1287
+ },
1288
+ "userId": {
1289
+ "type": "integer",
1290
+ "description": "User ID (must be submitter or gig owner)"
1291
+ }
1292
+ },
1293
+ "required": [
1294
+ "id",
1295
+ "submissionId",
1296
+ "userId"
1297
+ ]
1298
+ }
1299
+ },
1300
+ {
1301
+ "name": "complete_gig",
1302
+ "description": "Complete a gig by verifying all required instructions are done, creating a submissions folder, moving files, and updating status to completed",
1303
+ "method": "POST",
1304
+ "path": "/gigs/%7B%7Bid%7D%7D/complete",
1305
+ "input_schema": {
1306
+ "type": "object",
1307
+ "properties": {
1308
+ "id": {
1309
+ "type": "integer",
1310
+ "description": "Gig ID to complete"
1311
+ },
1312
+ "project_id": {
1313
+ "type": "integer",
1314
+ "description": "Project ID for storage operations (required for folder creation)"
1315
+ }
1316
+ },
1317
+ "required": [
1318
+ "id",
1319
+ "project_id"
1320
+ ]
1321
+ }
1322
+ },
1323
+ {
1324
+ "name": "reset_instruction_status",
1325
+ "description": "Reset a gig instruction to not completed, clearing all submission data and files. Use 'Get Gig Instructions' first to find the gig_instructions record ID.",
1326
+ "method": "PUT",
1327
+ "path": "/gigs/%7B%7Bid%7D%7D/instructions/%7B%7BinstructionId%7D%7D/reset",
1328
+ "input_schema": {
1329
+ "type": "object",
1330
+ "properties": {
1331
+ "id": {
1332
+ "type": "integer",
1333
+ "description": "Gig ID"
1334
+ },
1335
+ "instructionId": {
1336
+ "type": "integer",
1337
+ "description": "The gig_instructions record ID (the 'id' field returned by Get Gig Instructions), NOT the instruction library ID"
1338
+ }
1339
+ },
1340
+ "required": [
1341
+ "id",
1342
+ "instructionId"
1343
+ ]
1344
+ }
1345
+ },
1346
+ {
1347
+ "name": "create_user",
1348
+ "description": "Register a new user (model) in the gigs platform. Creates a user account scoped to the modeling project.",
1349
+ "method": "POST",
1350
+ "path": "/users",
1351
+ "input_schema": {
1352
+ "type": "object",
1353
+ "properties": {
1354
+ "email": {
1355
+ "type": "string",
1356
+ "description": "User's email address",
1357
+ "format": "email"
1358
+ },
1359
+ "password": {
1360
+ "type": "string",
1361
+ "description": "User's password (minimum 6 characters)",
1362
+ "minLength": 6
1363
+ },
1364
+ "username": {
1365
+ "type": "string",
1366
+ "description": "Username (auto-generated from email if not provided)"
1367
+ },
1368
+ "display_name": {
1369
+ "type": "string",
1370
+ "description": "Display name shown in the platform"
1371
+ }
1372
+ },
1373
+ "required": [
1374
+ "email",
1375
+ "password"
1376
+ ]
1377
+ }
1378
+ },
1379
+ {
1380
+ "name": "delete_user",
1381
+ "description": "Delete a user (model) from the gigs platform. Only users belonging to the modeling project can be deleted.",
1382
+ "method": "DELETE",
1383
+ "path": "/users/%7B%7Buser_id%7D%7D",
1384
+ "input_schema": {
1385
+ "type": "object",
1386
+ "properties": {
1387
+ "user_id": {
1388
+ "type": "integer",
1389
+ "description": "ID of the user to delete"
1390
+ }
1391
+ },
1392
+ "required": [
1393
+ "user_id"
1394
+ ]
1395
+ }
1396
+ },
1397
+ {
1398
+ "name": "update_user",
1399
+ "description": "Update a user (model) profile in the gigs platform. Can change display name, username, email, role, or account status.",
1400
+ "method": "PUT",
1401
+ "path": "/users/%7B%7Buser_id%7D%7D",
1402
+ "input_schema": {
1403
+ "type": "object",
1404
+ "properties": {
1405
+ "user_id": {
1406
+ "type": "integer",
1407
+ "description": "ID of the user to update"
1408
+ },
1409
+ "display_name": {
1410
+ "type": "string",
1411
+ "description": "New display name for the user"
1412
+ },
1413
+ "username": {
1414
+ "type": "string",
1415
+ "description": "New username (3-50 chars, alphanumeric/underscore/dash)"
1416
+ },
1417
+ "email": {
1418
+ "type": "string",
1419
+ "description": "New email address"
1420
+ },
1421
+ "role": {
1422
+ "type": "string",
1423
+ "description": "User role"
1424
+ },
1425
+ "account_status": {
1426
+ "type": "string",
1427
+ "description": "Account status",
1428
+ "enum": [
1429
+ "active",
1430
+ "suspended",
1431
+ "disabled",
1432
+ "pending"
1433
+ ]
1434
+ }
1435
+ },
1436
+ "required": [
1437
+ "user_id"
1438
+ ]
1439
+ }
1440
+ }
1441
+ ]
1442
+ }