IPKit is configured entirely through environment variables. In local development, set them in a .env file. In production (Fly.io), set them via fly secrets set. In Claude Desktop, use the env field in the MCP server config.
Variable Type Default Description TRANSPORTstdio | http | chatgptstdioServer transport mode. stdio for Claude Desktop, http for hosted/self-hosted, chatgpt for ChatGPT Apps SDK. HTTP_PORTnumber 3000Port for HTTP transport HTTP_HOSTstring 127.0.0.1Bind address for HTTP transport CHATGPT_PORTnumber 8787Port for ChatGPT SSE transport CHATGPT_HOSTstring 0.0.0.0Bind address for ChatGPT transport
Variable Type Default Description API_KEYSstring (empty) Comma-separated list of valid API keys for HTTP/ChatGPT transport. When empty, authentication is disabled. API_KEYS_CONFIGstring (none) Path to a JSON file with per-key configuration (labels, quotas, tiers). Takes precedence over API_KEYS for key-level settings. ADMIN_API_KEYstring (none) Admin API key for the GET /keys management endpoint. Must be set separately from API_KEYS.
Variable Type Default Description USPTO_API_KEYstring (none) API key from the USPTO developer portal
Variable Type Default Description EUIPO_CLIENT_IDstring (none) OAuth2 client ID for the EUIPO API EUIPO_CLIENT_SECRETstring (none) OAuth2 client secret for the EUIPO API EUIPO_SANDBOX_CLIENT_IDstring (none) Sandbox OAuth2 client ID (for testing) EUIPO_SANDBOX_CLIENT_SECRETstring (none) Sandbox OAuth2 client secret (for testing)
Variable Type Default Description IPAUSTRALIA_CLIENT_IDstring (none) OAuth2 client ID for IP Australia APIs IPAUSTRALIA_CLIENT_SECRETstring (none) OAuth2 client secret for IP Australia APIs
Variable Type Default Description IPONZ_API_KEYstring (none) API key for the IPONZ API
Variable Type Default Description EPO_CONSUMER_KEYstring (none) OAuth2 consumer key for EPO Open Patent Services EPO_CONSUMER_SECRETstring (none) OAuth2 consumer secret for EPO Open Patent Services
Each provider can be individually enabled or disabled. All providers are enabled by default. Set to false to disable.
Variable Type Default Description ENABLE_USPTOboolean trueEnable/disable USPTO provider ENABLE_EUIPOboolean trueEnable/disable EUIPO provider ENABLE_IPAUSTRALIAboolean trueEnable/disable IP Australia provider ENABLE_IPONZboolean trueEnable/disable IPONZ provider ENABLE_WIPOboolean trueEnable/disable WIPO provider ENABLE_UKIPOboolean trueEnable/disable UKIPO provider ENABLE_CIPOboolean trueEnable/disable CIPO provider ENABLE_JPOboolean trueEnable/disable JPO provider ENABLE_CNIPAboolean trueEnable/disable CNIPA provider ENABLE_EPOboolean trueEnable/disable EPO provider
Variable Type Default Description EUIPO_SANDBOXboolean falseUse the EUIPO sandbox environment instead of production. Requires sandbox credentials. IPAUSTRALIA_TEST_ENVboolean falseUse the IP Australia test environment instead of production
Per-provider rate limits in requests per minute. These are self-imposed limits to avoid overwhelming upstream APIs.
Variable Type Default Description USPTO_RATE_LIMITnumber 60USPTO requests per minute EUIPO_RATE_LIMITnumber 60EUIPO requests per minute IPAUSTRALIA_RATE_LIMITnumber 500IP Australia requests per minute (shared across trademarks, designs, and patents) IPONZ_RATE_LIMITnumber 60IPONZ requests per minute WIPO_RATE_LIMITnumber 30WIPO requests per minute UKIPO_RATE_LIMITnumber 30UKIPO requests per minute CIPO_RATE_LIMITnumber 30CIPO requests per minute JPO_RATE_LIMITnumber 30JPO requests per minute CNIPA_RATE_LIMITnumber 30CNIPA requests per minute EPO_RATE_LIMITnumber 30EPO requests per minute
Variable Type Default Description EUIPO_FETCH_TIMEOUT_MSnumber 15000EUIPO request timeout in milliseconds (min: 1000, max: 120000) IPAUSTRALIA_FETCH_TIMEOUT_MSnumber 15000IP Australia request timeout in milliseconds (min: 1000, max: 120000) DEFAULT_FETCH_TIMEOUT_MSnumber 15000Default timeout for providers without a dedicated timeout setting (min: 1000, max: 120000)
Variable Type Default Description USPTO_BASE_URLstring https://tsdrapi.uspto.govBase URL for the USPTO TSDR API USPTO_ODP_BASE_URLstring https://api.uspto.gov/api/v1Base URL for the USPTO Open Data Portal API USPTO_USE_ODPboolean falseUse the USPTO Open Data Portal instead of the legacy TSDR API
Variable Type Default Description CACHE_TTL_SEARCHnumber 300Time-to-live for search result caches in seconds (5 minutes) CACHE_TTL_STATUSnumber 3600Time-to-live for status lookup caches in seconds (1 hour) CACHE_TTL_CLASSnumber 86400Time-to-live for Nice class and G&S caches in seconds (24 hours) CACHE_DIRstring (none) Directory for persistent file-based cache. When unset, IPKit uses in-memory caching (volatile).
Variable Type Default Description DATA_DIRstring (none) Directory for persistent data storage (watches, events, webhooks). Falls back to CACHE_DIR, then .trademark-data/.
Variable Type Default Description WATCH_POLL_INTERVALnumber (none) Polling interval for trademark watches in seconds (minimum: 60). When unset, uses the watcher’s internal default. WATCH_AUTO_STARTboolean falseAutomatically start the trademark watcher on server startup
Variable Type Default Description LOG_LEVELdebug | info | warn | errorinfoMinimum log level. Logs are written as structured JSON to stderr (stdout is reserved for the MCP protocol).
Variable Type Default Description ANALYTICS_ENABLEDboolean trueEnable the in-memory analytics collector and structured log emission ANALYTICS_INTERVAL_MSnumber 60000Interval in milliseconds between periodic metrics log flushes (minimum: 1000)
API_KEYS = key-abc123,key-def456
ADMIN_API_KEY = admin-secret-key
USPTO_API_KEY = your-uspto-key
EUIPO_CLIENT_ID = your-euipo-client-id
EUIPO_CLIENT_SECRET = your-euipo-secret
IPAUSTRALIA_CLIENT_ID = your-ipau-client-id
IPAUSTRALIA_CLIENT_SECRET = your-ipau-secret
IPONZ_API_KEY = your-iponz-key
EPO_CONSUMER_KEY = your-epo-key
EPO_CONSUMER_SECRET = your-epo-secret
# Rate limits (optional — defaults are sensible)
IPAUSTRALIA_RATE_LIMIT = 500