@mambalabsdev/mcp-ai-tooling-detector 1.0.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/.github/dependabot.yml +13 -0
- package/.github/workflows/ci.yml +14 -0
- package/LICENSE +21 -0
- package/README.md +118 -0
- package/SECURITY.md +31 -0
- package/build/index.js +126 -0
- package/glama.json +6 -0
- package/logo.png +0 -0
- package/manifest.json +37 -0
- package/package.json +44 -0
- package/server.json +29 -0
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
version: 2
|
|
2
|
+
updates:
|
|
3
|
+
- package-ecosystem: "npm"
|
|
4
|
+
directory: "/"
|
|
5
|
+
schedule:
|
|
6
|
+
interval: "weekly"
|
|
7
|
+
open-pull-requests-limit: 5
|
|
8
|
+
commit-message:
|
|
9
|
+
prefix: "deps"
|
|
10
|
+
- package-ecosystem: "github-actions"
|
|
11
|
+
directory: "/"
|
|
12
|
+
schedule:
|
|
13
|
+
interval: "weekly"
|
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Mamba Labs
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
# AI Tooling Detector MCP Server
|
|
2
|
+
|
|
3
|
+
[](https://smithery.ai/servers/mambabuilt/mcp-ai-tooling-detector) [](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
|
+
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
|
+
|
|
7
|
+
## What's Inside
|
|
8
|
+
|
|
9
|
+
- [What it does](#what-it-does)
|
|
10
|
+
- [Quick start](#quick-start)
|
|
11
|
+
- [Prerequisites](#prerequisites)
|
|
12
|
+
- [Example prompts](#example-prompts)
|
|
13
|
+
- [Tool and inputs](#tool-and-inputs)
|
|
14
|
+
- [Full actor documentation](#full-actor-documentation)
|
|
15
|
+
- [Mamba Labs GTM Suite](#mamba-labs-gtm-suite)
|
|
16
|
+
- [License](#license)
|
|
17
|
+
|
|
18
|
+
## What it does
|
|
19
|
+
|
|
20
|
+
This server gives an AI client one tool:
|
|
21
|
+
|
|
22
|
+
- `detect_ai_tooling`: return an `ai_maturity` tier for a company domain, plus the evidence behind it.
|
|
23
|
+
|
|
24
|
+
The tier has four levels and each one needs its own class of evidence:
|
|
25
|
+
|
|
26
|
+
| Tier | What it means | What proves it |
|
|
27
|
+
|---|---|---|
|
|
28
|
+
| `commercialized` | The company charges for AI | AI credits, a token allowance, an AI add-on, an AI-named plan, or a per-outcome AI price on the pricing page |
|
|
29
|
+
| `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
|
+
| `declared` | The company says AI, nothing observable | A validated llms.txt, AI crawler rules in robots.txt, or weighted marketing copy |
|
|
31
|
+
| `none` | No signal fired | Nothing |
|
|
32
|
+
|
|
33
|
+
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
|
+
|
|
35
|
+
All of the work runs on Apify. This package is a thin client that routes the tool call to the actor and hands back the result.
|
|
36
|
+
|
|
37
|
+
## Quick start
|
|
38
|
+
|
|
39
|
+
You need Node.js 18 or newer and an Apify account with an API token.
|
|
40
|
+
|
|
41
|
+
Add this to your Claude Desktop config:
|
|
42
|
+
|
|
43
|
+
```json
|
|
44
|
+
{
|
|
45
|
+
"mcpServers": {
|
|
46
|
+
"mamba-ai-tooling-detector": {
|
|
47
|
+
"command": "npx",
|
|
48
|
+
"args": ["-y", "@mambalabsdev/mcp-ai-tooling-detector"],
|
|
49
|
+
"env": { "APIFY_TOKEN": "your-apify-token" }
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
Restart the client and the `detect_ai_tooling` tool appears.
|
|
56
|
+
|
|
57
|
+
## Prerequisites
|
|
58
|
+
|
|
59
|
+
- Node.js 18 or newer
|
|
60
|
+
- An Apify API token from https://console.apify.com/account/integrations
|
|
61
|
+
|
|
62
|
+
Calls consume Apify credits, billed per domain analyzed. Free Apify plans get 15 results per calendar month.
|
|
63
|
+
|
|
64
|
+
## Example prompts
|
|
65
|
+
|
|
66
|
+
- "Does intercom.com actually charge for AI, or do they just market it?"
|
|
67
|
+
- "Check notion.so, figma.com and berkshirehathaway.com for AI adoption and tell me which ones already pay for AI."
|
|
68
|
+
- "Which AI vendors are running on zendesk.com?"
|
|
69
|
+
- "Does cursor.com publish an llms.txt, and does their robots.txt block GPTBot?"
|
|
70
|
+
|
|
71
|
+
## Tool and inputs
|
|
72
|
+
|
|
73
|
+
`detect_ai_tooling`
|
|
74
|
+
|
|
75
|
+
| Input | Type | Required | Description |
|
|
76
|
+
|---|---|---|---|
|
|
77
|
+
| `domain` | string | one of these | A single company domain, e.g. `intercom.com`. |
|
|
78
|
+
| `domains` | string[] | one of these | Batch mode. Takes precedence over `domain`. |
|
|
79
|
+
| `check_pricing` | boolean | no | Fetch and score the pricing page. Default true. Setting it false is faster but caps the result at `deployed`, because `commercialized` can only be proven on a pricing page. |
|
|
80
|
+
| `skipCache` | boolean | no | Force a fresh analysis and ignore the 7 day result cache. |
|
|
81
|
+
|
|
82
|
+
The tool is read-only and idempotent. It never writes anything.
|
|
83
|
+
|
|
84
|
+
## Full actor documentation
|
|
85
|
+
|
|
86
|
+
Input reference, the complete output field list, pricing tiers, error handling, and the measured limitations are on the actor's Apify Store page:
|
|
87
|
+
|
|
88
|
+
https://apify.com/mambalabs/ai-tooling-detector
|
|
89
|
+
|
|
90
|
+
Immutable actor ID: `EwkHhmqiuJgRoVEbE`
|
|
91
|
+
|
|
92
|
+
## Mamba Labs GTM Suite
|
|
93
|
+
|
|
94
|
+
This server is part of the **Mamba Labs GTM Suite**, a fleet of specialized MCP servers for go-to-market signal intelligence, each backed by a dedicated Apify actor. The [`@mambalabsdev/mcp-gtm-suite`](https://www.npmjs.com/package/@mambalabsdev/mcp-gtm-suite) umbrella server exposes all of them, including this one, through a single install.
|
|
95
|
+
|
|
96
|
+
| Actor | Immutable Actor ID |
|
|
97
|
+
|---|---|
|
|
98
|
+
| [GTM Hiring Signal Scraper](https://console.apify.com/actors/D7O1SA2EqwHGsGr1P) | `D7O1SA2EqwHGsGr1P` |
|
|
99
|
+
| [GTM Tech Stack Signal Enrichment](https://console.apify.com/actors/qyd7nNyqFPelQViBx) | `qyd7nNyqFPelQViBx` |
|
|
100
|
+
| [GTM Signals Aggregator](https://console.apify.com/actors/xKdRfnfFNkdMpFuNs) | `xKdRfnfFNkdMpFuNs` |
|
|
101
|
+
| [Job Board Keyword Signal Scanner](https://console.apify.com/actors/4DvqpvhMR74NLcDDY) | `4DvqpvhMR74NLcDDY` |
|
|
102
|
+
| [Domain to LinkedIn URL Resolver](https://console.apify.com/actors/3HtnSaqPHOg1Qg5gx) | `3HtnSaqPHOg1Qg5gx` |
|
|
103
|
+
| [ICP Fit Scorer](https://console.apify.com/actors/W161DT8W4kW55dMFh) | `W161DT8W4kW55dMFh` |
|
|
104
|
+
| [Domain Deliverability Checker](https://console.apify.com/actors/0tVgxI7A6o9jMlxmc) | `0tVgxI7A6o9jMlxmc` |
|
|
105
|
+
| [Company Firmographic Enricher](https://console.apify.com/actors/YlUtLWjfPpqykmB8g) | `YlUtLWjfPpqykmB8g` |
|
|
106
|
+
| [Company Social Presence Mapper](https://console.apify.com/actors/4k6CCemkgBDz18m2h) | `4k6CCemkgBDz18m2h` |
|
|
107
|
+
| [Company Identity Resolver](https://console.apify.com/actors/lr8fTRAmZCBZmuwwh) | `lr8fTRAmZCBZmuwwh` |
|
|
108
|
+
| [Company Change-Event Feed](https://console.apify.com/actors/oX44rS0fkEJ3rXLWe) | `oX44rS0fkEJ3rXLWe` |
|
|
109
|
+
| [Funding & Press Signal Scanner](https://console.apify.com/actors/FS13X6dhQVgX3XOM6) | `FS13X6dhQVgX3XOM6` |
|
|
110
|
+
| [AI Tooling Detector](https://console.apify.com/actors/EwkHhmqiuJgRoVEbE) | `EwkHhmqiuJgRoVEbE` |
|
|
111
|
+
|
|
112
|
+
> Built by [Mamba Labs](https://github.com/mambalabsdev) | [npm](https://www.npmjs.com/org/mambalabsdev) | [Apify Store](https://apify.com/mambalabs)
|
|
113
|
+
|
|
114
|
+
## License
|
|
115
|
+
|
|
116
|
+
MIT
|
|
117
|
+
|
|
118
|
+
Built by Mamba Labs. https://apify.com/mambalabs
|
package/SECURITY.md
ADDED
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
# Security Policy
|
|
2
|
+
|
|
3
|
+
## Supported versions
|
|
4
|
+
|
|
5
|
+
The latest published `1.x` release of
|
|
6
|
+
`@mambalabsdev/mcp-ai-tooling-detector` receives security updates.
|
|
7
|
+
|
|
8
|
+
| Version | Supported |
|
|
9
|
+
| ------- | ------------------ |
|
|
10
|
+
| 1.x | :white_check_mark: |
|
|
11
|
+
| < 1.0 | :x: |
|
|
12
|
+
|
|
13
|
+
## Reporting a vulnerability
|
|
14
|
+
|
|
15
|
+
Please do not open a public GitHub issue for security reports.
|
|
16
|
+
|
|
17
|
+
Email security reports to **labs@mambamindsetgrowth.com** with:
|
|
18
|
+
|
|
19
|
+
- a description of the issue and its impact,
|
|
20
|
+
- steps to reproduce, and
|
|
21
|
+
- any relevant logs or proof of concept.
|
|
22
|
+
|
|
23
|
+
We aim to acknowledge reports within 3 business days and to provide a remediation
|
|
24
|
+
timeline after triage. Coordinated disclosure is appreciated.
|
|
25
|
+
|
|
26
|
+
## Handling of credentials
|
|
27
|
+
|
|
28
|
+
This server reads an `APIFY_TOKEN` from the environment and uses it only to call
|
|
29
|
+
the Apify API on your behalf. The token is never logged or written to disk by this
|
|
30
|
+
package. Treat your `APIFY_TOKEN` as a secret and rotate it at
|
|
31
|
+
https://console.apify.com/account/integrations if you believe it has been exposed.
|
package/build/index.js
ADDED
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { readFileSync } from "node:fs";
|
|
3
|
+
import { fileURLToPath } from "node:url";
|
|
4
|
+
import { dirname, join } from "node:path";
|
|
5
|
+
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
6
|
+
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
|
|
7
|
+
import { z } from "zod";
|
|
8
|
+
const here = dirname(fileURLToPath(import.meta.url));
|
|
9
|
+
const pkg = JSON.parse(readFileSync(join(here, "..", "package.json"), "utf8"));
|
|
10
|
+
// Distinctive UA so Apify run meta.userAgent marks MCP-originated runs.
|
|
11
|
+
const USER_AGENT = `mambalabs-mcp ${pkg.name}@${pkg.version}`;
|
|
12
|
+
const APIFY_TOKEN = process.env.APIFY_TOKEN;
|
|
13
|
+
// Drop undefined values so optional inputs are not sent to the actor.
|
|
14
|
+
function compact(obj) {
|
|
15
|
+
const out = {};
|
|
16
|
+
for (const [k, v] of Object.entries(obj)) {
|
|
17
|
+
if (v !== undefined)
|
|
18
|
+
out[k] = v;
|
|
19
|
+
}
|
|
20
|
+
return out;
|
|
21
|
+
}
|
|
22
|
+
// Shared caller. actorPath is the actor's immutable Apify actor ID (a stable key
|
|
23
|
+
// that survives Store renames). The /v2/acts/{id} endpoint accepts it directly,
|
|
24
|
+
// so a Store rename never breaks these calls.
|
|
25
|
+
async function runActor(actorPath, actorLabel, input) {
|
|
26
|
+
if (!APIFY_TOKEN) {
|
|
27
|
+
return { isError: true, content: [{ type: "text", text: "APIFY_TOKEN is not set. Create a token at https://console.apify.com/account/integrations and set it as the APIFY_TOKEN environment variable." }] };
|
|
28
|
+
}
|
|
29
|
+
const url = `https://api.apify.com/v2/acts/${actorPath}/run-sync-get-dataset-items?timeout=300`;
|
|
30
|
+
let response;
|
|
31
|
+
try {
|
|
32
|
+
response = await fetch(url, {
|
|
33
|
+
method: "POST",
|
|
34
|
+
headers: {
|
|
35
|
+
Authorization: `Bearer ${APIFY_TOKEN}`,
|
|
36
|
+
"Content-Type": "application/json",
|
|
37
|
+
"User-Agent": USER_AGENT,
|
|
38
|
+
},
|
|
39
|
+
body: JSON.stringify(input),
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
catch (err) {
|
|
43
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
44
|
+
return { isError: true, content: [{ type: "text", text: `Could not reach the Apify API: ${message}` }] };
|
|
45
|
+
}
|
|
46
|
+
if (!response.ok) {
|
|
47
|
+
let detail = "";
|
|
48
|
+
try {
|
|
49
|
+
const body = (await response.json());
|
|
50
|
+
if (body?.error?.message)
|
|
51
|
+
detail = ` ${body.error.message}`;
|
|
52
|
+
}
|
|
53
|
+
catch {
|
|
54
|
+
detail = "";
|
|
55
|
+
}
|
|
56
|
+
let message;
|
|
57
|
+
switch (response.status) {
|
|
58
|
+
case 401:
|
|
59
|
+
message = "Invalid Apify token. Check your APIFY_TOKEN environment variable.";
|
|
60
|
+
break;
|
|
61
|
+
case 402:
|
|
62
|
+
message =
|
|
63
|
+
"Insufficient Apify credits. Check your account balance at https://console.apify.com/billing";
|
|
64
|
+
break;
|
|
65
|
+
case 408:
|
|
66
|
+
message = `The ${actorLabel} run timed out after 300 seconds. Try again, or run the actor on Apify directly for longer jobs.`;
|
|
67
|
+
break;
|
|
68
|
+
default:
|
|
69
|
+
message = `Apify request to ${actorLabel} failed with status ${response.status}.${detail}`;
|
|
70
|
+
}
|
|
71
|
+
return { isError: true, content: [{ type: "text", text: message }] };
|
|
72
|
+
}
|
|
73
|
+
const items = await response.json();
|
|
74
|
+
return { content: [{ type: "text", text: JSON.stringify(items, null, 2) }] };
|
|
75
|
+
}
|
|
76
|
+
const server = new McpServer({
|
|
77
|
+
name: "mamba-ai-tooling-detector",
|
|
78
|
+
version: pkg.version,
|
|
79
|
+
});
|
|
80
|
+
// AI Tooling Detector (immutable actor ID EwkHhmqiuJgRoVEbE)
|
|
81
|
+
server.registerTool("detect_ai_tooling", {
|
|
82
|
+
title: "Detect AI Tooling",
|
|
83
|
+
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.",
|
|
84
|
+
annotations: {
|
|
85
|
+
title: "Detect AI Tooling",
|
|
86
|
+
readOnlyHint: true,
|
|
87
|
+
destructiveHint: false,
|
|
88
|
+
idempotentHint: true,
|
|
89
|
+
openWorldHint: true,
|
|
90
|
+
},
|
|
91
|
+
inputSchema: {
|
|
92
|
+
domain: z
|
|
93
|
+
.string()
|
|
94
|
+
.optional()
|
|
95
|
+
.describe("A single company domain, e.g. intercom.com. Provide either domain or domains."),
|
|
96
|
+
domains: z
|
|
97
|
+
.array(z.string())
|
|
98
|
+
.optional()
|
|
99
|
+
.describe("Batch mode: several company domains analyzed in one call. Takes precedence over domain."),
|
|
100
|
+
check_pricing: z
|
|
101
|
+
.boolean()
|
|
102
|
+
.optional()
|
|
103
|
+
.describe("Fetch and score the pricing page. Default true. Setting this false is faster but caps the result at 'deployed', because 'commercialized' can only be proven on a pricing page."),
|
|
104
|
+
skipCache: z
|
|
105
|
+
.boolean()
|
|
106
|
+
.optional()
|
|
107
|
+
.describe("Force a fresh analysis and ignore the 7 day result cache."),
|
|
108
|
+
},
|
|
109
|
+
}, async ({ domain, domains, check_pricing, skipCache }) => {
|
|
110
|
+
const hasSingle = domain !== undefined && domain !== "";
|
|
111
|
+
const hasBatch = Array.isArray(domains) && domains.length > 0;
|
|
112
|
+
if (!hasSingle && !hasBatch) {
|
|
113
|
+
return {
|
|
114
|
+
isError: true,
|
|
115
|
+
content: [{ type: "text", text: "Provide either domain (a single company domain) or domains (an array)." }],
|
|
116
|
+
};
|
|
117
|
+
}
|
|
118
|
+
return runActor("EwkHhmqiuJgRoVEbE", "AI Tooling Detector", compact({
|
|
119
|
+
domain: hasBatch ? undefined : domain,
|
|
120
|
+
domains: hasBatch ? domains : undefined,
|
|
121
|
+
check_pricing,
|
|
122
|
+
skipCache,
|
|
123
|
+
}));
|
|
124
|
+
});
|
|
125
|
+
const transport = new StdioServerTransport();
|
|
126
|
+
await server.connect(transport);
|
package/glama.json
ADDED
package/logo.png
ADDED
|
Binary file
|
package/manifest.json
ADDED
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
{
|
|
2
|
+
"manifest_version": "0.3",
|
|
3
|
+
"name": "mcp-ai-tooling-detector",
|
|
4
|
+
"version": "1.0.0",
|
|
5
|
+
"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 declares AI, actually deploys AI tooling on its site, or charges money for AI, with the evidence behind the verdict as flat Clay-ready JSON.",
|
|
6
|
+
"author": {
|
|
7
|
+
"name": "Mamba Labs"
|
|
8
|
+
},
|
|
9
|
+
"license": "MIT",
|
|
10
|
+
"homepage": "https://github.com/mambalabsdev/mcp-ai-tooling-detector",
|
|
11
|
+
"repository": {
|
|
12
|
+
"type": "git",
|
|
13
|
+
"url": "https://github.com/mambalabsdev/mcp-ai-tooling-detector"
|
|
14
|
+
},
|
|
15
|
+
"server": {
|
|
16
|
+
"type": "node",
|
|
17
|
+
"entry_point": "build/index.js",
|
|
18
|
+
"mcp_config": {
|
|
19
|
+
"command": "node",
|
|
20
|
+
"args": [
|
|
21
|
+
"${__dirname}/build/index.js"
|
|
22
|
+
],
|
|
23
|
+
"env": {
|
|
24
|
+
"APIFY_TOKEN": "${user_config.apify_token}"
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
},
|
|
28
|
+
"user_config": {
|
|
29
|
+
"apify_token": {
|
|
30
|
+
"type": "string",
|
|
31
|
+
"title": "Apify API Token",
|
|
32
|
+
"description": "Apify API token for running the actor",
|
|
33
|
+
"sensitive": true,
|
|
34
|
+
"required": false
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
}
|
package/package.json
ADDED
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@mambalabsdev/mcp-ai-tooling-detector",
|
|
3
|
+
"version": "1.0.0",
|
|
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 declares AI, actually deploys AI tooling on its site, or charges money for AI, with the evidence behind the verdict as flat Clay-ready JSON.",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"bin": {
|
|
7
|
+
"mcp-ai-tooling-detector": "./build/index.js"
|
|
8
|
+
},
|
|
9
|
+
"scripts": {
|
|
10
|
+
"build": "tsc && chmod +x build/index.js",
|
|
11
|
+
"prepublishOnly": "npm run build"
|
|
12
|
+
},
|
|
13
|
+
"keywords": [
|
|
14
|
+
"mcp",
|
|
15
|
+
"model-context-protocol",
|
|
16
|
+
"ai-detection",
|
|
17
|
+
"ai-adoption",
|
|
18
|
+
"tech-stack",
|
|
19
|
+
"llms-txt",
|
|
20
|
+
"ai-maturity",
|
|
21
|
+
"chat-widget",
|
|
22
|
+
"apify",
|
|
23
|
+
"clay"
|
|
24
|
+
],
|
|
25
|
+
"author": "Mamba Labs <labs@mambamindsetgrowth.com>",
|
|
26
|
+
"license": "MIT",
|
|
27
|
+
"homepage": "https://apify.com/mambalabs",
|
|
28
|
+
"repository": {
|
|
29
|
+
"type": "git",
|
|
30
|
+
"url": "https://github.com/mambalabsdev/mcp-ai-tooling-detector"
|
|
31
|
+
},
|
|
32
|
+
"engines": {
|
|
33
|
+
"node": ">=18"
|
|
34
|
+
},
|
|
35
|
+
"dependencies": {
|
|
36
|
+
"@modelcontextprotocol/sdk": "^1.12.0",
|
|
37
|
+
"zod": "^3.23.8"
|
|
38
|
+
},
|
|
39
|
+
"devDependencies": {
|
|
40
|
+
"@types/node": "^20.14.0",
|
|
41
|
+
"typescript": "^5.6.0"
|
|
42
|
+
},
|
|
43
|
+
"mcpName": "com.mambabuilt/mcp-ai-tooling-detector"
|
|
44
|
+
}
|
package/server.json
ADDED
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
|
|
3
|
+
"name": "com.mambabuilt/mcp-ai-tooling-detector",
|
|
4
|
+
"description": "Detect whether a company declares, deploys, or charges for AI, with evidence.",
|
|
5
|
+
"version": "1.0.0",
|
|
6
|
+
"repository": {
|
|
7
|
+
"url": "https://github.com/mambalabsdev/mcp-ai-tooling-detector",
|
|
8
|
+
"source": "github"
|
|
9
|
+
},
|
|
10
|
+
"packages": [
|
|
11
|
+
{
|
|
12
|
+
"registryType": "npm",
|
|
13
|
+
"identifier": "@mambalabsdev/mcp-ai-tooling-detector",
|
|
14
|
+
"version": "1.0.0",
|
|
15
|
+
"transport": {
|
|
16
|
+
"type": "stdio"
|
|
17
|
+
},
|
|
18
|
+
"environmentVariables": [
|
|
19
|
+
{
|
|
20
|
+
"name": "APIFY_TOKEN",
|
|
21
|
+
"description": "Apify API token from https://console.apify.com/account/integrations",
|
|
22
|
+
"isRequired": true,
|
|
23
|
+
"isSecret": true,
|
|
24
|
+
"format": "string"
|
|
25
|
+
}
|
|
26
|
+
]
|
|
27
|
+
}
|
|
28
|
+
]
|
|
29
|
+
}
|