コンテンツへスキップ

API、CLI、MCP

同じアカウントにアクセスする3つの方法。同じプラン制限と、既に付与されている役割の権限を持ちます。以下の内容はすべてこの3つのいずれかに該当するため、どれを利用するかを知っておく価値があります。

API

REST:パイプライン、スクリプト、または独自ツールから利用可能。トークンは自分で発行および無効化し、JSONで双方向通信します。

API

CLI

1つのPythonファイルで、インストール不要。同じAPIを使用し、プログラムではなくターミナルで操作する人向け:ダウンしているもののリスト表示、モニターの追加。

コマンドラインクライアント

MCP

1つのアドレスをClaudeやプロトコル対応の他のツールに貼り付けます。会話形式でアカウントを読み取り、変更します。

アシスタント用

お客様のAPIトークン

アカウントのAPIトークンセクションで作成してください。一度だけ表示され、指紋情報のみを保存します。このトークンは組織ではなくお客様に属し、お客様ができる範囲以上の操作はできません。また、お客様が退職したり役割が変更された場合は無効になります。「読み取り」または「読み取りと書き込み」を選択してください。

すべての呼び出しでAuthorization: Bearer n404_...として送信してください。最初に試すべきのは/api/v1/meで、このトークンがどの組織のために動作するのか、どの役割を持つのか、2つのスコープのどちらを持つのかを回答します。2つのアカウントを持つ人は2つのトークンを持ち、環境変数内のどちらかを識別する他の方法はありません。

バージョン1の内容

呼び出し 機能
GET /api/v1/me このトークンの内容と、それがどの組織のために動作するのか
GET /api/v1/monitors すべてのモニター(古い順)
POST /api/v1/monitors フォームのルールに従って作成
GET /api/v1/monitors/{id} 1つのモニター
PATCH /api/v1/monitors/{id} 名前、アドレス、間隔、設定の変更、または一時停止
DELETE /api/v1/monitors/{id} 削除し、その履歴も削除
GET /api/v1/monitors/{id}/status 現在の動作状況と指定期間の稼働時間
GET /api/v1/groups すべてのグループと、その中にあるモニターの数
POST /api/v1/groups 新規作成します。同じ名前が既に存在する場合、そのグループが返されます
GET /api/v1/groups/{id} 1つのグループ
PATCH /api/v1/groups/{id} 名前を変更するか、説明を変更します
DELETE /api/v1/groups/{id} 削除します。そのモニターは削除されず、グループ化されていない状態で残ります
GET /api/v1/incidents 障害情報、新しい順。状態、モニター、または期間でフィルタリング
GET /api/v1/incidents/{id} 1つのインシデントと、それを検知・確認したプローブ
GET /api/v1/maintenance メンテナンスウィンドウとその対象
GET /api/v1/maintenance/{id} 1つのウィンドウと、その対象となるモニターおよびグループ
POST /api/v1/maintenance 組織のタイムゾーンでスケジュールを設定し、デプロイ前にウィンドウを開けるようにします
DELETE /api/v1/maintenance/{id} 削除します。既に対象となっているものはそのまま維持されます
GET /api/v1/status-pages すべてのステータスページと、その有効/無効の状態
GET /api/v1/status-pages/{id} 1つのページと、その上に公開されている内容
POST /api/v1/status-pages/{id}/monitors モニターをページに追加し、閲覧者が読むべき名前の下に配置します
DELETE /api/v1/status-pages/{id}/monitors/{id} このページから削除します。他のページには影響しません
POST /api/v1/status-pages/{id}/groups グループをページに追加します。その中のモニターも一緒に追加されます
DELETE /api/v1/status-pages/{id}/groups/{id} 見出しを削除します。そのモニターは公開されたままです

パスやボディ内のすべてのIDはUUIDであり、数値ではありません。書き込みには、読み書き可能なトークンおよび書き込み権限が必要です。スコープはプログラムに渡したもの、ロールは渡すことを許可されたものです。

openapi.json

このドキュメントはOpenAPI 3.1です。すべての呼び出し、ボディの構造、ベアラートークンを記述しており、クライアントを手書きではなく生成できます。openapi-generator、oapi-codegenなどがそのまま読み取れます。操作は人間が理解しやすい名前が付けられており、生成されたメソッドはlistMonitorsやcreateMonitorです。

バージョン1は常に拡張されます。フィールドが追加されることはありますが、削除や型変更はありません。新しいバージョンは別のパスとして提供されます。そのため、生成されたクライアントは引き続き動作し、再生成することで新しい変更を反映できます。

