MCP 서버

FreshProof

io.github.ricksporto/freshproof
보안 공개 · 연결 가능 MCP 2025-11-25

이 MCP로 할 수 있는 일

Creates timestamped observations of public URLs with HTTP metadata and SHA-256 fingerprints, and verifies proof records and policies.

freshproof_info
Describe FreshProof, its observation semantics, current MCP price and payment network. This tool is free.
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {}}
observe_url
Buy a timestamped FreshProof observation of a public HTTP/HTTPS URL. Returns final URL, observation timestamp, age, HTTP status, SHA-256 body hash, body size, ETag, Last-Modified, fetch duration, and whether the observation came from shared cache or a fresh public-network request. Set max_age=0 when a new public-network request is required. The response body itself is not returned.
읽기 전용 외부 접근 가능
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['url'], 'properties': {'url': {'type': 'string', 'format': 'uri', 'description': 'Public HTTP or HTTPS URL to observe'}, 'max_age': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0, 'description': 'Maximum acceptable observation age in seconds. Defaults to 300. Set to 0 to force a fresh public-network request.'}}}
verify_proof
Verify an existing FreshProof Proof Receipt without making a new network request. This free tool checks deterministic receipt integrity and optionally evaluates trust policy rules. Use it when you already have a proof_id from observe_url or verify_url and want to re-check evidence without paying for another observation. The result includes valid, decision (PASS, FAIL, or UNKNOWN), per-rule checks, and the stored receipt.
읽기 전용 멱등성
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['proof_id'], 'properties': {'policy': {'type': 'object', 'properties': {'status_in': {'type': 'array', 'items': {'type': 'integer', 'maximum': 599, 'minimum': 100}, 'minItems': 1, 'description': 'Allowed HTTP status codes. The rule passes when the observed status is in this list.'}, 'max_age_seconds': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0, 'description': 'Maximum allowed age of the stored observation in seconds at verification time.'}, 'final_host_equals': {'type': 'string', 'minLength': 1, 'description': 'Expected lowercase hostname after redirects, for example example.com. Provide a hostname, not a full URL.'}, 'content_hash_equals': {'type': 'string', 'pattern': '^sha256:[a-f0-9]{64}$', 'description': 'Expected SHA-256 response-body fingerprint, including the sha256: prefix. Passes only on exact equality.'}, 'original_host_equals': {'type': 'string', 'minLength': 1, 'description': 'Expected lowercase hostname from the originally requested URL. Provide a hostname, not a full URL.'}, 'changed_since_content_hash': {'type': 'string', 'pattern': '^sha256:[a-f0-9]{64}$', 'description': 'Prior SHA-256 response-body fingerprint. Passes when the current proof has a different content hash.'}, 'require_same_origin_redirect': {'type': 'boolean', 'description': 'When true, fails if the final URL origin differs from the original URL origin after redirects.'}}, 'description': 'Optional declarative trust policy. All supplied rules must pass for decision PASS; any failed rule yields FAIL. UNKNOWN is reserved for cases where FreshProof cannot make a reliable policy decision.', 'additionalProperties': False}, 'proof_id': {'type': 'string', 'pattern': '^fp1_[a-f0-9]{64}$', 'description': 'FreshProof proof identifier returned by observe_url or verify_url.'}}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['proof_id', 'valid', 'decision', 'checks', 'receipt'], 'properties': {'valid': {'type': 'boolean', 'description': 'True when the stored receipt passes deterministic integrity verification.'}, 'checks': {'type': 'array', 'items': {'type': 'object', 'required': ['rule', 'pass', 'actual', 'expected'], 'properties': {'pass': {'type': 'boolean', 'description': 'Whether this individual rule passed.'}, 'rule': {'type': 'string', 'description': 'Policy rule that was evaluated.'}, 'actual': {'description': 'Observed value used by the rule.'}, 'expected': {'description': 'Expected value or condition used by the rule.'}}, 'additionalProperties': False}}, 'receipt': {'type': 'object', 'required': ['proof_id', 'receipt_hash', 'payload'], 'properties': {'payload': {'type': 'object', 'required': ['version', 'observation_id', 'normalized_url', 'original_url', 'final_url', 'observed_at', 'method', 'status', 'content_hash', 'content_length', 'etag', 'last_modified', 'fetch_duration_ms'], 'properties': {'etag': {'type': ['string', 'null']}, 'method': {'type': 'string', 'const': 'GET'}, 'status': {'type': 'integer', 'maximum': 599, 'minimum': 100}, 'version': {'type': 'string', 'const': 'freshproof-receipt-v1'}, 'final_url': {'type': 'string', 'format': 'uri'}, 'observed_at': {'type': 'string', 'description': 'ISO-8601 timestamp of the observation.'}, 'content_hash': {'type': 'string', 'pattern': '^sha256:[a-f0-9]{64}$'}, 'original_url': {'type': 'string', 'format': 'uri'}, 'last_modified': {'type': ['string', 'null']}, 'content_length': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}, 'normalized_url': {'type': 'string', 'format': 'uri'}, 'observation_id': {'type': 'string'}, 'fetch_duration_ms': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}}, 'additionalProperties': False}, 'proof_id': {'type': 'string', 'pattern': '^fp1_[a-f0-9]{64}$', 'description': 'FreshProof proof identifier returned by observe_url or verify_url.'}, 'receipt_hash': {'type': 'string', 'pattern': '^sha256:[a-f0-9]{64}$', 'description': 'SHA-256 content address of the canonical Proof Receipt payload.'}}, 'additionalProperties': False}, 'decision': {'enum': ['PASS', 'FAIL', 'UNKNOWN'], 'type': 'string', 'description': 'Overall policy decision. PASS means every supplied rule passed; FAIL means at least one supplied rule failed; UNKNOWN means a reliable decision could not be made.'}, 'proof_id': {'type': 'string', 'pattern': '^fp1_[a-f0-9]{64}$', 'description': 'FreshProof proof identifier returned by observe_url or verify_url.'}}, 'additionalProperties': False}
verify_url
Verify what is observable at a public URL before an agent trusts, pays, or acts. This paid tool combines observe_url and verify_proof in one call: it buys an observation, creates or returns a Proof Receipt, and evaluates the supplied trust policy. Set max_age=0 when current public-network evidence is required. The result contains both observation evidence and verification with decision PASS, FAIL, or UNKNOWN.
읽기 전용 외부 접근 가능
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['url', 'policy'], 'properties': {'url': {'type': 'string', 'format': 'uri', 'description': 'Public HTTP or HTTPS URL to observe and verify.'}, 'policy': {'type': 'object', 'properties': {'status_in': {'type': 'array', 'items': {'type': 'integer', 'maximum': 599, 'minimum': 100}, 'minItems': 1, 'description': 'Allowed HTTP status codes. The rule passes when the observed status is in this list.'}, 'max_age_seconds': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0, 'description': 'Maximum allowed age of the stored observation in seconds at verification time.'}, 'final_host_equals': {'type': 'string', 'minLength': 1, 'description': 'Expected lowercase hostname after redirects, for example example.com. Provide a hostname, not a full URL.'}, 'content_hash_equals': {'type': 'string', 'pattern': '^sha256:[a-f0-9]{64}$', 'description': 'Expected SHA-256 response-body fingerprint, including the sha256: prefix. Passes only on exact equality.'}, 'original_host_equals': {'type': 'string', 'minLength': 1, 'description': 'Expected lowercase hostname from the originally requested URL. Provide a hostname, not a full URL.'}, 'changed_since_content_hash': {'type': 'string', 'pattern': '^sha256:[a-f0-9]{64}$', 'description': 'Prior SHA-256 response-body fingerprint. Passes when the current proof has a different content hash.'}, 'require_same_origin_redirect': {'type': 'boolean', 'description': 'When true, fails if the final URL origin differs from the original URL origin after redirects.'}}, 'description': 'Declarative trust policy evaluated against the resulting Proof Receipt.', 'additionalProperties': False}, 'max_age': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0, 'description': 'Maximum acceptable observation age in seconds. Defaults to 300. Set to 0 to require a fresh public-network request before policy evaluation.'}}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['observation', 'verification'], 'properties': {'observation': {'type': 'object', 'required': ['url', 'final_url', 'observed_at', 'age_seconds', 'status', 'content_hash', 'content_length', 'etag', 'last_modified', 'fetch_duration_ms', 'source', 'proof_id', 'receipt_hash'], 'properties': {'url': {'type': 'string', 'format': 'uri'}, 'etag': {'type': ['string', 'null']}, 'source': {'enum': ['shared_cache', 'fresh_fetch'], 'type': 'string', 'description': 'fresh_fetch means FreshProof made a new public-network request; shared_cache means a stored observation satisfied max_age.'}, 'status': {'type': 'integer', 'maximum': 599, 'minimum': 100}, 'proof_id': {'type': 'string', 'pattern': '^fp1_[a-f0-9]{64}$', 'description': 'FreshProof proof identifier returned by observe_url or verify_url.'}, 'final_url': {'type': 'string', 'format': 'uri'}, 'age_seconds': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}, 'observed_at': {'type': 'string', 'description': 'ISO-8601 timestamp of the observation.'}, 'content_hash': {'type': 'string', 'pattern': '^sha256:[a-f0-9]{64}$'}, 'receipt_hash': {'type': 'string', 'pattern': '^sha256:[a-f0-9]{64}$'}, 'last_modified': {'type': ['string', 'null']}, 'content_length': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}, 'fetch_duration_ms': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}}, 'additionalProperties': False}, 'verification': {'type': 'object', 'required': ['proof_id', 'valid', 'decision', 'checks', 'receipt'], 'properties': {'valid': {'type': 'boolean', 'description': 'True when the stored receipt passes deterministic integrity verification.'}, 'checks': {'type': 'array', 'items': {'type': 'object', 'required': ['rule', 'pass', 'actual', 'expected'], 'properties': {'pass': {'type': 'boolean', 'description': 'Whether this individual rule passed.'}, 'rule': {'type': 'string', 'description': 'Policy rule that was evaluated.'}, 'actual': {'description': 'Observed value used by the rule.'}, 'expected': {'description': 'Expected value or condition used by the rule.'}}, 'additionalProperties': False}}, 'receipt': {'type': 'object', 'required': ['proof_id', 'receipt_hash', 'payload'], 'properties': {'payload': {'type': 'object', 'required': ['version', 'observation_id', 'normalized_url', 'original_url', 'final_url', 'observed_at', 'method', 'status', 'content_hash', 'content_length', 'etag', 'last_modified', 'fetch_duration_ms'], 'properties': {'etag': {'type': ['string', 'null']}, 'method': {'type': 'string', 'const': 'GET'}, 'status': {'type': 'integer', 'maximum': 599, 'minimum': 100}, 'version': {'type': 'string', 'const': 'freshproof-receipt-v1'}, 'final_url': {'type': 'string', 'format': 'uri'}, 'observed_at': {'type': 'string', 'description': 'ISO-8601 timestamp of the observation.'}, 'content_hash': {'type': 'string', 'pattern': '^sha256:[a-f0-9]{64}$'}, 'original_url': {'type': 'string', 'format': 'uri'}, 'last_modified': {'type': ['string', 'null']}, 'content_length': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}, 'normalized_url': {'type': 'string', 'format': 'uri'}, 'observation_id': {'type': 'string'}, 'fetch_duration_ms': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}}, 'additionalProperties': False}, 'proof_id': {'type': 'string', 'pattern': '^fp1_[a-f0-9]{64}$', 'description': 'FreshProof proof identifier returned by observe_url or verify_url.'}, 'receipt_hash': {'type': 'string', 'pattern': '^sha256:[a-f0-9]{64}$', 'description': 'SHA-256 content address of the canonical Proof Receipt payload.'}}, 'additionalProperties': False}, 'decision': {'enum': ['PASS', 'FAIL', 'UNKNOWN'], 'type': 'string', 'description': 'Overall policy decision. PASS means every supplied rule passed; FAIL means at least one supplied rule failed; UNKNOWN means a reliable decision could not be made.'}, 'proof_id': {'type': 'string', 'pattern': '^fp1_[a-f0-9]{64}$', 'description': 'FreshProof proof identifier returned by observe_url or verify_url.'}}, 'additionalProperties': False}}, 'additionalProperties': False}
변경됨
verify_url
2026년 10월 2일 2:41 AM
변경됨
verify_proof
2026년 10월 2일 2:41 AM
추가됨
verify_url
2026년 9월 30일 2:41 AM
추가됨
verify_proof
2026년 9월 30일 2:41 AM
추가됨
observe_url
2026년 9월 24일 2:40 AM
추가됨
freshproof_info
2026년 9월 24일 2:40 AM