mcp

Verifiable provenance for AI agents — ZK proofs over confidential documents, no plaintext exposure.

사용해야 할까요

품질 및 안전성

A
설명 품질
100%
스키마 완전성
98%
이름 품질
76%
오염 위험
100%
권한 일치
100%
프로토콜 준수
100%

발견 사항 (1)

  • LOWTool 'lemma_query_verified_attributes' name length outside 3-30 rangelemma_query_verified_attributes에서

도구 정의와 프로토콜 준수에 대한 자동 분석을 기반으로 합니다.

컨텍스트 비용

~2,777토큰 (도구 정의)
~5.0 KB일반적인 응답 크기
상당한 주의 영향 (128k 컨텍스트의 2.17%)

이는 서버의 도구가 모델의 컨텍스트에 로드될 때마다 소비되는 대략적인 토큰 수입니다. 수치가 높을수록 다른 작업에 사용할 수 있는 주의가 줄어듭니다.

설치

원클릭 설치

`claude_desktop_config.json` 파일에 다음을 추가하세요:

{
  "mcpServers": {
    "mcp": {
      "command": "npx",
      "args": [
        "@lemmaoracle/mcp"
      ]
    }
  }
}

실행 가능한 패키지

npm@lemmaoracle/mcp0.0.17stdio

원격 엔드포인트

https://mcp.lemma.workers.dev/mcpstreamable-http

할 수 있는 일

도구 목록

도구 (5)

🟢 읽기 전용🟡 쓰기🔴 삭제⚪ 알 수 없음
🟢lemma_query_verified_attributes(attributes, schemas, chainIds, limit, offset)

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",
  "properties": {
    "attributes": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "Attribute key as defined by the schema."
          },
          "operator": {
            "type": "string",
            "enum": [
              "eq",
              "neq",
              "gt",
              "gte",
              "lt",
              "lte",
              "in",
              "contains"
            ],
            "description": "Comparison operator. Defaults to eq when omitted. 'in' takes an array value; 'contains' is substring/array-element match."
          },
          "value": {
            "description": "Comparison target value. Type depends on the schema's attribute definition. For 'in', pass an array."
          }
        },
        "required": [
          "name"
        ],
        "additionalProperties": false
      },
      "description": "Attribute predicates to AND-combine."
    },
    "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)."
    },
    "limit": {
      "type": "number",
      "minimum": 1,
      "maximum": 200,
      "description": "Max results per page (1–200). Defaults to API server default (50)."
    },
    "offset": {
      "type": "number",
      "minimum": 0,
      "description": "Pagination offset. Pair with `hasMore` in the response to walk pages."
    }
  },
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}

출력 스키마

{
  "type": "object",
  "properties": {
    "results": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "docHash": {
            "type": "string",
            "description": "Document hash (commitment root)."
          },
          "schema": {
            "type": "string",
            "description": "Schema ID this document conforms to."
          },
          "issuerId": {
            "type": "string",
            "description": "Issuer DID/identifier."
          },
          "subjectId": {
            "type": "string",
            "description": "Subject DID/identifier."
          },
          "chainId": {
            "type": "number",
            "description": "EVM chain ID, if anchored on-chain."
          },
          "attributes": {
            "type": "object",
            "additionalProperties": {},
            "description": "Attribute key/value pairs as defined by the schema."
          },
          "isVerified": {
            "type": "boolean",
            "description": "MCP-layer flag — true when proof.status is 'verified' or 'onchain-verified'. Prefer this over raw status for boolean checks."
          },
          "proof": {
            "type": "object",
            "properties": {
              "status": {
                "type": "string"
              },
              "circuitId": {
                "type": "string"
              },
              "chainId": {
                "type": "number"
              }
            },
            "additionalProperties": false,
            "description": "Proof envelope (status, circuit, chain)."
          },
          "disclosure": {
            "description": "Selective-disclosure payload, if present."
          }
        },
        "required": [
          "docHash",
          "schema",
          "issuerId",
          "subjectId",
          "attributes",
          "isVerified"
        ],
        "additionalProperties": false
      },
      "description": "Result set; each item has been MCP-enriched with `isVerified`."
    },
    "hasMore": {
      "type": "boolean",
      "description": "True when more results exist beyond this page; pair with `offset` to walk pages."
    }
  },
  "required": [
    "results",
    "hasMore"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢lemma_get_schema(id)

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",
  "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."
    }
  },
  "required": [
    "id"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}

출력 스키마

