@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 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 | Description |
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-brasil) or [request a tool](https://github.com/codespar/mcp-dev-brasil/issues).
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 Brasil](https://github.com/codespar/mcp-dev-brasil)
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
- const server = new Server({ name: "mcp-take-blip", version: "0.2.0" }, { capabilities: { tools: {} } });
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.0" }, { capabilities: { tools: {} } });
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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@codespar/mcp-take-blip",
3
- "version": "0.2.0",
3
+ "version": "0.2.2",
4
4
  "description": "MCP server for Take Blip — chatbots, messaging, contacts, broadcasts",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
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-brasil",
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.0",
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.0",
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 8 tools", async () => {
36
+ it("should register 18 tools", async () => {
37
37
  const result = await listToolsHandler();
38
- expect(result.tools).toHaveLength(8);
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.0" },
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.0" }, { 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);
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 });