@post-ripple/mcp 0.5.0 → 0.6.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.
Files changed (2) hide show
  1. package/dist/index.js +6 -5
  2. package/package.json +1 -1
package/dist/index.js CHANGED
@@ -45,7 +45,7 @@ function toEpochMs(value, field) {
45
45
  }
46
46
  return parsed;
47
47
  }
48
- const server = new McpServer({ name: "postripple", version: "0.5.0" });
48
+ const server = new McpServer({ name: "postripple", version: "0.6.0" });
49
49
  function register(name, description, shape, transform) {
50
50
  server.tool(name, description, shape, async (args) => {
51
51
  try {
@@ -184,19 +184,20 @@ register("list_videos", "List videos in the workspace library, newest first. Vid
184
184
  });
185
185
  register("list_video_groups", "List video groups (rotation playlists that auto-post on a schedule) with video/account counts and status.", { ...orgParam });
186
186
  register("get_video_group", "Get one video group in detail: its videos and the per-account posting rules (posts per day, posting windows, next scheduled post).", { ...orgParam, groupId: z.string() });
187
- register("list_images", "List/search the workspace's image library, newest first (relevance order when text is passed). Every image ever uploaded, imported, or generated lives here until deleted — CHECK THIS BEFORE generating or re-uploading images; reusing an existing image is free and instant. Each result has an imageId (pass to create_slideshow slides), its raw fileId, a signed preview url (~1h), and its title/description/tags/prompt metadata.", {
187
+ register("list_images", "List or search the workspace's image library. Every image ever uploaded, imported, or generated lives here until deleted, and each is auto-captioned + tagged by AI on ingest — CHECK THIS BEFORE generating or re-uploading images; reusing an existing image is free and instant. Passing `text` runs hybrid SEMANTIC search (natural-language meaning + keyword), so 'cozy sunlit gym' finds matching photos even if those words aren't in the metadata — describe what you want. Without `text`, it lists newest-first and honors tags/source filters. Each result has an imageId (pass to create_slideshow slides), raw fileId, a signed preview url (~1h), and title/description/tags/aiCaption/prompt metadata.", {
188
188
  ...orgParam,
189
189
  text: z
190
190
  .string()
191
191
  .optional()
192
- .describe("Free-text search over title, description, tags, and generation prompt"),
192
+ .describe("Natural-language / keyword query — runs hybrid semantic search over the image's caption, tags, description, and prompt. When set, tags/source filters are ignored."),
193
193
  tags: z
194
194
  .array(z.string())
195
195
  .optional()
196
- .describe("Only images carrying ALL of these tags"),
196
+ .describe("Only images carrying ALL of these tags (ignored when text is set)"),
197
197
  source: z
198
198
  .enum(["upload", "agent_upload", "agent_import", "generated"])
199
- .optional(),
199
+ .optional()
200
+ .describe("Filter by origin (ignored when text is set)"),
200
201
  limit: z.number().min(1).max(200).optional().describe("Default 100, max 200"),
201
202
  });
202
203
  register("list_slideshows", "List photo-carousel slideshows with status ('draft' = still being composed, 'ready' = publishable) and a signed coverUrl thumbnail (first rendered slide, or a background for drafts).", { ...orgParam, limit: z.number().min(1).max(200).optional() });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@post-ripple/mcp",
3
- "version": "0.5.0",
3
+ "version": "0.6.0",
4
4
  "description": "MCP server that lets AI agents (Claude Code, Codex, opencode) manage a Post Ripple workspace: content, scheduling, publishing, and analytics.",
5
5
  "type": "module",
6
6
  "bin": {