Skip to content

Feedmon Docs

Feedmon MCP Manifest

Machine-readable MCP manifest for recent-post retrieval and training workflows.

/.well-known/mcp.json json
{
  "name": "feedmon",
  "version": "1.0",
  "description": "Feedmon MCP surface for fetching recent posts from configured feeds and training the matcher with feedback.",
  "documentation": "/.well-known/skills.md",
  "documentation_html": "/docs/skills",
  "endpoints": {
    "recent_posts": {
      "list": {
        "method": "GET",
        "path": "/api/posts/recent",
        "query": {
          "status": "all | new (optional, default all)",
          "days": "integer (optional, default 7, use 0 for all time)",
          "subreddit": "string (optional, normalized subreddit name)",
          "min_score": "integer (optional, minimum relevance score)"
        },
        "description": "Returns up to 100 recent posts from the user's configured feeds using the same filters as the /posts page.",
        "response_fields": [
          "id",
          "reddit_id",
          "subreddit",
          "title",
          "author",
          "url",
          "permalink",
          "content",
          "published_at",
          "discovered_at",
          "matched_keywords",
          "relevance_score",
          "status",
          "feed_name",
          "feed_city",
          "feed_province",
          "comment_count"
        ]
      }
    },
    "training": {
      "get_posts": {
        "method": "GET",
        "path": "/api/train/posts",
        "description": "Returns a batch of posts to rate (JSON array). Use ?for_agent=1 to omit relevance_score; response has id, title, content, subreddit, matched_keywords (no score)."
      },
      "record_feedback": {
        "method": "POST",
        "path": "/api/train/feedback",
        "content_type": "application/json",
        "body": {
          "post_id": "integer",
          "rating": "Excellent | Good | Bad (or lowercase; Good = acceptable)"
        },
        "description": "Record a rating for a post. Agent/CLI interface: send Excellent, Good, or Bad. Updates keyword and subreddit weights."
      },
      "undo_feedback": {
        "method": "POST",
        "path": "/api/train/undo",
        "content_type": "application/json",
        "body": {
          "post_id": "integer"
        },
        "description": "Remove feedback for a post (reverts weight updates)."
      },
      "get_stats": {
        "method": "GET",
        "path": "/api/train/stats",
        "description": "Training progress stats (rated today, total, goal)."
      }
    }
  },
  "docs": {
    "manifest_html": "/docs/mcp",
    "skills_html": "/docs/skills",
    "manifest_raw": "/.well-known/mcp.json",
    "skills_raw": "/.well-known/skills.md"
  },
  "ui": {
    "train": "/train",
    "posts": "/posts"
  }
}