MCP 서버

mcp

io.github.lemmaoracle/mcp
암호화폐 및 Web3 보안 공개 · 연결 가능 MCP 2025-11-25

이 MCP로 할 수 있는 일

Queries verified document attributes and manages zero-knowledge proof circuits, schemas, generators, and verification status without exposing plaintext documents.

lemma_get_circuit
Retrieve a zero-knowledge proof circuit by its circuitId via GET /v1/circuits/{circuitId}. A circuit defines the constraints that proofs must satisfy and binds to a single schema. Returns CircuitMeta { circuitId, schema, description?, inputs?, verifier?: { type: 'onchain'|'offchain', address?, chainId? }, artifact?: { location: { type: 'ipfs'|'https', wasm, zkey } } }. Use this before lemma_submit_proof to confirm the circuit's schema, public inputs, and verifier configuration. Circuits are immutable; new variants get new circuitIds.
읽기 전용 외부 접근 가능 멱등성
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['circuitId'], 'properties': {'circuitId': {'type': 'string', 'description': 'Circuit ID. Returned in the `proof.circuitId` field of VerifiedAttributesQueryResponseItem from lemma_query_verified_attributes, or registered via POST /v1/circuits. NOTE: this matches the OpenAPI field name `circuitId`, not a generic `id`.'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['circuitId', 'schema'], 'properties': {'inputs': {'type': 'array', 'items': {'type': 'string'}, 'description': "Ordered names of the circuit's public/private inputs."}, 'schema': {'type': 'string', 'description': 'Schema ID this circuit is bound to.'}, 'artifact': {'type': 'object', 'required': ['location'], 'properties': {'location': {'type': 'object', 'required': ['type', 'wasm', 'zkey'], 'properties': {'type': {'enum': ['ipfs', 'https'], 'type': 'string'}, 'wasm': {'type': 'string', 'description': 'Circuit WASM artifact URL/CID.'}, 'zkey': {'type': 'string', 'description': 'Circuit proving key URL/CID.'}}, 'additionalProperties': False}}, 'description': 'Circuit artifact location (WASM + zkey).', 'additionalProperties': False}, 'circuitId': {'type': 'string', 'description': 'Circuit ID, echoing the request.'}, 'verifiers': {'type': 'array', 'items': {'type': 'object', 'required': ['type'], 'properties': {'alg': {'type': 'string', 'description': "Proof algorithm identifier (e.g. 'groth16-bn254-snarkjs')."}, 'type': {'enum': ['onchain', 'offchain'], 'type': 'string', 'description': 'Verifier location.'}, 'address': {'type': 'string', 'description': 'Verifier contract address (onchain only).'}, 'chainId': {'type': 'number', 'description': 'EVM chain ID (onchain only).'}}, 'additionalProperties': False}, 'description': 'Available verifier configurations for this circuit.'}, 'description': {'type': 'string'}}, 'additionalProperties': False}
lemma_get_generator
Retrieve a Lemma document generator by generatorId via GET /v1/doc-generators/{generatorId}. A generator describes how a class of source documents is produced (e.g., what fields a 'KYC-v2' issuer must populate). Returns GeneratorMeta { generatorId, schema, description?, language?, source?: { type: 'url', uri }, inputsSpec?, outputsSpec? }. Each generator is bound to one schema. Use this when onboarding a new issuer or auditing how an existing schema is being populated.
읽기 전용 외부 접근 가능 멱등성
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['generatorId'], 'properties': {'generatorId': {'type': 'string', 'description': 'Generator ID. Each generator is bound to a single schema and describes how source documents are produced. Registered via POST /v1/doc-generators. NOTE: this matches the OpenAPI field name `generatorId`, not a generic `id`.'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['generatorId', 'schema'], 'properties': {'schema': {'type': 'string', 'description': 'Schema ID this generator is bound to (1:1 binding).'}, 'source': {'type': 'object', 'required': ['type', 'uri'], 'properties': {'uri': {'type': 'string', 'description': 'Source URL (git, IPFS, etc.).'}, 'type': {'type': 'string', 'const': 'url'}}, 'description': "Reference to the generator's source code.", 'additionalProperties': False}, 'language': {'type': 'string', 'description': "Implementation language (e.g. 'rust', 'typescript')."}, 'inputsSpec': {'type': 'object', 'description': 'Specification of fields the issuer must populate.', 'additionalProperties': {}}, 'description': {'type': 'string'}, 'generatorId': {'type': 'string', 'description': 'Generator ID, echoing the request.'}, 'outputsSpec': {'type': 'object', 'description': 'Specification of fields the generator produces.', 'additionalProperties': {}}}, 'additionalProperties': False}
lemma_get_proof_status
Get the verification status of a proof. NOTE: the v2 API does not yet expose a dedicated GET /v1/proofs/{id} endpoint, so this tool internally calls POST /v1/verified-attributes/query filtered by docHash (treating the verificationId returned from lemma_submit_proof as a docHash filter). Returns { status, circuitId, chainId, docHash } extracted from the matched item, or undefined if the verificationId is unknown. Status enum: received | verified | onchain-verified | rejected. Use the SDK's isVerified() helper (or check status === 'verified' || status === 'onchain-verified') to determine cryptographic validity.
읽기 전용 외부 접근 가능 멱등성
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['verificationId'], 'properties': {'verificationId': {'type': 'string', 'description': 'verificationId returned by lemma_submit_proof. Internally treated as a docHash filter on POST /v1/verified-attributes/query (no dedicated GET /v1/proofs/{id} endpoint in v2 API).'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'status': {'type': 'string', 'description': "Verification status enum: 'received' | 'verified' | 'onchain-verified' | 'rejected'. Use the SDK's isVerified() helper (or check status === 'verified' || status === 'onchain-verified') for cryptographic validity."}, 'chainId': {'type': 'number', 'description': 'EVM chain ID where the proof was verified, if applicable.'}, 'docHash': {'type': 'string', 'description': 'Document hash this proof attests to.'}, 'circuitId': {'type': 'string', 'description': 'Circuit ID this proof was generated against.'}}, 'additionalProperties': False}
lemma_get_schema
Retrieve a Lemma schema by its ID via GET /v1/schemas/{id}. A schema declares how documents of a given type are interpreted and normalized. Returns SchemaMeta { id, description? } with additionalProperties open — implementations commonly include a `normalize` artifact (WASM that maps raw documents to canonical form) and its content hash. Use this when you need to interpret attribute keys returned by lemma_query_verified_attributes.
읽기 전용 외부 접근 가능 멱등성
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['id'], 'properties': {'id': {'type': 'string', 'description': 'Schema ID. Returned in the `schema` field of VerifiedAttributesQueryResponseItem from lemma_query_verified_attributes, or registered via POST /v1/schemas.'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['id', 'normalize'], 'properties': {'id': {'type': 'string', 'description': 'Schema ID, echoing the request.'}, 'normalize': {'type': 'object', 'required': ['artifact', 'hash'], 'properties': {'abi': {'type': 'object', 'required': ['raw', 'norm'], 'properties': {'raw': {'type': 'object', 'additionalProperties': {'type': 'string'}}, 'norm': {'type': 'object', 'additionalProperties': {'type': 'string'}}}, 'description': 'Optional ABI mapping between raw input keys and normalized attribute names.', 'additionalProperties': False}, 'hash': {'type': 'string', 'description': 'Content hash of the WASM module (verifies integrity).'}, 'artifact': {'type': 'object', 'required': ['type', 'wasm', 'js'], 'properties': {'js': {'type': 'string', 'description': 'URL or CID of the wasm-bindgen JS shim required for instantiation.'}, 'type': {'enum': ['ipfs', 'https'], 'type': 'string', 'description': 'URI scheme for fetching the WASM artifact.'}, 'wasm': {'type': 'string', 'description': 'URL or CID of the WASM module.'}}, 'additionalProperties': False}}, 'description': 'Normalize artifact â\x80\x94 WASM that maps raw documents to canonical form.', 'additionalProperties': False}, 'description': {'type': 'string', 'description': 'Human-readable description of the schema.'}}, 'additionalProperties': False}
lemma_query_verified_attributes
Query cryptographically verified attributes from Lemma. Use this as the primary tool for finding documents whose attributes match given conditions (e.g., "subject's birthYear lt 2008"). Returns { results: Array<{ docHash, schema, issuerId, subjectId, attributes, isVerified, proof?: { status, circuitId, chainId }, disclosure? }>, hasMore }. The MCP layer enriches each item with an `isVerified` flag derived from `proof.status` (true when status is 'verified' or 'onchain-verified'). Use lemma_get_proof_status to monitor a specific proof; use lemma_get_schema to interpret the keys returned in `attributes`.
읽기 전용 외부 접근 가능 멱등성
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'limit': {'type': 'number', 'maximum': 200, 'minimum': 1, 'description': 'Max results per page (1â\x80\x93200). Defaults to API server default (50).'}, 'offset': {'type': 'number', 'minimum': 0, 'description': 'Pagination offset. Pair with `hasMore` in the response to walk pages.'}, 'schemas': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Restrict results to documents conforming to these schema IDs.'}, 'chainIds': {'type': 'array', 'items': {'type': 'number'}, 'description': 'Restrict results to attributes verified on these chain IDs (EVM).'}, 'attributes': {'type': 'array', 'items': {'type': 'object', 'required': ['name'], 'properties': {'name': {'type': 'string', 'description': 'Attribute key as defined by the schema.'}, 'value': {'description': "Comparison target value. Type depends on the schema's attribute definition. For 'in', pass an array."}, 'operator': {'enum': ['eq', 'neq', 'gt', 'gte', 'lt', 'lte', 'in', 'contains'], 'type': 'string', 'description': "Comparison operator. Defaults to eq when omitted. 'in' takes an array value; 'contains' is substring/array-element match."}}, 'additionalProperties': False}, 'description': 'Attribute predicates to AND-combine.'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['results', 'hasMore'], 'properties': {'hasMore': {'type': 'boolean', 'description': 'True when more results exist beyond this page; pair with `offset` to walk pages.'}, 'results': {'type': 'array', 'items': {'type': 'object', 'required': ['docHash', 'schema', 'issuerId', 'subjectId', 'attributes', 'isVerified'], 'properties': {'proof': {'type': 'object', 'properties': {'status': {'type': 'string'}, 'chainId': {'type': 'number'}, 'circuitId': {'type': 'string'}}, 'description': 'Proof envelope (status, circuit, chain).', 'additionalProperties': False}, 'schema': {'type': 'string', 'description': 'Schema ID this document conforms to.'}, 'chainId': {'type': 'number', 'description': 'EVM chain ID, if anchored on-chain.'}, 'docHash': {'type': 'string', 'description': 'Document hash (commitment root).'}, 'issuerId': {'type': 'string', 'description': 'Issuer DID/identifier.'}, 'subjectId': {'type': 'string', 'description': 'Subject DID/identifier.'}, 'attributes': {'type': 'object', 'description': 'Attribute key/value pairs as defined by the schema.', 'additionalProperties': {}}, 'disclosure': {'description': 'Selective-disclosure payload, if present.'}, 'isVerified': {'type': 'boolean', 'description': "MCP-layer flag â\x80\x94 true when proof.status is 'verified' or 'onchain-verified'. Prefer this over raw status for boolean checks."}}, 'additionalProperties': False}, 'description': 'Result set; each item has been MCP-enriched with `isVerified`.'}}, 'additionalProperties': False}
추가됨
lemma_get_proof_status
2026년 9월 17일 12:43 PM
추가됨
lemma_get_generator
2026년 9월 17일 12:43 PM
추가됨
lemma_get_circuit
2026년 9월 17일 12:43 PM
추가됨
lemma_get_schema
2026년 9월 17일 12:43 PM
추가됨
lemma_query_verified_attributes
2026년 9월 17일 12:43 PM