Contribution Exchange

Contribution Exchange MCP: domain discovery, policies, preflight, proposals, and signals.

¿Debería usar esto?

Calidad y seguridad

A
Calidad de la descripción
100%
Integridad del esquema
98%
Calidad de los nombres
80%
Riesgo de envenenamiento
100%
Coincidencia de permisos
100%
Cumplimiento del protocolo
100%

Basado en el análisis automatizado de las definiciones de herramientas y el cumplimiento del protocolo.

Costo de contexto

~1,421Tokens (definiciones de herramientas)
~1.7 KBTamaño de respuesta típico
Impacto moderado en la atención (1.11% del contexto de 128k)

Este es el número aproximado de tokens que se consumen cada vez que las herramientas del servidor se cargan en el contexto de un modelo. Los recuentos más altos reducen la atención disponible para otras tareas.

Instalar

Instalación con un clic

Agrega esto a tu archivo `claude_desktop_config.json`:

{
  "mcpServers": {
    "contribution-exchange": {
      "url": "https://signalaf.com/api/exchange/mcp"
    }
  }
}

Puntos de conexión remotos

https://signalaf.com/api/exchange/mcpstreamable-http

Qué puede hacer

Inventario de herramientas

Herramientas (6)

🟢 Solo lectura🟡 Escritura🔴 Eliminación⚪ Desconocido
🟢exchange_discover_domain(domain)

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).

Esquema de entrada

{
  "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
}
🟢exchange_get_policy(domain)

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.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "domain": {
      "type": "string",
      "minLength": 3,
      "maxLength": 253,
      "description": "Domain name to fetch policy for."
    }
  },
  "required": [
    "domain"
  ],
  "additionalProperties": false
}
🟢exchange_preflight(domain, category, consideration, required_authorization, confidence)

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.

Esquema de entrada

{
  "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
}
🟢exchange_list_signals(domain, type, status, label, verification_mode, ...)

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.

Esquema de entrada

{
  "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
}
🟢exchange_get_signal(signal_id)

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.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "signal_id": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200,
      "description": "Signal ID."
    }
  },
  "required": [
    "signal_id"
  ],
  "additionalProperties": false
}
🟢exchange_get_attempt(signal_id, attempt_id)

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.

Esquema de entrada

{
  "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
}

Comunidad

Califica este servidor

Evidencia

Observaciones recientes

verificadoversión no registrada6 herramientas
verificadoversión no registrada6 herramientas