Integrate with AI
If you use an AI coding tool like Cursor, Claude Code, or Copilot, you can connect the MCP server or hand off the integration with the single prompt below.
Option 1 — Connect the MCP Server (Recommended)
Section titled “Option 1 — Connect the MCP Server (Recommended)”Signox provides a developer-docs MCP server. Register it once and your AI tool fetches the latest documentation on demand — no prompt copying, and it always reads the current docs even after updates.
# Claude Codeclaude mcp add --transport http signox https://api.signox.kr/mcp// Cursor, VS Code, etc. — add to your MCP config (mcp.json){ "mcpServers": { "signox": { "url": "https://api.signox.kr/mcp" } }}Two tools are available:
list_docs— the full document list (slug, title, description)read_doc— fetch a document’s full markdown by slug (e.g.sdk/node,guides/activation-offline)
After registering, just ask “Integrate Signox license authentication into my app” and the AI works through the docs as needed.
Option 2 — Copy-Paste Prompt
Section titled “Option 2 — Copy-Paste Prompt”If your tool does not support MCP, use the prompt below.
How to Use
Section titled “How to Use”- Complete Prepare Issuance in the Dashboard (product, policy, test license).
- Copy the prompt below, paste it into your AI tool, and add details about your app structure (framework, where the key-entry UI lives, and so on).
- Verify that the code the AI produces handles the UX per status code and implements feature gating as required.
Integration Prompt
Section titled “Integration Prompt”You are a senior developer helping integrate software licensing.Integrate Signox license authentication into my app according to the spec below.
[Signox overview]- Signox is a license issuance and validation SaaS. Docs: https://wiki.signox.kr- The license key (licenseKey) is the sole credential. No separate API token.- Every license is node-locked. Device identification is handled automatically by the SDK.- Server responses and offline .lic files are signed with Ed25519 and verified automatically by the SDK.- After a single online activation, it works without a network (cached local signed state).
[SDK — pick the one matching my stack. All three share the same API surface and verdict codes]- Node.js: npm `@signox/sdk` → import { SignoxClient } from '@signox/sdk' Docs: https://wiki.signox.kr/en/sdk/node/- Java 8+: Maven `kr.signox:signox-sdk` → kr.signox.sdk.SignoxClient (builder) Docs: https://wiki.signox.kr/en/sdk/java/- C#/.NET/Unity: NuGet `Signox.Sdk` → Signox.Sdk.SignoxClient Docs: https://wiki.signox.kr/en/sdk/csharp/
[Common API — Node.js notation; Java/C# use same-named methods]const client = new SignoxClient({ productPublicKey: '<product public key, SPKI PEM — embed in the app>' });await client.activate(licenseKey, { name? }); // one-time activation (idempotent)const lic = await client.validate(licenseKey); // validate on start (successful responses cached automatically)// lic.valid: boolean — true only for VALID and IN_GRACE_PERIOD// lic.code: 'VALID'|'IN_GRACE_PERIOD'|'EXPIRED'|'SUSPENDED'|'REVOKED'|'NOT_FOUND'// |'DEVICE_NOT_ACTIVATED'|'DEVICE_LIMIT_REACHED'|'VM_NOT_ALLOWED'|'NETWORK_ERROR'|...// lic.features: Record<string, boolean|number|string>await client.deactivate(licenseKey); // deactivate this device (returns the slot)client.requestOfflineFile(licenseKey); // issue a .lic for air-gapped use → result.file.contentclient.validateOffline(licContent); // fully local .lic verification
[Integration requirements]1. On first run, show a license key entry screen → call activate(). On success, store the key securely.2. On app start, call validate() and handle the result: - valid=true → proceed normally. But if code is IN_GRACE_PERIOD, show a "license renewal required" banner. - NETWORK_ERROR → not invalid. Prompt a retry (lock paid features but do not treat it as an auth failure). - EXPIRED → expiration notice + renewal prompt screen. - DEVICE_LIMIT_REACHED → "deactivate another device" notice (link to the self-service portal). - SUSPENDED / REVOKED / NOT_FOUND → authentication failure screen + contact prompt.3. Feature gating: branch features on the values in lic.features. bool = on/off, int = quantity limit, string = tier, etc.4. Add a "deactivate this device" button on the settings screen → call deactivate() (for moving devices).5. (Only if air-gapped support is needed) add a device code display screen (QR + copy button) and a .lic file loading feature.
[Prohibited]- Do not reimplement validation or signature logic outside the SDK.- Do not fetch the product public key over the network or from config — always embed it in the app (swap prevention).- Do not hardcode the license key in the source code.- Ensure paid features do not work while valid=false.Let the AI Read the Docs Directly
Section titled “Let the AI Read the Docs Directly”If your AI tool can read web documentation, have it also reference https://wiki.signox.kr/llms.txt — an AI-friendly summary of this site containing the core concepts and links to every page.