@evolinkai/mcp 1.3.0 → 1.4.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 (122) hide show
  1. package/README.md +2 -2
  2. package/dist/core/src/branding.d.ts +3 -0
  3. package/dist/core/src/branding.d.ts.map +1 -0
  4. package/dist/core/src/branding.js +8 -0
  5. package/dist/core/src/branding.js.map +1 -0
  6. package/dist/core/src/config.d.ts +1 -1
  7. package/dist/core/src/config.d.ts.map +1 -1
  8. package/dist/core/src/config.js +3 -1
  9. package/dist/core/src/config.js.map +1 -1
  10. package/dist/core/src/data/model-constraints.d.ts +8 -0
  11. package/dist/core/src/data/model-constraints.d.ts.map +1 -0
  12. package/dist/core/src/data/model-constraints.js +25 -0
  13. package/dist/core/src/data/model-constraints.js.map +1 -0
  14. package/dist/core/src/data/model-params.d.ts +17 -0
  15. package/dist/core/src/data/model-params.d.ts.map +1 -1
  16. package/dist/core/src/data/model-params.generated.d.ts.map +1 -1
  17. package/dist/core/src/data/model-params.generated.js +1 -1
  18. package/dist/core/src/data/model-params.generated.js.map +1 -1
  19. package/dist/core/src/data/model-params.js +6 -1
  20. package/dist/core/src/data/model-params.js.map +1 -1
  21. package/dist/core/src/request-context.d.ts +19 -0
  22. package/dist/core/src/request-context.d.ts.map +1 -1
  23. package/dist/core/src/request-context.js +13 -0
  24. package/dist/core/src/request-context.js.map +1 -1
  25. package/dist/core/src/server.d.ts +21 -3
  26. package/dist/core/src/server.d.ts.map +1 -1
  27. package/dist/core/src/server.js +52 -13
  28. package/dist/core/src/server.js.map +1 -1
  29. package/dist/core/src/services/api-client.d.ts +15 -0
  30. package/dist/core/src/services/api-client.d.ts.map +1 -1
  31. package/dist/core/src/services/api-client.js +26 -0
  32. package/dist/core/src/services/api-client.js.map +1 -1
  33. package/dist/core/src/services/catalog-client.d.ts +14 -0
  34. package/dist/core/src/services/catalog-client.d.ts.map +1 -0
  35. package/dist/core/src/services/catalog-client.js +42 -0
  36. package/dist/core/src/services/catalog-client.js.map +1 -0
  37. package/dist/core/src/services/error-handler.d.ts.map +1 -1
  38. package/dist/core/src/services/error-handler.js +27 -14
  39. package/dist/core/src/services/error-handler.js.map +1 -1
  40. package/dist/core/src/services/file-client.d.ts +33 -3
  41. package/dist/core/src/services/file-client.d.ts.map +1 -1
  42. package/dist/core/src/services/file-client.js +50 -19
  43. package/dist/core/src/services/file-client.js.map +1 -1
  44. package/dist/core/src/services/media-preview.d.ts +24 -0
  45. package/dist/core/src/services/media-preview.d.ts.map +1 -0
  46. package/dist/core/src/services/media-preview.js +156 -0
  47. package/dist/core/src/services/media-preview.js.map +1 -0
  48. package/dist/core/src/services/model-catalog.d.ts +6 -3
  49. package/dist/core/src/services/model-catalog.d.ts.map +1 -1
  50. package/dist/core/src/services/model-catalog.js +38 -16
  51. package/dist/core/src/services/model-catalog.js.map +1 -1
  52. package/dist/core/src/services/param-validator.d.ts.map +1 -1
  53. package/dist/core/src/services/param-validator.js +36 -0
  54. package/dist/core/src/services/param-validator.js.map +1 -1
  55. package/dist/core/src/services/preview-download.d.ts +11 -0
  56. package/dist/core/src/services/preview-download.d.ts.map +1 -0
  57. package/dist/core/src/services/preview-download.js +106 -0
  58. package/dist/core/src/services/preview-download.js.map +1 -0
  59. package/dist/core/src/services/pricing-client.d.ts +21 -3
  60. package/dist/core/src/services/pricing-client.d.ts.map +1 -1
  61. package/dist/core/src/services/pricing-client.js +86 -4
  62. package/dist/core/src/services/pricing-client.js.map +1 -1
  63. package/dist/core/src/services/upload-policy.d.ts +2 -0
  64. package/dist/core/src/services/upload-policy.d.ts.map +1 -1
  65. package/dist/core/src/services/upload-policy.js +8 -0
  66. package/dist/core/src/services/upload-policy.js.map +1 -1
  67. package/dist/core/src/services/upload-slots.d.ts +63 -0
  68. package/dist/core/src/services/upload-slots.d.ts.map +1 -0
  69. package/dist/core/src/services/upload-slots.js +24 -0
  70. package/dist/core/src/services/upload-slots.js.map +1 -0
  71. package/dist/core/src/services/utm.d.ts +29 -0
  72. package/dist/core/src/services/utm.d.ts.map +1 -0
  73. package/dist/core/src/services/utm.js +64 -0
  74. package/dist/core/src/services/utm.js.map +1 -0
  75. package/dist/core/src/tool-guidance.d.ts +6 -0
  76. package/dist/core/src/tool-guidance.d.ts.map +1 -0
  77. package/dist/core/src/tool-guidance.js +49 -0
  78. package/dist/core/src/tool-guidance.js.map +1 -0
  79. package/dist/core/src/tools/check-balance.d.ts.map +1 -1
  80. package/dist/core/src/tools/check-balance.js +13 -9
  81. package/dist/core/src/tools/check-balance.js.map +1 -1
  82. package/dist/core/src/tools/estimate-cost.d.ts.map +1 -1
  83. package/dist/core/src/tools/estimate-cost.js +18 -12
  84. package/dist/core/src/tools/estimate-cost.js.map +1 -1
  85. package/dist/core/src/tools/generate.d.ts.map +1 -1
  86. package/dist/core/src/tools/generate.js +67 -14
  87. package/dist/core/src/tools/generate.js.map +1 -1
  88. package/dist/core/src/tools/get-model.d.ts +2 -1
  89. package/dist/core/src/tools/get-model.d.ts.map +1 -1
  90. package/dist/core/src/tools/get-model.js +27 -7
  91. package/dist/core/src/tools/get-model.js.map +1 -1
  92. package/dist/core/src/tools/get-task.d.ts.map +1 -1
  93. package/dist/core/src/tools/get-task.js +3 -2
  94. package/dist/core/src/tools/get-task.js.map +1 -1
  95. package/dist/core/src/tools/list-tasks.d.ts.map +1 -1
  96. package/dist/core/src/tools/list-tasks.js +10 -3
  97. package/dist/core/src/tools/list-tasks.js.map +1 -1
  98. package/dist/core/src/tools/prepare-upload.d.ts +6 -0
  99. package/dist/core/src/tools/prepare-upload.d.ts.map +1 -0
  100. package/dist/core/src/tools/prepare-upload.js +134 -0
  101. package/dist/core/src/tools/prepare-upload.js.map +1 -0
  102. package/dist/core/src/tools/search-models.d.ts +2 -1
  103. package/dist/core/src/tools/search-models.d.ts.map +1 -1
  104. package/dist/core/src/tools/search-models.js +11 -5
  105. package/dist/core/src/tools/search-models.js.map +1 -1
  106. package/dist/core/src/tools/shared.d.ts +7 -2
  107. package/dist/core/src/tools/shared.d.ts.map +1 -1
  108. package/dist/core/src/tools/shared.js +12 -4
  109. package/dist/core/src/tools/shared.js.map +1 -1
  110. package/dist/core/src/tools/task-format.d.ts +16 -0
  111. package/dist/core/src/tools/task-format.d.ts.map +1 -1
  112. package/dist/core/src/tools/task-format.js +85 -11
  113. package/dist/core/src/tools/task-format.js.map +1 -1
  114. package/dist/core/src/tools/upload-file.d.ts +10 -0
  115. package/dist/core/src/tools/upload-file.d.ts.map +1 -1
  116. package/dist/core/src/tools/upload-file.js +36 -6
  117. package/dist/core/src/tools/upload-file.js.map +1 -1
  118. package/dist/core/src/version.d.ts +1 -1
  119. package/dist/core/src/version.js +1 -1
  120. package/dist/evolink-media/src/index.js +2 -0
  121. package/dist/evolink-media/src/index.js.map +1 -1
  122. package/package.json +1 -1
