omikuji-dev API

omikuji-dev API as documented publicly: 10 operations. Contract generated from the documentation by API Evangelist (2026-10-29); not the provider's own document.

Operations 10

GET / GET / #
POST /api/mcp/auth_callback POST /api/mcp/auth_callback #
GET /cdn-cgi/access/certs GET /cdn-cgi/access/certs #
GET /cdn-cgi/trace Check IPv4 connectivity and retrieve assigned IP address from Cloudflare. #
PUT /cdn-cgi/trace PUT /cdn-cgi/trace #
POST /client/v4/user/tokens POST /client/v4/user/tokens #
GET /client/v4/user/tokens/permission_groups GET /client/v4/user/tokens/permission_groups #
POST /mcp MCP server endpoint that handles requests with OAuth tokens from Cloudflare Access. #
GET /my-ip GET /my-ip #
GET /rest/networkconf Get current network configuration to confirm WAN settings and verify DS-Lite prerequisites. #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/omikuji-dev:omikuji-dev-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

omikuji-dev-openapi-generated.yml Raw ↑
openapi: 3.1.0
info:
  title: omikuji-dev API
  version: '2026-10-29'
  description: 'GENERATED FROM DOCUMENTATION by API Evangelist on 2026-10-29: 10 operation(s) read from 6 public documentation page(s) (each operation
    names its page in x-source). This is not the provider''s published contract; omikuji-dev has published no machine-readable contract that the
    pipeline could find. Engine: anthropic.'
  x-evidence-tiers:
    code-example: 7
    documentation: 3
    pages-with-code: 5
    pages-read: 6
  x-generated-from: documentation
  x-provenance: generated
  x-authored-by: API Evangelist
  x-generated: '2026-10-29'
  x-generator: generate-contract-from-docs.py
  x-engine: anthropic
  x-sources:
  - https://omikuji.dev/posts/bing-webmaster-tools-api-cli-and-postgres
  - https://omikuji.dev/posts/cloudflare-api-token-permissions-opentofu
  - https://omikuji.dev/posts/mcp-cloudflare-access-managed-oauth
  - https://omikuji.dev/posts/unifi-transix-dslite-tcp-only-outage-aftr-watchdog
  - https://omikuji.dev/posts/mcp-server-publish-and-oauth
  - https://omikuji.dev/posts/unifi-cloud-gateway-transix-dslite
