本文へ

でんき点検ノート 連携API・MCP

でんき点検ノートの連携APIを使うと、事業場の台帳・点検の状態・報告書PDFを、電気保安法人の業務システムや会計の仕組みから受け取れます。点検記録の作成・確定・訂正は、現地のアプリでだけ行い、APIからはできません。使うには、つなぎたい組織の管理者に鍵を発行してもらってください。

できること

事業場の一覧(種類・受電電圧・設備容量・点検の周期・次の点検)、月ごとの点検の状態(点検日・記録の区分・版・設置者の確認の有無・異常の件数・記録の指紋)、報告書PDFを受け取れます。

設置者の氏名・連絡先は、鍵に pii:read があり、組織が設定でオンにしている場合だけ含まれます。既定では、事業場のIDと記録の状態だけを返します。

点検記録の作成・確定・訂正・取消と、設置者の確認の代行は、どの入口からもできません(現地でしか記録を作らないため)。

鍵とスコープ

組織の管理者が「設定 → 連携」で鍵を発行します。鍵は発行したときに1回だけ表示されます。本番の鍵は dk_live_、試験用の鍵は dk_test_ で始まります。

鍵は Authorization ヘッダーに Bearer で付けます。1本の鍵で1分に60回まで呼べます。超えると 429 と Retry-After を返します。

作成・更新の呼び出しには Idempotency-Key ヘッダーを付けてください。同じ値なら24時間、同じ応答を返します。

GET /api/partner/v1/ping で鍵を確かめられます(組織のIDと、その鍵で使えるスコープを返します)。

スコープ

スコープできること
sites:read事業場の一覧・換算係数の合計
inspections:read月ごとの点検の状態
reports:read報告書PDFの取得(pii:read も必要)
pii:read設置者の氏名・住所を含める(組織の設定がオンのときだけ)
schedule:read点検の予定
schedule:write予定の日の変更・停電日の候補の送信(MCP。案→確認→実行)
reports:send報告書・改善のお願いの送付(MCP。案→確認→実行)
exceptions:read未解決の例外
mcp:invokeMCP の受け口を使う

エンドポイント

連携API(/api/partner/v1)

メソッドパス中身
GET/api/partner/v1/sites事業場の一覧(site_id・site_code・種類・受電電圧・設備容量・点検の周期・次の点検)。sites:read
GET/api/partner/v1/inspections?month=2026-11その月の点検(inspection_id・site_id・種類・点検日・記録の区分・版・確認の有無・異常の件数・record_hash)。inspections:read
GET/api/partner/v1/inspections/{id}/report.pdf最新の版の報告書PDF。reports:read と pii:read
GET/api/partner/v1/ping鍵の確認

一覧は ?limit=(最大100、既定50)と ?cursor= で続きを取ります。日時は ISO 8601(+09:00 付き)です。

curl "https://denki-tenken-note.com/api/partner/v1/inspections?month=2026-11" \
  -H "Authorization: Bearer dk_live_xxxxxxxxxxxx_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
{"data":[{"inspection_id":"0b6f5c1e-…","site_id":"c41d…","kind":"monthly",
  "inspected_on":"2026-11-10","source":"field","revision":1,"acknowledged":true,
  "defects":1,"record_hash":"3f9a0c51e7b2…"}],"next_cursor":null}
curl -o report.pdf "https://denki-tenken-note.com/api/partner/v1/inspections/0b6f5c1e-…/report.pdf" \
  -H "Authorization: Bearer dk_live_…"

お知らせ(Webhook)

送る出来事:inspection.finalized(記録の確定)、inspection.revised(訂正)、report.acknowledged(設置者の確認)、defect.opened(異常の記録)、defect.resolved(異常の改善)。中身はIDと状態だけです。

X-SBGG-Signature ヘッダーの t と v1 で署名を確かめてください。v1 は、署名用の秘密で「t.本文」を HMAC-SHA256 にした16進数です。300秒以上ずれていたら捨ててください。

届く順番は保証しません。受け手は created_at で判断してください。同じ出来事には同じ id が付きます。失敗したときは間隔を空けて最大6回送り直します。

