Skip to main content
Glama

A topic's ranking

topic_ranking
Read-onlyIdempotent

Ranks a topic's GitHub repositories by star velocity (stars gained ÷ √stars before) over the last 24 hours, 7 days or 30 days, with the stars each gained: the same list as the topic's page on Upstar. Page with offset (next_offset).

Input Schema

NameRequiredDescriptionDefault
langNolanguage of the names, descriptions and links Upstar writes: en (default at /mcp) or fr (default at /fr/mcp); repository descriptions stay as their authors wrote them
limitNohow many repositories, 1 to 50 (10 by default)
topicYesthe topic's slug, from list_topics or search (rust, self-hosted, emulation…)
detailNocompact (the default): each repository's rank, name, description, language, stars, gains and Upstar page; full adds its creation day, health level, topics with their ranks and GitHub address, list_topics its categories, and get_repo its 12-week history, GitHub topics, activity counts and every period's rankscompact
offsetNohow many places of the ranking to pass over, for the next page (next_offset of the previous answer); 0 by default, at most the number of repositories ranked
periodNoday (last 24 hours), week (last 7 days, the default) or month (last 30 days)week

Output Schema

NameRequiredDescriptionDefault
langYeslanguage of names and descriptions written by Upstar (en or fr)
reposYes
topicYes
periodYes
rankedYeshow many repositories rank in the topic over the period
sourceYesthe source to cite when using these figures
method_urlYesUpstar's page explaining how stars are counted and repositories ranked
next_offsetNothe offset of the next page; absent on the last one
data_updated_atYeswhen Upstar last rebuilt its rankings from GitHub's data (UTC, RFC 3339): every figure is as of then

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • removedOutput schema / properties / left_out
      Removed value: -{
      -  "anyOf": [
      -    {
      -      "type": "null"
      -    },
      -    {
      -      "additionalProperties": false,
      -      "properties": {
      -        "blocked": {
      -          "description": "blocked by Upstar's moderation",
      -          "type": "integer"
      -        },
      -        "count": {
      -          "type": "integer"
      -        },
      -        "kept_out_by_review": {
      -          "description": "reviewed, and not featured by Upstar",
      -          "type": "integer"
      -        },
      -        "no_page": {
      -          "description": "without an Upstar page this hour",
      -          "type": "integer"
      -        },
      -        "out_of_place": {
      -          "description": "judged out of place in this topic, or doubtful there, by Upstar's topic review (for a list across topics: in every one of their topics)",
      -          "type": "integer"
      -        },
      -        "waiting_for_review": {
      -          "description": "held until Upstar reviews their star growth or their content",
      -          "type": "integer"
      -        }
      -      },
      -      "required": [
      -        "count"
      -      ],
      -      "type": "object"
      -    }
      -  ],
      -  "description": "the repositories of this stretch of the ranking Upstar does not show, by reason: the ranks this answer skips"
      -}
  2. Changed1 schema field changed
    • addedOutput schema / properties / left_out
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "null"
      +    },
      +    {
      +      "additionalProperties": false,
      +      "properties": {
      +        "blocked": {
      +          "description": "blocked by Upstar's moderation",
      +          "type": "integer"
      +        },
      +        "count": {
      +          "type": "integer"
      +        },
      +        "kept_out_by_review": {
      +          "description": "reviewed, and not featured by Upstar",
      +          "type": "integer"
      +        },
      +        "no_page": {
      +          "description": "without an Upstar page this hour",
      +          "type": "integer"
      +        },
      +        "out_of_place": {
      +          "description": "judged out of place in this topic, or doubtful there, by Upstar's topic review (for a list across topics: in every one of their topics)",
      +          "type": "integer"
      +        },
      +        "waiting_for_review": {
      +          "description": "held until Upstar reviews their star growth or their content",
      +          "type": "integer"
      +        }
      +      },
      +      "required": [
      +        "count"
      +      ],
      +      "type": "object"
      +    }
      +  ],
      +  "description": "the repositories of this stretch of the ranking Upstar does not show, by reason: the ranks this answer skips"
      +}
  3. Changed1 schema field changed
    • removedOutput schema / properties / left_out
      Removed value: -{
      -  "anyOf": [
      -    {
      -      "type": "null"
      -    },
      -    {
      -      "additionalProperties": false,
      -      "properties": {
      -        "blocked": {
      -          "description": "blocked by Upstar's moderation",
      -          "type": "integer"
      -        },
      -        "count": {
      -          "type": "integer"
      -        },
      -        "kept_out_by_review": {
      -          "description": "reviewed, and not featured by Upstar",
      -          "type": "integer"
      -        },
      -        "no_page": {
      -          "description": "without an Upstar page this hour",
      -          "type": "integer"
      -        },
      -        "out_of_place": {
      -          "description": "judged out of place in this topic, or doubtful there, by Upstar's topic review (for a list across topics: in every one of their topics)",
      -          "type": "integer"
      -        },
      -        "waiting_for_review": {
      -          "description": "held until Upstar reviews their star growth or their content",
      -          "type": "integer"
      -        }
      -      },
      -      "required": [
      -        "count"
      -      ],
      -      "type": "object"
      -    }
      -  ],
      -  "description": "the repositories of this stretch of the ranking Upstar does not show, by reason: the ranks this answer skips"
      -}
  4. First observed

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, non-destructive and closed-world, so the safety profile is covered. The description adds real behavioral context beyond that: the ranking formula, the fact that gains are included, that the result mirrors the Upstar topic page, and that paging continues through next_offset. It does not discuss what happens for an unknown or empty topic, which is the main remaining gap.

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

Conciseness4/5

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

The core action and metric are front-loaded, and every clause carries information about scope, metric or paging. The colon-and-clause construction ('with the stars each gained: the same list as...') is slightly tangled and one sentence is asked to do a lot, but there is no filler.

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?

With a 6-parameter schema at full description coverage, rich annotations and an output schema, the description only needs to establish purpose, metric and paging, and it does all three. The notable omission is behavior for a topic slug that returns no ranked repositories.

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 description coverage is 100%, so limit, offset, period, detail, lang and topic are all already documented in the schema, making a 3 the baseline. The description adds a modest amount: it defines what the ranking metric is and explicitly ties the offset parameter to next_offset from the previous answer. Otherwise the period and paging semantics are restated rather than extended.

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

Purpose4/5

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

The description gives a specific verb (ranks), a specific resource (a topic's GitHub repositories), and even the exact metric (stars gained divided by the square root of prior stars) plus the supported time windows. Scope is pinned down further by 'the same list as the topic's page on Upstar'. It never names the sibling tools (trending, emerging, spotted_early), so differentiation is implied by the topic-scoped framing rather than stated.

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?

Usage is only implied: an agent can infer this is the tool for a single topic's ranked repository list, and the trailing 'Page with offset (next_offset)' gives a concrete paging instruction. There is no explicit when-to-use versus trending/emerging/search, and no statement about prerequisites such as the topic already existing.

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