@mambalabsdev/mcp-ai-tooling-detector 1.3.1 → 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.
- package/README.md +14 -2
- package/build/index.js +4 -2
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
# AI Tooling Detector MCP Server
|
|
2
2
|
|
|
3
|
-
[](https://glama.ai/mcp/servers/mambalabsdev/mcp-ai-tooling-detector) [](https://registry.modelcontextprotocol.io/v0/servers?search=com.mambabuilt/mcp-ai-tooling-detector&limit=1) [](https://www.npmjs.com/package/@mambalabsdev/mcp-ai-tooling-detector) [](https://www.npmjs.com/package/@mambalabsdev/mcp-ai-tooling-detector) [](https://github.com/mambalabsdev/mcp-ai-tooling-detector/blob/main/LICENSE) [](https://mcpservers.org/servers/mambalabsdev/mcp-ai-tooling-detector)
|
|
4
|
+
|
|
5
|
+
<a href="https://mcprush.com/to/ai-tooling-detector-mcp?ref=badge"><img width="380" height="200" src="https://mcprush.com/badge/ai-tooling-detector-mcp/card.svg" alt="AI Tooling Detector MCP server" /></a>
|
|
4
6
|
|
|
5
7
|
An MCP server that exposes the Mamba Labs AI Tooling Detector as a single tool. Install one package and give your MCP client a way to ask, for any company domain, whether that company only talks about AI, actually runs AI tooling on its site, or charges money for AI. It wraps the Mamba Labs actor on Apify and returns Clay-ready flat JSON.
|
|
6
8
|
|
|
@@ -29,6 +31,7 @@ The tier has four levels and each one needs its own class of evidence:
|
|
|
29
31
|
| `deployed` | AI tooling is running on the site | An AI-native vendor, a direct inference endpoint, or an AI-capable platform backed by AI copy |
|
|
30
32
|
| `declared` | The company says AI, nothing observable | A validated llms.txt, AI crawler rules in robots.txt, or weighted marketing copy |
|
|
31
33
|
| `none` | No signal fired | Nothing |
|
|
34
|
+
| `max_charge_usd` | number | Optional cost cap in USD for this run. The actor stops before an item that could take its charges past this amount. |
|
|
32
35
|
|
|
33
36
|
A domain sitting behind a bot challenge comes back with `blocked: true` at low confidence rather than as a confident no, so a challenged site is never mistaken for a company with no AI.
|
|
34
37
|
|
|
@@ -82,10 +85,19 @@ Calls consume Apify credits, billed per domain analyzed. Free Apify plans get 15
|
|
|
82
85
|
| `request_timeout_ms` | integer | no | Per-request timeout in milliseconds, 3000 to 20000. Default 9000. |
|
|
83
86
|
| `batchSize` | integer | no | Batch mode only: how many domains the actor analyzes at once, 1 to 10. Default 5. |
|
|
84
87
|
|
|
85
|
-
The tool
|
|
88
|
+
The tool reads public data and writes nothing, but every call starts a paid Apify run, so it is not marked read only.
|
|
86
89
|
|
|
87
90
|
The tool starts the actor run and polls it to a finished status, so a long run is not cut off at 300 seconds. The run is allowed 1,800 seconds. If it is still going two minutes after that, the call stops waiting and returns the run ID with a link to it in the Apify Console, where the results land when it finishes. A run that does not succeed comes back as an error with its run ID and status.
|
|
88
91
|
|
|
92
|
+
## Pricing
|
|
93
|
+
|
|
94
|
+
Price per event on the Apify FREE plan, from the live pricing record; paid Apify plans pay less per event.
|
|
95
|
+
|
|
96
|
+
| Event | Price (USD) |
|
|
97
|
+
| --- | --- |
|
|
98
|
+
| Actor start (`actor-start`) | 0.00005 |
|
|
99
|
+
| Domain analyzed (`domain-analyzed`) | 0.003 |
|
|
100
|
+
|
|
89
101
|
## Full actor documentation
|
|
90
102
|
|
|
91
103
|
Input reference, the complete output field list, pricing tiers, error handling, and the measured limitations are on the actor's Apify Store page:
|
package/build/index.js
CHANGED
|
@@ -175,12 +175,13 @@ server.registerTool("detect_ai_tooling", {
|
|
|
175
175
|
description: "Given a company domain, determine how far that company has actually gone with AI. Returns an ai_maturity tier of none, declared (says AI but nothing observable is running), deployed (AI tooling is live on the site), or commercialized (the pricing page charges for AI via credits, tokens, an add-on, an AI-named plan, or a per-outcome price). Also returns the detected AI vendors and categories, validated llms.txt status, robots.txt AI-crawler policy, and the quotable evidence strings behind the verdict. A domain behind a bot challenge comes back with blocked=true at low confidence rather than as a false negative. Public data only, no login. Returns flat Clay-ready JSON. Read-only; requires an APIFY_TOKEN and consumes Apify credits per domain analyzed.",
|
|
176
176
|
annotations: {
|
|
177
177
|
title: "Detect AI Tooling",
|
|
178
|
-
readOnlyHint:
|
|
178
|
+
readOnlyHint: false,
|
|
179
179
|
destructiveHint: false,
|
|
180
180
|
idempotentHint: true,
|
|
181
181
|
openWorldHint: true,
|
|
182
182
|
},
|
|
183
183
|
inputSchema: {
|
|
184
|
+
max_charge_usd: z.number().min(0).optional().describe("Optional. The run stops before any charge that would take this run's total past this amount in USD, and every row already charged is kept. Leave it empty to rely only on the maximum cost per run set in Apify, which the actor also honors."),
|
|
184
185
|
domain: z
|
|
185
186
|
.string()
|
|
186
187
|
.optional()
|
|
@@ -216,7 +217,7 @@ server.registerTool("detect_ai_tooling", {
|
|
|
216
217
|
.optional()
|
|
217
218
|
.describe("Batch mode only: how many domains the actor analyzes at once. 1 to 10. Default: 5."),
|
|
218
219
|
},
|
|
219
|
-
}, async ({ domain, domains, vendors, check_pricing, skipCache, request_timeout_ms, batchSize }) => {
|
|
220
|
+
}, async ({ domain, domains, vendors, check_pricing, skipCache, request_timeout_ms, batchSize, max_charge_usd }) => {
|
|
220
221
|
const hasSingle = domain !== undefined && domain !== "";
|
|
221
222
|
const hasBatch = Array.isArray(domains) && domains.length > 0;
|
|
222
223
|
if (!hasSingle && !hasBatch) {
|
|
@@ -226,6 +227,7 @@ server.registerTool("detect_ai_tooling", {
|
|
|
226
227
|
};
|
|
227
228
|
}
|
|
228
229
|
return runActor("EwkHhmqiuJgRoVEbE", "AI Tooling Detector", compact({
|
|
230
|
+
max_charge_usd,
|
|
229
231
|
domain: hasBatch ? undefined : domain,
|
|
230
232
|
domains: hasBatch ? domains : undefined,
|
|
231
233
|
vendors,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mambalabsdev/mcp-ai-tooling-detector",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.4.1",
|
|
4
4
|
"description": "MCP server for the Mamba Labs AI Tooling Detector actor on Apify. Give it a company domain and it returns whether the company only talks about AI, actually deploys AI tooling on its site, or charges for AI, with the evidence, as Clay-ready JSON.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|