Contribution Exchange
Measured conclusion: Alive, not deep-tested. L2 outcome: not_attempted.
Contribution Exchange MCP: domain discovery, policies, preflight, proposals, and signals.
| Author | com.signalaf |
|---|---|
| Access | remote |
| Publisher key required | No |
| Measured state | Alive, not deep-tested |
| L1 liveness | alive |
| L1 latency | 2133 ms |
| Last measured | 2026-10-26 |
Add to your agent
Copy this into your MCP client config:
{
"mcpServers": {
"Contribution Exchange": {
"url": "https://signalaf.com/api/exchange/mcp",
"transport": "streamable-http"
}
}
}
Measured tools (6)
exchange_discover_domainread-onlyDetermine 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).
Parameters:
domain(required) — string — Domain name or HTTPS URL to check (e.g. 'signalaf.com' or 'https://signalaf.com'). Normalized to hostname.
Hints: read-only yes · destructive no · idempotent yes · open-world yes
exchange_get_policyread-onlyFetch 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.
Parameters:
domain(required) — string — Domain name to fetch policy for.
Hints: read-only yes · destructive no · idempotent yes · open-world yes
exchange_preflightread-onlyEvaluate 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.
Parameters:
domain(required) — string — Target domain for the proposed contribution.category(required) — string — Contribution category (e.g. 'technical', 'accessibility', 'documentation', 'research').confidence— object — Confidence in the observation (score 0-1 and basis).consideration— array — Requested consideration (cash, royalty, reciprocal_access, attribution, referral, other). Advertised consideration is NOT binding until accepted through Commitment.required_authorization— object — Authority requested (inspect_public, sandbox_test, repository_write, private_data, credential_access, production_modify, deploy, penetration_testing).
Hints: read-only yes · destructive no · idempotent yes · open-world no
exchange_list_signalsread-onlyList 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.
Parameters:
type— string — Filter by signal type.label— string — Filter by label.limit— integer — Maximum signals to return (1-100, default 50).cursor— string — Pagination cursor from a previous response.domain— string — Filter by publisher domain.status— string — Filter by signal status.expires_before— string — ISO 8601 timestamp — only signals expiring before this.published_after— string — ISO 8601 timestamp — only signals published after this.verification_mode— string — Filter by verification mode.accepting_attempts— boolean — Only return signals currently accepting attempts.consideration_mode— string — Filter by consideration mode.
Hints: read-only yes · destructive no · idempotent yes · open-world yes
exchange_get_signalread-onlyGet 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.
Parameters:
signal_id(required) — string — Signal ID.
Hints: read-only yes · destructive no · idempotent yes · open-world yes
exchange_get_attemptread-onlyGet 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.
Parameters:
signal_id(required) — string — Signal ID.attempt_id(required) — string — Attempt ID.
Hints: read-only yes · destructive no · idempotent yes · open-world no
Measured by MCPYP probing. Untested fields are omitted, never estimated. Listing is always free; MCPYP never proxies calls or stores user tokens.