Spec Driven Development
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
제작자가 쓴 설명(영어 원문)
Validate emissions data against Open Footprint, check EU CBAM records, query verified methane data
이 세 가지는 절대 하나의 점수로 합치지 않아요. 의견, 측정, 인기는 서로 다른 것이니까요.
이 서버는 아직 쉬운 말로 된 요약을 쓰지 못했어요. 아래는 레지스트리에서 읽어 온 사실이에요.
쓰고 있는 AI 앱을 고른 다음 설정을 복사하세요.
DVERACITY_API_KEY, DVERACITY_API_URL, DVERACITY_KERI_AID, DVERACITY_KERI_PRESENTATION비밀로 표시된 값은 내 계정의 열쇠예요. 절대 다른 사람과 공유하거나 채팅에 붙여 넣지 마세요.
필요한 것
어떤 앱을 쓰세요?
위에서 앱을 고르세요. 기억해 두었다가 다음부터는 버튼에 “…에 설치”라고 표시해요.
웹, 데스크톱, 모바일의 Claude에서 쓸 수 있어요:
https://api.dveracity.com/mcpClaude Desktop → Settings → Developer → Edit Config를 열고 claude_desktop_config.json에 이 내용을 붙여 넣으세요
{
"mcpServers": {
"semantic": {
"command": "npx",
"args": [
"-y",
"@dveracity/semantic-mcp"
],
"env": {
"DVERACITY_API_KEY": "your-value",
"DVERACITY_API_URL": "your-value",
"DVERACITY_KERI_AID": "your-value",
"DVERACITY_KERI_PRESENTATION": "your-value"
}
}
}
}터미널에서 이 명령어를 실행하세요
claude mcp add --transport http semantic https://api.dveracity.com/mcpclaude mcp add semantic --env DVERACITY_API_KEY=your-value --env DVERACITY_API_URL=your-value --env DVERACITY_KERI_AID=your-value --env DVERACITY_KERI_PRESENTATION=your-value -- npx -y @dveracity/semantic-mcp실행하기 전에 빈 값을 채워 주세요.
프로젝트의 .cursor/mcp.json 또는 ~/.cursor/mcp.json에 붙여 넣으세요
{
"mcpServers": {
"semantic": {
"url": "https://api.dveracity.com/mcp"
}
}
}프로젝트의 .cursor/mcp.json 또는 ~/.cursor/mcp.json에 붙여 넣으세요
{
"mcpServers": {
"semantic": {
"command": "npx",
"args": [
"-y",
"@dveracity/semantic-mcp"
],
"env": {
"DVERACITY_API_KEY": "your-value",
"DVERACITY_API_URL": "your-value",
"DVERACITY_KERI_AID": "your-value",
"DVERACITY_KERI_PRESENTATION": "your-value"
}
}
}
}브라우저가 앱을 열지 물어본 다음, 앱이 설정을 보여 주고 확인을 요청해요. 키 값은 비워 두니 직접 입력하세요.
프로젝트의 .vscode/mcp.json에 붙여 넣으세요
{
"servers": {
"semantic": {
"type": "http",
"url": "https://api.dveracity.com/mcp"
}
}
}프로젝트의 .vscode/mcp.json에 붙여 넣으세요
{
"servers": {
"semantic": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"@dveracity/semantic-mcp"
],
"env": {
"DVERACITY_API_KEY": "your-value",
"DVERACITY_API_URL": "your-value",
"DVERACITY_KERI_AID": "your-value",
"DVERACITY_KERI_PRESENTATION": "your-value"
}
}
}
}브라우저가 앱을 열지 물어본 다음, 앱이 설정을 보여 주고 확인을 요청해요. 키 값은 비워 두니 직접 입력하세요.
ChatGPT는 인터넷에 있는 서버에만 연결할 수 있어요:
https://api.dveracity.com/mcp메뉴 이름은 요금제나 시기에 따라 조금 다를 수 있어요.
선택한 앱은 이 기기의 쿠키에만 저장돼요. 계정은 필요 없어요.
DVERACITY_API_URL envDVERACITY_KERI_AID envDVERACITY_KERI_PRESENTATION env이 설정은 제작자의 레지스트리 정보로 만들었어요. README와 다르면 README를 따르세요.
도구 이름과 설명은 서버가 2026년 11월 6일에 알려 준 그대로예요. 우리가 아니라 제작자가 쓴 글이고, 일반 텍스트로만 보여 드려요.
semantic_queryUse this when a user asks a specific question about verified oil-and-gas emissions data, for example methane emissions for a site, company or period (PPDM, OGMP 2.0). Call semantic_templates first to see what the data can answer. Do not use for general climate questions. On payme
semantic_templatesUse this when you want to see which kinds of questions the verified emissions data can answer, before calling semantic_query.
credits_balanceDeprecated: use billing_status, which also shows plan and free allowance. Removal planned for 0.9.
list_standardsUse this when you need to see which sustainability data standards and versions validate_data can check, before calling it.
validate_dataUse this when a user wants a payload checked against a standard other than Open Footprint; call list_standards first to see which are supported. For Open Footprint payloads use ofp_validate. Only masterData or referenceData; call list_standards first.
keri_identityUse this when an organisation needs to confirm which verified legal entity and agent identity dVeracity is attributing calls to. Only relevant when vLEI identity is configured.
ofp_modelsUse this when a user is building an app, database or integration on the Open Footprint standard and needs to know what the model covers. Start here before any other ofp_ tool. The response summary carries the served counts.
ofp_search_entitiesUse this when you need the Open Footprint entity for a concept such as "Scope 3 emissions", "facility" or "product footprint". Do not use for emission factors or calculations. Matches entity names, descriptions and field names; use ofp_entity for the full definition.
ofp_entityUse this when you need one entity's fields, types, keys and relationships, for example to design a table or an API payload. Pass domain when known: ambiguous names fail rather than guessing (ofp_models reports ambiguousNameCount).
ofp_sectorsUse this when a user asks which industries Open Footprint covers or whether a sector has a reference implementation. implemented means a reference implementation exists; planned or placeholder means nothing is published.
ofp_sectorUse this when you need one sector's classification, status and reference artifacts.
ofp_policiesUse this when a user asks which validation rules apply to a sector's emissions records. Do not use for regulations; use compliance_policies. inputs lists the e-ledger fields each policy reads (e.g. co2e_kg, direction), not canonical Open Footprint names. published:false means no
compliance_policiesUse this when a user needs data checked against a regulation, for example EU CBAM, to find the approved policy to run. Do not use for Open Footprint sector rules; use ofp_policies. Returns only APPROVED policies; drafts and rejected never appear. An empty list means none publishe
compliance_policyUse this when you need the full rules, provenance and coverage of one approved regulatory policy. Returns Rego only when the source was retained; otherwise rego_unavailable: source_not_retained. A policy without Rego is not loaded into the engine; enforcement says whether its str
compliance_evaluateUse this when a user wants an import record or an annual EU CBAM declaration (Reg. (EU) 2023/956) checked against an approved policy before filing. Do not use for carbon-footprint calculations or for regulations compliance_policies does not list. Runs the policy's regulation-deri
compliance_evaluationUse this when a user wants to retrieve or audit a previous regulatory evaluation by its id. Only the caller who ran it can read it; another account's id answers not found. Requires compliance:read.
compliance_policy_registerUse this when a user asks which provisions of a regulation an evaluation actually checks and which it does not. Shows which provisions are encoded and which are not: a pass on the encoded checks is not compliance with excluded provisions. Requires the compliance:read scope.
ofp_validateUse this when a user wants an emissions or footprint record (JSON) checked against the Open Footprint model or a sector's guardrails before storing, exchanging or reporting it. Do not use for general data-quality questions without a payload. Checks structure, declared constraints
ofp_semanticsUse this when mapping fields from SAP, another ERP or a supplier feed onto Open Footprint. A high fieldCount is a generic fallback; pass maxFieldCount (10 is a good start) for codes specific enough to align on.
ofp_semantic_codeUse this when you have a source-system field and need to find where it belongs in the Open Footprint model. Codes carried by more than ten fields are generic classifications; aligning to one asserts less than it appears.
ofp_model_provenanceUse this when a user asks which version of the Open Footprint standard they are designing against.
billing_plansUse this when you need to know what each dVeracity plan includes or what the free allowance covers. Show dVeracity plans, what each plan includes and the free-tier allowance.
billing_statusUse this when a call was refused for credits or plan, to tell the user exactly what is missing. Use it after a 402 to tell your human exactly what is missing.
누구나 볼 수 있는 정보를 점검했고, 코드는 읽지 않았어요. 해당하지 않는 항목은 개수에서 뺐어요. · 2026년 11월 6일 점검
레지스트리 이름이 도메인 dveracity.com 기준으로 확인되었어요(레지스트리가 도메인 소유를 확인해요)
아직 GitHub에서 이 저장소를 읽어 오지 않았어요
아직 GitHub에서 이 저장소를 읽어 오지 않았어요
311ms 만에 응답(HTTP 200)
로그인 필요 없음
도구 설명 23개를 읽었고, AI에게 보내는 숨겨진 지시는 없었어요
레지스트리에서 이 카테고리의 활성 서버 전체와 비교했어요. 스타는 게시자가 저장소를 소유한 경우에만 세요.
해당하는 기본 점검 3개 중 3개를 통과했어요. 코드는 읽지 않았어요. 키나 토큰을 넣기 전에 서버가 어떤 권한을 요구하는지 확인하고, 꼭 필요한 권한만 있는 키를 쓰세요.
입력해야 할 값: DVERACITY_API_KEY
둘 다 가능해요. 내 컴퓨터에 설치해도 되고, 클라우드 버전에 연결해도 돼요.
GitHub 저장소는 마지막으로 – 변경됐고, 최신 버전(0.8.3)은 3일 전 레지스트리에 올라왔어요.
Claude Desktop, Claude Code, Cursor, VS Code처럼 MCP를 지원하는 앱에서 쓸 수 있어요. URL로 연결되기 때문에, 원격 MCP 서버를 지원하는 앱(예: 개발자 모드의 ChatGPT)에서도 쓸 수 있어요.
같은 카테고리에는: Spec Driven Development, Remote Desktop Commander, yontu
같은 카테고리에서 다른 제작자가 만든 서버예요. 스타 순으로 정렬했어요.
카드 보는 법:★ GitHub 스타i세 기둥: 리뷰 · 점검 · 사용 정도i업데이트 = 최신 버전을 레지스트리에 공개한 날i
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
Remote Desktop Commander: use files, terminal and processes on your own computers from any AI app.
Türkçe yazı denetimi: TDK kuralları, yapay zekâ izleri, metin türüne göre üslup.
제작자의 저장소에서 쓰인 그대로 가져왔어요. PopNx MCP가 검토하거나 보증한 내용이 아니에요. HTML, 이미지, 스크립트는 제거했어요. 링크를 누르면 이 사이트를 벗어나요.
Gives any MCP-capable AI agent (Claude Code, Cursor, custom agents) metered access to the dVeracity Semantic API — natural-language queries over the verified-emissions knowledge graph (Open Footprint / PPDM / OGMP-methane) — and VaaS standards validation.
dvrc_…): POST /api/v1/api-keys (or the dashboard)POST /api/v1/vaas/credits/purchase (or ask the agent to use billing_purchase)The machine-readable service contract lives at GET /api/v1/semantic/manifest (public, no auth).
From this directory: npm install
claude mcp add dveracity \
-e DVERACITY_API_KEY=dvrc_yourkey \ -- node /path/to/dVE/mcp/semantic-mcp/index.js
{
"mcpServers": { "dveracity": { "command": "node", "args": ["/path/to/dVE/mcp/semantic-mcp/index.js"], "env": { "DVERACITY_API_KEY": "dvrc_yourkey" } } } }
Optional: DVERACITY_API_URL overrides the API base URL (defaults to prod).
If the agent holds a dVeracity Agent Authorization credential (an ACDC issued by its Legal Entity, chained to the Legal Entity's vLEI — see elm/docs/VLEI_AGENT_TOKENS_DESIGN.md), set:
DVERACITY_KERI_AID=<the agent's AID (credential issuee)>
DVERACITY_KERI_PRESENTATION=/path/to/agent-credential.cesr # self-contained CESR
The server then authenticates the agent by verifiable presentation (challenge → exchange → 1-hour session, refreshed transparently) and attaches X-Keri-Session to every call: the API key keeps carrying billing, the KERI session adds verified identity — every metered call is attributed to the agent AID and Legal Entity LEI in dVeracity's audit trail. The keri_identity tool (free) shows the active identity. Scope denials (a credential that doesn't carry e.g. semantic:query) surface as actionable errors naming the carried scopes. Signify-based nonce signing is a planned enhancement.
| Tool | Cost | What it does |
|---|---|---|
semantic_query | credits | Natural-language question over the verified-emissions knowledge graph |
semantic_templates | free | Catalog of supported query templates |
credits_balance | free | Remaining credit balance |
list_standards | free | Standards VaaS can validate against |
validate_data | credits | Validate a payload against a supported standard |
keri_identity | free | This agent's verified vLEI identity, when KERI mode is configured |
Every tool definition carries _meta.pricing: { "unit": "credit", "amount": , "usd": }, with amount 0 for a free tool. A plan-gated tool also carries "plan_required": " " — 0 credits on compliance_policies or compliance_evaluate means "included in the VaaS plan", not "free for any account".
| Tool | Cost | What it does |
|---|---|---|
billing_plans | free | Plans, credit packs, per-credit price and the free allowance (anonymous on the hosted endpoint) |
billing_status | free | This account's plan, balance and remaining free allowance |
billing_purchase | free | One-time credit checkout: returns a checkoutUrl for a human, plus a paymentLink when the deployment configures one |
billing_subscribe | free | Membership checkout: returns checkoutUrl only; recurring charges need human approval |
Design-time tools for building an application on the Open Footprint standard. Reading the model is free; only the check at the end is metered.
| Tool | Cost | What it does |
|---|---|---|
ofp_models | free | The model domains (nine as of openfootprint b60a24e), and which database dialects have published DDL |
ofp_search_entities | free | Search the canonical entities (262 entries as of b60a24e) by name, description or field |
ofp_entity | free | One entity in full: fields, types, keys, relationships, physical table |
ofp_sectors | free | Industry sectors, each with a status |
ofp_sector | free | One sector, with its reference artifacts |
ofp_policies | free | A sector's Rego guardrails, or an explicit "none published" |
compliance_policies | paid plan | Approved regulatory compliance policies (rules extracted from a regulation, admin-approved); never drafts |
compliance_policy | paid plan | One approved policy: Rego, extracted rules, inputs, provenance |
compliance_policy_register | paid plan | The published release register: every provision, its legal reference, review status and why it is or is not enforced |
compliance_evaluate | paid plan | Execute one named approved policy against a record: four-valued decision, per-check results, missing inputs, remediation, coverage. Stores an audit record |
compliance_evaluation | paid plan | Read back one stored evaluation — the caller's own only |
ofp_validate | credits | Check a payload against the model and, optionally, sector guardrails |
ofp_semantics | free | O-DEF semantic codes, for aligning another system's fields onto the model |
ofp_semantic_code | free | Which canonical fields carry one code — the reverse lookup a connector needs |
ofp_model_provenance | free | Which snapshot of the standard this deployment serves |
Two behaviours are deliberate and worth knowing before you build against them.
Ambiguous entity names fail rather than resolve. dozens of entity names (the ofp_models summary reports the count as ambiguousNameCount) are defined in more than one domain — Country is in four. ofp_entity without a domain returns an error listing the candidates instead of picking one. Pass domain whenever you know it.
Semantic codes vary in usefulness. Most canonical fields carry an O-DEF code, but a code shared by many fields is a generic classification, and aligning to one asserts almost nothing. The ofp_models summary reports the real shape under precision — preciseFieldThreshold (the fieldCount at or below which a code is precise rather than generic), fieldsOnPreciseCodes and preciseShareOfAnnotated — and those follow the vendored snapshot rather than this document. Every code is returned with its fieldCount: check it before aligning to one, and pass maxFieldCount at that threshold to ofp_semantics to see only the precise ones.
"Nothing published" is an answer, not an error. Most sectors are named in the taxonomy but have no reference implementation, and only seven publish policy guardrails. ofp_policies on such a sector returns published: false with a reason, and ofp_validate reports policy.ran: false. Both mean *no rules are published*, never *there are no constraints* — a payload checked for structure alone is not a compliant one, and should not be described as one.
A fourth outcome, unevaluable, means the sector's rules ran but every rule that came back false reads an input the payload does not carry (policy.missingInputs, e.g. co2e_kg, direction, counterparty_industry). Those are e-ledger record fields, not canonical Open Footprint field names — ofp_policies lists them per policy under inputs. Unevaluable is neither a pass nor a breach, and valid is null.
ofp_validate checks, and what it does notThe response is a contract, not a verdict. Every call reports the check catalogue in two lists: checked (what ran) and checks_not_run (what did not, each with a reason and usually a detail). Read both before describing a payload as anything.
| Check | Status | Reason reported when it does not run |
|---|---|---|
schema — presence, primary key, types, declared constraints | runs | entity_has_no_fields |
value_range | runs where the model declares a bound: a quantity outside the declared minimum or maximum is rejected. Which fields declare a bound moves with the vendored snapshot, so it fires on some entities and not others — read checked and schema.coverage.constraintsDeclared per call | no_range_declared, no_numeric_fields |
unit_coherence | not run | not_implemented |
calculation_reproducibility | runs where the record carries all three of a quantity, an emission factor value and a stated CO2e result: quantity × factor = result is reproduced within 1%, and a record that contradicts itself is rejected | no_calculation_inputs, calculation_inputs_incomplete, ambiguous_calculation_inputs, calculation_inputs_unparseable |
temporal_consistency | runs: a validity period whose end precedes its start is rejected | no_validity_pair, validity_pair_incomplete, validity_values_unparseable |
enum_membership | runs where the vocabulary publishes its members: a well-formed key for a referent that does not exist is rejected | no_members_published, no_reference_field_supplied, reference_ids_unparseable |
referential_integrity | not run: keys are pattern- and member-checked, never resolved against live records | no_data_plane |
factor_provenance | not run | not_implemented |
materiality | not run | not_implemented |
sector_policy | runs when a sector with published guardrails covers the record type | no_sector_supplied, no_policy_published, policy_source_missing, policy_package_unparseable, not_applicable, unevaluable |
Any check can also report schema_not_run, which means the structural check it builds on could not run at all.
calculation_reproducibility is self-referential and nothing more. It resolves its three inputs from the model — the field carrying the emission-measure role, a … Factor Value (never a … Factor ID, which is a reference to a factor rather than a number to multiply by) and a … CO2e … result — or, for a record in the vocabulary the guardrails read, from quantity_value / emission_factor_value / co2e_kg. A slot the record fills more than once is ambiguous_calculation_inputs and the check declines rather than picks. The 1% tolerance is the one CalculationAccuracy in the verification engine and calc_tolerance in the ISO 14064 quantification policy use, so the identity has one tolerance on every surface. What it catches is a record whose own numbers do not multiply out. It does not say the factor is the right one for this source and period (factor_provenance, still not run) or that the quantity came from the meter it claims (the data plane, still not run) — a reproduced calculation is a self-consistent record, not a verified one.
schemaValid is the structural verdict (null if the structural check could not run).assuranceLevel names the depth earned: schema-only, schema-and-value, schema-value-and-policy or full. Each level needs every check beneath it, so guardrails without a value check is still schema-only. The ladder is gated on value_range — a bound the model itself declares — so a record that reproduced its own arithmetic without one still reads schema-only; checked is where that shows up, and it is the more precise of the two.severity (error | warning). Rule ids are stable: required_field_missing, pattern_mismatch, format_mismatch, type_mismatch, primary_key_missing, enum_violation, value_range (with bound: minimum | maximum), temporal_consistency, enum_membership, calculation_reproducibility (with expected, received, tolerance and the three inputs it read), … unknown_field is a per-field warning and stays one.unknown_field w앞부분만 보여 드려요. 나머지는 저장소에서 읽어 보세요