Skip to main content
Glama
amk9978

contribution-compass

by amk9978

Contribution Compass

CI Pages License: MIT

V2 rewrite in progress: the previous repository-monitoring and issue-feed prototype has been retired. The current branch is a deliberately small foundation, not a usable recommender yet.

Contribution Compass is becoming a personalized OSS investment recommender. It will help a serious engineer decide which few open-source projects deserve the next several months of their attention, given their background, desired growth, career goals, and the project’s ability to absorb outside contributors.

Product rule: project first, issue second. Concrete GitHub issues become calls to action only after their repository has been judged worth a sustained investment.

Read the authoritative product and architecture specification.

Product direction

developer profile
→ semantic and dependency neighborhood
→ candidate discovery
→ evidence collection
→ hard taste floors
→ Fit / Absorption / Upside
→ Pareto shortlist and diverse portfolio
→ 2–4 concrete issues per recommended project

The final output should feel like:

These are the few open-source projects where your next six months of effort are most likely to teach you something, matter to the community, and strengthen your engineering career—and here is the evidence.

Related MCP server: memory-bank-mcp

Reset status

The August 2026 reset removed the v1 product model and all generated v1 artifacts:

  • fixed repository groups and Project Sensors;

  • daily Signals, full snapshots, Observation Events, state, and reports;

  • Contribution Lead and Triage Lead scoring;

  • Hacker News, news feeds, RSS, catalog overlays, and browser-only personalization;

  • catalog-shaped CLI and MCP tools;

  • the scheduled collector that would otherwise regenerate obsolete output.

The retained foundation is intentionally narrow:

  • Python 3.12, uv, Ruff, mypy, and pytest;

  • domain/application/adapter/controller/view separation;

  • bounded GitHub transport and pagination;

  • dependency-manifest parsing and package-to-repository resolution;

  • Jinja2 static publication and GitHub Pages;

  • an MCP transport entry point with a rewrite-status resource;

  • GitHub Actions CI;

  • evidence/measurement/taste separation as an architectural invariant.

Development

Requirements: Python 3.12+ and uv.

uv sync --all-extras
uv run ruff check .
uv run ruff format --check .
uv run mypy src
uv run pytest
uv run contribution-compass site

The generated reset page is written to .site/. No model credential is required. Future GitHub profile, discovery, and evidence commands will use GITHUB_TOKEN.

Architecture

src/contribution_compass/
  domain/          factual, transport-independent concepts
  application/     recommendation use cases as they are validated
  ports.py         seams introduced only when real adapters vary
  adapters/        GitHub, manifests, and package registries
  controllers/     CLI and MCP transports
  views/           packaged Jinja2 static presentation

The intended v2 domain is described in CONTEXT.md. Architectural decisions live in docs/adr.

Contributing

The rewrite is validation-first. Please read CONTRIBUTING.md and discuss a task before implementing a broad feature. The first milestone is proving project evaluation quality—not maximizing repositories indexed or commands shipped.

License and attribution

MIT—see LICENSE. Some retained GitHub and dependency-discovery patterns originated in or were adapted during work based on the MIT-licensed agents-radar; see NOTICE.md.

Available Tools

7 tools
compare_projectsB

Compare factual project context and Leads observed in the latest snapshot.

ParametersJSON Schema
NameRequiredDescriptionDefault
groupNoExact configured project-group id

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.1/5.0
Behavior2/5

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

With no annotations, the description carries the full burden for behavioral disclosure. It only adds that data comes from the 'latest snapshot,' implying a non-live read operation, but it does not clarify output behavior, scoping, or whether only monitored projects are included.

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 a single front-loaded sentence with no filler. Every word contributes to stating the action and object.

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?

The tool is simple (one optional parameter) and has an output schema, so return-value details are not required. However, the description lacks context around when to use it, what 'Leads' means, and how the 'group' parameter scopes the comparison, leaving gaps for an agent deciding whether to invoke it.

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% and the single optional 'group' parameter is already described as 'Exact configured project-group id.' The tool description adds no additional meaning about how group affects the comparison, so the baseline of 3 is appropriate.

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 uses a specific verb ('Compare') and identifies clear resources ('factual project context and Leads observed in the latest snapshot'), which conveys the tool's core function and distinguishes it from search/retrieval siblings. It loses a point because 'Leads' is left unexplained and there is no explicit contrast with sibling tools.

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 guidance is provided about when to choose compare_projects over siblings like get_project_context, get_signal_timeline, or search_project_updates. There are no preferred scenarios, exclusions, or alternative tool references.

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

find_contribution_opportunitiesA

Find open, unassigned contribution leads with reasons, caveats, and evidence URLs.

ParametersJSON Schema
NameRequiredDescriptionDefault
tierNoExplicit invitation or weaker triage evidence
groupNoExact configured project-group id
limitNo
queryNoWords to match in title, body, project, labels, or project keywords
projectNoExact owner/repository slug

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior3/5

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

