0nmcp 2.9.0 → 2.9.1

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/catalog.js CHANGED
@@ -1862,6 +1862,62 @@ export const SERVICE_CATALOG = {
1862
1862
  }),
1863
1863
  },
1864
1864
 
1865
+ // ── Reddit ──────────────────────────────────────────────────
1866
+ reddit: {
1867
+ name: "Reddit",
1868
+ type: "social",
1869
+ description: "Social platform — posts, comments, subreddits, user profiles, search, monitoring via Reddit Data API. IMPORTANT: Reddit requires pre-approved OAuth apps as of Nov 2025. Auto-posting must comply with Reddit's Responsible Builder Policy. Default mode is MANUAL — auto mode requires double confirmation.",
1870
+ baseUrl: "https://oauth.reddit.com",
1871
+ authType: "oauth",
1872
+ credentialKeys: ["accessToken", "refreshToken", "clientId", "clientSecret", "username"],
1873
+ safetyConfig: {
1874
+ defaultMode: "manual",
1875
+ autoModeRequiresDoubleConfirmation: true,
1876
+ minPostDelayMs: 600000,
1877
+ minCommentDelayMs: 300000,
1878
+ maxPostsPerHour: 3,
1879
+ maxCommentsPerHour: 10,
1880
+ rateLimitPerMinute: 60,
1881
+ disclaimer: "Reddit aggressively bans automated promotional activity. Accounts suspected of bot behavior may be required to pass human verification (passkeys, biometrics, or government ID). All automated accounts must carry an [APP] label. Respect the 90/10 rule: 90% genuine value, 10% promotional. Each subreddit has its own rules — check before posting.",
1882
+ },
1883
+ capabilities: [
1884
+ { name: "manage_posts", actions: ["create", "list", "get", "delete"], description: "Submit text/link posts to subreddits and manage them" },
1885
+ { name: "manage_comments", actions: ["create", "list", "get", "delete"], description: "Post comments and replies on Reddit threads" },
1886
+ { name: "manage_subreddits", actions: ["get", "list", "search"], description: "Browse and search subreddit info, rules, and hot/new/top posts" },
1887
+ { name: "manage_profile", actions: ["get"], description: "View authenticated user profile, karma, and account age" },
1888
+ { name: "search_content", actions: ["search"], description: "Search Reddit posts, comments, and subreddits" },
1889
+ { name: "monitor_mentions", actions: ["search"], description: "Monitor keyword mentions across Reddit for brand/topic tracking" },
1890
+ { name: "manage_messages", actions: ["list", "send"], description: "Read and send private messages" },
1891
+ ],
1892
+ endpoints: {
1893
+ submit_post: { method: "POST", path: "/api/submit", contentType: "application/x-www-form-urlencoded", body: { sr: "", kind: "self", title: "", text: "" } },
1894
+ submit_link: { method: "POST", path: "/api/submit", contentType: "application/x-www-form-urlencoded", body: { sr: "", kind: "link", title: "", url: "" } },
1895
+ get_post: { method: "GET", path: "/r/{subreddit}/comments/{postId}" },
1896
+ delete_thing: { method: "POST", path: "/api/del", contentType: "application/x-www-form-urlencoded", body: { id: "" } },
1897
+ get_user_posts: { method: "GET", path: "/user/{username}/submitted", query: ["sort", "t", "limit"] },
1898
+ post_comment: { method: "POST", path: "/api/comment", contentType: "application/x-www-form-urlencoded", body: { thing_id: "", text: "" } },
1899
+ get_comments: { method: "GET", path: "/r/{subreddit}/comments/{postId}", query: ["sort", "limit", "depth"] },
1900
+ get_subreddit: { method: "GET", path: "/r/{subreddit}/about" },
1901
+ get_subreddit_rules: { method: "GET", path: "/r/{subreddit}/about/rules" },
1902
+ get_hot: { method: "GET", path: "/r/{subreddit}/hot", query: ["limit", "after"] },
1903
+ get_new: { method: "GET", path: "/r/{subreddit}/new", query: ["limit", "after"] },
1904
+ get_top: { method: "GET", path: "/r/{subreddit}/top", query: ["t", "limit", "after"] },
1905
+ search_subreddits: { method: "GET", path: "/subreddits/search", query: ["q", "limit", "sort"] },
1906
+ list_my_subreddits: { method: "GET", path: "/subreddits/mine/subscriber", query: ["limit", "after"] },
1907
+ search_posts: { method: "GET", path: "/search", query: ["q", "type", "sort", "t", "limit", "restrict_sr", "sr"] },
1908
+ get_me: { method: "GET", path: "/api/v1/me" },
1909
+ get_user: { method: "GET", path: "/user/{username}/about" },
1910
+ get_user_comments: { method: "GET", path: "/user/{username}/comments", query: ["sort", "t", "limit"] },
1911
+ get_inbox: { method: "GET", path: "/message/inbox", query: ["limit", "after"] },
1912
+ send_message: { method: "POST", path: "/api/compose", contentType: "application/x-www-form-urlencoded", body: { to: "", subject: "", text: "" } },
1913
+ vote: { method: "POST", path: "/api/vote", contentType: "application/x-www-form-urlencoded", body: { id: "", dir: 1 } },
1914
+ },
1915
+ authHeader: (creds) => ({
1916
+ "Authorization": `Bearer ${creds.accessToken}`,
1917
+ "User-Agent": `0nMCP:RedditService:1.0.0 (by /u/${creds.username || "0nMCP"})`,
1918
+ }),
1919
+ },
1920
+
1865
1921
  };
1866
1922
 
1867
1923
  // ── Helpers ────────────────────────────────────────────────
package/lib/stats.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "generated": "2026-03-28T07:55:13.555Z",
2
+ "generated": "2026-03-28T15:35:11.316Z",
3
3
  "catalogVersion": "2.2.0",
4
4
  "services": 48,
5
5
  "tools": 545,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "0nmcp",
3
- "version": "2.9.0",
3
+ "version": "2.9.1",
4
4
  "mcpName": "io.github.0nork/0nMCP",
5
5
  "description": "Universal AI API Orchestrator — 819 tools, 48 services, portable AI Brain bundles + machine-bound vault encryption + Application Engine. The most comprehensive MCP server available. Free and open source from 0nORK.",
6
6
  "type": "module",
@@ -282,6 +282,6 @@
282
282
  "triggers": 155,
283
283
  "totalCapabilities": 1078,
284
284
  "categories": 21,
285
- "lastUpdated": "2026-03-28T07:55:13.555Z"
285
+ "lastUpdated": "2026-03-28T15:35:11.316Z"
286
286
  }
287
287
  }
package/tools.js CHANGED
@@ -7,6 +7,7 @@
7
7
 
8
8
  import { z } from "zod";
9
9
  import { SERVICE_CATALOG, listServices, getService } from "./catalog.js";
10
+ import { registerRedditTools } from "./reddit.js";
10
11
 
11
12
  /**
12
13
  * Register all universal + workflow tools on an MCP server instance.
@@ -383,4 +384,7 @@ Examples:
383
384
  }
384
385
  );
385
386
  }
387
+
388
+ // ─── Reddit ────────────────────────────────────────────
389
+ registerRedditTools(server, z, connections);
386
390
  }