tsouth89/toolport - Open Source PR Review Scorecard

Local-first MCP gateway. One port for every tool and every AI client: lazy discovery (~90% token savings), tool integrity + quarantine, secrets in the OS keychain.

C-Rank Grade: S (Elite) - 72/100

External PR Merge Rate: 93%

Response Time: 15h

First Timer Success: 88%

Frequently Asked Questions

Is tsouth89/toolport welcoming to first-time open-source contributors?

tsouth89/toolport has a recorded first-timer success rate of 88.2%. Repositories ranked S typically provide actionable feedback during code reviews and actively nurture new community contributors.

How fast can I expect code review feedback on my pull request?

Maintainers in tsouth89/toolport respond to incoming external pull requests in approximately 15.5 hours on average. Keeping PRs focused on single tasks and ensuring tests pass helps maintainers review faster.

What does the 71.8 C-Rank™ score (S Tier) represent?

The C-Rank™ system evaluates GitHub projects on a 0–100 scale using real data: PR merge rates, review turnaround time, active maintainer presence, and first-time contributor success. A score of 71.8 places tsouth89/toolport in the S tier.

What is the external contributor pull request merge rate for tsouth89/toolport?

The external contributor pull request merge rate for tsouth89/toolport is 93.2%, based on public PR activity from non-core contributors.

Are there Good First Issues available in tsouth89/toolport?

tsouth89/toolport does not currently have active "good first issue" tags indexed, but accepts external contributions through standard GitHub issue tracking.

tsouth89
tsouth89/toolportS•Elite186
GitHub
Back to Explorer
tsouth89

tsouth89/toolport

186
InactiveS•Elite(72/100)Rust

Local-first MCP gateway. One port for every tool and every AI client: lazy discovery (~90% token savings), tool integrity + quarantine, secrets in the OS keychain.

GitHub
Compare••
Jump to:

AI Maintainer Review Guidelines

Review Persona

Welcoming Community Builder

Warmth Score
8.2/10
Patience Score
8.4/10
Nitpick Rate
35%

Highly welcoming maintainers in tsouth89/toolport. Prompt code reviews with positive guidance for new contributors.

Top PR Submission Do's

  • •Ensure code complies with the project coding style
  • •Keep PRs scoped to a single concern
  • •Include context and link to the related issue

