@aisar-labs/zeptoclaw-sea-shared
v0.1.2
Published
Shared auth utilities for ZeptoClaw SEA MCP servers
Readme
@aisar-labs/zeptoclaw-sea-shared
Shared auth and utility package for all ZeptoClaw SEA MCP servers.
This is not an MCP server -- it is a shared library used by all @aisar-labs/*-mcp packages.
Install
npm install @aisar-labs/zeptoclaw-sea-sharedExports
Auth Helpers
basicAuthHeader(username, password)-- Build Basic auth headerapiKeyHeader(key, headerName?)-- Build API key headerOAuth2Client-- OAuth 2.0 client with token refresh
Webhook Verification
hmacSha256(secret, payload)-- Compute HMAC-SHA256verifyWebhookSignature(secret, payload, signature)-- Verify webhook HMAC signatureverifyHmacWebhook(secret, payload, signature, algorithm?)-- Verify HMAC webhook (configurable algorithm)verifyHashWebhook(payload, expectedHash, algorithm?)-- Verify hash-based webhookverifyStripeWebhook(secret, payload, signatureHeader)-- Verify Stripe webhook signatureverifyBillplzCallback(secret, params)-- Verify Billplz callbackverifyMoMoIpn(secret, params)-- Verify MoMo IPN signatureverifyQrPaymentCallback(secret, params)-- Verify QR payment callbackparseWebhookPayload(body, contentType?)-- Parse webhook body (JSON or form)
HTTP Utilities
fetchWithRetry(url, options, retryConfig?)-- Fetch with exponential backoffRateLimiter-- Token bucket rate limitercalculateBackoff(attempt, baseMs?, maxMs?)-- Calculate exponential backoff delay
MCP Helpers
toolResult(content)-- Format successful tool resulttoolError(message)-- Format tool error resultapiError(status, message)-- Create API error with status code
Usage
Auth Headers
import { basicAuthHeader, apiKeyHeader } from "@aisar-labs/zeptoclaw-sea-shared";
const headers = {
Authorization: basicAuthHeader("user", "pass"),
};
const apiHeaders = {
...apiKeyHeader("sk-abc123", "X-API-Key"),
};Webhook Verification
import { verifyWebhookSignature } from "@aisar-labs/zeptoclaw-sea-shared";
const isValid = verifyWebhookSignature(
process.env.WEBHOOK_SECRET,
rawBody,
signatureHeader
);Fetch with Retry
import { fetchWithRetry } from "@aisar-labs/zeptoclaw-sea-shared";
const response = await fetchWithRetry("https://api.example.com/data", {
headers: { Authorization: "Bearer token" },
}, { maxRetries: 3, baseDelayMs: 1000 });Tool Results
import { toolResult, toolError } from "@aisar-labs/zeptoclaw-sea-shared";
// In a tool handler
if (success) {
return toolResult({ orderId: "123", status: "created" });
} else {
return toolError("Order creation failed: insufficient stock");
}License
MIT
