ARKEN SDKs and CLI
Official clients for the ARKEN public API: search negotiation deal types and prepare unsaved drafts for human review. No API key is required. They do not send email, save workspace cases, or run model analysis.
Install version 0.1.0
These packages are available directly from usearken.com. npm and PyPI registry publication is pending; bare package names will not install until publication. The download manifest lists SHA-256 checksums and exact file sizes.
ARKEN CLI (Node.js 18 or later)
npm install -g https://usearken.com/api/downloads/usearken-cli-0.1.0.tgz
arken --help
arken deals founder
printf 'Two founders are dividing responsibilities.\n' | arken draft --context - --deal-type 'Founder breakup'
Commands print JSON to stdout; errors go to stderr with a nonzero exit code. Draft requests accept --idempotency-key; reuse the same key when retrying the same request. Network requests time out after ten seconds.
ARKEN JavaScript / TypeScript SDK (Node.js 18 or later)
npm install https://usearken.com/api/downloads/usearken-sdk-0.1.0.tgz
import {ArkenClient} from '@usearken/sdk';
const arken = new ArkenClient();
const catalog = await arken.searchDealTypes('founder');
console.log(catalog.data);
const draft = await arken.prepareCaseDraft(
{context: 'Two founders are dividing responsibilities.'},
{idempotencyKey: 'replace-with-a-unique-request-id'},
);
console.log(draft);
The SDK includes TypeScript declarations. Pass a signal to cancel a request. By default requests time out after ten seconds. ArkenApiError provides status, code, hint and retryAfter for HTTP errors; retryAfter is the server's Retry-After header. Retries are caller-controlled.
ARKEN Python SDK (Python 3.9 or later)
python -m pip install https://usearken.com/api/downloads/usearken-0.1.0-py3-none-any.whl
from usearken import ArkenClient
arken = ArkenClient()
print(arken.search_deal_types('founder')['data'])
draft = arken.prepare_case_draft(
context='Two founders are dividing responsibilities.',
idempotency_key='replace-with-a-unique-request-id',
)
print(draft)
The Python client uses the standard library, defaults to a ten-second timeout, and accepts base_url and timeout constructor options. ArkenApiError provides status, code, hint and retry_after for HTTP errors.
ARKEN Go SDK (Go 1.22 or later)
The official module is published as usearken.com/sdk/go, with source at arken-sdk-go on GitHub. The product-domain module path resolves to that repository.
go get usearken.com/sdk/[email protected]
import (
"context"
arken "usearken.com/sdk/go"
)
client, err := arken.NewClient(arken.Config{})
if err != nil { panic(err) }
catalog, err := client.SearchDealTypes(context.Background(), "founder")
if err != nil { panic(err) }
_ = catalog.Data
SearchDealTypes, BatchSearchDealTypes and PrepareCaseDraft use the public API. Every method accepts a context for cancellation. The default timeout is ten seconds; Config accepts a custom HTTPClient. APIError preserves HTTP status, code, hint and RetryAfter, including non-JSON error responses. There are no automatic retries or external Go dependencies.
API and source
The ARKEN OpenAPI contract defines request and response schemas. These small clients are maintained against that contract. API reference · Authentication · MCP · Python source archive.
Web Bot Auth identity
ARKEN publishes a Web Bot Auth key directory containing a dedicated Ed25519 public key, its thumbprint identifier, and validity dates. The directory response carries an RFC 9421 signature binding the request authority and path and a digest of the JSON response. The private key stays on the server.
This identity supports Arken-owned outbound GET clients. Directory publication does not verify incoming third-party bots, grant workspace access, or imply Cloudflare bot registration. Workspace authentication remains separate. Operators initialize each deployment once with node scripts/init_web_bot_auth.mjs; the key file is private, persists across restarts, and is valid for one year. An expired or unavailable key makes the directory return 503. Rotate the key before expiry and obtain a fresh directory response when a cached signature expires.
Trust
Every entry in the ARD catalog contains an identity, resource URL, media type, and SHA-256 digest of the exact resource response bytes. With a configured signing key the identity is did:web:usearken.com and each entry carries a detached ES256 JWS signature. Fetch the public key from the DID document over HTTPS and require that the key id is listed in assertionMethod. Never accept a key supplied by an untrusted catalog.
To verify a signature: remove signature from trustManifest, recursively sort JSON object keys lexicographically (preserve array order), serialize compact UTF-8 JSON, and base64url-encode it without padding. Reconstruct protectedHeader + '.' + encodedClaims from the detached JWS, then verify ES256 using the published P-256 key and the 64-byte IEEE P1363 signature. Also compare subject.identifier, subject.type and subject.url to the entry, require the publisher domain usearken.com, and compare subject.digest to SHA-256 of the downloaded resource. Signatures authenticate publication; they do not prove a third-party audit. Unsigned development configurations expose only a self-asserted HTTPS identity and must not be treated as signed.