Top PR Friction Pitfalls (Don'ts)

  • •Do not submit PRs without linking an issue
  • •Do not break existing tests without fixing them
  • •Do not mix unrelated refactors in a single PR
Response Velocity
15 hours
Standard maintainer review cycle

Average Response Latency

Tracks hours until a maintainer leaves a review, comment, or PR response.

Merge Efficiency
93.2%
High acceptance rate for external PRs

External Acceptance Rate

Percentage of community pull requests successfully merged into main.

First-Timer Success
88.2%
Strong first-timer PR acceptance rate

First PR Conversion

Rate at which developers submitting their first repository PR succeed.

Active Maintainers
10 core
Highly collaborative maintainer core
Diagnostic Health HUD
93.2%
Merge Gauge
88.2%
1st-Timer
Community Vibe82/100

Embed C-Rank Badge

Show contributors that your repository actively reviews and merges external pull requests.

GetMerged C-Rank badge for tsouth89/toolport
[![GetMerged C-Rank](https://getmerged.abhishekco.de/api/badge/tsouth89/toolport)](https://getmerged.abhishekco.de/tsouth89/toolport?utm_source=github&utm_medium=badge)

Active Good First Issues (5)

View on GitHub

What problem does this solve? Toolport's downstream HTTP MCP client (ureq) uses a hardcoded 30-second request timeout with no way to configure it. Long-running MCP tool calls (e.g. image or video generation taking 60s+) are dropped at ~30s even when both the upstream client and the downstream MCP server have longer timeouts configured. Proposed solution Expose the downstream request timeout as a configurable setting — ideally per-server in the registry (e.g. a requestTimeoutMs field on the server entry) or a global TOOLPORT_* env var — so slow billable tools can opt into a longer deadline. Alternatives considered Create async tools with polling to overcome timeouts. This is achievable with custom MCP servers, but not remote hosted servers. Which clients or servers does this involve? Any MCP server with long-running tool calls

📅 Opened Aug 28, 2026💬 1 comment
Quality: 65/100Contribute

Problem Code mode (toolport_run_script) runs an untrusted script in an embedded JS interpreter. Limits (src-tauri/src/codemode.rs:113-124) bounds everything except allocation: Limits { max_calls: 64, wall_clock: Duration::from_secs(60), max_parallel: 8, max_promise_jobs: 100_000, loop_iteration_limit: 10_000_000, recursion_limit: 400, } Those bound time and iteration count, not bytes. A script can allocate arbitrarily in very few iterations: let a = [1]; for (let i = 0; i < 30; i++) a = a.concat(a); // ~1G elements, 30 iterations That is far under loop_iteration_limit, never yields to the promise-job executor, and never reaches a host-call reserve, so no existing limit fires. The wall clock is only checked at host-call reserve and between jobs (codemode.rs:962-971, :160), so it never gets a chance either. Rust OOM is an abort, not a catchable error, so the process dies. There is also no size cap on the submitted script. src-tauri/src/bin/toolport-gateway.rs:60

📅 Opened Aug 15, 2026💬 2 comments
Quality: 90/100Contribute

Problem The Test button is disabled while test.status === "testing". But every keystroke calls clearTest(), which resets any non-idle status back to "idle" — including "testing". It does not distinguish "a stale result exists" from "a test is in flight", and nothing cancels or tags the pending testServer call. So editing a field during a test re-enables the Test button while the first request is still outstanding, and there is no request-generation guard to discard a late response. Where: src/components/ServerDialog.tsx:101-103 (clearTest) src/components/ServerDialog.tsx:501 (the disabled gate) Callers: set() and setEnvRow() Failure scenario A user clicks Test on a working config. While it is in flight they edit the command to something broken, which flips the status back to idle and re-enables the button. They click Test again. The first call, made against the working config, resolves after the second and writes { status: "ok", message: "Connected. Found N tools." }. The dialog no

📅 Opened Aug 15, 2026💬 0 comments
Quality: 90/100Contribute

Problem handleSave calls addServer/updateServer first, then loops over declared secrets calling setSecret for each. If a setSecret throws after the server was already created, control lands in the single catch, which shows Couldn't save <name> and nothing else. onSaved(result) is never called, so the parent's registry state never learns the server exists, and the dialog stays open with entry.id still "". Where: src/components/ServerDialog.tsx:260-278 Failure scenario A user adds a server with two env secrets. The server is created, the first setSecret succeeds, the second throws because the keychain is locked. The user sees "Couldn't save X" and believes nothing happened. In fact the server exists and one secret is vaulted. They click Save again; because this is not edit mode, addServer runs a second time and creates a duplicate server entry. Acceptance criteria A failure after the server was created is reported as a partial success, naming what did and did not happen. The parent is

📅 Opened Aug 15, 2026💬 2 comments
Quality: 90/100Contribute

Problem bump_secrets_generation discards the result of write_registry. Per its own doc comment, that write is the sole mechanism that makes a running gateway reload after a keychain-only change. All three callers return Ok immediately afterwards, so a failed bump is invisible to the caller and to the user. Where: src-tauri/src/desktop.rs:2961-2966 (bump_secrets_generation) Callers: set_auth_token, clear_auth_token, authenticate_oauth Failure scenario A user clicks "Clear token" to revoke a leaked bearer. The keychain delete succeeds. registry::update then fails, because the cross-process registry lock is held by a running gateway or the disk is full. The command returns Ok, the UI shows the token as removed, and the already-running gateway never reloads. It keeps serving requests with the credential the user believes they just revoked. The same path makes a fresh OAuth sign-in silently not take effect, leaving the user looking at 401s from a server they just authenticated against. Ac

📅 Opened Aug 15, 2026💬 0 comments
Looking for more Rust beginner tasks?Explore Rust GFI

Contributor Community Vibe Feedback

Rate what actually matters after opening a pull request here.

Have you contributed to this repo?

Rate your first-hand PR experience (review speed, maintainer responsiveness, and onboarding ease) to help other contributors.

3 ratings required
Maintainer helpfulness
Review speed
Beginner friendliness

Contributor Compatibility & Review Speed Analysis for tsouth89/toolport

When evaluating whether to contribute to tsouth89/toolport, response velocity and maintainer engagement are crucial. GetMerged continuously tracks pull request trajectories, first-comment latency, and code review rounds to help developers avoid submitting pull requests to backlogged repositories.

Currently, maintainers of tsouth89/toolport acknowledge new external contributions in approximately 15 hours. Out of all submitted pull requests from non-core authors in the last 180-day window, 93.2% were successfully merged into the primary branch.

Frequently Asked Questions - Contributing to tsouth89/toolport

01

Is tsouth89/toolport welcoming to first-time open-source contributors?

tsouth89/toolport has a recorded first-timer success rate of 88.2%. Repositories ranked Elite typically provide actionable feedback during code reviews and actively nurture new community contributors.

02

How fast can I expect code review feedback on my pull request?

The initial maintainer response time averages ~15 hours. Keeping PRs scoped to single concerns and ensuring CI checks succeed will optimize review turnaround.

03

What does the 71.8 C-Rank™ score represent?

The C-Rank™ index scores repositories on a 0 to 100 scale using an objective formula: external PR merge rates, initial response speed, active maintainer count, and first-time contributor retention. A score of 71.8 places tsouth89/toolport in the Elite tier.

04

What is the external contributor pull request merge rate for tsouth89/toolport?

The external pull request merge rate is 93.2%. GetMerged isolates non-core community contributions so external developers get an accurate benchmark of PR acceptance probability.

05

Are there beginner Good First Issues open in tsouth89/toolport?

tsouth89/toolport does not have open beginner labels indexed currently, but external PRs for bugs and documentation improvements are evaluated via normal issue triage.

GetMerged C-Rank™ Indexing Standard

All metrics displayed for tsouth89/toolport are automatically retrieved via the public GitHub API and recalculated daily. Insider pull requests submitted by repository owners or organization members are excluded from merge rate calculations to preserve objective external contributor statistics.