{"id":"evt_…","type":"report.acknowledged","created_at":"2026-11-11T10:05:00+09:00","org_id":"…",
 "data":{"inspection_id":"0b6f5c1e-…","site_id":"c41d…","revision":1,"method":"link"}}
// Node.js:署名の確かめ方
import crypto from 'node:crypto';
function verify(secret, rawBody, header) {
  const p = Object.fromEntries(header.split(',').map((kv) => kv.split('=')));
  if (Math.abs(Date.now() / 1000 - Number(p.t)) >= 300) return false;
  const v1 = crypto.createHmac('sha256', secret).update(p.t + '.' + rawBody).digest('hex');
  return crypto.timingSafeEqual(Buffer.from(v1), Buffer.from(p.v1));
}

MCP(汎用AIからの呼び出し)

POST /api/mcp は MCP の Streamable HTTP(JSON-RPC 2.0)の受け口です。initialize・tools/list・tools/call に対応します。鍵に mcp:invoke と、各ツールのスコープが要ります。

送付や予定の変更のように外に影響するツールは2段階です。1回目は「案」(何をするか・誰に届くか)と confirmation_token(10分有効)を返すだけで、同じツールを confirmation_token 付きで呼んだときだけ実行します。実行は1つの confirmation_token につき1回だけです。

ツール(9つ)

ツール種類中身
denki_list_today読み取り今日の予定(事業場・種類・予定の時刻)
denki_get_site読み取り事業場の台帳の要約・次の点検・未解決の異常
denki_inspection_status読み取り月ごとの予定と実施・未確認の報告書
denki_coefficients読み取り換算係数の合計・内訳・上限までの残り(参考値)
denki_open_exceptions読み取り未解決の例外
denki_send_report案→確認→実行報告書を設置者に送る
denki_propose_outage_dates案→確認→実行年次点検の停電日の候補を設置者に送る
denki_set_planned_date案→確認→実行点検の予定の日を変える
denki_send_defect_notice案→確認→実行異常の改善のお願いを送る
curl -X POST https://denki-tenken-note.com/api/mcp \
  -H "Authorization: Bearer dk_live_…" -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/call",
       "params":{"name":"denki_send_report","arguments":{"inspection_id":"0b6f5c1e-…"}}}'
# 1回目は案と confirmation_token を返す。内容を確かめてから、
# "arguments":{"inspection_id":"0b6f5c1e-…","confirmation_token":"…"} で同じツールを呼ぶと送付する

設置者のエージェント

設置者(ビルの総務・工場の管理部門など)が使うエージェントは、確認リンクのトークンで /api/agent/v1/* を呼べます。ヘッダーに X-Counterparty-Token(確認リンクのトークン)と X-Agent-Name(エージェントの名前)を付けます。

報告書の要約(数値と判定)は1回で返します。確認・異常への回答・停電日の選択は2段階で、1回目は案を返し、設置者のメールに6桁のワンタイム番号(10分有効)を送ります。番号を付けて同じ呼び出しをしたときだけ実行します。番号を3回間違えると失効します。

回数の上限は、トークンごとに1分10回・1日100回です。

メソッドパス中身
POST/api/agent/v1/report/summary報告書の要約と、PDFの一時URL(5分有効)
POST/api/agent/v1/report/acknowledge報告書の確認(ワンタイム番号で2段階)
POST/api/agent/v1/defects/{id}/respond異常への回答(ワンタイム番号で2段階)
POST/api/agent/v1/outage/choose停電日の選択(停電のトークン。ワンタイム番号で2段階)
curl -X POST https://denki-tenken-note.com/api/agent/v1/report/acknowledge \
  -H "X-Counterparty-Token: <確認リンクのトークン>" -H "X-Agent-Name: example-assistant/1.0" \
  -H "Content-Type: application/json" -d '{}'
# → {"action":"acknowledge","confirmation_required":true}(設置者のメールに6桁の番号が届く)
# 番号を付けて同じ呼び出し:-d '{"otp":"123456"}'

エラー

401 鍵が無い・違う・止められた。403 スコープが足りない。404 見つからない(ほかの組織のIDも404)。409 同じ番号をすでに受け付けている。422 入力の誤り。429 回数の上限(Retry-After を見てください)。

OpenAPI 3.1 の定義(openapi.json)