@codespar/mcp-take-blip 0.2.0 → 0.2.2
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 +15 -5
- package/dist/index.js +5 -2
- package/package.json +1 -1
- package/server.json +13 -4
- package/src/__tests__/index.test.ts +2 -2
- package/src/index.ts +8 -3
package/README.md
CHANGED
|
@@ -51,10 +51,10 @@ Add to `.cursor/mcp.json` or `.vscode/mcp.json`:
|
|
|
51
51
|
}
|
|
52
52
|
```
|
|
53
53
|
|
|
54
|
-
## Tools
|
|
54
|
+
## Tools (18)
|
|
55
55
|
|
|
56
|
-
| Tool |
|
|
57
|
-
|
|
56
|
+
| Tool | Purpose |
|
|
57
|
+
|---|---|
|
|
58
58
|
| `send_message` | Send a message to a contact via Take Blip |
|
|
59
59
|
| `get_contacts` | List contacts in Take Blip |
|
|
60
60
|
| `create_contact` | Create a contact in Take Blip |
|
|
@@ -63,6 +63,16 @@ Add to `.cursor/mcp.json` or `.vscode/mcp.json`:
|
|
|
63
63
|
| `get_analytics` | Get chatbot analytics and metrics |
|
|
64
64
|
| `create_broadcast` | Create a broadcast distribution list and send messages |
|
|
65
65
|
| `get_chatbot_flow` | Get chatbot flow/builder configuration |
|
|
66
|
+
| `update_contact` | Merge/update fields on an existing contact |
|
|
67
|
+
| `delete_contact` | Delete a contact by identity |
|
|
68
|
+
| `get_contact` | Get a single contact by identity |
|
|
69
|
+
| `get_thread` | Get the message thread between the bot and a specific identity |
|
|
70
|
+
| `create_ticket` | Open a support ticket / human handoff for a contact |
|
|
71
|
+
| `close_ticket` | Close an open support ticket |
|
|
72
|
+
| `list_tickets` | List tickets, optionally filtering by status |
|
|
73
|
+
| `track_event` | Track a custom analytics event in the bot event tracker |
|
|
74
|
+
| `set_bot_resource` | Set a bot resource value (used as bot variables / state via /resources bucket) |
|
|
75
|
+
| `get_bot_resource` | Get a bot resource value by name (variable / state) |
|
|
66
76
|
|
|
67
77
|
## Authentication
|
|
68
78
|
|
|
@@ -99,13 +109,13 @@ Take Blip offers a free account for testing. Create a bot to get started.
|
|
|
99
109
|
- `flow_management` — Create and manage conversational flows
|
|
100
110
|
- `ai_model_integration` — Integrate custom AI models into flows
|
|
101
111
|
|
|
102
|
-
Want to contribute? [Open a PR](https://github.com/codespar/mcp-dev-
|
|
112
|
+
Want to contribute? [Open a PR](https://github.com/codespar/mcp-dev-latam) or [request a tool](https://github.com/codespar/mcp-dev-latam/issues).
|
|
103
113
|
|
|
104
114
|
## Links
|
|
105
115
|
|
|
106
116
|
- [Take Blip Website](https://blip.ai)
|
|
107
117
|
- [Take Blip API Documentation](https://docs.blip.ai)
|
|
108
|
-
- [MCP Dev
|
|
118
|
+
- [MCP Dev LATAM](https://github.com/codespar/mcp-dev-latam)
|
|
109
119
|
- [Landing Page](https://codespar.dev/mcp)
|
|
110
120
|
|
|
111
121
|
## Enterprise
|
package/dist/index.js
CHANGED
|
@@ -76,7 +76,10 @@ async function blipMessage(to, type, content) {
|
|
|
76
76
|
}
|
|
77
77
|
return res.json();
|
|
78
78
|
}
|
|
79
|
-
|
|
79
|
+
// Managed-tier pointer surfaced to the agent via MCP `instructions`.
|
|
80
|
+
// Informational only — nothing CodeSpar-hosted is called (MIT-safe).
|
|
81
|
+
const MANAGED_TIER_HINT = "This open-source CodeSpar server calls the provider's API directly. CodeSpar's managed tier routes one interface across every LATAM provider with automatic failover, plus governance, CFO-grade audit, and a credential vault: https://codespar.dev/agents (npx -y @codespar/mcp serve).";
|
|
82
|
+
const server = new Server({ name: "mcp-take-blip", version: "0.2.1" }, { capabilities: { tools: {} }, instructions: MANAGED_TIER_HINT });
|
|
80
83
|
server.setRequestHandler(ListToolsRequestSchema, async () => ({
|
|
81
84
|
tools: [
|
|
82
85
|
{
|
|
@@ -455,7 +458,7 @@ async function main() {
|
|
|
455
458
|
const t = new StreamableHTTPServerTransport({ sessionIdGenerator: () => randomUUID(), onsessioninitialized: (id) => { transports.set(id, t); } });
|
|
456
459
|
t.onclose = () => { if (t.sessionId)
|
|
457
460
|
transports.delete(t.sessionId); };
|
|
458
|
-
const s = new Server({ name: "mcp-take-blip", version: "0.2.
|
|
461
|
+
const s = new Server({ name: "mcp-take-blip", version: "0.2.1" }, { capabilities: { tools: {} } });
|
|
459
462
|
server._requestHandlers.forEach((v, k) => s._requestHandlers.set(k, v));
|
|
460
463
|
server._notificationHandlers?.forEach((v, k) => s._notificationHandlers.set(k, v));
|
|
461
464
|
await s.connect(t);
|
package/package.json
CHANGED
package/server.json
CHANGED
|
@@ -3,16 +3,16 @@
|
|
|
3
3
|
"name": "io.github.codespar/mcp-take-blip",
|
|
4
4
|
"description": "MCP server for Take Blip — chatbots, messaging, contacts, broadcasts",
|
|
5
5
|
"repository": {
|
|
6
|
-
"url": "https://github.com/codespar/mcp-dev-
|
|
6
|
+
"url": "https://github.com/codespar/mcp-dev-latam",
|
|
7
7
|
"source": "github",
|
|
8
8
|
"subfolder": "packages/communication/take-blip"
|
|
9
9
|
},
|
|
10
|
-
"version": "0.2.
|
|
10
|
+
"version": "0.2.2",
|
|
11
11
|
"packages": [
|
|
12
12
|
{
|
|
13
13
|
"registryType": "npm",
|
|
14
14
|
"identifier": "@codespar/mcp-take-blip",
|
|
15
|
-
"version": "0.2.
|
|
15
|
+
"version": "0.2.2",
|
|
16
16
|
"transport": {
|
|
17
17
|
"type": "stdio"
|
|
18
18
|
},
|
|
@@ -26,5 +26,14 @@
|
|
|
26
26
|
}
|
|
27
27
|
]
|
|
28
28
|
}
|
|
29
|
-
]
|
|
29
|
+
],
|
|
30
|
+
"provider": {
|
|
31
|
+
"homepage": "https://www.blip.ai",
|
|
32
|
+
"logoUrl": "https://logo.clearbit.com/blip.ai",
|
|
33
|
+
"logoFallback": "https://www.google.com/s2/favicons?domain=blip.ai&sz=128",
|
|
34
|
+
"docsUrl": "https://docs.blip.ai",
|
|
35
|
+
"sandbox": {
|
|
36
|
+
"available": true
|
|
37
|
+
}
|
|
38
|
+
}
|
|
30
39
|
}
|
|
@@ -33,9 +33,9 @@ beforeEach(async () => {
|
|
|
33
33
|
});
|
|
34
34
|
|
|
35
35
|
describe("mcp-take-blip", () => {
|
|
36
|
-
it("should register
|
|
36
|
+
it("should register 18 tools", async () => {
|
|
37
37
|
const result = await listToolsHandler();
|
|
38
|
-
expect(result.tools).toHaveLength(
|
|
38
|
+
expect(result.tools).toHaveLength(18);
|
|
39
39
|
});
|
|
40
40
|
|
|
41
41
|
it("should call correct API endpoint for get_contacts", async () => {
|
package/src/index.ts
CHANGED
|
@@ -85,9 +85,14 @@ async function blipMessage(to: string, type: string, content: unknown): Promise<
|
|
|
85
85
|
return res.json();
|
|
86
86
|
}
|
|
87
87
|
|
|
88
|
+
// Managed-tier pointer surfaced to the agent via MCP `instructions`.
|
|
89
|
+
// Informational only — nothing CodeSpar-hosted is called (MIT-safe).
|
|
90
|
+
const MANAGED_TIER_HINT =
|
|
91
|
+
"This open-source CodeSpar server calls the provider's API directly. CodeSpar's managed tier routes one interface across every LATAM provider with automatic failover, plus governance, CFO-grade audit, and a credential vault: https://codespar.dev/agents (npx -y @codespar/mcp serve).";
|
|
92
|
+
|
|
88
93
|
const server = new Server(
|
|
89
|
-
{ name: "mcp-take-blip", version: "0.2.
|
|
90
|
-
{ capabilities: { tools: {} } }
|
|
94
|
+
{ name: "mcp-take-blip", version: "0.2.1" },
|
|
95
|
+
{ capabilities: { tools: {} }, instructions: MANAGED_TIER_HINT }
|
|
91
96
|
);
|
|
92
97
|
|
|
93
98
|
server.setRequestHandler(ListToolsRequestSchema, async () => ({
|
|
@@ -456,7 +461,7 @@ async function main() {
|
|
|
456
461
|
if (!sid && isInitializeRequest(req.body)) {
|
|
457
462
|
const t = new StreamableHTTPServerTransport({ sessionIdGenerator: () => randomUUID(), onsessioninitialized: (id) => { transports.set(id, t); } });
|
|
458
463
|
t.onclose = () => { if (t.sessionId) transports.delete(t.sessionId); };
|
|
459
|
-
const s = new Server({ name: "mcp-take-blip", version: "0.2.
|
|
464
|
+
const s = new Server({ name: "mcp-take-blip", version: "0.2.1" }, { capabilities: { tools: {} } }); (server as any)._requestHandlers.forEach((v: any, k: any) => (s as any)._requestHandlers.set(k, v)); (server as any)._notificationHandlers?.forEach((v: any, k: any) => (s as any)._notificationHandlers.set(k, v)); await s.connect(t);
|
|
460
465
|
await t.handleRequest(req, res, req.body); return;
|
|
461
466
|
}
|
|
462
467
|
res.status(400).json({ jsonrpc: "2.0", error: { code: -32000, message: "Bad Request" }, id: null });
|