MCPサーバー

Contribution Exchange

com.signalaf/contribution-exchange
ビジネス・業務 公開・接続可能 MCP 2025-11-25

このMCPでできること

Discovers domain contribution profiles, retrieves policies and work signals, and evaluates proposed contributions against policy rules.

exchange_discover_domain
Exchange Discover Domain — Contribution Exchange Profile Lookup
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).
読み取り専用 外部アクセスあり 冪等
入力スキーマ
{'type': 'object', 'required': ['domain'], 'properties': {'domain': {'type': 'string', 'maxLength': 253, 'minLength': 3, 'description': "Domain name or HTTPS URL to check (e.g. 'signalaf.com' or 'https://signalaf.com'). Normalized to hostname."}}, 'additionalProperties': False}
exchange_get_attempt
Exchange Get Attempt — Signal Attempt Detail
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.
読み取り専用 冪等
入力スキーマ
{'type': 'object', 'required': ['signal_id', 'attempt_id'], 'properties': {'signal_id': {'type': 'string', 'maxLength': 200, 'minLength': 1, 'description': 'Signal ID.'}, 'attempt_id': {'type': 'string', 'maxLength': 200, 'minLength': 1, 'description': 'Attempt ID.'}}, 'additionalProperties': False}
exchange_get_policy
Exchange Get Policy — Domain Exchange Policy
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.
読み取り専用 外部アクセスあり 冪等
入力スキーマ
{'type': 'object', 'required': ['domain'], 'properties': {'domain': {'type': 'string', 'maxLength': 253, 'minLength': 3, 'description': 'Domain name to fetch policy for.'}}, 'additionalProperties': False}
exchange_get_signal
Exchange Get Signal — Signal Detail by 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.
読み取り専用 外部アクセスあり 冪等
入力スキーマ
{'type': 'object', 'required': ['signal_id'], 'properties': {'signal_id': {'type': 'string', 'maxLength': 200, 'minLength': 1, 'description': 'Signal ID.'}}, 'additionalProperties': False}
exchange_list_signals
Exchange List Signals — Domain-Published Work Signals
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.
読み取り専用 外部アクセスあり 冪等
入力スキーマ
{'type': 'object', 'properties': {'type': {'enum': ['problem', 'request', 'challenge', 'bounty', 'verification', 'discovery', 'experiment'], 'type': 'string', 'description': 'Filter by signal type.'}, 'label': {'type': 'string', 'description': 'Filter by label.'}, 'limit': {'type': 'integer', 'default': 50, 'maximum': 100, 'minimum': 1, 'description': 'Maximum signals to return (1-100, default 50).'}, 'cursor': {'type': 'string', 'description': 'Pagination cursor from a previous response.'}, 'domain': {'type': 'string', 'description': 'Filter by publisher domain.'}, 'status': {'enum': ['published', 'paused', 'closed', 'expired', 'withdrawn'], 'type': 'string', 'description': 'Filter by signal status.'}, 'expires_before': {'type': 'string', 'description': 'ISO 8601 timestamp — only signals expiring before this.'}, 'published_after': {'type': 'string', 'description': 'ISO 8601 timestamp — only signals published after this.'}, 'verification_mode': {'enum': ['deterministic', 'hybrid', 'manual'], 'type': 'string', 'description': 'Filter by verification mode.'}, 'accepting_attempts': {'type': 'boolean', 'description': 'Only return signals currently accepting attempts.'}, 'consideration_mode': {'enum': ['fixed', 'maximum', 'negotiable'], 'type': 'string', 'description': 'Filter by consideration mode.'}}, 'additionalProperties': False}
exchange_preflight
Exchange Preflight — Advisory Proposal Policy Evaluation
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.
読み取り専用 冪等
入力スキーマ
{'type': 'object', 'required': ['domain', 'category'], 'properties': {'domain': {'type': 'string', 'maxLength': 253, 'minLength': 3, 'description': 'Target domain for the proposed contribution.'}, 'category': {'type': 'string', 'description': "Contribution category (e.g. 'technical', 'accessibility', 'documentation', 'research')."}, 'confidence': {'type': 'object', 'properties': {'basis': {'type': 'string'}, 'score': {'type': 'number', 'maximum': 1, 'minimum': 0}}, 'description': 'Confidence in the observation (score 0-1 and basis).'}, 'consideration': {'type': 'array', 'items': {'type': 'object'}, 'description': 'Requested consideration (cash, royalty, reciprocal_access, attribution, referral, other). Advertised consideration is NOT binding until accepted through Commitment.'}, 'required_authorization': {'type': 'object', 'properties': {'other': {'type': 'array', 'items': {'type': 'string'}}, 'deploy': {'type': 'boolean'}, 'private_data': {'type': 'boolean'}, 'sandbox_test': {'type': 'boolean'}, 'inspect_public': {'type': 'boolean'}, 'repository_read': {'type': 'boolean'}, 'repository_write': {'type': 'boolean'}, 'credential_access': {'type': 'boolean'}, 'production_modify': {'type': 'boolean'}, 'penetration_testing': {'type': 'boolean'}}, 'description': 'Authority requested (inspect_public, sandbox_test, repository_write, private_data, credential_access, production_modify, deploy, penetration_testing).'}}, 'additionalProperties': False}
追加
exchange_get_attempt
2026年9月17日12:37
追加
exchange_get_signal
2026年9月17日12:37
追加
exchange_list_signals
2026年9月17日12:37
追加
exchange_preflight
2026年9月17日12:37
追加
exchange_get_policy
2026年9月17日12:37
追加
exchange_discover_domain
2026年9月17日12:37