@mambalabsdev/mcp-talent-agency-lookup 1.1.0 → 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -50,6 +50,7 @@ All three call the same actor, so the pricing below applies to each. The two dir
50
50
  | `escalate_on_block` | boolean | no | On by default. A profile fetch that comes back as a bot detection page is retried once over the residential proxy. On Instagram the bio, bio link, and following are read from the profile page over residential when the embed and the datacenter API did not carry them, and a page that comes back readable charges instagram-bio-fetch ($0.010). Uncheck it to never pay that event: a blocked profile then returns a labeled error row, and Instagram rows keep an empty bio and bio link on about half of the reads. Default `true`. |
51
51
  | `batch_size` | integer | no | Rows fetched at once. Leave empty for the measured per platform default; the measurement is in the [actor README](https://apify.com/mambalabs/talent-agency-lookup#-batch-or-single). Higher is faster and, above the measured point, loses rows. |
52
52
  | `contribute_to_shared_pool` | boolean | no | On by default. The run contributes the public records it finds to a shared creator and agency pool that all users of this actor read from, so a later run reads what this one found. Only public data that is already in your own output rows is sent: nothing from your Apify account, your input list, your API keys, or your own notes. Nothing is charged for a contribution. Turn this off and the run still reads the pool and writes nothing to it. Default: true. |
53
+ | `max_charge_usd` | number | no | Optional spending cap for this call, in USD. The actor stops before any charge that would take the run past this amount and keeps every row already charged. |
53
54
 
54
55
  Nothing is required, but a call with no `handles`, no `agency_domains`, and no `agency_names` has nothing to look up and the run fails with a message saying so.
55
56
 
package/build/index.js CHANGED
@@ -5,6 +5,13 @@ import { dirname, join } from "node:path";
5
5
  import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
6
6
  import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
7
7
  import { z } from "zod";
8
+ // Optional per call spending cap, passed through to the actor's own max_charge_usd
9
+ // input. The actor enforces it; this wrapper only forwards it when set.
10
+ const MAX_CHARGE_USD = z
11
+ .number()
12
+ .min(0)
13
+ .optional()
14
+ .describe("Optional spending cap for this call, in USD, passed to the actor as max_charge_usd. The run stops before any charge that would take it past this amount and keeps every row already charged. Leave empty to rely only on the maximum charge per run set on your Apify account.");
8
15
  const here = dirname(fileURLToPath(import.meta.url));
9
16
  const pkg = JSON.parse(readFileSync(join(here, "..", "package.json"), "utf8"));
10
17
  // Distinctive UA so Apify run meta.userAgent marks MCP-originated runs.
@@ -186,6 +193,7 @@ const fields = {
186
193
  // Shared pool toggle. The actor input field shipped in build 0.1.11; this mirror exists so an
187
194
  // MCP caller can turn the contribution off.
188
195
  contribute_to_shared_pool: z.boolean().optional().describe("On by default. The run contributes the public records it finds to a shared creator and agency pool that all users of this actor read from, so a later run reads what this one found. Only public data that is already in your own output rows is sent: nothing from your Apify account, your input list, your API keys, or your own notes. Nothing is charged for a contribution. Turn this off and the run still reads the pool and writes nothing to it. Default: true."),
196
+ max_charge_usd: MAX_CHARGE_USD,
189
197
  };
190
198
  const PRICING = "Charges $0.001 per run (actor-start) plus $0.008 per row returned (agency-lookup), $0.004 per agency roster page rendered in the headless browser when render_unreadable_pages is on and the page comes back readable (browser-render), and $0.01 per Instagram bio fetch over the residential proxy when escalate_on_block is on and one is needed (instagram-bio-fetch).";
191
199
  const POOL = "Contributes the public records it finds to a shared creator and agency pool that all users of this actor read from; set contribute_to_shared_pool to false to read the pool and write nothing. A contribution is not charged.";
@@ -193,7 +201,7 @@ const COVERAGE = "The agency list is seeded from 13 public directories (143 agen
193
201
  const LIMITS = "It does not search for creators and does not read X, Facebook pages, or LinkedIn. Requires an APIFY_TOKEN and consumes Apify credits. Read only.";
194
202
  const annotations = (title) => ({
195
203
  title,
196
- readOnlyHint: true,
204
+ readOnlyHint: false,
197
205
  destructiveHint: false,
198
206
  idempotentHint: true,
199
207
  openWorldHint: true,
@@ -209,6 +217,7 @@ server.registerTool("lookup_agency_for_creator", {
209
217
  escalate_on_block: fields.escalate_on_block,
210
218
  batch_size: fields.batch_size,
211
219
  contribute_to_shared_pool: fields.contribute_to_shared_pool,
220
+ max_charge_usd: MAX_CHARGE_USD,
212
221
  },
213
222
  }, async (args) => callActor(args));
214
223
  server.registerTool("list_agency_roster", {
@@ -220,6 +229,7 @@ server.registerTool("list_agency_roster", {
220
229
  agency_names: fields.agency_names,
221
230
  render_unreadable_pages: fields.render_unreadable_pages,
222
231
  contribute_to_shared_pool: fields.contribute_to_shared_pool,
232
+ max_charge_usd: MAX_CHARGE_USD,
223
233
  },
224
234
  }, async (args) => callActor(args));
225
235
  // The original combined tool, kept so existing callers keep working. It runs
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@mambalabsdev/mcp-talent-agency-lookup",
3
3
  "displayName": "Influencer Talent Agency Lookup",
4
- "version": "1.1.0",
4
+ "version": "1.2.0",
5
5
  "description": "MCP server for the Mamba Labs Influencer Talent Agency Lookup actor on Apify. Creator handles in, the talent agency behind each one out, or an agency in, its public roster out.",
6
6
  "type": "module",
7
7
  "bin": {
@@ -46,7 +46,7 @@
46
46
  "node": ">=18"
47
47
  },
48
48
  "dependencies": {
49
- "@modelcontextprotocol/sdk": "^1.12.0",
49
+ "@modelcontextprotocol/sdk": "^1.32.0",
50
50
  "zod": "^4.5.4"
51
51
  },
52
52
  "devDependencies": {