{"name":"com.signalaf/contribution-exchange","slug":"signalaf-contribution-exchange","title":"Contribution Exchange","description":"Contribution Exchange MCP: domain discovery, policies, preflight, proposals, and signals.","url":"https://mcp.market/server/signalaf-contribution-exchange","rating":null,"grade":"A","score":89,"certified":false,"status":"active","category":"other","tags":[],"presence":{"score":31,"stars":6,"forks":1,"downloads_week":null,"last_push_at":"2026-09-16T16:12:58.000Z","license":"MIT"},"uptime":{"percent":100,"checks":9,"ok":9,"last_checked_at":"2026-09-21T14:10:58.452Z","last_ok_at":"2026-09-21T14:10:58.452Z","latency_ms":356},"claimed":false,"transport":"remote","callable_via_gateway":true,"default_price_micros":0,"repository":"https://github.com/SunrisesIllNeverSee/sigrank-app","website":"https://signalaf.com/exchange","version":"1.0.0","remotes":[{"type":"streamable-http","url":"https://signalaf.com/api/exchange/mcp"}],"packages":[],"tools":[{"name":"exchange_discover_domain","description":"Determine whether a domain publishes a Contribution Exchange profile. Returns the canonical Exchange manifest, policy URLs, signal URLs, and whether the domain is self-hosted or delegated to a Steward. Read-only — does not propose, commit, or authorize anything. Enforces HTTPS, redirect limits, timeouts, and SSRF protections (blocks loopback, link-local, private-network, and metadata-service targets).","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"domain":{"type":"string","minLength":3,"maxLength":253,"description":"Domain name or HTTPS URL to check (e.g. 'signalaf.com' or 'https://signalaf.com'). Normalized to hostname."}},"required":["domain"],"additionalProperties":false}},{"name":"exchange_get_attempt","description":"Get detail for a signal attempt. Read-only. Enforces attempt visibility — actors may only read their own private attempts. Returns attempt status and verification result if available. Attempt status is NOT an exchange state. Verification is Steward-controlled and cannot be self-asserted.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"signal_id":{"type":"string","minLength":1,"maxLength":200,"description":"Signal ID."},"attempt_id":{"type":"string","minLength":1,"maxLength":200,"description":"Attempt ID."}},"required":["signal_id","attempt_id"],"additionalProperties":false}},{"name":"exchange_get_policy","description":"Fetch the canonical Contribution Exchange policy for a domain or its delegated Steward. Returns authority ceilings, consideration limits, human-review requirements, and supported behavior. Read-only — does not mutate state or perform preflight evaluation. Distinguishes a missing policy from an unavailable service.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"domain":{"type":"string","minLength":3,"maxLength":253,"description":"Domain name to fetch policy for."}},"required":["domain"],"additionalProperties":false}},{"name":"exchange_get_signal","description":"Get full detail for a single Exchange Signal by ID. Read-only. Returns the complete signal including constraints, participation rules, verification configuration, consideration declaration, and follow-on behavior. A signal does NOT create a Commitment, authorize execution, or guarantee payment.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"signal_id":{"type":"string","minLength":1,"maxLength":200,"description":"Signal ID."}},"required":["signal_id"],"additionalProperties":false}},{"name":"exchange_list_signals","description":"List domain-published Exchange Signals (problems, requests, challenges, bounties, verification tasks, discoveries, experiments). Read-only. Returns canonical URLs, signal revision, revision hash, and status. Signal status is DISTINCT from exchange status — a signal does not create a Commitment or authorize execution. Supports the same filters and pagination as the HTTP API.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"domain":{"type":"string","description":"Filter by publisher domain."},"type":{"type":"string","enum":["problem","request","challenge","bounty","verification","discovery","experiment"],"description":"Filter by signal type."},"status":{"type":"string","enum":["published","paused","closed","expired","withdrawn"],"description":"Filter by signal status."},"label":{"type":"string","description":"Filter by label."},"verification_mode":{"type":"string","enum":["deterministic","hybrid","manual"],"description":"Filter by verification mode."},"consideration_mode":{"type":"string","enum":["fixed","maximum","negotiable"],"description":"Filter by consideration mode."},"accepting_attempts":{"type":"boolean","description":"Only return signals currently accepting attempts."},"published_after":{"type":"string","description":"ISO 8601 timestamp — only signals published after this."},"expires_before":{"type":"string","description":"ISO 8601 timestamp — only signals expiring before this."},"cursor":{"type":"string","description":"Pagination cursor from a previous response."},"limit":{"type":"integer","minimum":1,"maximum":100,"default":50,"description":"Maximum signals to return (1-100, default 50)."}},"additionalProperties":false}},{"name":"exchange_preflight","description":"Evaluate a proposed contribution against the same policy logic used by the real proposal flow. Returns whether the proposal is likely to be auto-engaged, accepted for review, escalated to a human, or rejected as invalid. READ-ONLY: performs no proposal insertion, notification, event creation, or state transition. The result is advisory and time-bound — a favorable preflight does NOT guarantee engagement, Commitment, authorization, payment, or execution. Uses the same evaluateProposal function as the canonical proposal route.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"domain":{"type":"string","minLength":3,"maxLength":253,"description":"Target domain for the proposed contribution."},"category":{"type":"string","description":"Contribution category (e.g. 'technical', 'accessibility', 'documentation', 'research')."},"consideration":{"type":"array","description":"Requested consideration (cash, royalty, reciprocal_access, attribution, referral, other). Advertised consideration is NOT binding until accepted through Commitment.","items":{"type":"object"}},"required_authorization":{"type":"object","description":"Authority requested (inspect_public, sandbox_test, repository_write, private_data, credential_access, production_modify, deploy, penetration_testing).","properties":{"inspect_public":{"type":"boolean"},"sandbox_test":{"type":"boolean"},"repository_read":{"type":"boolean"},"repository_write":{"type":"boolean"},"private_data":{"type":"boolean"},"credential_access":{"type":"boolean"},"production_modify":{"type":"boolean"},"deploy":{"type":"boolean"},"penetration_testing":{"type":"boolean"},"other":{"type":"array","items":{"type":"string"}}}},"confidence":{"type":"object","description":"Confidence in the observation (score 0-1 and basis).","properties":{"score":{"type":"number","minimum":0,"maximum":1},"basis":{"type":"string"}}}},"required":["domain","category"],"additionalProperties":false}}],"scan":{"score":89,"grade":"A","scanned_at":"2026-09-21T05:11:03.695Z","report":{"scannerVersion":"0.1.9","scannedAt":"2026-09-21T05:11:03.663Z","components":{"code":{"score":-1,"max":25,"notes":["remote-only server, no package to scan"]},"reliability":{"score":20,"max":20,"notes":["remote reachable in 680ms"]},"poisoning":{"score":15,"max":15,"notes":["6 tool descriptions checked"]},"auth":{"score":10,"max":15,"notes":["open endpoint, read-only tools"]},"maintenance":{"score":15,"max":15,"notes":["last push 5 days ago"]},"identity":{"score":7,"max":10,"notes":["namespace and repository owner differ","GitHub account older than a year","website matches verified namespace"]}},"findings":[],"inputs":{"probes":[{"url":"https://signalaf.com/api/exchange/mcp","reachable":true,"authRequired":false,"latencyMs":680,"serverInfo":{"name":"contribution-exchange","version":"1.0.0"}}],"packages":[],"repo":{"found":true,"owner":"SunrisesIllNeverSee","repo":"sigrank-app","archived":false,"pushedAt":"2026-09-16T16:12:58Z","stars":6,"forks":1,"openIssues":0,"ownerType":"User","ownerAvatarUrl":"https://avatars.githubusercontent.com/u/223053814?v=4","ownerCreatedAt":"2025-07-27T03:07:08Z","license":"MIT"},"icon":{"url":"https://signalaf.com/icon.svg?5c3eb2148ce70585","source":"site"},"presence":{"stars":6,"forks":1,"downloadsWeek":null,"license":"MIT","lastPushAt":"2026-09-16T16:12:58.000Z","score":31}}}},"grade_history":[],"reviews":[]}