servers:
- url: https://tools.omikuji.dev
paths:
  /:
    get:
      operationId: get
      tags:
      - Api
      summary: GET /
      x-source: https://omikuji.dev/posts/unifi-transix-dslite-tcp-only-outage-aftr-watchdog
      responses:
        '200':
          description: Success (status as documented)
      x-evidence:
        kind: code-example
        language: curl
        snippet: 'curl https://mail.google.com # 失敗。しかも 25ms で即座に '
  /api/mcp/auth_callback:
    post:
      operationId: post_api_mcp_auth_callback
      tags:
      - Api
      summary: POST /api/mcp/auth_callback
      x-source: https://omikuji.dev/posts/mcp-cloudflare-access-managed-oauth
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PostApiMcpAuthCallbackRequest'
      responses:
        '201':
          description: Success (status as documented)
      x-evidence:
        kind: code-example
        language: curl
        snippet: 'curl -s -X POST https:// < チーム 名 > .cloudflareaccess.com/cdn-cgi/access/oauth/registration  -H ''content-type: application/json''  -d
          ''{"client_name":"dcr-check","redirect_uris":["https://claude.ai/api/mcp/auth_callback"],"token_endpoint_auth_method":"none"}'' '
  /cdn-cgi/access/certs:
    get:
      operationId: get_cdn_cgi_access_certs
      tags:
      - Cdn Cgi
      summary: GET /cdn-cgi/access/certs
      x-source: https://omikuji.dev/posts/mcp-cloudflare-access-managed-oauth
      responses:
        '200':
          description: Success (status as documented)
      x-evidence:
        kind: code-example
        language: javascript
        snippet: fetch ( `https://${domain}/cdn-cgi/access/certs` )
  /cdn-cgi/trace:
    get:
      operationId: get_cdn_cgi_trace
      tags:
      - Cdn Cgi
      summary: Check IPv4 connectivity and retrieve assigned IP address from Cloudflare.
      x-source: https://omikuji.dev/posts/unifi-cloud-gateway-transix-dslite
      responses:
        '200':
          description: Success (status as documented)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetCdnCgiTraceResponse'
      x-evidence:
        kind: documentation
    put:
      operationId: put_cdn_cgi_trace
      tags:
      - Cdn Cgi
      summary: PUT /cdn-cgi/trace
      x-source: https://omikuji.dev/posts/unifi-cloud-gateway-transix-dslite
      responses:
        '200':
          description: Success (status as documented)
      x-evidence:
        kind: code-example
        language: curl
        snippet: "curl -sk -X PUT -H \"X-API-KEY: $KEY \"  -H 'Content-Type: application/json' -d \" $1 \" \" $API \" ; } \n net_ok () { curl\
          \ -4 -sm 4 https://1.1.1.1/cdn-cgi/trace | grep -q '^ip=' ; } \n put '{\"wan_type\":\"dslite\",\"wan_dslite_remote_host\":\"2404:8e00::feed:100\"\
          ,\"wan_dslite_remote_host_auto\":false}' \n sleep 20 \n i = 0 \n while [ $i -lt 20 ]; do \n net_ok && { echo \"SUCCESS\" ; exit 0 ;\
          \ } \n sleep 6 ; i = $(( i+1"
  /client/v4/user/tokens:
    post:
      operationId: post_client_v4_user_tokens
      tags:
      - Client
      summary: POST /client/v4/user/tokens
      x-source: https://omikuji.dev/posts/cloudflare-api-token-permissions-opentofu
      responses:
        '201':
          description: Success (status as documented)
      x-evidence:
        kind: code-example
        language: curl
        snippet: "curl -s -X POST  -H \"X-Auth-Email: you@example.com\" -H \"X-Auth-Key: $K \"  -H \"Content-Type: application/json\" --data @token.json\
          \  https://api.cloudflare.com/client/v4/user/tokens \n レスポンスの .result.value が新しいトークンだ。 この一度しか表示されない。 \n この方法だと、対象リソースも正確に絞れる。UI で作ると既定が「すべてのゾーン」になりがちだが、JSON\
          \ なら必要なゾーンだけを明示的に書ける。 \n 手順3: 必ず疎通確認する \n 権限が足りなくても、トークンの作成は成功する。 ここが厄介なところで、実際に API を叩くまで穴に気づけない。 \n なので、使う予定のエンドポイントを全部叩い"
  /client/v4/user/tokens/permission_groups:
    get:
      operationId: get_client_v4_user_tokens_permission_groups
      tags:
      - Client
      summary: GET /client/v4/user/tokens/permission_groups
      x-source: https://omikuji.dev/posts/cloudflare-api-token-permissions-opentofu
      responses:
        '200':
          description: Success (status as documented)
      x-evidence:
        kind: code-example
        language: curl
        snippet: "curl -s  -H \"X-Auth-Email: you@example.com\" -H \"X-Auth-Key: $K\"  https://api.cloudflare.com/client/v4/user/tokens/permission_groups\
          \ > /tmp/pg.json' \n jq -r '.result | length' /tmp/pg.json \n 私の環境では 396件 あった。この中に、UI に出てくる名前とは違う正式名称と、その ID が入っている。 \n なお、この記事では権限\
          \ ID を xxxx… に伏せてある。 全アカウント共通の定数なので秘密ではない が、32文字の16進を貼られても、それが共通の定数なのか誰かのアカウント固有の識別子なのか、見ただけでは判別できない。どのみち下のコマンドで自分で引けるものなので、そちらを見てほしい。\
          \ \n jq -r "
  /mcp:
    post:
      operationId: post_mcp
      tags:
      - Mcp
      summary: MCP server endpoint that handles requests with OAuth tokens from Cloudflare Access.
      x-source: https://omikuji.dev/posts/mcp-cloudflare-access-managed-oauth
      parameters:
      - name: cf-access-jwt-assertion
        in: header
        required: false
        schema:
          type: string
        description: JWT token signed by Cloudflare Access that must be verified before processing the request
      responses:
        '200':
          description: Success (status as documented)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PostMcpResponse'
      x-evidence:
        kind: documentation
  /my-ip:
    get:
      operationId: get_my_ip
      tags:
      - My Ip
      summary: GET /my-ip
      x-source: https://omikuji.dev/posts/bing-webmaster-tools-api-cli-and-postgres
      responses:
        '200':
          description: Success (status as documented)
      x-evidence:
        kind: code-example
        language: curl
        snippet: "curl -fsS -m 120 \" $base / $1 &apikey= $key \" -o \" $out / $2 \" ; } \n get \"GetUserSites?\" sites.json \n get \"GetRankAndTrafficStats?siteUrl=\
          \ $s \" site.json \n get \"GetPageStats?siteUrl= $s \" page.json \n get \"GetQueryStats?siteUrl= $s \" query.json \n キーはファイルから読む。 chmod\
          \ 600 にして、リポジトリには入れない。 \n 癖1: 期間を指定できない \n 一番の癖はここだ。 日付範囲のパラメータが無い。 \n GetPageStats と GetQueryStats は、呼ぶと 約32週分を週単位で 全部返してくる。「8月18日から24日だけ」の"
  /rest/networkconf:
    get:
      operationId: get_rest_networkconf
      tags:
      - Rest
      summary: Get current network configuration to confirm WAN settings and verify DS-Lite prerequisites.
      x-source: https://omikuji.dev/posts/unifi-cloud-gateway-transix-dslite
      responses:
        '200':
          description: Success (status as documented)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetRestNetworkconfResponse'
      x-evidence:
        kind: documentation
components:
  schemas:
    PostApiMcpAuthCallbackRequest:
      type: object
      properties:
        client_name:
          type: string
        redirect_uris:
          type: array
          items:
            type: string
        token_endpoint_auth_method:
          type: string
    GetCdnCgiTraceResponse:
      type: object
      properties:
        ip:
          type: string
          description: Detected public IPv4 address
    PostMcpResponse:
      type: object
      properties:
        search_results:
          type: object
          description: Results from searching blog posts by keywords
        post_content:
          type: string
          description: Full or partial blog post content, with section headings listed for long articles
        posts_list:
          type: array
          description: List of blog posts filtered by date, category, tags, or series
    GetRestNetworkconfResponse:
      type: object
      properties:
        wan_type:
          type: string
          description: Current WAN connection type (dhcp, dslite, etc.)
        wan_dslite_remote_host:
          type: string
          description: DS-Lite AFTR address or hostname
        wan_dslite_remote_host_auto:
          type: boolean
          description: Whether AFTR is auto-detected or manually specified
  securitySchemes:
    bearer:
      type: http
      scheme: bearer
security:
- bearer: []
tags:
- name: Api
- name: Cdn Cgi
- name: Client
- name: Mcp
- name: My Ip
- name: Rest