{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "description": "Schema ID, echoing the request."
    },
    "description": {
      "type": "string",
      "description": "Human-readable description of the schema."
    },
    "normalize": {
      "type": "object",
      "properties": {
        "artifact": {
          "type": "object",
          "properties": {
            "type": {
              "type": "string",
              "enum": [
                "ipfs",
                "https"
              ],
              "description": "URI scheme for fetching the WASM artifact."
            },
            "wasm": {
              "type": "string",
              "description": "URL or CID of the WASM module."
            },
            "js": {
              "type": "string",
              "description": "URL or CID of the wasm-bindgen JS shim required for instantiation."
            }
          },
          "required": [
            "type",
            "wasm",
            "js"
          ],
          "additionalProperties": false
        },
        "hash": {
          "type": "string",
          "description": "Content hash of the WASM module (verifies integrity)."
        },
        "abi": {
          "type": "object",
          "properties": {
            "raw": {
              "type": "object",
              "additionalProperties": {
                "type": "string"
              }
            },
            "norm": {
              "type": "object",
              "additionalProperties": {
                "type": "string"
              }
            }
          },
          "required": [
            "raw",
            "norm"
          ],
          "additionalProperties": false,
          "description": "Optional ABI mapping between raw input keys and normalized attribute names."
        }
      },
      "required": [
        "artifact",
        "hash"
      ],
      "additionalProperties": false,
      "description": "Normalize artifact — WASM that maps raw documents to canonical form."
    }
  },
  "required": [
    "id",
    "normalize"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢lemma_get_circuit(circuitId)

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",
  "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`."
    }
  },
  "required": [
    "circuitId"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}

출력 스키마

{
  "type": "object",
  "properties": {
    "circuitId": {
      "type": "string",
      "description": "Circuit ID, echoing the request."
    },
    "schema": {
      "type": "string",
      "description": "Schema ID this circuit is bound to."
    },
    "description": {
      "type": "string"
    },
    "inputs": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Ordered names of the circuit's public/private inputs."
    },
    "verifiers": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "enum": [
              "onchain",
              "offchain"
            ],
            "description": "Verifier location."
          },
          "address": {
            "type": "string",
            "description": "Verifier contract address (onchain only)."
          },
          "chainId": {
            "type": "number",
            "description": "EVM chain ID (onchain only)."
          },
          "alg": {
            "type": "string",
            "description": "Proof algorithm identifier (e.g. 'groth16-bn254-snarkjs')."
          }
        },
        "required": [
          "type"
        ],
        "additionalProperties": false
      },
      "description": "Available verifier configurations for this circuit."
    },
    "artifact": {
      "type": "object",
      "properties": {
        "location": {
          "type": "object",
          "properties": {
            "type": {
              "type": "string",
              "enum": [
                "ipfs",
                "https"
              ]
            },
            "wasm": {
              "type": "string",
              "description": "Circuit WASM artifact URL/CID."
            },
            "zkey": {
              "type": "string",
              "description": "Circuit proving key URL/CID."
            }
          },
          "required": [
            "type",
            "wasm",
            "zkey"
          ],
          "additionalProperties": false
        }
      },
      "required": [
        "location"
      ],
      "additionalProperties": false,
      "description": "Circuit artifact location (WASM + zkey)."
    }
  },
  "required": [
    "circuitId",
    "schema"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢lemma_get_generator(generatorId)

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",
  "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`."
    }
  },
  "required": [
    "generatorId"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}

출력 스키마

{
  "type": "object",
  "properties": {
    "generatorId": {
      "type": "string",
      "description": "Generator ID, echoing the request."
    },
    "schema": {
      "type": "string",
      "description": "Schema ID this generator is bound to (1:1 binding)."
    },
    "description": {
      "type": "string"
    },
    "language": {
      "type": "string",
      "description": "Implementation language (e.g. 'rust', 'typescript')."
    },
    "source": {
      "type": "object",
      "properties": {
        "type": {
          "type": "string",
          "const": "url"
        },
        "uri": {
          "type": "string",
          "description": "Source URL (git, IPFS, etc.)."
        }
      },
      "required": [
        "type",
        "uri"
      ],
      "additionalProperties": false,
      "description": "Reference to the generator's source code."
    },
    "inputsSpec": {
      "type": "object",
      "additionalProperties": {},
      "description": "Specification of fields the issuer must populate."
    },
    "outputsSpec": {
      "type": "object",
      "additionalProperties": {},
      "description": "Specification of fields the generator produces."
    }
  },
  "required": [
    "generatorId",
    "schema"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢lemma_get_proof_status(verificationId)

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",
  "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)."
    }
  },
  "required": [
    "verificationId"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}

출력 스키마

{
  "type": "object",
  "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."
    },
    "circuitId": {
      "type": "string",
      "description": "Circuit ID this proof was generated against."
    },
    "chainId": {
      "type": "number",
      "description": "EVM chain ID where the proof was verified, if applicable."
    },
    "docHash": {
      "type": "string",
      "description": "Document hash this proof attests to."
    }
  },
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}

커뮤니티

이 서버 평가하기

증거

최근 관측

검증됨버전이 기록되지 않음도구 5개
검증됨버전이 기록되지 않음도구 5개