Server definition
- Hash
- sha256:8af943bfb7bfedfe43d134cbb2177acfbf9a9328a51bb89e197224317f227734
- What it is
- What a remote MCP server returned when asked what it offers: 6 tools
The blob, as servednamed by its sha256
{
"instructions": "Contribution Exchange MCP — discover and act on Contribution Exchange opportunities. Read-only tools: exchange_discover_domain (check if a domain has an Exchange profile), exchange_get_policy (fetch domain policy), exchange_preflight (advisory policy evaluation — no state change), exchange_list_signals (domain-published work signals), exchange_get_signal, exchange_get_attempt. Mutation tools (require auth): exchange_propose (unsolicited proposal — creates a non-binding proposal, NOT a Commitment), exchange_create_attempt, exchange_submit_attempt, exchange_create_proposal_from_attempt. IMPORTANT: No Exchange tool creates a Commitment, authorization, or payment obligation. Signals and proposals are invitational, not binding. Bilateral terms-hash acceptance is required for Commitment formation.",
"tools": [
{
"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).",
"inputSchema": {
"additionalProperties": false,
"properties": {
"domain": {
"description": "Domain name or HTTPS URL to check (e.g. 'signalaf.com' or 'https://signalaf.com'). Normalized to hostname.",
"maxLength": 253,
"minLength": 3,
"type": "string"
}
},
"required": [
"domain"
],
"type": "object"
},
"name": "exchange_discover_domain",
"outputSchema": null
},
{
"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.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"attempt_id": {
"description": "Attempt ID.",
"maxLength": 200,
"minLength": 1,
"type": "string"
},
"signal_id": {
"description": "Signal ID.",
"maxLength": 200,
"minLength": 1,
"type": "string"
}
},
"required": [
"signal_id",
"attempt_id"
],
"type": "object"
},
"name": "exchange_get_attempt",
"outputSchema": null
},
{
"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.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"domain": {
"description": "Domain name to fetch policy for.",
"maxLength": 253,
"minLength": 3,
"type": "string"
}
},
"required": [
"domain"
],
"type": "object"
},
"name": "exchange_get_policy",
"outputSchema": null
},
{
"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.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"signal_id": {
"description": "Signal ID.",
"maxLength": 200,
"minLength": 1,
"type": "string"
}
},
"required": [
"signal_id"
],
"type": "object"
},
"name": "exchange_get_signal",
"outputSchema": null
},
{
"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.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"accepting_attempts": {
"description": "Only return signals currently accepting attempts.",
"type": "boolean"
},
"consideration_mode": {
"description": "Filter by consideration mode.",
"enum": [
"fixed",
"maximum",
"negotiable"
],
"type": "string"
},
"cursor": {
"description": "Pagination cursor from a previous response.",
"type": "string"
},
"domain": {
"description": "Filter by publisher domain.",
"type": "string"
},
"expires_before": {
"description": "ISO 8601 timestamp — only signals expiring before this.",
"type": "string"
},
"label": {
"description": "Filter by label.",
"type": "string"
},
"limit": {
"default": 50,
"description": "Maximum signals to return (1-100, default 50).",
"maximum": 100,
"minimum": 1,
"type": "integer"
},
"published_after": {
"description": "ISO 8601 timestamp — only signals published after this.",
"type": "string"
},
"status": {
"description": "Filter by signal status.",
"enum": [
"published",
"paused",
"closed",
"expired",
"withdrawn"
],
"type": "string"
},
"type": {
"description": "Filter by signal type.",
"enum": [
"problem",
"request",
"challenge",
"bounty",
"verification",
"discovery",
"experiment"
],
"type": "string"
},
"verification_mode": {
"description": "Filter by verification mode.",
"enum": [
"deterministic",
"hybrid",
"manual"
],
"type": "string"
}
},
"type": "object"
},
"name": "exchange_list_signals",
"outputSchema": null
},
{
"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.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"category": {
"description": "Contribution category (e.g. 'technical', 'accessibility', 'documentation', 'research').",
"type": "string"
},
"confidence": {
"description": "Confidence in the observation (score 0-1 and basis).",
"properties": {
"basis": {
"type": "string"
},
"score": {
"maximum": 1,
"minimum": 0,
"type": "number"
}
},
"type": "object"
},
"consideration": {
"description": "Requested consideration (cash, royalty, reciprocal_access, attribution, referral, other). Advertised consideration is NOT binding until accepted through Commitment.",
"items": {
"type": "object"
},
"type": "array"
},
"domain": {
"description": "Target domain for the proposed contribution.",
"maxLength": 253,
"minLength": 3,
"type": "string"
},
"required_authorization": {
"description": "Authority requested (inspect_public, sandbox_test, repository_write, private_data, credential_access, production_modify, deploy, penetration_testing).",
"properties": {
"credential_access": {
"type": "boolean"
},
"deploy": {
"type": "boolean"
},
"inspect_public": {
"type": "boolean"
},
"other": {
"items": {
"type": "string"
},
"type": "array"
},
"penetration_testing": {
"type": "boolean"
},
"private_data": {
"type": "boolean"
},
"production_modify": {
"type": "boolean"
},
"repository_read": {
"type": "boolean"
},
"repository_write": {
"type": "boolean"
},
"sandbox_test": {
"type": "boolean"
}
},
"type": "object"
}
},
"required": [
"domain",
"category"
],
"type": "object"
},
"name": "exchange_preflight",
"outputSchema": null
}
]
}Verify it yourself
curl -s https://api.teppi.xyz/v1/evidence/sha256:8af943bfb7bfedfe43d134cbb2177acfbf9a9328a51bb89e197224317f227734 | sha256sum