With no annotations, the description carries the burden. It indicates a read-only 'find' operation and mentions output contents, but does not disclose potential side effects, ordering, or error behavior. No contradictions.

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 a single, concise sentence that effectively captures the core purpose and key output features without unnecessary verbosity. Excellent structure.

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?

The description provides a high-level idea of the return content, but lacks details such as output format, pagination, or edge cases. Since no output schema is provided, more context could be beneficial, but it's not critically incomplete.

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?

The schema already provides descriptions for most parameters (tier, group, query, project), covering 80% of the params. The description adds no additional detail about parameter usage, so the baseline 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 clearly states the tool finds open and unassigned contribution leads, and also mentions the output includes reasons, caveats, and evidence URLs, making the purpose distinct from sibling tools like search_project_updates or compare_projects.

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 for discovering contribution opportunities but does not explicitly contrast with alternatives or specify when to prefer this tool over others. It relies on the tool's name and inferred context.

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

get_project_contextC

Get project metadata plus bounded important Signals and recent Observation Events.

ParametersJSON Schema
NameRequiredDescriptionDefault
repositoryYesExact owner/repository slug
event_limitNo
signal_limitNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.7/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It only mentions 'bounded' and 'recent' but does not explain bounding behavior, ordering, filters, or side effects. It does not state whether the operation is read-only or if permissions are required. The description does not contradict any annotations, but it provides minimal behavioral context.

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 description is a single, efficient sentence that front-loads the primary purpose. It avoids redundancy with the schema and annotations. However, it sacrifices necessary detail for brevity, so it is not a perfect 5.

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

Completeness2/5

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

Given the tool's complexity (3 parameters, output schema) and the existence of overlapping sibling tools, the description is too sparse. It does not explain what 'important Signals' means, how limits interact, or when to prefer this over get_signal_timeline. The output schema exists but the description still needs to set expectations for the combined result set, which it fails to do.

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

Parameters2/5

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

Schema description coverage is only 33% (only 'repository' has a description). The tool description adds no parameter-specific meaning, failing to link 'bounded important Signals' to signal_limit or 'recent Observation Events' to event_limit. The parameter names and schema defaults provide some semantics, but the description does not compensate for the low coverage.

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 clearly states the tool retrieves project metadata plus important signals and observation events, using the specific verb 'Get.' It identifies distinct resources (metadata, Signals, Observation Events) which helps distinguish it from generic 'get' tools. However, it does not explicitly differentiate from siblings like get_signal_timeline, which may overlap on Signal retrieval.

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?

The description provides no explicit guidance on when to use this tool versus alternatives. It does not mention any exclusions, prerequisites, or comparisons with sibling tools such as get_signal_timeline or search_project_updates. The usage context is only implied by the tool's name and brief description.

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

get_project_newsB

Get releases, public roadmap items, and separately labeled HN discussions.

ParametersJSON Schema
NameRequiredDescriptionDefault
groupNoExact configured project-group id
limitNo
queryNoWords to match across project keywords, releases, upcoming items, and HN stories
projectNoExact owner/repository slug

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.3/5.0
Behavior2/5

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

No annotations are present, so the description carries full burden. It only lists content types and does not disclose behavioral traits such as authentication requirements, filtering/grouping behavior, rate limits, or how the parameters affect results. The term 'public' hints at scope but is insufficient for a tool with optional group and project identifiers.

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 a single, front-loaded sentence with no wasted words. It concisely states the tool's purpose and distinct content types, making it easy to scan and understand.

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?

Though an output schema exists, the description is minimal. For a tool with two identifiers (group and project) and overlapping siblings, more context would help disambiguate usage. The description is functional but not complete enough to fully guide an agent without additional investigation.

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 high (75%), with group, query, and project already described. The tool description adds minimal new meaning beyond the schema, mainly aligning query matching with the listed content types. Since the schema covers most parameters, a baseline 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 'Get' and enumerates the exact resources returned: releases, public roadmap items, and HN discussions. This clearly distinguishes it from siblings like search_project_updates or get_signal_timeline, which focus on updates or timeline events.

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 guidance is provided on when to use this tool versus alternatives. With sibling tools like search_project_updates and get_signal_timeline, the description does not mention when this is the appropriate choice or when to prefer another tool. No exclusions or alternative references.

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

get_signal_timelineA

Get the append-only discovery/change trail for a stable Signal ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
signal_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior3/5

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

With no annotations provided, the description carries the full burden. It discloses that the trail is 'append-only' (immutable/historical), which is useful, but does not explicitly state whether the tool is read-only, whether it has side effects, or any other behavioral details like ordering or pagination. It gives some context but not a rich behavioral profile.

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 a single, front-loaded sentence: 'Get the append-only discovery/change trail for a stable Signal ID.' Every word earns its place; no redundant or filler content.

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?

For a simple one-parameter get-by-ID tool with an output schema, the description is largely sufficient. It covers the core purpose and the nature of the data (append-only trail). It could mention return ordering or include a note about pagination, but the word 'trail' implies a sequence, and the output schema presumably defines the structure. The tool's simplicity lowers the burden.

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?

