Eloa
Eloa — AI Content Curator: manage RSS sources, bookmarks and search across all your saved content
Category: Content Tools
Endpoint: https://www.thedevhype.com/api/mcp/eloa
Tools (11)
add_source
Subscribe to an RSS/Atom feed. Validates the URL is a parseable feed, auto-extracts the title, and saves it. Use when the user shares a blog or news URL they want to follow. Limit: 20 sources per user. Idempotent — adding the same URL twice creates only one subscription.
list_sources
List all RSS/Atom sources the user is subscribed to. Returns source ID, title, URL, site URL, last fetch timestamp, category, and subscriber count. Use to show the user their feeds or to get a sourceId for fetch_latest or remove_source. Read-only.
remove_source
Unsubscribe from an RSS source and delete all articles fetched from it for this user. Requires sourceId from list_sources. Destructive — articles from this source are permanently deleted. If no other user subscribes, the source record is also removed.
fetch_latest
Fetch the latest articles from RSS feeds. Parses each feed, upserts articles into the database, and returns them sorted by date. Optionally filter by sourceId. Each article gets a trackable short code URL. Returns array of article objects with title, URL, proxyUrl, author, date, content snippet, source name, and read status.
save_bookmark
Save a URL as a bookmark with optional tags and notes. Auto-extracts the page title and meta description if not provided. Stores stripped HTML content (up to 10KB) for full-text search. Idempotent — saving the same URL twice updates the existing bookmark.
list_bookmarks
List saved bookmarks, optionally filtered by a single tag. Returns bookmark ID, title, URL, tags, notes, and creation date, ordered by newest first. Use to browse bookmarks or get a bookmarkId for remove_bookmark. Read-only.
remove_bookmark
Permanently delete a bookmark by its ID. Requires bookmarkId from list_bookmarks. Destructive — the bookmark and its content are permanently removed.
mark_as_read
Toggle the read status of an article. Use after the user has read or wants to un-read an article. Requires articleId from fetch_latest or search_content. Idempotent — setting read=true on an already-read article is a no-op.
search_content
Full-text search across all saved articles and bookmarks using PostgreSQL websearch_to_tsquery. Supports natural language queries. Filter by type: articles, bookmarks, or all. Returns up to 20 results with title, URL, snippet, and creation date. Read-only.
extract_content
Fetch and extract the full text content from a URL. Uses a scrape API if configured, otherwise falls back to direct HTML fetch with tag stripping. Optionally updates the content of an existing bookmark or article by providing bookmarkId or articleId.
view_analytics
Show click analytics for articles: top clicked articles ranking and clicks grouped by source. Filter by period: 7d, 30d, or all. Uses the trackable proxy URLs (short codes) to count clicks. Read-only.
Quick Start
Option 1: OAuth (recommended)
Clients that support MCP OAuth (Claude Desktop, Cursor, etc) will authenticate automatically:
{
"mcpServers": {
"eloa": {
"url": "https://www.thedevhype.com/api/mcp/eloa"
}
}
}
Option 2: API Key
For clients that don't support OAuth, use an API key:
{
"mcpServers": {
"eloa": {
"url": "https://www.thedevhype.com/api/mcp/eloa",
"headers": {
"Authorization": "Bearer <your-api-key>"
}
}
}
}
Get your API key at thedevhype.com/onboarding
cURL Examples
List available tools
curl -X POST https://www.thedevhype.com/api/mcp/eloa \
-H "Authorization: Bearer <your-api-key>" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}'
Call a tool
curl -X POST https://www.thedevhype.com/api/mcp/eloa \
-H "Authorization: Bearer <your-api-key>" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"add_source","arguments":{}}}'
Replace
<your-api-key>with your Bearer token from the dashboard Config tab.