Skip to main content
Glama

Follow feeds by URL, with per-URL outcomes

follow_feeds
Destructive

Follow up to 20 feed or site URLs in one call. Site URLs are resolved to their published feed. Naming a collection that does not exist creates it. Returns a per-URL outcome — partial success is normal and legible, never all-or-nothing. Example: {"urls":["https://www.nasa.gov/feed/"],"collection":"Research"}

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
urlsYes
collectionNoCollection id or name. A new name is created. Omit for Unsorted.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
objectYes
followedYes
outcomesYes
collectionYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed6 schema fields changed
    • addedInput schema / additionalProperties
      Added value: +false
    • changedInput schema / properties / collection / anyOf
      Previous value: -[
      -  {
      -    "anyOf": [
      -      {
      -        "default": 0,
      -        "type": "string"
      -      },
      -      {
      -        "maximum": 9007199254740991,
      -        "minimum": 1,
      -        "type": "integer"
      -      }
      -    ]
      -  },
      -  {
      -    "maxLength": 100,
      -    "minLength": 1,
      -    "type": "string"
      -  }
      -]New value: +[
      +  {
      +    "maximum": 9007199254740991,
      +    "minimum": 1,
      +    "type": "integer"
      +  },
      +  {
      +    "maxLength": 100,
      +    "minLength": 1,
      +    "type": "string"
      +  }
      +]
    • removedOutput schema / properties / followed / anyOf
      Removed value: -[
      -  {
      -    "default": 0,
      -    "type": "string"
      -  },
      -  {
      -    "maximum": 9007199254740991,
      -    "minimum": -9007199254740991,
      -    "type": "integer"
      -  }
      -]
    • addedOutput schema / properties / followed / maximum
      Added value: +9007199254740991
    • addedOutput schema / properties / followed / minimum
      Added value: +-9007199254740991
    • addedOutput schema / properties / followed / type
      Added value: +"integer"
  2. Changed11 schema fields changed
    • changedInput schema / $schema
      Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • removedInput schema / additionalProperties
      Removed value: -false
    • addedInput schema / properties / collection / anyOf
      Added value: +[
      +  {
      +    "anyOf": [
      +      {
      +        "default": 0,
      +        "type": "string"
      +      },
      +      {
      +        "maximum": 9007199254740991,
      +        "minimum": 1,
      +        "type": "integer"
      +      }
      +    ]
      +  },
      +  {
      +    "maxLength": 100,
      +    "minLength": 1,
      +    "type": "string"
      +  }
      +]
    • addedInput schema / properties / collection / description
      Added value: +"Collection id or name. A new name is created. Omit for Unsorted."
    • removedInput schema / properties / collection / maxLength
      Removed value: -80
    • removedInput schema / properties / collection / minLength
      Removed value: -1
    • removedInput schema / properties / collection / type
      Removed value: -"string"
    • removedInput schema / properties / urls / items / format
      Removed value: -"uri"
    • addedInput schema / properties / urls / items / maxLength
      Added value: +2048
    • addedInput schema / properties / urls / items / minLength
      Added value: +8
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "$schema": "https://json-schema.org/draft/2020-12/schema",
      +  "additionalProperties": {},
      +  "properties": {
      +    "collection": {
      +      "type": "string"
      +    },
      +    "followed": {
      +      "anyOf": [
      +        {
      +          "default": 0,
      +          "type": "string"
      +        },
      +        {
      +          "maximum": 9007199254740991,
      +          "minimum": -9007199254740991,
      +          "type": "integer"
      +        }
      +      ]
      +    },
      +    "object": {
      +      "const": "feed_follow",
      +      "type": "string"
      +    },
      +    "outcomes": {
      +      "items": {
      +        "patternProperties": {
      +          "^(.*)$": {}
      +        },
      +        "type": "object"
      +      },
      +      "type": "array"
      +    }
      +  },
      +  "required": [
      +    "object",
      +    "collection",
      +    "followed",
      +    "outcomes"
      +  ],
      +  "type": "object"
      +}
  3. First observed

TDQS

A4.4/5.0
Behavior5/5

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

The description goes beyond the annotations by revealing that naming a new collection creates it, and that results are per-URL with partial success instead of all-or-nothing. It also explains that site URLs are resolved to their published feeds, providing meaningful behavioral detail beyond the destructiveHint and readOnlyHint annotations.

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 and front-loaded with the primary action. It includes useful nuances (site URL resolution, collection creation, partial success) and an example, all without unnecessary verbosity. 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?

The description provides enough context for a moderately simple tool with two parameters: it explains the operation, behavior, and return format at a high level. While it does not detail the exact output schema structure, the mention of per-URL outcomes and partial success is sufficient given the tool's simplicity.

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?

Both parameters are semantically addressed: 'urls' is described as feed or site URLs, and 'collection' is explained as an id or name (with creation behavior and omission default) in both the schema and description. The schema lacks a dedicated description for 'urls', but the overall description fills this gap. Minor details like min length are not explained, but the semantics are clear.

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's purpose: to follow up to 20 feed or site URLs in one call. It uses a specific verb ('follow') and identifies the resource ('feeds'), and it distinguishes itself by mentioning per-URL outcomes and site URL resolution, which helps set it apart from general feed mutators like mutate_feeds.

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 the tool should be used when following feeds by URL, and it explains site URL resolution and collection creation. However, it does not explicitly state when to prefer this tool over sibling tools such as mutate_feeds or manage_collections, nor does it mention any exclusion criteria.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources