@huddle-marketplace/skills
v0.3.1
Published
63-jurisdiction rental compliance skills for autonomous AI agents. OpenClaw, MCP, LangChain, and CrewAI compatible.
Maintainers
Readme
@huddle-marketplace/skills
63-jurisdiction rental compliance skills for autonomous AI agents.
Validates security deposits, rent payments, late fees, and deposit returns against real statutes across 50 US states, 13 Canadian provinces, and federal overlays. OpenClaw, MCP, LangChain, and CrewAI compatible.
Compliance source status: this package is being prepared for enterprise MCP/CLI exposure. Public-facing outputs must distinguish source-backed legal rules from Huddle platform policy and operational controls. Federal overlay and virtual-currency classification claims require counsel review before external reliance. See
huddle-marketplace/docs/strategy/COMPLIANCE_CLAIM_REMEDIATION_BACKLOG.md.
npm install @huddle-marketplace/skillsAgent Discovery
Give an autonomous agent the canonical skill URL:
https://weusehuddle.com/api/agent/skillThe public discovery manifest is available at https://weusehuddle.com/api/agent/manifest. npm installs also include strict, installable skill folders under node_modules/@huddle-marketplace/skills/dist/skills/, including dist/skills/huddle/SKILL.md and one folder per jurisdiction or lifecycle skill.
Agent Platform Contract
The Huddle Skill is MCP-first and adapter-neutral. OpenClaw, Hermes, Codex, Claude, Grok, Gemini, and custom enterprise agents should all consume the same canonical tool manifest instead of maintaining separate hand-written tool lists.
import {
buildAllHuddleAgentAdapterExamples,
buildHuddleAgentAdapterExample,
buildHuddleAgentDiscoveryManifest,
listHuddleAgentToolsForPlatform,
} from "@huddle-marketplace/skills/manifests";
const discovery = buildHuddleAgentDiscoveryManifest({
baseUrl: "https://www.weusehuddle.com",
});
const claudeTools = listHuddleAgentToolsForPlatform("claude");
console.log(discovery.hostedMcpEndpoint);
console.log(claudeTools.map((tool) => tool.canonicalId));
const codexExample = buildHuddleAgentAdapterExample("codex", {
baseUrl: "https://www.weusehuddle.com",
});
const allExamples = buildAllHuddleAgentAdapterExamples();
console.log(codexExample.files.map((file) => file.path));
console.log(allExamples.map((example) => example.platformId));| Platform | Primary interface | Notes |
|---|---|---|
| OpenClaw | Generated SKILL.md + hosted MCP | Use local skill manifests for jurisdiction checks and hosted MCP for Enterprise Agent tools. |
| Hermes | Hosted MCP | Treat Hermes as MCP-first with REST fallback generated from the manifest. |
| Codex | Hosted MCP / CLI / TypeScript | Use MCP for live sessions and the CLI for deterministic smoke checks. |
| Claude | Hosted MCP / package MCP | Use server-side Enterprise Agent token injection. |
| Grok | Hosted MCP / REST | Generate wrappers from canonical MCP tool names and REST paths. |
| Gemini | Hosted MCP / REST function declarations | Preserve trustBoundary text in generated function docs. |
Every platform inherits the same boundaries: agents can validate, retrieve redacted proofs, inspect audit logs, and create draft activation handoffs. They cannot autonomously approve, mint, settle, move funds, upload production evidence, post to ERP systems, or bypass human identity verification and final confirmation.
Generated adapter examples include:
- OpenClaw
SKILL.mdplus JSON manifest. - Hermes hosted MCP config.
- Codex MCP config and CLI smoke script.
- Claude Desktop MCP config.
- Grok REST function declarations.
- Gemini function declarations.
- Custom TypeScript client bootstrap.
Each example carries the canonical tool ids, MCP names, REST paths, required scopes, redaction profile, HITL metadata, and trust-boundary text from HUDDLE_AGENT_TOOLS.
Quick Start
import { validate, composeSkills, registry } from "@huddle-marketplace/skills";
// Single jurisdiction — wBTC bond in Texas
const result = await validate("US-TX", {
type: "deposit-validation",
depositAmountCents: 200000, // $2,000 — always in CENTS
monthlyRentCents: 200000, // $2,000
currency: "USDC",
collateralType: "wbtc",
instrumentType: "collateralized_lease_guarantee",
});
console.log(result.compliant); // true
console.log(result.confidence); // 0.9
console.log(result.citations); // Source-backed citations where available
// Stacked validation - federal overlay + state rules
const composed = await composeSkills(["US-CFTC", "US-TX"], {
type: "deposit-validation",
depositAmountCents: 200000,
monthlyRentCents: 200000,
currency: "USDC",
collateralType: "wbtc",
instrumentType: "collateralized_lease_guarantee",
wbtcUsdcRatio: 1.05,
custodyType: "smart_contract",
sentinelMonitoring: true,
sentinelMode: "CO_PILOT",
lastSentinelCheckMs: Date.now() - 60000,
auditLogEnabled: true,
lastDecisionReasoning: "LTV nominal",
});
console.log(composed.compliant); // true
console.log(composed.layers.length); // 2
console.log(composed.checks[0].name); // "[US-CFTC] federal-overlay"
console.log(composed.citations.length); // merged + deduplicatedAPI Reference
validate(jurisdiction, input)
Run a single jurisdiction's skill against the input.
const result = await validate("US-CA", input);
// result: SkillResultcomposeSkills(jurisdictions, input, options?)
Stack multiple jurisdictions into one layered compliance proof. Layers run in parallel.
const result = await composeSkills(["US-CFTC", "US-IL"], input);
// result: ComposedResult — { compliant, confidence, layers[], checks[], citations[], remediation[] }
// Advisory mode: only US-CFTC determines overall compliance
const result = await composeSkills(["US-CFTC", "US-TX"], input, {
mode: "advisory",
criticalJurisdictions: ["US-CFTC"],
});registry
Pre-loaded registry with all 64 jurisdictions.
registry.get("US-TX") // HuddleSkill | undefined
registry.jurisdictions() // JurisdictionCode[]
registry.isSupported("US-TX") // boolean
registry.search(["deposit-validation"]) // HuddleSkill[]explain(jurisdiction, result)
Human-readable explanation of a validation result.
const text = explain("US-TX", result);
// "This transaction passes the currently enabled Texas checks (confidence: 90%)..."Jurisdictions
US States (50)
| Tier | States | Capabilities | |---|---|---| | Tier 1 — Full statute logic | TX, FL, CA, NY | deposit-validation, deposit-return, reviewed federal overlays | | Tier 2 — Real rules | IL, WA, CO, MA, PA, OH, GA, NC, VA, MI | deposit-validation, payment-compliance, deposit-return, deposit-interest | | Tier 3 — Capped states | 26 states with statutory caps | deposit-validation, source-backed local rules | | Tier 4 — No-cap states | Remaining states | deposit-validation, source-backed local rules |
Canadian Provinces (13)
| Tier | Provinces | |---|---| | Full statute | BC, ON, QC (bilingual), NS | | Template | AB, MB, SK, NB, PE, NL, NT, YT, NU |
Federal Overlays
| Code | Coverage |
|---|---|
| US-CFTC | Federal overlay checks under counsel review: digital-asset custody posture, reserve controls, Sentinel monitoring, and audit logging |
| CA-QC | CCQ art. 1904 deposit prohibition, TAL jurisdiction, bilingual FR/EN citations |
Web3-Native Features
wBTC Bond Recognition
When collateralType: "wbtc" is set, skills recognize that HuddleDepositVaultV3's on-chain Golden Rule (wBTC value ≥ original principal, enforced by Solidity) structurally satisfies — and exceeds — statutory interest requirements:
// IL requires 5% annual interest on deposits
// wBTC bond → interest check returns confidence: 0.98 (higher than legacy 0.75)
const result = await validate("US-IL", {
type: "deposit-validation",
collateralType: "wbtc", // ← Web3 path
...
});
// check "deposit-interest-requirement": passed: true, confidence: 0.98
// note: "SATISFIED: wBTC bond appreciation via HuddleDepositVaultV3 structurally exceeds..."Composition Engine
Federal overlay + state validation in one call:
const result = await composeSkills(["US-CFTC", "US-TX", "US-IL"], input);
// Runs all 3 in parallel, merges checks, deduplicates citationsFramework Adapters
MCP (Model Context Protocol)
import { getMCPToolDefinitions, handleMCPRequest } from "@huddle-marketplace/skills/mcp";
const tools = getMCPToolDefinitions(); // Ready for Claude Desktop
const response = await handleMCPRequest(mcpRequest, registry);The MCP adapter also includes REST-backed Enterprise Agent API tools for the commercial bond and draft activation surface:
huddle_enterprise_list_toolshuddle_enterprise_validate_deposit_termshuddle_enterprise_initiate_activationhuddle_enterprise_get_commercial_bond_statushuddle_enterprise_get_compliance_packethuddle_enterprise_get_principal_protection_proofhuddle_enterprise_get_evidence_documentshuddle_enterprise_get_audit_eventshuddle_enterprise_get_erp_export
Pass server-side Enterprise Agent API credentials when handling MCP requests:
const response = await handleMCPRequest(mcpRequest, registry, {
enterpriseAgent: {
apiUrl: "https://www.weusehuddle.com",
token: process.env.HUDDLE_ENTERPRISE_AGENT_API_TOKEN!,
},
});These tools call the audited REST API and inherit its scopes, workspace
allowlists, redaction profiles, and review boundaries. huddle_enterprise_initiate_activation
is draft-only: it returns a human handoff URL and does not approve, mint, settle,
move funds, upload evidence, or complete activation.
Enterprise Agent TypeScript Client
import { HuddleClient } from "@huddle-marketplace/skills";
const huddle = new HuddleClient({
apiUrl: "https://www.weusehuddle.com",
token: process.env.HUDDLE_ENTERPRISE_AGENT_API_TOKEN!,
});
await huddle.validateDepositTerms({
jurisdiction: "US-TX",
depositAmountCents: 240000,
monthlyRentCents: 240000,
});
const draft = await huddle.initiateActivation({
jurisdiction: "US-TX",
depositAmountCents: 240000,
monthlyRentCents: 240000,
invitationCode: "LANDLORD-ABC123",
});
console.log(draft.handoffUrl);OpenClaw
import { toOpenClawSkill } from "@huddle-marketplace/skills/openclaw";
const openClawTool = toOpenClawSkill(usTxSkill);LangChain
import { registry } from "@huddle-marketplace/skills/langchain";
// DynamicStructuredTool instances for every jurisdictionTRAIGA Audit Logging
import { withTraiga, ConsoleTraigaAdapter } from "@huddle-marketplace/skills/traiga";
const auditedSkill = withTraiga(usTxSkill, new ConsoleTraigaAdapter());
// Every validation is logged with inputHash, outputHash, decision, confidenceInput Types
All monetary amounts are in cents (integer).
// Deposit validation
{ type: "deposit-validation", depositAmountCents, monthlyRentCents, currency, ... }
// Payment compliance
{ type: "payment-compliance", paymentAmountCents, monthlyRentCents, dueDate, paymentDate, ... }
// Rent increase
{ type: "rent-increase-validation", currentRentCents, proposedRentCents, noticeDateDays, ... }
// Deposit return
{ type: "deposit-return", originalDepositCents, proposedReturnCents, leaseEndDate, returnDate, ... }
// Homeownership readiness
{ type: "homeownership-readiness", annualIncomeCents, monthlyDebtCents, creditScore, ... }Publishing (Maintainers)
The CI/CD pipeline automatically publishes to npm when a commit on main starts with release:.
Steps
- Bump version in package.json
- Run prepublish gate locally:
npm run prepublishOnly # lint + test (146 tests) + build - Commit and push:
git add packages/huddle-skills/ git commit -m "release: v0.2.0" git push origin main - GitHub Actions triggers
.github/workflows/huddle-skills-ci.yml:testjob: lint → 146 tests → build → verify distpublishjob (only onrelease:prefix +NPM_TOKENsecret):npm publish --access public
Required GitHub Secret
NPM_TOKEN — create at npmjs.com/settings/tokens (Automation token, read+write), add to repo secrets at Settings → Secrets → Actions.
Package Size Budget
Target: < 500KB, tree-shakeable per jurisdiction via named exports.
License
MIT — see LICENSE
Built by Huddle Protocol
