@lovelybunch/mcp 1.0.72-alpha.0 → 1.0.72
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/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/role-context-tool.d.ts +11 -0
- package/dist/role-context-tool.d.ts.map +1 -0
- package/dist/role-context-tool.js +36 -0
- package/dist/role-context-tool.js.map +1 -0
- package/package.json +2 -2
- package/src/index.ts +1 -0
- package/src/role-context-tool.ts +39 -0
- package/dist/fetch-tool.d.ts +0 -53
- package/dist/fetch-tool.d.ts.map +0 -1
- package/dist/fetch-tool.js +0 -87
- package/dist/fetch-tool.js.map +0 -1
- package/dist/url-reader-tool.d.ts +0 -7
- package/dist/url-reader-tool.d.ts.map +0 -1
- package/dist/url-reader-tool.js +0 -24
- package/dist/url-reader-tool.js.map +0 -1
package/dist/index.d.ts
CHANGED
|
@@ -2,6 +2,7 @@ export { proposalsTool, proposalsReadOnlyTool, listProposalsTool, validatePropos
|
|
|
2
2
|
export { eventsTool } from './events-tool.js';
|
|
3
3
|
export { projectContextTool } from './project-context-tool.js';
|
|
4
4
|
export { architectureContextTool } from './architecture-context-tool.js';
|
|
5
|
+
export { roleContextTool } from './role-context-tool.js';
|
|
5
6
|
export { knowledgeTool, createKnowledgeToolCall, normalizeKnowledgeMetadata, buildKnowledgeActionPayload } from './knowledge-tool.js';
|
|
6
7
|
export type { KnowledgeActionPayload, KnowledgeActionType, KnowledgeDocument, KnowledgeDocumentMetadata } from './knowledge-tool.js';
|
|
7
8
|
export type { MCPTool, MCPToolCall } from './proposals-tool.js';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AACnI,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAC7C,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAA;AAC9D,OAAO,EAAE,uBAAuB,EAAE,MAAM,gCAAgC,CAAA;AACxE,OAAO,EACL,aAAa,EACb,uBAAuB,EACvB,0BAA0B,EAC1B,2BAA2B,EAC5B,MAAM,qBAAqB,CAAA;AAC5B,YAAY,EACV,sBAAsB,EACtB,mBAAmB,EACnB,iBAAiB,EACjB,yBAAyB,EAC1B,MAAM,qBAAqB,CAAA;AAC5B,YAAY,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AACnI,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAC7C,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAA;AAC9D,OAAO,EAAE,uBAAuB,EAAE,MAAM,gCAAgC,CAAA;AACxE,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AACxD,OAAO,EACL,aAAa,EACb,uBAAuB,EACvB,0BAA0B,EAC1B,2BAA2B,EAC5B,MAAM,qBAAqB,CAAA;AAC5B,YAAY,EACV,sBAAsB,EACtB,mBAAmB,EACnB,iBAAiB,EACjB,yBAAyB,EAC1B,MAAM,qBAAqB,CAAA;AAC5B,YAAY,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA"}
|
package/dist/index.js
CHANGED
|
@@ -2,5 +2,6 @@ export { proposalsTool, proposalsReadOnlyTool, listProposalsTool, validatePropos
|
|
|
2
2
|
export { eventsTool } from './events-tool.js';
|
|
3
3
|
export { projectContextTool } from './project-context-tool.js';
|
|
4
4
|
export { architectureContextTool } from './architecture-context-tool.js';
|
|
5
|
+
export { roleContextTool } from './role-context-tool.js';
|
|
5
6
|
export { knowledgeTool, createKnowledgeToolCall, normalizeKnowledgeMetadata, buildKnowledgeActionPayload } from './knowledge-tool.js';
|
|
6
7
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AACnI,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAC7C,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAA;AAC9D,OAAO,EAAE,uBAAuB,EAAE,MAAM,gCAAgC,CAAA;AACxE,OAAO,EACL,aAAa,EACb,uBAAuB,EACvB,0BAA0B,EAC1B,2BAA2B,EAC5B,MAAM,qBAAqB,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AACnI,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAC7C,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAA;AAC9D,OAAO,EAAE,uBAAuB,EAAE,MAAM,gCAAgC,CAAA;AACxE,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AACxD,OAAO,EACL,aAAa,EACb,uBAAuB,EACvB,0BAA0B,EAC1B,2BAA2B,EAC5B,MAAM,qBAAqB,CAAA"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Role Context tool for MCP - READ + WRITE
|
|
3
|
+
* Allows the AI assistant to read and update the role definition document (.nut/context/role.md)
|
|
4
|
+
*/
|
|
5
|
+
import type { MCPTool } from './proposals-tool.js';
|
|
6
|
+
/**
|
|
7
|
+
* Role context tool for AI assistant.
|
|
8
|
+
* Read and update the role definition document.
|
|
9
|
+
*/
|
|
10
|
+
export declare const roleContextTool: MCPTool;
|
|
11
|
+
//# sourceMappingURL=role-context-tool.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"role-context-tool.d.ts","sourceRoot":"","sources":["../src/role-context-tool.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAElD;;;GAGG;AACH,eAAO,MAAM,eAAe,EAAE,OA0B7B,CAAA"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Role Context tool for MCP - READ + WRITE
|
|
3
|
+
* Allows the AI assistant to read and update the role definition document (.nut/context/role.md)
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Role context tool for AI assistant.
|
|
7
|
+
* Read and update the role definition document.
|
|
8
|
+
*/
|
|
9
|
+
export const roleContextTool = {
|
|
10
|
+
name: "role_context",
|
|
11
|
+
description: "Read or update the role definition document (.nut/context/role.md). This document defines your role, responsibilities, guidelines, and constraints for working on this project. Use 'get' to read, 'append' to add content at the end, 'replace_section' to edit specific text (PREFERRED for edits), or 'update' to replace the entire document (only for new/small docs). When helping users define their role, ask about their responsibilities, guidelines to follow, constraints, and communication style.",
|
|
12
|
+
parameters: {
|
|
13
|
+
type: "object",
|
|
14
|
+
properties: {
|
|
15
|
+
operation: {
|
|
16
|
+
type: "string",
|
|
17
|
+
enum: ["get", "append", "replace_section", "update"],
|
|
18
|
+
description: "Operation: 'get' to read, 'append' to add at end, 'replace_section' to find-and-replace specific text (PREFERRED for edits), 'update' to replace entire document (only for new/small docs)"
|
|
19
|
+
},
|
|
20
|
+
content: {
|
|
21
|
+
type: "string",
|
|
22
|
+
description: "For append: the new section to add. For update: the complete document content. Not used for get/replace_section."
|
|
23
|
+
},
|
|
24
|
+
old_text: {
|
|
25
|
+
type: "string",
|
|
26
|
+
description: "For replace_section: the exact text to find and replace (must match exactly, including whitespace)"
|
|
27
|
+
},
|
|
28
|
+
new_text: {
|
|
29
|
+
type: "string",
|
|
30
|
+
description: "For replace_section: the new text to replace old_text with"
|
|
31
|
+
}
|
|
32
|
+
},
|
|
33
|
+
required: ["operation"]
|
|
34
|
+
}
|
|
35
|
+
};
|
|
36
|
+
//# sourceMappingURL=role-context-tool.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"role-context-tool.js","sourceRoot":"","sources":["../src/role-context-tool.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH;;;GAGG;AACH,MAAM,CAAC,MAAM,eAAe,GAAY;IACtC,IAAI,EAAE,cAAc;IACpB,WAAW,EAAE,ifAAif;IAC9f,UAAU,EAAE;QACV,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACV,SAAS,EAAE;gBACT,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE,CAAC,KAAK,EAAE,QAAQ,EAAE,iBAAiB,EAAE,QAAQ,CAAC;gBACpD,WAAW,EAAE,4LAA4L;aAC1M;YACD,OAAO,EAAE;gBACP,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,kHAAkH;aAChI;YACD,QAAQ,EAAE;gBACR,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,oGAAoG;aAClH;YACD,QAAQ,EAAE;gBACR,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,4DAA4D;aAC1E;SACF;QACD,QAAQ,EAAE,CAAC,WAAW,CAAC;KACxB;CACF,CAAA"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lovelybunch/mcp",
|
|
3
|
-
"version": "1.0.72
|
|
3
|
+
"version": "1.0.72",
|
|
4
4
|
"description": "MCP tools for Coconut",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"type": "module",
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
"test:ui": "vitest --ui"
|
|
15
15
|
},
|
|
16
16
|
"dependencies": {
|
|
17
|
-
"@lovelybunch/types": "^1.0.72
|
|
17
|
+
"@lovelybunch/types": "^1.0.72",
|
|
18
18
|
"hono": "^4.0.0"
|
|
19
19
|
},
|
|
20
20
|
"devDependencies": {
|
package/src/index.ts
CHANGED
|
@@ -2,6 +2,7 @@ export { proposalsTool, proposalsReadOnlyTool, listProposalsTool, validatePropos
|
|
|
2
2
|
export { eventsTool } from './events-tool.js'
|
|
3
3
|
export { projectContextTool } from './project-context-tool.js'
|
|
4
4
|
export { architectureContextTool } from './architecture-context-tool.js'
|
|
5
|
+
export { roleContextTool } from './role-context-tool.js'
|
|
5
6
|
export {
|
|
6
7
|
knowledgeTool,
|
|
7
8
|
createKnowledgeToolCall,
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Role Context tool for MCP - READ + WRITE
|
|
3
|
+
* Allows the AI assistant to read and update the role definition document (.nut/context/role.md)
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
import type { MCPTool } from './proposals-tool.js'
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Role context tool for AI assistant.
|
|
10
|
+
* Read and update the role definition document.
|
|
11
|
+
*/
|
|
12
|
+
export const roleContextTool: MCPTool = {
|
|
13
|
+
name: "role_context",
|
|
14
|
+
description: "Read or update the role definition document (.nut/context/role.md). This document defines your role, responsibilities, guidelines, and constraints for working on this project. Use 'get' to read, 'append' to add content at the end, 'replace_section' to edit specific text (PREFERRED for edits), or 'update' to replace the entire document (only for new/small docs). When helping users define their role, ask about their responsibilities, guidelines to follow, constraints, and communication style.",
|
|
15
|
+
parameters: {
|
|
16
|
+
type: "object",
|
|
17
|
+
properties: {
|
|
18
|
+
operation: {
|
|
19
|
+
type: "string",
|
|
20
|
+
enum: ["get", "append", "replace_section", "update"],
|
|
21
|
+
description: "Operation: 'get' to read, 'append' to add at end, 'replace_section' to find-and-replace specific text (PREFERRED for edits), 'update' to replace entire document (only for new/small docs)"
|
|
22
|
+
},
|
|
23
|
+
content: {
|
|
24
|
+
type: "string",
|
|
25
|
+
description: "For append: the new section to add. For update: the complete document content. Not used for get/replace_section."
|
|
26
|
+
},
|
|
27
|
+
old_text: {
|
|
28
|
+
type: "string",
|
|
29
|
+
description: "For replace_section: the exact text to find and replace (must match exactly, including whitespace)"
|
|
30
|
+
},
|
|
31
|
+
new_text: {
|
|
32
|
+
type: "string",
|
|
33
|
+
description: "For replace_section: the new text to replace old_text with"
|
|
34
|
+
}
|
|
35
|
+
},
|
|
36
|
+
required: ["operation"]
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
|
package/dist/fetch-tool.d.ts
DELETED
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Fetch Tool - Enables the AI to retrieve content from URLs
|
|
3
|
-
*
|
|
4
|
-
* Security considerations:
|
|
5
|
-
* - Only HTTP/HTTPS protocols allowed
|
|
6
|
-
* - Blocks private/internal IP ranges
|
|
7
|
-
* - Response size limited to prevent memory issues
|
|
8
|
-
* - Timeout to prevent hanging requests
|
|
9
|
-
*/
|
|
10
|
-
export declare const fetchTool: {
|
|
11
|
-
name: string;
|
|
12
|
-
description: string;
|
|
13
|
-
parameters: {
|
|
14
|
-
type: string;
|
|
15
|
-
properties: {
|
|
16
|
-
url: {
|
|
17
|
-
type: string;
|
|
18
|
-
description: string;
|
|
19
|
-
};
|
|
20
|
-
method: {
|
|
21
|
-
type: string;
|
|
22
|
-
enum: string[];
|
|
23
|
-
description: string;
|
|
24
|
-
};
|
|
25
|
-
headers: {
|
|
26
|
-
type: string;
|
|
27
|
-
description: string;
|
|
28
|
-
additionalProperties: {
|
|
29
|
-
type: string;
|
|
30
|
-
};
|
|
31
|
-
};
|
|
32
|
-
body: {
|
|
33
|
-
type: string;
|
|
34
|
-
description: string;
|
|
35
|
-
};
|
|
36
|
-
};
|
|
37
|
-
required: string[];
|
|
38
|
-
};
|
|
39
|
-
};
|
|
40
|
-
export declare const FETCH_CONFIG: {
|
|
41
|
-
MAX_RESPONSE_SIZE: number;
|
|
42
|
-
TIMEOUT_MS: number;
|
|
43
|
-
BLOCKED_HOSTNAMES: string[];
|
|
44
|
-
BLOCKED_IP_PREFIXES: string[];
|
|
45
|
-
};
|
|
46
|
-
/**
|
|
47
|
-
* Validate that a URL is safe to fetch
|
|
48
|
-
*/
|
|
49
|
-
export declare function validateFetchUrl(url: string): {
|
|
50
|
-
valid: boolean;
|
|
51
|
-
error?: string;
|
|
52
|
-
};
|
|
53
|
-
//# sourceMappingURL=fetch-tool.d.ts.map
|
package/dist/fetch-tool.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"fetch-tool.d.ts","sourceRoot":"","sources":["../src/fetch-tool.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2BrB,CAAA;AAGD,eAAO,MAAM,YAAY;;;;;CAoBxB,CAAA;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CA0BhF"}
|
package/dist/fetch-tool.js
DELETED
|
@@ -1,87 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Fetch Tool - Enables the AI to retrieve content from URLs
|
|
3
|
-
*
|
|
4
|
-
* Security considerations:
|
|
5
|
-
* - Only HTTP/HTTPS protocols allowed
|
|
6
|
-
* - Blocks private/internal IP ranges
|
|
7
|
-
* - Response size limited to prevent memory issues
|
|
8
|
-
* - Timeout to prevent hanging requests
|
|
9
|
-
*/
|
|
10
|
-
export const fetchTool = {
|
|
11
|
-
name: 'fetch_url',
|
|
12
|
-
description: 'Fetch content from a URL. Use this to retrieve web pages, API responses, documentation, or any publicly accessible content. Returns the text/HTML/JSON content from the URL.',
|
|
13
|
-
parameters: {
|
|
14
|
-
type: 'object',
|
|
15
|
-
properties: {
|
|
16
|
-
url: {
|
|
17
|
-
type: 'string',
|
|
18
|
-
description: 'The URL to fetch (must be http:// or https://)'
|
|
19
|
-
},
|
|
20
|
-
method: {
|
|
21
|
-
type: 'string',
|
|
22
|
-
enum: ['GET', 'POST'],
|
|
23
|
-
description: 'HTTP method to use. Defaults to GET.'
|
|
24
|
-
},
|
|
25
|
-
headers: {
|
|
26
|
-
type: 'object',
|
|
27
|
-
description: 'Optional HTTP headers to include in the request',
|
|
28
|
-
additionalProperties: { type: 'string' }
|
|
29
|
-
},
|
|
30
|
-
body: {
|
|
31
|
-
type: 'string',
|
|
32
|
-
description: 'Optional request body for POST requests'
|
|
33
|
-
}
|
|
34
|
-
},
|
|
35
|
-
required: ['url']
|
|
36
|
-
}
|
|
37
|
-
};
|
|
38
|
-
// Configuration constants
|
|
39
|
-
export const FETCH_CONFIG = {
|
|
40
|
-
MAX_RESPONSE_SIZE: 100000, // 100KB max response
|
|
41
|
-
TIMEOUT_MS: 30000, // 30 second timeout
|
|
42
|
-
BLOCKED_HOSTNAMES: [
|
|
43
|
-
'localhost',
|
|
44
|
-
'127.0.0.1',
|
|
45
|
-
'0.0.0.0',
|
|
46
|
-
'::1'
|
|
47
|
-
],
|
|
48
|
-
BLOCKED_IP_PREFIXES: [
|
|
49
|
-
'10.', // Private class A
|
|
50
|
-
'172.16.', '172.17.', '172.18.', '172.19.', // Private class B
|
|
51
|
-
'172.20.', '172.21.', '172.22.', '172.23.',
|
|
52
|
-
'172.24.', '172.25.', '172.26.', '172.27.',
|
|
53
|
-
'172.28.', '172.29.', '172.30.', '172.31.',
|
|
54
|
-
'192.168.', // Private class C
|
|
55
|
-
'169.254.', // Link-local
|
|
56
|
-
'fc00:', 'fd00:', // IPv6 private
|
|
57
|
-
'fe80:' // IPv6 link-local
|
|
58
|
-
]
|
|
59
|
-
};
|
|
60
|
-
/**
|
|
61
|
-
* Validate that a URL is safe to fetch
|
|
62
|
-
*/
|
|
63
|
-
export function validateFetchUrl(url) {
|
|
64
|
-
try {
|
|
65
|
-
const parsed = new URL(url);
|
|
66
|
-
// Only allow HTTP/HTTPS
|
|
67
|
-
if (!['http:', 'https:'].includes(parsed.protocol)) {
|
|
68
|
-
return { valid: false, error: `Protocol '${parsed.protocol}' not allowed. Only http:// and https:// are supported.` };
|
|
69
|
-
}
|
|
70
|
-
// Block localhost and loopback
|
|
71
|
-
const hostname = parsed.hostname.toLowerCase();
|
|
72
|
-
if (FETCH_CONFIG.BLOCKED_HOSTNAMES.includes(hostname)) {
|
|
73
|
-
return { valid: false, error: 'Requests to localhost/loopback addresses are not allowed.' };
|
|
74
|
-
}
|
|
75
|
-
// Block private IP ranges
|
|
76
|
-
for (const prefix of FETCH_CONFIG.BLOCKED_IP_PREFIXES) {
|
|
77
|
-
if (hostname.startsWith(prefix)) {
|
|
78
|
-
return { valid: false, error: 'Requests to private/internal IP addresses are not allowed.' };
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
|
-
return { valid: true };
|
|
82
|
-
}
|
|
83
|
-
catch (err) {
|
|
84
|
-
return { valid: false, error: `Invalid URL: ${err instanceof Error ? err.message : 'parse error'}` };
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
//# sourceMappingURL=fetch-tool.js.map
|
package/dist/fetch-tool.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"fetch-tool.js","sourceRoot":"","sources":["../src/fetch-tool.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,MAAM,CAAC,MAAM,SAAS,GAAG;IACvB,IAAI,EAAE,WAAW;IACjB,WAAW,EAAE,8KAA8K;IAC3L,UAAU,EAAE;QACV,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACV,GAAG,EAAE;gBACH,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,gDAAgD;aAC9D;YACD,MAAM,EAAE;gBACN,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC;gBACrB,WAAW,EAAE,sCAAsC;aACpD;YACD,OAAO,EAAE;gBACP,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,iDAAiD;gBAC9D,oBAAoB,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;aACzC;YACD,IAAI,EAAE;gBACJ,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,yCAAyC;aACvD;SACF;QACD,QAAQ,EAAE,CAAC,KAAK,CAAC;KAClB;CACF,CAAA;AAED,0BAA0B;AAC1B,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,iBAAiB,EAAE,MAAM,EAAE,qBAAqB;IAChD,UAAU,EAAE,KAAK,EAAE,oBAAoB;IACvC,iBAAiB,EAAE;QACjB,WAAW;QACX,WAAW;QACX,SAAS;QACT,KAAK;KACN;IACD,mBAAmB,EAAE;QACnB,KAAK,EAAE,kBAAkB;QACzB,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,kBAAkB;QAC9D,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS;QAC1C,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS;QAC1C,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS;QAC1C,UAAU,EAAE,kBAAkB;QAC9B,UAAU,EAAE,aAAa;QACzB,OAAO,EAAE,OAAO,EAAE,eAAe;QACjC,OAAO,CAAC,kBAAkB;KAC3B;CACF,CAAA;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,GAAW;IAC1C,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAA;QAE3B,wBAAwB;QACxB,IAAI,CAAC,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;YACnD,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,aAAa,MAAM,CAAC,QAAQ,yDAAyD,EAAE,CAAA;QACvH,CAAC;QAED,+BAA+B;QAC/B,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAA;QAC9C,IAAI,YAAY,CAAC,iBAAiB,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;YACtD,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,2DAA2D,EAAE,CAAA;QAC7F,CAAC;QAED,0BAA0B;QAC1B,KAAK,MAAM,MAAM,IAAI,YAAY,CAAC,mBAAmB,EAAE,CAAC;YACtD,IAAI,QAAQ,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;gBAChC,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,4DAA4D,EAAE,CAAA;YAC9F,CAAC;QACH,CAAC;QAED,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAA;IACxB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,gBAAgB,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,aAAa,EAAE,EAAE,CAAA;IACtG,CAAC;AACH,CAAC"}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import type { MCPTool } from './proposals-tool.js';
|
|
2
|
-
/**
|
|
3
|
-
* Tool for fetching and extracting readable content from web URLs.
|
|
4
|
-
* This is a read-only tool that retrieves web page content for context.
|
|
5
|
-
*/
|
|
6
|
-
export declare const urlReaderTool: MCPTool;
|
|
7
|
-
//# sourceMappingURL=url-reader-tool.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"url-reader-tool.d.ts","sourceRoot":"","sources":["../src/url-reader-tool.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAElD;;;GAGG;AACH,eAAO,MAAM,aAAa,EAAE,OAkB3B,CAAA"}
|
package/dist/url-reader-tool.js
DELETED
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Tool for fetching and extracting readable content from web URLs.
|
|
3
|
-
* This is a read-only tool that retrieves web page content for context.
|
|
4
|
-
*/
|
|
5
|
-
export const urlReaderTool = {
|
|
6
|
-
name: 'read_url',
|
|
7
|
-
description: `Fetch and extract readable content from a web URL. Use this when a user shares a URL and wants you to read, summarize, or analyze its content. Returns the page title, main text content, and excerpt.
|
|
8
|
-
|
|
9
|
-
IMPORTANT:
|
|
10
|
-
- Only use this for publicly accessible web pages
|
|
11
|
-
- Content is automatically cleaned and truncated for context limits
|
|
12
|
-
- Some sites may block automated access`,
|
|
13
|
-
inputSchema: {
|
|
14
|
-
type: 'object',
|
|
15
|
-
properties: {
|
|
16
|
-
url: {
|
|
17
|
-
type: 'string',
|
|
18
|
-
description: 'The full URL to fetch (must start with http:// or https://)'
|
|
19
|
-
}
|
|
20
|
-
},
|
|
21
|
-
required: ['url']
|
|
22
|
-
}
|
|
23
|
-
};
|
|
24
|
-
//# sourceMappingURL=url-reader-tool.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"url-reader-tool.js","sourceRoot":"","sources":["../src/url-reader-tool.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,MAAM,CAAC,MAAM,aAAa,GAAY;IACpC,IAAI,EAAE,UAAU;IAChB,WAAW,EAAE;;;;;wCAKyB;IACtC,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACV,GAAG,EAAE;gBACH,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,6DAA6D;aAC3E;SACF;QACD,QAAQ,EAAE,CAAC,KAAK,CAAC;KAClB;CACF,CAAA"}
|