@@ -4,32 +4,34 @@ import { resolveModel, suggestModels } from '../services/model-catalog.js';
4
4
  import { formatIssues, validateInput } from '../services/param-validator.js';
5
5
  import { estimateCost, formatEstimateRange } from '../services/pricing-client.js';
6
6
  import { API_KEYS_URL, MCP_CONSOLE_URL, MCP_KEY_NAME, TOP_UP_URL } from '../services/http-policy.js';
7
+ import { trackedLink } from '../services/utm.js';
7
8
  import { currentCredentialMode } from '../request-context.js';
8
- import { READ_ONLY, dailyLimitOf, errorResult, failure, money, ok } from './shared.js';
9
+ import { MEDIA_SECONDS_DESCRIPTION, MEDIA_SECONDS_MAX, READ_ONLY, dailyLimitOf, errorResult, failure, money, ok } from './shared.js';
9
10
  export function registerEstimateCost(server, config) {
10
11
  server.registerTool('estimate_cost', {
11
12
  title: 'Estimate cost',
12
13
  description: [
13
14
  'Check a generation input and estimate what it will cost, without submitting anything. Free.',
14
15
  'Returns whether the input is valid, the expected price range in USD and credits, what it is based on, and whether the account balance and any spending limit (the EvoLink MCP limit, or this API key\'s) cover it.',
15
- 'Call it before a paid generate_* call and tell the user the price.',
16
+ 'Call it before a paid generate_* call, then use the generation confirmation template in the server instructions.',
16
17
  ].join(' '),
17
18
  inputSchema: {
18
19
  model: z.string().min(1).max(128).describe('Model ID, e.g. "seedance-2.0-text-to-video".'),
19
20
  input: z.record(z.unknown()).optional()
20
21
  .describe('The input you plan to pass to the generate tool, e.g. {"prompt":"…","duration":5,"quality":"1080p"}.'),
22
+ media_seconds: z.number().positive().max(MEDIA_SECONDS_MAX).optional().describe(MEDIA_SECONDS_DESCRIPTION),
21
23
  },
22
24
  annotations: { title: 'Estimate cost', ...READ_ONLY },
23
- }, async ({ model, input }) => {
25
+ }, async ({ model, input, media_seconds: mediaSeconds }) => {
24
26
  try {
25
- const { catalog, entry } = await resolveModel(model);
27
+ const { catalog, entry } = await resolveModel(model, config);
26
28
  if (!entry) {
27
29
  const suggestions = suggestModels(catalog, model);
28
30
  return failure(`Unknown model "${model}".${suggestions.length ? ` Did you mean: ${suggestions.join(', ')}?` : ''} Use search_models to find model IDs.`, { error: { category: 'not_found', param: 'model' }, suggestions });
29
31
  }
30
32
  const values = input ?? {};
31
33
  const validation = entry.spec ? validateInput(entry.spec, values) : undefined;
32
- const estimate = estimateCost(entry.priced, entry.kind, values, entry.spec);
34
+ const estimate = estimateCost(entry.priced, entry.kind, values, entry.spec, { mediaSeconds });
33
35
  const lines = [`Estimate for ${entry.id} (${entry.kind}); nothing was submitted or charged.`];
34
36
  if (!validation) {
35
37
  lines.push('Input not checked: this model\'s parameters are not documented here.');
@@ -45,12 +47,16 @@ export function registerEstimateCost(server, config) {
45
47
  const range = formatEstimateRange(estimate);
46
48
  if (estimate.status === 'estimated' && range)
47
49
  lines.push(`Estimated cost: ${range}`);
50
+ else if (estimate.status === 'partial' && range)
51
+ lines.push(`Partial estimate at published rates: ${range} (not a total or an upper bound).`);
48
52
  else if (estimate.status === 'token_billed')
49
53
  lines.push('Cost: billed by tokens used; it is only known after the task runs.');
50
54
  else if (estimate.status === 'needs_input')
51
55
  lines.push('Cost: cannot estimate yet; see the note below.');
56
+ else if (estimate.uncheckable_reason === 'output_duration')
57
+ lines.push('Cost: the output duration is unknown, so there is no total or upper bound to quote.');
52
58
  else
53
- lines.push('Cost: no published price to estimate from.');
59
+ lines.push('Cost: pricing data is unavailable in this catalog.');
54
60
  if (estimate.basis.length)
55
61
  lines.push('Based on:', ...estimate.basis.map(line => `- ${line}`));
56
62
  if (estimate.possible_extras.length)
@@ -70,11 +76,11 @@ export function registerEstimateCost(server, config) {
70
76
  const balance = Math.max(0, credits.user.remaining_credits);
71
77
  lines.push(`Account balance: ${money(balance)}`);
72
78
  structured.balance_credits = balance;
73
- if (estimate.max_credits !== undefined) {
79
+ if (estimate.status === 'estimated' && estimate.max_credits !== undefined) {
74
80
  const enough = balance >= estimate.max_credits;
75
81
  structured.enough_balance = enough;
76
82
  if (!enough)
77
- lines.push(`The account balance may not cover this; top up at ${TOP_UP_URL}.`);
83
+ lines.push(`The account balance may not cover this; top up at ${trackedLink(TOP_UP_URL, 'top_up')}.`);
78
84
  }
79
85
  // The key's own limit is checked before the balance: warn now instead of failing on submit.
80
86
  if (!credits.token.unlimited_credits) {
@@ -85,18 +91,18 @@ export function registerEstimateCost(server, config) {
85
91
  : `This API key's limit left: ${money(left)}.`);
86
92
  structured.limit_scope = signedIn ? 'mcp' : 'api_key';
87
93
  structured.limit_remaining_credits = left;
88
- if (estimate.max_credits !== undefined) {
94
+ if (estimate.status === 'estimated' && estimate.max_credits !== undefined) {
89
95
  const enoughLimit = left >= estimate.max_credits;
90
96
  structured.enough_limit = enoughLimit;
91
97
  if (!enoughLimit) {
92
98
  lines.push(signedIn
93
- ? `The EvoLink MCP limit may not cover this. It is a limit the user set, not the account balance; they can raise it at ${MCP_CONSOLE_URL} (the key named "${MCP_KEY_NAME}").`
94
- : `This API key's limit may not cover this; raise it at ${API_KEYS_URL} or use another key.`);
99
+ ? `The EvoLink MCP limit may not cover this. It is a limit the user set, not the account balance; they can raise it at ${trackedLink(MCP_CONSOLE_URL, 'api_keys')} (the key named "${MCP_KEY_NAME}").`
100
+ : `This API key's limit may not cover this; raise it at ${trackedLink(API_KEYS_URL, 'api_keys')} or use another key.`);
95
101
  }
96
102
  }
97
103
  }
98
104
  const daily = dailyLimitOf(credits.token);
99
- if (daily && estimate.max_credits !== undefined) {
105
+ if (daily && estimate.status === 'estimated' && estimate.max_credits !== undefined) {
100
106
  const signedIn = currentCredentialMode() === 'signed_in';
101
107
  const enoughToday = daily.left >= estimate.max_credits;
102
108
  structured.daily_left_credits = daily.left;
@@ -1 +1 @@
1
- {"version":3,"file":"estimate-cost.js","sourceRoot":"","sources":["../../../../../core/src/tools/estimate-cost.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC3E,OAAO,EAAE,YAAY,EAAE,aAAa,EAAyB,MAAM,gCAAgC,CAAC;AACpG,OAAO,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AAClF,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AACrG,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,WAAW,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,aAAa,CAAC;AAEvF,MAAM,UAAU,oBAAoB,CAAC,MAAiB,EAAE,MAAoB;IAC1E,MAAM,CAAC,YAAY,CAAC,eAAe,EAAE;QACnC,KAAK,EAAE,eAAe;QACtB,WAAW,EAAE;YACX,6FAA6F;YAC7F,oNAAoN;YACpN,oEAAoE;SACrE,CAAC,IAAI,CAAC,GAAG,CAAC;QACX,WAAW,EAAE;YACX,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,8CAA8C,CAAC;YAC1F,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,EAAE;iBACpC,QAAQ,CAAC,sGAAsG,CAAC;SACpH;QACD,WAAW,EAAE,EAAE,KAAK,EAAE,eAAe,EAAE,GAAG,SAAS,EAAE;KACtD,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE;QAC5B,IAAI,CAAC;YACH,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,MAAM,YAAY,CAAC,KAAK,CAAC,CAAC;YACrD,IAAI,CAAC,KAAK,EAAE,CAAC;gBACX,MAAM,WAAW,GAAG,aAAa,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;gBAClD,OAAO,OAAO,CACZ,kBAAkB,KAAK,KAAK,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,kBAAkB,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,uCAAuC,EACxI,EAAE,KAAK,EAAE,EAAE,QAAQ,EAAE,WAAW,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,WAAW,EAAE,CAClE,CAAC;YACJ,CAAC;YACD,MAAM,MAAM,GAAG,KAAK,IAAI,EAAE,CAAC;YAC3B,MAAM,UAAU,GAAiC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YAC5G,MAAM,QAAQ,GAAG,YAAY,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;YAE5E,MAAM,KAAK,GAAG,CAAC,gBAAgB,KAAK,CAAC,EAAE,KAAK,KAAK,CAAC,IAAI,sCAAsC,CAAC,CAAC;YAC9F,IAAI,CAAC,UAAU,EAAE,CAAC;gBAChB,KAAK,CAAC,IAAI,CAAC,sEAAsE,CAAC,CAAC;YACrF,CAAC;iBAAM,IAAI,UAAU,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACxC,KAAK,CAAC,IAAI,CAAC,4BAA4B,KAAK,CAAC,IAAI,4BAA4B,EAAE,GAAG,YAAY,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC;YACrH,CAAC;iBAAM,CAAC;gBACN,KAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;YACnC,CAAC;YACD,IAAI,UAAU,EAAE,QAAQ,CAAC,MAAM;gBAAE,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,YAAY,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC;YAE/F,MAAM,KAAK,GAAG,mBAAmB,CAAC,QAAQ,CAAC,CAAC;YAC5C,IAAI,QAAQ,CAAC,MAAM,KAAK,WAAW,IAAI,KAAK;gBAAE,KAAK,CAAC,IAAI,CAAC,mBAAmB,KAAK,EAAE,CAAC,CAAC;iBAChF,IAAI,QAAQ,CAAC,MAAM,KAAK,cAAc;gBAAE,KAAK,CAAC,IAAI,CAAC,oEAAoE,CAAC,CAAC;iBACzH,IAAI,QAAQ,CAAC,MAAM,KAAK,aAAa;gBAAE,KAAK,CAAC,IAAI,CAAC,gDAAgD,CAAC,CAAC;;gBACpG,KAAK,CAAC,IAAI,CAAC,4CAA4C,CAAC,CAAC;YAC9D,IAAI,QAAQ,CAAC,KAAK,CAAC,MAAM;gBAAE,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,CAAC;YAC/F,IAAI,QAAQ,CAAC,eAAe,CAAC,MAAM;gBAAE,KAAK,CAAC,IAAI,CAAC,kBAAkB,EAAE,GAAG,QAAQ,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,CAAC;YAC1H,KAAK,MAAM,IAAI,IAAI,QAAQ,CAAC,KAAK;gBAAE,KAAK,CAAC,IAAI,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC;YAE/D,MAAM,UAAU,GAA4B;gBAC1C,KAAK,EAAE,KAAK,CAAC,EAAE;gBACf,IAAI,EAAE,KAAK,CAAC,IAAI;gBAChB,WAAW,EAAE,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI;gBAC/D,QAAQ,EAAE,UAAU,EAAE,MAAM,IAAI,EAAE;gBAClC,QAAQ,EAAE,UAAU,EAAE,QAAQ,IAAI,EAAE;gBACpC,QAAQ;aACT,CAAC;YACF,IAAI,CAAC;gBACH,MAAM,OAAO,GAAG,MAAM,UAAU,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;gBAC1D,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;gBAC5D,KAAK,CAAC,IAAI,CAAC,oBAAoB,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;gBACjD,UAAU,CAAC,eAAe,GAAG,OAAO,CAAC;gBACrC,IAAI,QAAQ,CAAC,WAAW,KAAK,SAAS,EAAE,CAAC;oBACvC,MAAM,MAAM,GAAG,OAAO,IAAI,QAAQ,CAAC,WAAW,CAAC;oBAC/C,UAAU,CAAC,cAAc,GAAG,MAAM,CAAC;oBACnC,IAAI,CAAC,MAAM;wBAAE,KAAK,CAAC,IAAI,CAAC,qDAAqD,UAAU,GAAG,CAAC,CAAC;gBAC9F,CAAC;gBACD,4FAA4F;gBAC5F,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,iBAAiB,EAAE,CAAC;oBACrC,MAAM,QAAQ,GAAG,qBAAqB,EAAE,KAAK,WAAW,CAAC;oBACzD,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;oBAC1D,KAAK,CAAC,IAAI,CAAC,QAAQ;wBACjB,CAAC,CAAC,2BAA2B,KAAK,CAAC,IAAI,CAAC,wCAAwC;wBAChF,CAAC,CAAC,8BAA8B,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;oBAClD,UAAU,CAAC,WAAW,GAAG,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;oBACtD,UAAU,CAAC,uBAAuB,GAAG,IAAI,CAAC;oBAC1C,IAAI,QAAQ,CAAC,WAAW,KAAK,SAAS,EAAE,CAAC;wBACvC,MAAM,WAAW,GAAG,IAAI,IAAI,QAAQ,CAAC,WAAW,CAAC;wBACjD,UAAU,CAAC,YAAY,GAAG,WAAW,CAAC;wBACtC,IAAI,CAAC,WAAW,EAAE,CAAC;4BACjB,KAAK,CAAC,IAAI,CAAC,QAAQ;gCACjB,CAAC,CAAC,uHAAuH,eAAe,oBAAoB,YAAY,KAAK;gCAC7K,CAAC,CAAC,wDAAwD,YAAY,sBAAsB,CAAC,CAAC;wBAClG,CAAC;oBACH,CAAC;gBACH,CAAC;gBACD,MAAM,KAAK,GAAG,YAAY,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;gBAC1C,IAAI,KAAK,IAAI,QAAQ,CAAC,WAAW,KAAK,SAAS,EAAE,CAAC;oBAChD,MAAM,QAAQ,GAAG,qBAAqB,EAAE,KAAK,WAAW,CAAC;oBACzD,MAAM,WAAW,GAAG,KAAK,CAAC,IAAI,IAAI,QAAQ,CAAC,WAAW,CAAC;oBACvD,UAAU,CAAC,kBAAkB,GAAG,KAAK,CAAC,IAAI,CAAC;oBAC3C,UAAU,CAAC,kBAAkB,GAAG,WAAW,CAAC;oBAC5C,IAAI,CAAC,WAAW,EAAE,CAAC;wBACjB,MAAM,MAAM,GAAG,wBAAwB,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;wBAC9E,KAAK,CAAC,IAAI,CAAC,QAAQ;4BACjB,CAAC,CAAC,iDAAiD,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,gBAAgB,MAAM,yDAAyD;4BACnJ,CAAC,CAAC,qDAAqD,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,gBAAgB,MAAM,IAAI,CAAC,CAAC;oBACxG,CAAC;gBACH,CAAC;YACH,CAAC;YAAC,MAAM,CAAC;gBACP,KAAK,CAAC,IAAI,CAAC,uCAAuC,CAAC,CAAC;YACtD,CAAC;YACD,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;gBAC3B,KAAK,CAAC,IAAI,CAAC,SAAS,OAAO,CAAC,cAAc,EAAE,CAAC,CAAC;gBAC9C,UAAU,CAAC,eAAe,GAAG,OAAO,CAAC,cAAc,CAAC;YACtD,CAAC;YACD,KAAK,CAAC,IAAI,CAAC,qJAAqJ,CAAC,CAAC;YAClK,OAAO,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,UAAU,CAAC,CAAC;QAC1C,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,WAAW,CAAC,KAAK,CAAC,CAAC;QAC5B,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"estimate-cost.js","sourceRoot":"","sources":["../../../../../core/src/tools/estimate-cost.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"generate.d.ts","sourceRoot":"","sources":["../../../../../core/src/tools/generate.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AA+CjD,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,YAAY,GAAG,IAAI,CAEnF"}
1
+ {"version":3,"file":"generate.d.ts","sourceRoot":"","sources":["../../../../../core/src/tools/generate.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAiFjD,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,YAAY,GAAG,IAAI,CAEnF"}
@@ -5,8 +5,10 @@ import { formatIssues, validateInput } from '../services/param-validator.js';
5
5
  import { estimateCost, formatEstimateRange } from '../services/pricing-client.js';
6
6
  import { CLIENT_REQUEST_ID_PATTERN, newRunId } from '../services/http-policy.js';
7
7
  import { formatUsd } from '../services/error-handler.js';
8
- import { PAID, errorResult, failure, money, ok, progressReporter, usdOf } from './shared.js';
9
- import { TERMINAL_STATUSES, describeTask, waitForTask } from './task-format.js';
8
+ import { MEDIA_SECONDS_DESCRIPTION, MEDIA_SECONDS_MAX, PAID, errorResult, failure, money, ok, progressReporter, usdOf } from './shared.js';
9
+ import { RESULT_DELIVERY_GUIDANCE, TERMINAL_STATUSES, describeTask, waitForTask } from './task-format.js';
10
+ import { PAID_GENERATION_GUIDANCE } from '../tool-guidance.js';
11
+ import { currentRequestCredentials } from '../request-context.js';
10
12
  const PATHS = {
11
13
  image: '/v1/images/generations',
12
14
  video: '/v1/videos/generations',
@@ -27,16 +29,46 @@ const AFTER = {
27
29
  function description(kind) {
28
30
  return [
29
31
  DESCRIPTIONS[kind],
30
- 'Before calling, get the price with estimate_cost (or get_model) and tell the user, unless they already approved this spend.',
32
+ PAID_GENERATION_GUIDANCE,
31
33
  'Find models with search_models and their parameters with get_model; pass the parameters in input.',
32
34
  AFTER[kind],
33
35
  'Never call this again to check progress or to "retry" a running task: each call creates and charges a new task.',
34
36
  'After a network error or timeout, reuse the same client_request_id to retry without being charged twice.',
37
+ RESULT_DELIVERY_GUIDANCE,
35
38
  ].join(' ');
36
39
  }
40
+ /** Longest prompt accepted through the prompt shortcut. */
41
+ const PROMPT_SHORTCUT_MAX = 20_000;
37
42
  function rangeText(estimate) {
38
43
  return formatEstimateRange(estimate) ?? 'unknown';
39
44
  }
45
+ /** Why max_cost_usd could not be checked, and what the assistant can do next. */
46
+ function uncheckedCap(estimate, pricingWarning) {
47
+ if (estimate.uncheckable_reason === 'output_duration') {
48
+ return ['the generated output duration is not fixed, so the declared seconds cannot establish an upper bound', 'Use an explicit duration if the model accepts it; otherwise ask the user whether to proceed without a cap.'];
49
+ }
50
+ if (estimate.uncheckable_reason === 'reference_video') {
51
+ return [
52
+ 'this per-second video request uses input.video_urls, input.video_url or input.source_task_id, and published prices do not fully cover input video seconds or video-dependent billing multipliers',
53
+ 'media_seconds cannot resolve this billing gap. Ask the user whether to proceed without a cap.',
54
+ ];
55
+ }
56
+ if (estimate.status === 'token_billed') {
57
+ return ['it is billed by tokens used, so its cost is only known afterwards', 'Ask the user whether to proceed without a cap.'];
58
+ }
59
+ if (estimate.missing === 'media_seconds') {
60
+ return [
61
+ 'it is billed per second and has no duration parameter, so EvoLink measures the seconds when the task runs (usually the length of the input video or audio)',
62
+ 'If you know that length, pass it as media_seconds; otherwise ask the user whether to proceed without a cap.',
63
+ ];
64
+ }
65
+ if (estimate.missing === 'duration') {
66
+ return ['it is billed per second and input.duration is not set', 'Set input.duration, or ask the user whether to proceed without a cap.'];
67
+ }
68
+ // Notes end with a full stop; the sentence around the reason adds its own.
69
+ const note = estimate.notes[0] ?? pricingWarning ?? 'no price could be found for it';
70
+ return [note.replace(/[.\s]+$/, ''), 'Ask the user whether to proceed without a cap.'];
71
+ }
40
72
  export function registerGenerateTools(server, config) {
41
73
  for (const kind of ['image', 'video', 'audio'])
42
74
  registerGenerate(server, config, kind);
@@ -49,17 +81,25 @@ function registerGenerate(server, config, kind) {
49
81
  description: description(kind),
50
82
  inputSchema: {
51
83
  model: z.string().min(1).max(128).describe(`${kind[0].toUpperCase()}${kind.slice(1)} model ID from search_models.`),
52
- prompt: z.string().max(20_000).optional().describe('Shortcut for input.prompt.'),
84
+ // The cap is checked in the handler: a schema limit makes the SDK answer with a bare validation error.
85
+ prompt: z.string().optional().describe(`Shortcut for input.prompt; up to ${PROMPT_SHORTCUT_MAX.toLocaleString('en-US')} characters (get_model lists the model's own limit).`),
53
86
  input: z.record(z.unknown()).optional()
54
87
  .describe('Model parameters exactly as listed by get_model, e.g. {"prompt":"…","quality":"1080p"}. Do not put model or callback_url here.'),
55
88
  client_request_id: z.string().regex(CLIENT_REQUEST_ID_PATTERN).optional()
56
89
  .describe('Optional idempotency key (16–96 characters: letters, digits, . _ -). Reuse the same value only to retry the same request after a network error or timeout.'),
57
90
  max_cost_usd: z.number().positive().max(10_000).optional()
58
- .describe('Optional spending cap: if the estimated cost is higher, nothing is submitted.'),
91
+ .describe('Optional estimate-based spending cap: refuses to submit when the estimate is higher or cannot cover the full request. Per-second video requests with video_urls, video_url or source_task_id cannot use this cap, even with media_seconds.'),
92
+ media_seconds: z.number().positive().max(MEDIA_SECONDS_MAX).optional().describe(MEDIA_SECONDS_DESCRIPTION),
59
93
  },
60
94
  annotations: { title, ...PAID },
61
95
  }, async (args, extra) => {
62
96
  const started = Date.now();
97
+ const credentials = currentRequestCredentials();
98
+ const unavailable = !credentials?.serviceChannel && !credentials?.apiKey ? credentials?.unavailableReason : undefined;
99
+ if (unavailable)
100
+ return failure(`${unavailable} Nothing was submitted or charged.`, {
101
+ error: { category: 'unauthorized' }, charged: 'no',
102
+ });
63
103
  const input = { ...(args.input ?? {}) };
64
104
  if (args.prompt !== undefined) {
65
105
  if (input.prompt !== undefined && input.prompt !== args.prompt) {
@@ -68,17 +108,23 @@ function registerGenerate(server, config, kind) {
68
108
  charged: 'no',
69
109
  });
70
110
  }
111
+ if (args.prompt.length > PROMPT_SHORTCUT_MAX) {
112
+ return failure(`The prompt is ${args.prompt.length.toLocaleString('en-US')} characters; the limit is ${PROMPT_SHORTCUT_MAX.toLocaleString('en-US')}. Shorten it and try again. Nothing was submitted or charged.`, {
113
+ error: { category: 'invalid_request', param: 'prompt' },
114
+ charged: 'no',
115
+ });
116
+ }
71
117
  input.prompt = args.prompt;
72
118
  }
73
119
  let clientRequestId;
74
120
  try {
75
- const { catalog, entry } = await resolveModel(args.model);
121
+ const { catalog, entry } = await resolveModel(args.model, config);
76
122
  if (!entry) {
77
123
  const suggestions = suggestModels(catalog, args.model, kind);
78
124
  return failure(`Unknown ${kind} model "${args.model}".${suggestions.length ? ` Did you mean: ${suggestions.join(', ')}?` : ''} Use search_models to find model IDs. Nothing was submitted or charged.`, { error: { category: 'not_found', param: 'model' }, suggestions, charged: 'no' });
79
125
  }
80
126
  if (entry.kind !== kind) {
81
- return failure(`${entry.id} is a ${entry.kind} model; use generate_${entry.kind}. Nothing was submitted or charged.`, {
127
+ return failure(`${entry.id} is ${entry.kind === 'video' ? 'a' : 'an'} ${entry.kind} model; use generate_${entry.kind}. Nothing was submitted or charged.`, {
82
128
  error: { category: 'invalid_request', param: 'model' },
83
129
  use_tool: `generate_${entry.kind}`,
84
130
  charged: 'no',
@@ -99,13 +145,12 @@ function registerGenerate(server, config, kind) {
99
145
  else {
100
146
  warnings.push('This model\'s parameters are not documented here, so the input was not checked before sending.');
101
147
  }
102
- const estimate = estimateCost(entry.priced, kind, input, entry.spec);
148
+ // media_seconds only prices the request; the body below is built from input alone.
149
+ const estimate = estimateCost(entry.priced, kind, input, entry.spec, { mediaSeconds: args.media_seconds });
103
150
  if (args.max_cost_usd !== undefined) {
104
- if (estimate.status !== 'estimated' || estimate.max_usd === undefined) {
105
- const reason = estimate.status === 'token_billed'
106
- ? 'it is billed by tokens used, so its cost is only known afterwards'
107
- : estimate.notes[0] ?? catalog.pricingWarning ?? 'no price could be found for it';
108
- return failure(`max_cost_usd cannot be checked for ${entry.id}: ${reason}. Nothing was submitted or charged. Ask the user whether to proceed without a cap.`, {
151
+ if (estimate.uncheckable_reason !== undefined || estimate.status !== 'estimated' || estimate.max_usd === undefined) {
152
+ const [reason, next] = uncheckedCap(estimate, catalog.pricingWarning);
153
+ return failure(`max_cost_usd cannot be checked for ${entry.id}: ${reason}. Nothing was submitted or charged. ${next}`, {
109
154
  error: { category: 'invalid_request', param: 'max_cost_usd' },
110
155
  estimate,
111
156
  charged: 'no',
@@ -156,6 +201,13 @@ function registerGenerate(server, config, kind) {
156
201
  }
157
202
  if (estimate.status === 'estimated')
158
203
  lines.push(`Estimate before submitting: ${rangeText(estimate)}`);
204
+ if (estimate.status === 'partial') {
205
+ lines.push(`Partial estimate at published rates: ${rangeText(estimate)} (not a total or an upper bound).`);
206
+ for (const extra of estimate.possible_extras)
207
+ lines.push(`May also charge: ${extra}`);
208
+ for (const note of estimate.notes)
209
+ lines.push(`Note: ${note}`);
210
+ }
159
211
  for (const warning of warnings)
160
212
  lines.push(`Warning: ${warning}`);
161
213
  lines.push(`client_request_id: ${clientRequestId}`);
@@ -166,8 +218,9 @@ function registerGenerate(server, config, kind) {
166
218
  replayed: submitted.idempotency_replayed === true,
167
219
  ...(typeof reserved === 'number' ? { reserved_credits: reserved, reserved_usd: usdOf(reserved) } : {}),
168
220
  ...(estimate.status === 'estimated' ? { estimate: { min_usd: estimate.min_usd, max_usd: estimate.max_usd } } : {}),
221
+ ...(estimate.status === 'partial' ? { estimate } : {}),
169
222
  ...(warnings.length ? { warnings } : {}),
170
- });
223
+ }, view.resources);
171
224
  }
172
225
  catch (error) {
173
226
  // clientRequestId is set right before the submit, so it also tells whether a request may have gone out.
@@ -1 +1 @@
1
- {"version":3,"file":"generate.js","sourceRoot":"","sources":["../../../../../core/src/tools/generate.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"generate.js","sourceRoot":"","sources":["../../../../../core/src/tools/generate.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,6 @@
1
1
  import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
2
+ import type { ServerConfig } from '../config.js';
2
3
  import { type ParamSpec } from '../data/model-params.js';
3
4
  export declare function describeParam(name: string, spec: ParamSpec, indent?: string): string[];
4
- export declare function registerGetModel(server: McpServer): void;
5
+ export declare function registerGetModel(server: McpServer, config: ServerConfig): void;
5
6
  //# sourceMappingURL=get-model.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"get-model.d.ts","sourceRoot":"","sources":["../../../../../core/src/tools/get-model.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,EAAmB,KAAK,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAW1E,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,SAAK,GAAG,MAAM,EAAE,CAelF;AAQD,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAmExD"}
1
+ {"version":3,"file":"get-model.d.ts","sourceRoot":"","sources":["../../../../../core/src/tools/get-model.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,EAAmB,KAAK,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAY1E,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,SAAK,GAAG,MAAM,EAAE,CAgBlF;AAQD,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,YAAY,GAAG,IAAI,CAiF9E"}
@@ -1,8 +1,9 @@
1
1
  import { z } from 'zod';
2
2
  import { modelParamsMeta } from '../data/model-params.js';
3
3
  import { resolveModel, suggestModels } from '../services/model-catalog.js';
4
- import { formatPrice } from '../services/pricing-client.js';
4
+ import { billedByMediaLength, formatPrice } from '../services/pricing-client.js';
5
5
  import { formatUsd } from '../services/error-handler.js';
6
+ import { trackedLink } from '../services/utm.js';
6
7
  import { READ_ONLY, errorResult, failure, ok } from './shared.js';
7
8
  import { modelTitle } from './search-models.js';
8
9
  function value(v) {
@@ -23,6 +24,8 @@ export function describeParam(name, spec, indent = '') {
23
24
  details.push(`up to ${spec.maxLength} characters`);
24
25
  if (spec.items?.enum?.length)
25
26
  details.push(`each one of ${spec.items.enum.map(value).join(', ')}`);
27
+ if (spec.anyOf?.length)
28
+ details.push(`one of ${spec.anyOf.map(option => option.enum ? option.enum.join(', ') : `${option.minimum ?? '…'}–${option.maximum ?? '…'}`).join(' or ')}`);
26
29
  const head = `${indent}- ${name}${facts.length ? ` (${facts.join(', ')})` : ''}${details.length ? `: ${details.join('; ')}` : ''}`;
27
30
  const lines = [spec.description ? `${head} — ${spec.description}` : head];
28
31
  for (const [child, childSpec] of Object.entries(spec.properties ?? spec.items?.properties ?? {})) {
@@ -35,7 +38,7 @@ function priceLine(price) {
35
38
  const factors = price.multipliers ? ` (resolution factors ${Object.entries(price.multipliers).map(([k, v]) => `${k} ×${v}`).join(', ')})` : '';
36
39
  return `${price.name}: ${formatPrice(price)}${minimum}${factors}`;
37
40
  }
38
- export function registerGetModel(server) {
41
+ export function registerGetModel(server, config) {
39
42
  server.registerTool('get_model', {
40
43
  title: 'Get model parameters and pricing',
41
44
  description: [
@@ -48,7 +51,7 @@ export function registerGetModel(server) {
48
51
  annotations: { title: 'Get model parameters and pricing', ...READ_ONLY },
49
52
  }, async ({ model }) => {
50
53
  try {
51
- const { catalog, entry } = await resolveModel(model);
54
+ const { catalog, entry } = await resolveModel(model, config);
52
55
  if (!entry) {
53
56
  const suggestions = suggestModels(catalog, model);
54
57
  return failure(`Unknown model "${model}".${suggestions.length ? ` Did you mean: ${suggestions.join(', ')}?` : ''} Use search_models to find model IDs.`, { error: { category: 'not_found', param: 'model' }, suggestions });
@@ -62,17 +65,26 @@ export function registerGetModel(server) {
62
65
  tool: `generate_${entry.kind}`,
63
66
  };
64
67
  if (spec) {
65
- lines.push(`Docs: ${spec.docs}`, '', 'Input parameters (pass them in input):');
68
+ const docs = trackedLink(spec.docs, 'model_docs');
69
+ lines.push(`Docs: ${docs}`, '', 'Input parameters (pass them in input):');
66
70
  const names = Object.keys(spec.params).sort((a, b) => Number(!!spec.params[b].required) - Number(!!spec.params[a].required));
67
71
  for (const name of names)
68
72
  lines.push(...describeParam(name, spec.params[name]));
69
73
  if (spec.example)
70
74
  lines.push('', `Example input: ${JSON.stringify(spec.example)}`);
75
+ if (spec.constraints?.mutuallyExclusive)
76
+ lines.push(...spec.constraints.mutuallyExclusive.map(group => `Input constraint: ${group.join(' and ')} are mutually exclusive.`));
77
+ const sizeRule = spec.constraints?.imageSize;
78
+ if (sizeRule)
79
+ lines.push(sizeRule.allowPixels
80
+ ? `Pixel size constraint: edges ${sizeRule.minEdge}–${sizeRule.maxEdge}, divisible by ${sizeRule.step}; ${sizeRule.minPixels}–${sizeRule.maxPixels} total pixels; aspect ratio at most ${sizeRule.maxRatio}:1.`
81
+ : `Size constraint: only auto or the documented ratios; explicit pixels are not supported. Ratio resolution: ${sizeRule.ratioResolution}.`);
71
82
  Object.assign(structured, {
72
83
  endpoint: spec.path,
73
- docs: spec.docs,
84
+ docs,
74
85
  required: spec.required,
75
86
  parameters: spec.params,
87
+ constraints: spec.constraints,
76
88
  example_input: spec.example,
77
89
  parameters_source: modelParamsMeta(),
78
90
  });
@@ -91,11 +103,19 @@ export function registerGetModel(server) {
91
103
  for (const price of prices)
92
104
  lines.push(`- ${priceLine(price)}`);
93
105
  }
94
- lines.push('Use estimate_cost with your input for a total before generating.');
106
+ if (billedByMediaLength(priced, spec)) {
107
+ lines.push(spec?.constraints?.outputDuration === 'unknown'
108
+ ? 'This model bills the generated audio duration, which is unknown before it runs. There is no input.duration. media_seconds can illustrate the cost of an expected output length, but cannot establish a spending cap.'
109
+ : 'This model has no duration parameter: EvoLink measures the billed seconds when the task runs (usually the length of the input video or audio). For an estimate before generating, pass that length as media_seconds to estimate_cost.');
110
+ structured.billed_by_media_length = true;
111
+ }
112
+ else {
113
+ lines.push('Use estimate_cost with your input for a total before generating.');
114
+ }
95
115
  structured.prices = priced.prices;
96
116
  }
97
117
  else {
98
- lines.push(catalog.pricingWarning ?? 'No price is published for this model.');
118
+ lines.push(catalog.pricingWarning ?? 'Pricing data is unavailable in this catalog.');
99
119
  }
100
120
  if (catalog.pricingWarning)
101
121
  structured.pricing_warning = catalog.pricingWarning;
@@ -1 +1 @@
1
- {"version":3,"file":"get-model.js","sourceRoot":"","sources":["../../../../../core/src/tools/get-model.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"get-model.js","sourceRoot":"","sources":["../../../../../core/src/tools/get-model.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"get-task.d.ts","sourceRoot":"","sources":["../../../../../core/src/tools/get-task.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAIjD,eAAO,MAAM,OAAO,QAA6B,CAAC;AAClD,+FAA+F;AAC/F,eAAO,MAAM,gBAAgB,KAAK,CAAC;AAInC,wBAAgB,eAAe,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,YAAY,GAAG,IAAI,CA2C7E"}
1
+ {"version":3,"file":"get-task.d.ts","sourceRoot":"","sources":["../../../../../core/src/tools/get-task.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAIjD,eAAO,MAAM,OAAO,QAA6B,CAAC;AAClD,+FAA+F;AAC/F,eAAO,MAAM,gBAAgB,KAAK,CAAC;AAInC,wBAAgB,eAAe,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,YAAY,GAAG,IAAI,CA4C7E"}
@@ -1,6 +1,6 @@
1
1
  import { z } from 'zod';
2
2
  import { READ_ONLY, errorResult, ok, progressReporter } from './shared.js';
3
- import { TERMINAL_STATUSES, describeTask, waitForTask } from './task-format.js';
3
+ import { RESULT_DELIVERY_GUIDANCE, TERMINAL_STATUSES, describeTask, waitForTask } from './task-format.js';
4
4
  export const TASK_ID = /^[A-Za-z0-9._:-]{4,128}$/;
5
5
  /** Codex and Cursor drop a tool call after about 60 s; the reply also needs time to travel. */
6
6
  export const MAX_WAIT_SECONDS = 45;
@@ -14,6 +14,7 @@ export function registerGetTask(server, config) {
14
14
  'Returns the status, progress, result links (they expire after 24 hours, so give them to the user right away), the final charge, or the error with a next step.',
15
15
  'If the task is still running when this returns, call get_task again.',
16
16
  'Never call generate_image, generate_video or generate_audio again to check progress: that creates and charges a new task.',
17
+ RESULT_DELIVERY_GUIDANCE,
17
18
  ].join(' '),
18
19
  inputSchema: {
19
20
  task_id: z.string().regex(TASK_ID).describe('task_id returned by generate_image, generate_video or generate_audio'),
@@ -45,7 +46,7 @@ export function registerGetTask(server, config) {
45
46
  view.lines.splice(1, 0, `Still running after waiting ${waited} s.`);
46
47
  view.structured.waited_seconds = waited;
47
48
  }
48
- return ok(view.lines.join('\n'), view.structured);
49
+ return ok(view.lines.join('\n'), view.structured, view.resources);
49
50
  }
50
51
  catch (error) {
51
52
  return errorResult(error);
@@ -1 +1 @@
1
- {"version":3,"file":"get-task.js","sourceRoot":"","sources":["../../../../../core/src/tools/get-task.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"get-task.js","sourceRoot":"","sources":["../../../../../core/src/tools/get-task.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"list-tasks.d.ts","sourceRoot":"","sources":["../../../../../core/src/tools/list-tasks.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAQjD,+DAA+D;AAC/D,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,SAAa,GAAG,MAAM,GAAG,SAAS,CAY9E;AAuCD,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,YAAY,GAAG,IAAI,CAmF/E"}
1
+ {"version":3,"file":"list-tasks.d.ts","sourceRoot":"","sources":["../../../../../core/src/tools/list-tasks.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAQjD,+DAA+D;AAC/D,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,SAAa,GAAG,MAAM,GAAG,SAAS,CAY9E;AAyCD,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,YAAY,GAAG,IAAI,CAsF/E"}
@@ -2,7 +2,7 @@ import { z } from 'zod';
2
2
  import { listTasks, queryTasks } from '../services/api-client.js';
3
3
  import { READ_ONLY, errorResult, failure, money, ok, usdOf } from './shared.js';
4
4
  import { TASK_ID } from './get-task.js';
5
- import { RESULT_LINK_HOURS, resultLinks } from './task-format.js';
5
+ import { RESULT_DELIVERY_GUIDANCE, RESULT_DELIVERY_INSTRUCTIONS, RESULT_LINK_HOURS, resultDeliveryMarkdown, resultLinks, resultResources } from './task-format.js';
6
6
  const MAX_IDS = 50;
7
7
  /** ISO 8601, unix seconds, or relative such as 30m, 2h, 1d. */
8
8
  export function parseSince(value, now = Date.now()) {
@@ -26,6 +26,8 @@ function rowFromTask(task) {
26
26
  const links = resultLinks(task);
27
27
  if (links.length > 0)
28
28
  row.results = links;
29
+ if (task.status === 'completed' && links.length > 0)
30
+ row.delivery_markdown = resultDeliveryMarkdown(task.id, links);
29
31
  const used = task.usage?.credits_used ?? task.usage?.cost?.credits;
30
32
  if (task.status === 'completed' && typeof used === 'number') {
31
33
  row.charged_credits = used;
@@ -55,6 +57,7 @@ export function registerListTasks(server, config) {
55
57
  'Read several tasks at once by task_ids (up to 50, with result links), or find recent tasks by status, type and since. Free.',
56
58
  'Use it to recover tasks after a lost connection or a timed-out submit before submitting anything again.',
57
59
  'Recent tasks cover the whole EvoLink account, newest first.',
60
+ RESULT_DELIVERY_GUIDANCE,
58
61
  ].join(' '),
59
62
  inputSchema: {
60
63
  task_ids: z.array(z.string().regex(TASK_ID)).min(1).max(MAX_IDS).optional()
@@ -82,7 +85,9 @@ export function registerListTasks(server, config) {
82
85
  lines.push(`Not found (wrong ID, expired, or another account): ${missing.join(', ')}`);
83
86
  if (rows.some(row => row.results))
84
87
  lines.push(`Result links expire after ${RESULT_LINK_HOURS} hours.`);
85
- return ok(lines.join('\n'), { tasks: rows, missing });
88
+ if (rows.some(row => row.results))
89
+ lines.push(`Next step: ${RESULT_DELIVERY_INSTRUCTIONS}`);
90
+ return ok(lines.join('\n'), { tasks: rows, missing }, rows.flatMap(row => resultResources(row.task_id, row.results ?? [])));
86
91
  }
87
92
  let sinceMs;
88
93
  if (since) {
@@ -132,7 +137,9 @@ export function registerListTasks(server, config) {
132
137
  lines.push(`${page.total} tasks match in total; raise limit or narrow the filters to see others.`);
133
138
  if (rows.some(row => row.results))
134
139
  lines.push(`Result links expire after ${RESULT_LINK_HOURS} hours.`);
135
- return ok(lines.join('\n'), { tasks: rows, total: page.total });
140
+ if (rows.some(row => row.results))
141
+ lines.push(`Next step: ${RESULT_DELIVERY_INSTRUCTIONS}`);
142
+ return ok(lines.join('\n'), { tasks: rows, total: page.total }, rows.flatMap(row => resultResources(row.task_id, row.results ?? [])));
136
143
  }
137
144
  catch (error) {
138
145
  return errorResult(error);