Skip to main content
Glama
helloaigent-dev

hello-aigent-subscriber

@helloaigent-dev/subscriber

The Hello Aigent reference subscriber — an MCP server that lets any agent subscribe to any Hello Aigent feed, fetch signed updates, verify them, and act on them. Plus watch mode: a standing poller that collects verified updates into a digest between agent runs.

npx @helloaigent-dev/subscriber            # MCP server (stdio)
npx @helloaigent-dev/subscriber watch      # standing watcher (default cadence: daily)

WebMCP (browser)

The in-tab on-ramp for ChatGPT’s built-in browser and Chrome (chrome://flags/#enable-webmcp-testing). The page registers three tools (hello_aigent_check_feed, hello_aigent_subscribe, hello_aigent_fetch_updates) so an agent can use the feed without installing MCP. One classic script tag — no build step, no API key.

<script src="/webmcp/hello-aigent-webmcp.js"></script>

Live demo: https://helloaigent.dev. This repo is the public source. Details, judge test steps, and CORS notes: webmcp/README.md.

Related MCP server: Feedbagel MCP Server

Tools

Tool

What it does

hello_aigent_subscribe(discovery_url, feed_id?, principal?, consent_scope?)

Reads the site's /.well-known/hello-aigent.json, subscribes (defaults come from your policy)

hello_aigent_fetch(subscription_id?, max?)

Pulls only-new-since updates via the stored cursor; verifies every envelope signature

hello_aigent_unsubscribe(subscription_id)

Revokes consent (idempotent) — the one-call undo

hello_aigent_list_subscriptions()

Lists stored subscriptions (tokens are never exposed)

hello_aigent_check_site(url)

Checks a site you're visiting for a feed; auto-subscribes per your standing policy (origin: auto)

hello_aigent_digest()

Returns unread digest entries collected by watch and marks them surfaced

hello_aigent_setup_watch(cadence?)

Emits ready-to-apply standing-schedule recipes (scheduled task, recurring task, cron)

Watch mode

npx @helloaigent-dev/subscriber watch --once            # one pass (what schedulers call)
npx @helloaigent-dev/subscriber watch --every 6h        # long-running loop (floor: hourly)
npx @helloaigent-dev/subscriber watch --once --exec "my-agent-cmd"   # trigger a run on new updates

Each pass polls every active subscription, verifies signatures, and appends new updates to the digest file. The server-side mailbox means a missed run loses nothing. --exec runs your command when new updates land, with HELLO_AIGENT_NEW_UPDATES and HELLO_AIGENT_DIGEST set.

Policy

Written to ~/.hello-aigent/policy.json on first run — everything automatic by default, and this file is where you change that:

Key

Default

Meaning

principal

user@host

Your stable identity across all feeds — set it once (e.g. your email)

auto_subscribe

on

Subscribe when your agent visits a Hello Aigent site: on / ask / off

watch_cadence

daily

How often watch polls (hourly floor)

act

safe

What the agent may do unprompted: none / safe (side-effect-free) / thresholds

pseudonymous

false

Opt-in: per-site pseudonymous principals

Feeds nobody reads decay: after 30 idle days watch stops polling them; after 60 it unsubscribes (noted in the digest). Reading the digest or fetching a feed keeps it alive.

Guarantees

  • Signature verification before anything is actionable. Envelopes are Ed25519-verified (RFC 8785 JCS canonicalization) against the feed's discovery public key. Anything that fails verification is returned under unverified with its actions stripped.

  • Consent is standing policy. Subscribing records principal + consent_scope; your policy file is the consent layer, and unsubscribe is always one idempotent call.

  • Local state only. Subscriptions (including bearer tokens), policy, and the digest live in ~/.hello-aigent/ (mode 0600). Override with HELLO_AIGENT_STATE / HELLO_AIGENT_POLICY / HELLO_AIGENT_DIGEST.

MCP client config

{
  "mcpServers": {
    "hello-aigent": { "command": "npx", "args": ["@helloaigent-dev/subscriber"] }
  }
}

Cursor / Grok Bot plugin

This repo is also packaged as an Agent Plugins bundle (MCP + skill) that Cursor and Grok Bot can load. Cursor Marketplace plugins are that same format — there is no separate Grok Bot package. This plugin is not listed on the Cursor Marketplace yet.

1. Custom MCP connector (works today)

Point any MCP client, including Cursor, at the published npm package:

{
  "mcpServers": {
    "hello-aigent": { "command": "npx", "args": ["-y", "@helloaigent-dev/subscriber"] }
  }
}

No API key. Then in chat: ask the agent to subscribe to a feed (try https://helloaigent.dev).

2. Local plugin (MCP + skill)

To load the skill and MCP together while developing:

mkdir -p ~/.cursor/plugins/local
ln -s /path/to/helloaigent-subscriber ~/.cursor/plugins/local/hello-aigent

Restart Cursor, or run Developer: Reload Window. Confirm the Hello Aigent skill and MCP server appear under Customize. Grok Bot uses the same plugin files.

Layout:

File

Role

plugin.json

Agent Plugins 1.0 manifest (portable; Cursor loads this as-is)

.cursor-plugin/plugin.json

Cursor marketplace metadata + relative assets/logo.svg

assets/logo.svg

Official Hello Aigent favicon: orange #E0531C tile, white H, dark chevron A

mcp.json

stdio MCP → npx -y @helloaigent-dev/subscriber (same server as this package)

skills/hello-aigent/SKILL.md

When/how to subscribe, fetch, verify, and unsubscribe

3. Official marketplace listing (later)

When this is submitted and approved, install from the Cursor Marketplace. Until then, use the custom connector or the local plugin path above. Do not submit from this README — maintainers will submit at cursor.com/marketplace/publish when ready.

License

MIT

Available Tools

4 tools
hello_aigent_fetchA

Fetch new updates for a subscription (only-new-since via the stored cursor). Every envelope is signature-verified against the feed's public key; verified updates are returned under updates, anything failing verification is returned under unverified with actions stripped — do not act on those.

ParametersJSON Schema
NameRequiredDescriptionDefault
maxNoMax updates to return (default 10)
subscription_idNoWhich subscription; defaults to the only active one

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description discloses key behavioral traits: signature verification against feed's public key, separation of verified and unverified updates, and stripping actions from unverified ones. This goes beyond the absent annotations, though it could elaborate on cursor management.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise, two sentences, with the core purpose front-loaded. Every sentence adds value without redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema, the description explains the return format (two arrays: updates and unverified) and verification behavior. It is mostly complete, though lacks details on cursor updates or pagination.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Input schema has 100% coverage, with both parameters described in the schema. The description does not add additional parameter meaning, so it meets baseline expectations but does not excel.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool fetches new updates for a subscription using a stored cursor, specifying the verb 'fetch' and resource 'new updates'. It distinguishes itself from sibling tools (list, subscribe, unsubscribe) by focusing on retrieving updates.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage after subscribing, but does not explicitly state when to use this tool versus alternatives or provide exclusion criteria. It could mention not to use for listing or modifying subscriptions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

hello_aigent_list_subscriptionsA

List locally stored Hello Aigent subscriptions (active and revoked) with feed, principal, consent scope, and cursor. Tokens are never returned.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the burden. It explicitly states tokens are never returned, which is a key behavioral trait. However, it doesn't mention other aspects like authorization needs or rate limits, but for a simple list operation, it is fairly transparent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence, front-loaded with the key action and resource, no wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the simplicity (no parameters, no output schema), the description covers the essential information: what is listed and what is never returned. It is complete for an agent to understand the tool's behavior.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There are zero parameters with 100% schema coverage, so baseline is 4. The description adds value by specifying what the results contain (feed, principal, consent scope, cursor) and what they don't (tokens).

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool lists locally stored Hello Aigent subscriptions, both active and revoked. It distinguishes from sibling tools like fetch, subscribe, and unsubscribe by indicating it's a listing operation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies when to use it (to list subscriptions) but does not explicitly compare with siblings or provide when-not-to-use guidance. The context of siblings (fetch, subscribe, unsubscribe) makes usage clear enough.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

hello_aigent_subscribeA

Subscribe to a Hello Aigent feed. Fetches the site's discovery file (/.well-known/hello-aigent.json), picks the feed, and subscribes on behalf of a principal (the account/user this agent acts for). IMPORTANT: subscribing is a consent decision — confirm with your principal before calling. Returns the stored subscription (token is persisted locally, not shown).

ParametersJSON Schema
NameRequiredDescriptionDefault
feed_idNoFeed id; defaults to the only/first feed
principalYesThe account/user this agent acts for
consent_scopeYesWhat the principal consents to receive
discovery_urlYesURL of the discovery file, e.g. https://helloaigent.dev/.well-known/hello-aigent.json

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description carries full burden. It discloses that subscribing is a consent decision, fetches a file, and persists a token locally. Missing details on idempotency, error conditions, or side effects beyond subscription.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences plus a warning. No redundant information. Every sentence adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite no output schema, description mentions return value (stored subscription, token not shown). Explains process and consent requirement. Could mention possibility of updating an existing subscription, but otherwise comprehensive.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, baseline 3. Description adds value by clarifying defaults (feed_id defaults to first/only feed), explaining principal as account/user, and describing consent_scope as what principal consents to receive.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool subscribes to a Hello Aigent feed and explains the process (fetches discovery file, picks feed, subscribes). It distinguishes from siblings like fetch, list_subscriptions, and unsubscribe.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly warns about consent decision ('confirm with your principal'). Provides context on how the tool works and mentions the discovery file URL. Could be more explicit about when not to use, but the consent note is strong guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

hello_aigent_unsubscribeA

Unsubscribe (revoke consent) for a subscription. Idempotent — safe to call twice.

ParametersJSON Schema
NameRequiredDescriptionDefault
subscription_idYesThe subscription to revoke

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description discloses idempotency and safety of double invocation, which is useful behavioral context. However, without any annotations, the burden is higher; it lacks details on error handling (e.g., if subscription_id is invalid) or side effects beyond consent revocation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise, using two short sentences that immediately convey purpose and a key behavioral trait. Every word contributes meaning, with no redundancy or fluff.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema and a single parameter, the description covers the main purpose and a behavioral guarantee. However, it does not describe the return value or potential error conditions, leaving the agent to infer or handle unknowns.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% for the single parameter, and its description 'The subscription to revoke' is adequate. The tool description adds no additional semantic value beyond what the schema already provides, so the baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb 'Unsubscribe (revoke consent)' and clearly identifies the resource as 'subscription'. It distinguishes from siblings like 'subscribe' by being the inverse operation, and the idempotency note adds clarity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit guidance is provided on when to use this tool versus alternatives (e.g., 'hello_aigent_subscribe' or 'hello_aigent_fetch'). The agent receives no context about prerequisites or scenarios where this should or should not be used.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

TDQS

A4.2/5.0
Disambiguation5/5

Each tool has a clearly distinct purpose: subscribing, listing, fetching updates, and unsubscribing. There is no overlap or ambiguity between them.

Naming Consistency5/5

All tool names follow the same 'hello_aigent_[verb]' pattern, using snake_case consistently. The verbs are descriptive and appropriate.

Tool Count5/5

Four tools is well-scoped for a subscription management server. Each tool serves a fundamental operation (subscribe, list, fetch, unsubscribe) without being excessive or insufficient.

Completeness5/5

The tool set covers the full lifecycle of a subscription: subscribing, listing subscriptions, fetching updates, and unsubscribing. There are no missing operations for this domain.

Maintenance

ActivityMaintained
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    D
    maintenance
    Enables AI agents to discover each other and communicate through cryptographically verified messaging and secure inbox management via the Agents Registry. It provides tools for Ed25519-based identity authentication, message signing, and agent discovery across domains.
    6
    14
    MIT
  • A
    license
    A
    quality
    C
    maintenance
    Model Context Protocol server for the Feedbagel API. Enables agents to follow RSS feeds, manage webhook subscriptions, and read entries on a user's behalf.
    17
    16
    3
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Provides access to curated AI news feeds and the ability to fetch and normalize any RSS/Atom/RDF feed, enabling AI agents to consume up-to-date content.
    16
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables AI agents to access curated space and spaceflight RSS/Atom feeds via tools to list feeds, read feed items, and fetch any feed by URL.
    13
    MIT

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/helloaigent-dev/helloaigent-subscriber'

If you have feedback or need assistance with the MCP directory API, please join our Discord server