The schema provides only a bare string property 'signal_id' with 0% description coverage. The description adds the qualifier 'stable' to signal ID, hinting that the ID is persistent and not transient. However, it does not explain what a signal is, where to find the ID, or any format constraints, leaving the parameter semantically under-specified.

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 the specific verb 'Get' and names a clear resource: 'the append-only discovery/change trail for a stable Signal ID.' It differentiates from sibling tools like search_project_updates and get_project_context, which serve different purposes (searching updates vs. getting a timeline).

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 context is clear: this is for retrieving the change trail for a specific Signal ID. It doesn't explicitly state when not to use it or point to alternatives, but the 'append-only trail' phrasing strongly implies it's for historical/change tracking rather than, say, searching or listing projects.

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

list_monitored_projectsC

List configured projects with context and collected evidence counts.

ParametersJSON Schema
NameRequiredDescriptionDefault
groupNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.8/5.0
Behavior2/5

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

With no annotations, the description must convey behavioral traits but only states that projects are listed with context and counts. It does not clarify what 'configured' means, whether the list is exhaustive or filtered, or what the output structure is, leaving key behaviors ambiguous.

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 description is a single, concise sentence with no wasteful words. It is appropriately sized for a simple listing tool, though it omits important details, which are already captured in other dimensions.

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

Completeness2/5

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

Although an output schema exists, the description lacks essential context. It does not explain the notion of 'configured projects', the meaning of 'context' and 'collected evidence counts', or how the 'group' parameter affects the results, making it insufficient for full understanding.

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

Parameters1/5

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

The input schema defines a 'group' parameter with no description (0% coverage). The description completely ignores this parameter, providing no clues about its meaning or valid values, thus failing to compensate for the schema's lack of documentation.

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 function with a specific verb and resource: 'List configured projects'. It further specifies what is included ('context and collected evidence counts'), distinguishing it from sibling tools that focus on updates, context, opportunities, and timelines.

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?

The description provides no guidance on when to use this tool versus alternatives. It does not mention any conditions, prerequisites, or comparisons to sibling tools, leaving the agent without context for selection.

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

search_project_updatesC

Search important collected updates, ranked only from factual engagement and labels.

ParametersJSON Schema
NameRequiredDescriptionDefault
kindNoOptional normalized signal kind
groupNoExact configured project-group id
limitNo
queryNoWords to match in title, body, project, labels, or project keywords
projectNoExact owner/repository slug

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.6/5.0
Behavior2/5

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

With no annotations, the description carries the full burden. It adds that results are 'ranked only from factual engagement and labels,' which is useful context, but it does not disclose side effects (e.g., whether it's read-only), auth requirements, rate limits, or what happens with no matches—leaving significant behavioral gaps.

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 description is a single concise sentence, front-loaded with the primary action. It avoids unnecessary words, but its brevity borders on under-specification—still, it earns points for structural economy.

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

Completeness2/5

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

Given the tool's complexity (5 optional params, output schema, and several siblings), the description is insufficient. It lacks usage guidelines, does not explain the concept of 'important updates' or 'factual engagement,' and does not complement the schema meaningfully, leaving agents uncertain about appropriate use and expected results.

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 80% (4 of 5 params have descriptions; limit lacks one but has min/max/default). The description adds no parameter information beyond what the schema provides, so it does not improve semantics. The baseline of 3 is appropriate.

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

Purpose3/5

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

The description states the tool 'search important collected updates' with a verb and resource, but 'important' is vague and doesn't specify what constitutes 'updates' (though schema clarifies kinds). It doesn't differentiate from siblings like get_project_news or get_signal_timeline, which also deal with project updates.

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 guidance is provided on when to use this tool versus alternatives. The description only mentions ranking by 'factual engagement and labels,' which hints at a differentiator but does not explicitly state use cases, exclusions, or alternative tools.

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

TDQS

A3.5/5.0
Disambiguation5/5

Each tool targets a distinct aspect: searching updates, retrieving project context, finding opportunities, examining signal timelines, and listing projects. There is no overlap in their purposes.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern: search_project_updates, get_project_context, find_contribution_opportunities, get_signal_timeline, list_monitored_projects.

Tool Count5/5

With five tools, the set is well-scoped for a contribution intelligence server. Each tool serves a clear need without redundancy or bloat.

Completeness4/5

The read-only surface is solid: searching, contextualizing, discovering opportunities, and tracking signals. The only minor gap is a lack of any action-oriented tools (e.g., claiming or updating contributions), but this fits a compass/insight role.

Maintenance

ActivityNo data
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 contributing, challenging, discovering, verifying, and querying contestable public records from AI coding tools via MCP.
    6
    51
    1
    MIT
  • A
    license
    B
    quality
    B
    maintenance
    Provides a read-only MCP interface to query and retrieve verifiable evidence from a local memory bank, supporting search, dossier, chronology, source, and evidence tools.
    6
    BSD Zero Clause
  • A
    license
    Not graded
    quality
    A
    maintenance
    Provides MCP tools to search, compare, and get recommendations for open-source projects from a structured knowledge graph of GitHub data.
    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/amk9978/contribution-compass'

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