クライアントが必要な場合

1つのファイル、Python 3.9以降、依存関係なし。ダウンロードして実行可能にし、トークンを環境変数に設定してください。このクライアントはAPIが行うすべての操作を実行できます。すべてのコマンドが上記のルートへの1回の呼び出しです。

nomore404.py nomore404_mcp.py

curl -O https://nomore404.com/api/nomore404.py
curl -s https://nomore404.com/api/nomore404.py.sha256 | sha256sum -c
chmod +x nomore404.py
export N404_TOKEN=n404_...

./nomore404.py monitors list
./nomore404.py monitors add --type https --target shop.example.com
./nomore404.py incidents --state open

2行目は実行する価値があります。このコマンドは、サーバーが送信した内容と一致するダイジェストを確認します。途中で改ざんされたダウンロードは一致しません。./nomore404.py --versionはどのリリースから来たかを示し、すべてのリクエストのUser-Agentにも同じ情報が含まれます。

トークンはN404_TOKENまたはスクリプトの隣にあるnomore404.envファイルから取得されます。コマンドラインフラグからは取得しません。引数はpsでマシン上のすべてのユーザーに見え、シェル履歴にも残ります。

アシスタント用

アシスタントはModel Context Protocolを介してこのアカウントを読み取り、変更することができます。アクセス方法は2つあり、それぞれ異なります。

1つのアドレス、インストール不要

アシスタントがカスタムコネクタを求める場所にこれを貼り付けてください。サインインと接続先の組織を指定するためにここにリダイレクトされます。それがセットアップのすべてです。

これはあなたとして動作します。すべての呼び出しであなたのロールが読み取られるため、読み取り専用の権限を持つ人が接続した場合、読み取りしかできません。モニター、障害、稼働時間、メンテナンスウィンドウ、グループを読み取り、追加や変更も可能です(モニターやその履歴の削除を含む)。APIトークンからいつでも接続を解除できます。

または自分で実行し、読み取りを維持します

nomore404_mcp.pyは、あなたのマシン上のツールと同じAPIを提供します。nomore404.pyの隣に配置し、トークンとページングに使用します。読み取り専用で書き込みは行いません。これが選ばれる理由です。アシスタントは説得される可能性があり、モニターやその履歴を削除するツールは1つのプロンプトで使用される可能性があります。

2つのファイル、隣にトークンを配置し、1行でサーバーを登録します。Claude Code:

curl -O https://nomore404.com/api/nomore404.py
curl -O https://nomore404.com/api/nomore404_mcp.py
echo 'N404_TOKEN=n404_...' > nomore404.env

claude mcp add nomore404 -- python3 "$PWD/nomore404_mcp.py"

プロトコルを話す他のものは、クライアントがサーバーを保持している場所に関係なく、JSONで記述された同じコマンドです。

{
  "mcpServers": {
    "nomore404": {
      "command": "python3",
      "args": ["/path/to/nomore404_mcp.py"]
    }
  }
}

どちらもトークンの名前を指定しません。スクリプトの隣にあるnomore404.envまたはアシスタントが起動時に使用する環境内のN404_TOKENから読み取られるべきだからです。その後、何がダウンしているのか、なぜインシデントが発生したのか、今月のモニターの状況を尋ねてください。

どちらも数百行で、実行する前に読む価値があります。どちらもパッケージ化や署名はされておらず、代わりにドキュメントから独自のクライアントを生成することも可能です。

失敗と長いリスト

1つのエラー形式

ステータスはカテゴリを示します。ボディには、どの失敗であったかがコードと説明文で記載されています。この説明文はリリースごとに変更される可能性があるため、解析に使用しないでください。

{
  "error": {
    "code": "monitor_not_found",
    "message": "Nothing here with that id."
  }
}

カーソル、オフセットではありません

リストはitemsとnext_cursorで応答します。カーソルを戻して次のページを取得し、nullになったら停止します。インシデントは読み取り中に到着するため、オフセットでは同じ行が2回表示され、次の行が表示されない可能性があります。

GET /api/v1/incidents?limit=50
GET /api/v1/incidents?limit=50&cursor=...

どれくらいリクエストできますか

1つのトークンで1分間に120回のコールが可能です。すべての応答にはRateLimit-RemainingとRateLimit-Resetが含まれているため、適切に動作するクライアントは制限に達する前にペースを調整できます。制限を超えると、Retry-Afterを伴う429が返されます。

無料アカウントを作成