Search / com.signalaf/contribution-exchange
Contribution Exchange
R0· no sign-inContribution Exchange MCP: domain discovery, policies, preflight, proposals, and signals.
v1.0.0 · active · repository · website · descriptor JSON · versions
Search / com.signalaf/contribution-exchange
R0· no sign-inContribution Exchange MCP: domain discovery, policies, preflight, proposals, and signals.
v1.0.0 · active · repository · website · descriptor JSON · versions
{
"mcpServers": {
"contribution-exchange": {
"type": "http",
"url": "https://signalaf.com/api/exchange/mcp"
}
}
}claude mcp add --transport http contribution-exchange https://signalaf.com/api/exchange/mcp[mcp_servers.contribution-exchange]
url = "https://signalaf.com/api/exchange/mcp"
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"contribution-exchange": {
"type": "remote",
"url": "https://signalaf.com/api/exchange/mcp",
"enabled": true
}
}
}{
"mcpServers": {
"contribution-exchange": {
"type": "http",
"url": "https://signalaf.com/api/exchange/mcp"
}
},
"deeplink": "cursor://anysphere.cursor-deeplink/mcp/install?name=contribution-exchange&config=eyJ0eXBlIjoiaHR0cCIsInVybCI6Imh0dHBzOi8vc2lnbmFsYWYuY29tL2FwaS9leGNoYW5nZS9tY3AifQ%3D%3D"
}{
"servers": {
"contribution-exchange": {
"type": "http",
"url": "https://signalaf.com/api/exchange/mcp"
}
}
}{
"mcpServers": {
"contribution-exchange": {
"httpUrl": "https://signalaf.com/api/exchange/mcp"
}
}
}extensions:
"contribution-exchange":
enabled: true
name: "contribution-exchange"
type: streamable_http
uri: "https://signalaf.com/api/exchange/mcp"
timeout: 300
protocol.modernnewest supported version is 2025-06-18; 2026-07-28 not supported, older versions are deprecated until 2027-07-28protocol.statelessonly applies to 2026-07-28 serversprotocol.transportstreamable HTTPprotocol.list_ttlonly applies to 2026-07-28 serversauth.prm, auth.as_metadata, auth.cimdno remote uses OAuthauth.secret_in_urlno templated URLtools.descriptionsevery tool has a descriptiontools.description_lengthdescriptions are concisetools.schemasevery tool has an object input schematools.annotations6 of 6 tools declare readOnlyHint or destructiveHinttools.directory_hintsevery tool declares readOnlyHint, destructiveHint, idempotentHint and openWorldHinttools.token_costabout 1,600 tokens to load every tooltools.api_dumptools are not a one-to-one API dumpstability.changesno tool changes in 30 daysstability.rug_pullno tool changed its meaning under the same namedeps.known_vulns, deps.mcp_sdk_version, deps.resolvableno npm or PyPI packageNo tool definition changes recorded. A server's first observation is its baseline; later probes record what changes.
Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed. How it is computed.
+repository +dns-namespace +website +reachable +uptime-98% ~updated-55d-ago
Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed. How it is computed.
| remote | auth | reachable | uptime 30d | p50 | protocol | last ok |
|---|---|---|---|---|---|---|
https://signalaf.com/api/exchange/mcp streamable-http | none | yes | 98% | 776 ms | 2025-06-18 | 2026-10-20 |
exchange_discover_domainread-only | 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). |
exchange_get_attemptread-only | 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. |
exchange_get_policyread-only | 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. |
exchange_get_signalread-only | 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. |
exchange_list_signalsread-only | 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. |
exchange_preflightread-only | 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. |
Schemas: list_tools.
1 other active names share this repository: com.signalaf/sigrank
{
"name": "com.signalaf/contribution-exchange",
"_meta": {
"io.modelcontextprotocol.registry/publisher-provided": {
"tools": [
"exchange_discover_domain",
"exchange_get_policy",
"exchange_preflight",
"exchange_propose",
"exchange_list_signals",
"exchange_get_signal",
"exchange_get_attempt",
"exchange_create_attempt",
"exchange_submit_attempt",
"exchange_create_proposal_from_attempt"
],
"invariants": [
"No MCP tool creates a Commitment",
"No MCP tool grants execution authorization",
"No MCP tool creates a payment obligation",
"Proposal is non-binding; Commitments require separate bilateral acceptance",
"Signals are before proposals and commitments; they do not bypass bilateral Commitment formation"
],
"tool_count": 10,
"agent_guide": "https://signalaf.com/agents.md",
"server_card": "https://signalaf.com/.well-known/exchange-mcp.json",
"authentication": {
"note": "Read-only tools (6) are always visible. Mutation tools (4) require scope headers.",
"scopes": {
"exchange:read": "Always granted. Covers all read-only tools.",
"exchange:attempt": "Granted when x-exchange-actor-id header is present. Covers exchange_create_attempt and exchange_submit_attempt.",
"exchange:propose": "Granted when x-exchange-agent-key or x-exchange-proposer-key header is present. Covers exchange_propose and exchange_create_proposal_from_attempt."
},
"required": false
},
"exchange_profile": "https://signalaf.com/.well-known/exchange.json",
"commitment_schema": "https://signalaf.com/exchange.schema.json",
"protocol_versions": [
"2025-06-18",
"2025-03-26"
]
}
},
"title": "Contribution Exchange",
"$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
"remotes": [
{
"url": "https://signalaf.com/api/exchange/mcp",
"type": "streamable-http"
}
],
"version": "1.0.0",
"repository": {
"url": "https://github.com/SunrisesIllNeverSee/sigrank-app",
"source": "github"
},
"websiteUrl": "https://signalaf.com/exchange",
"description": "Contribution Exchange MCP: domain discovery, policies, preflight, proposals, and signals."
}