{"name":"io.github.ClockNext/mcp","slug":"clocknext-mcp","title":null,"description":"Meter usage and manage usage-based billing from AI tools via the ClockNext API.","url":"https://mcp.market/server/clocknext-mcp","rating":null,"grade":"B","score":72,"certified":false,"status":"active","category":"other","tags":[],"presence":{"score":24,"stars":0,"forks":0,"downloads_week":69,"last_push_at":"2026-09-12T08:03:26.000Z","license":"MIT"},"uptime":null,"claimed":false,"transport":"npm","callable_via_gateway":false,"default_price_micros":0,"repository":"https://github.com/ClockNext/clocknext-mcp","website":null,"version":"0.6.0","remotes":[],"packages":[{"registryType":"npm","identifier":"@clocknext/mcp","version":"0.6.0","transport":{"type":"stdio"},"environmentVariables":[{"description":"Your organisation's cnk_… API key (Settings → API Keys).","isRequired":true,"format":"string","isSecret":true,"name":"CLOCKNEXT_API_KEY"},{"description":"Override the API origin (e.g. a staging URL). Defaults to production.","format":"string","name":"CLOCKNEXT_BASE_URL"},{"description":"Override the docs origin for the search_docs/get_doc tools. Defaults to https://help.clocknext.com.","format":"string","name":"CLOCKNEXT_DOCS_URL"}]}],"tools":[{"name":"clocknext_add_model","description":"Enable a model for the organisation so usage can be metered against it \\u2014 afterwards its `modelId` is valid in clocknext_record_usage / clocknext_verify_signal and appears in clocknext_list_models. Only models in ClockNext's pricing catalog can be added, AUTOPRICED: give the `provider` and `model` (its catalog id) and ClockNext copies that model's input/output/cache prices from the catalog \\u2","write_action":false,"price_micros":0,"input_schema":null},{"name":"clocknext_bulk_import_customers","description":"Bulk-create ClockNext customers in ONE request \\u2014 for backfilling an existing user base. Pass an array of customers (each needs name + email; up to 200 per call). The whole batch goes to the server in a single call and comes back with a PER-ROW result \\u2014 created id, or an error \\u2014 so one duplicate/bad row never aborts the batch. Match results back to your users by email. Runs against a","write_action":false,"price_micros":0,"input_schema":null},{"name":"clocknext_create_customer","description":"Create a ClockNext customer \\u2014 the entity you bill (maps to one of your end-users / tenants / organisations). `name` and `email` are required; everything else is optional profile. Returns the customer with its ClockNext `id`, which you pass as `customerId` when subscribing to a plan (clocknext_create_purchase) and when recording usage (clocknext_record_usage).","write_action":true,"price_micros":0,"input_schema":null},{"name":"clocknext_create_purchase","description":"Subscribe a customer to a plan (a 'purchase') \\u2014 this is what activates the plan for that customer. A usage signal only prices if the customer has an active plan whose components match the meter (credit / outcome / unit), so do this after clocknext_create_customer + clocknext_create_plan. Used to wire up a dummy customer before firing test signals.","write_action":true,"price_micros":0,"input_schema":null},{"name":"clocknext_get_customer","description":"Fetch one customer by ClockNext id.","write_action":false,"price_micros":0,"input_schema":null},{"name":"clocknext_get_customer_balances","description":"Fetch a customer's current wallet / credit / outcome / unit balances. Use it to confirm a purchase granted the expected entitlements, or that a test signal drew the balance down as expected.","write_action":false,"price_micros":0,"input_schema":null},{"name":"clocknext_get_customer_plan","description":"Fetch a customer's current active plan (from their purchase). Use it to confirm a customer is subscribed to the plan you expect before firing a test signal.","write_action":false,"price_micros":0,"input_schema":null},{"name":"clocknext_get_customer_usage","description":"Read back a customer's recent usage logs (most recent first). Use it to CONFIRM a signal landed \\u2014 e.g. after running the product's code so it fires a real signal, check the event shows up here with the expected model, tokens, and cost. For a signal you fire directly, clocknext_record_usage already returns the priced log inline, so this is mainly for signals sent by the running codebase.","write_action":false,"price_micros":0,"input_schema":null},{"name":"clocknext_get_doc","description":"","write_action":false,"price_micros":0,"input_schema":null},{"name":"clocknext_list_customers","description":"List / search the org's customers, most-recent first (cursor-paginated). Use it to find a customer id or check whether one already exists before creating.","write_action":false,"price_micros":0,"input_schema":null},{"name":"clocknext_list_models","description":"List the models the organisation has enabled, with their USD prices per 1,000,000 tokens. Use a returned `modelId` as the `model` when verifying or recording usage. Pass active=true to see only models that can be metered right now.","write_action":false,"price_micros":0,"input_schema":null},{"name":"clocknext_record_usage","description":"Record ONE real usage signal \\u2014 it is metered and billed. Prices the tokens against the model and the customer's plan and returns the resulting usage log. Pass an idempotencyKey to make retries safe (a repeat with the same key returns the original result instead of double-recording). For a no-op preflight, use clocknext_verify_signal instead.","write_action":false,"price_micros":0,"input_schema":null},{"name":"clocknext_search_docs","description":"","write_action":false,"price_micros":0,"input_schema":null},{"name":"clocknext_verify_signal","description":"Validate and PRICE a usage signal WITHOUT recording it \\u2014 a dry run. Returns the projected usage log (cost, credits drawn, applied rules) so you can confirm the customer, model, and plan are wired up correctly before sending real traffic. Records nothing and never bills.","write_action":false,"price_micros":0,"input_schema":null},{"name":"clocknext_whoami","description":"Identify the ClockNext organisation behind the configured API key, and \\u2014 crucially \\u2014 whether it is a 'sandbox' (a disposable staging twin) or the 'live' organisation. Call this FIRST to confirm you are pointed at the intended workspace before recording any real usage.","write_action":false,"price_micros":0,"input_schema":null}],"scan":{"score":72,"grade":"B","scanned_at":"2026-09-24T05:07:06.459Z","report":{"scannerVersion":"0.1.9","scannedAt":"2026-09-24T05:07:06.414Z","components":{"code":{"score":20,"max":25,"notes":["2 source files scanned"]},"reliability":{"score":-1,"max":20,"notes":["no gateway calls yet and no remote to probe"]},"poisoning":{"score":-1,"max":15,"notes":["tools not inspected (local package is not executed); not counted"]},"auth":{"score":6,"max":15,"notes":["static API keys via environment variables"]},"maintenance":{"score":15,"max":15,"notes":["last push 12 days ago"]},"identity":{"score":6,"max":10,"notes":["registry namespace matches repository owner"]}},"findings":[{"id":"exec.eval","severity":"medium","component":"code","title":"eval / new Function used","evidence":"dist/index.js: …ode, sch); const makeValidate = new Function(`${names_1.default.self}`, `${names_1.de…"}],"inputs":{"packages":[{"registryType":"npm","identifier":"@clocknext/mcp","version":"0.6.0","found":true,"license":"MIT","hasInstallScripts":false,"dependencyCount":0,"publishedAt":"2026-08-04T17:29:53.592Z","weeklyDownloads":69}],"repo":{"found":true,"owner":"ClockNext","repo":"clocknext-mcp","archived":false,"pushedAt":"2026-09-12T08:03:26Z","stars":0,"forks":0,"openIssues":0,"ownerType":"User","ownerAvatarUrl":"https://avatars.githubusercontent.com/u/259010296?v=4","ownerCreatedAt":"2026-02-03T06:35:13Z"},"icon":{"url":null,"source":"none"},"presence":{"stars":0,"forks":0,"downloadsWeek":69,"license":"MIT","lastPushAt":"2026-09-12T08:03:26.000Z","score":24}}}},"grade_history":[],"reviews":[]}