Agent skill

OpenServ Agent SDK

by internet-court in internet-court/internet-court-skill

Guides building and deploying TypeScript agents on the OpenServ platform, with runnable and runless capabilities, wallet-based sign-up and a local tunnel for development.

MITAuto-check: notesAI & LLM Engineering

Install OpenServ Agent SDK

skills CLI
$ npx skills add internet-court/internet-court-skill --skill openserv-agent-sdk -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install internet-court/internet-court-skill openserv-agent-sdk --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/internet-court/internet-court-skill.git skills-src && mkdir -p .claude/skills && cp -r skills-src/vendored/openserv/openserv-agent-sdk .claude/skills/openserv-agent-sdk && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
openserv-agent-sdk
GitHub stars
6.6k
Used in
2 other repos
Token cost
~4.9k tokens
SKILL.md length
1,706 words
Files
13
Skills in repo
80
Repo updated
First seen
Licence
MIT

At a glance

Guides building and deploying TypeScript agents on the OpenServ platform, with runnable and runless capabilities, wallet-based sign-up and a local tunnel for development.

  • Works in 3 steps: Define your agent — System prompt plus… → Register with the platform — You need an… → Start the agent — Call run(agent). The…
  • Building a custom agent that runs on the OpenServ platform
  • SKILL.md covers Why build an agent?, How it works (the flow), What your agent can do and Quick Start, plus 11 more sections
  • Runs TypeScript scripts from its folder; calls npm and npx; reaches 8004scan.io; needs WALLET_PRIVATE_KEY and OPENSERV_USER_API_KEY

What it does

This skill walks the agent through building a custom agent for the OpenServ platform in TypeScript. You define a system prompt plus capabilities. A runnable capability has a Zod input schema and a run handler. A runless one is only a name and a description, and the platform makes the AI call for you. Inside a runnable capability, generate() hands an LLM call to the platform, or you can bring your own model provider, or use no LLM at all.

To go live, provision() from the companion @openserv-labs/client package creates or reuses a wallet, registers the agent and writes the API key and auth token into your environment. During development the SDK can use a built-in tunnel, so no endpoint URL is needed, and run(agent) starts listening for tasks. The folder ships example agents for error handling, file operations, task management and multiple capabilities, plus reference.md and troubleshooting.md. The skill says its sibling openserv-client skill must be read alongside it.

When your agent uses it

  • Building a custom agent that runs on the OpenServ platform
  • Adding runless or runnable capabilities to an existing OpenServ agent
  • Registering an agent with the platform and starting it locally with the built-in tunnel
  • Looking up task-handling and file-operation patterns from the bundled example agents

Example prompts

  • “Create an OpenServ agent in TypeScript with one capability that fetches a weather forecast.”
  • “Add a runless capability to my OpenServ agent that summarizes support emails.”
  • “Provision my OpenServ agent and start it using the built-in tunnel.”

Requirements

  • A TypeScript project using `@openserv-labs/sdk`
  • The companion `@openserv-labs/client` package
  • An OpenServ platform account (`provision()` can create one)

Workflow steps

3 steps, taken from the first numbered list in SKILL.md.

  1. Define your agent — System prompt plus capabilities. Capabilities come in two flavors: runnable (with a Zod schema and a run handler) and…
  2. Register with the platform — You need an account on the platform; often the easiest way is to let provision() create one for you…
  3. Start the agent — Call run(agent). The agent listens for tasks, runs your capabilities (and your LLM if you use one), and responds. Use…

What it can do on your machine

Read from SKILL.md and the folder at commit fa89195. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Ships script files (TypeScript), which the agent can run.

    Shell commands in SKILL.md call:

    • npm
    • npx

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    Hosts in commands or code, which the agent is likely to contact:

    • 8004scan.io

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names these keys or tokens, usually read from environment variables:

    • WALLET_PRIVATE_KEY
    • OPENSERV_USER_API_KEY
    • OPENAI_API_KEY
    • OPENSERV_API_KEY
    • ANTHROPIC_API_KEY
    • OPENSERV_AUTH_TOKEN

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

OpenServ Agent SDK loads about 4.9k tokens when it runs. Until then it costs about 97 tokens; SKILL.md has 1,706 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~97
When it runs · the whole SKILL.md, loaded when a task matches
~4.9k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check: notes

The automated check noted patterns worth knowing about, such as sudo or a known installer.

  • NoteMentions a .env fileSKILL.md:60
    ├── .env
  • NoteMentions a .env fileSKILL.md:76
    ### .env
  • NoteMentions a .env fileSKILL.md:337
    1. **`OPENSERV_USER_API_KEY` in `.env`** — Your `.env` file in the agent directory must contain `OPENSERV_USER_API_KEY`.
  • NoteMentions a .env fileSKILL.md:344
    1. Set OPENSERV_USER_API_KEY in .env
  • NoteMentions a .env fileSKILL.md:384
    ort 'dotenv/config'`) so you can reload `.env` after `provision()` writes `WALLET_PRIVATE_KEY`.
  • NoteMentions a .env fileSKILL.md:406
    // Reload .env to pick up WALLET_PRIVATE_KEY written by provision()

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from internet-court/internet-court-skill at commit fa89195, republished under its MIT licence (© internet-court). 1,706 words, ~4,881 tokens.

Download SKILL.mdSave it as .claude/skills/openserv-agent-sdk/SKILL.md (or your agent's skills folder). This skill also uses 12 other files; get the full folder from GitHub.
name
openserv-agent-sdk
description
Build and deploy autonomous AI agents using the OpenServ SDK (@openserv-labs/sdk). IMPORTANT - Always read the companion skill openserv-client alongside this skill, as both packages are required to build and run agents. openserv-client covers the full Platform API for multi-agent workflows and ERC-8004 on-chain identity. Read reference.md for the full API reference.

OpenServ Agent SDK

Build and deploy custom AI agents for the OpenServ platform using TypeScript.

Why build an agent?

An OpenServ agent is a service that runs your code and exposes it on the OpenServ platform—so it can be triggered by workflows, other agents, or paid calls (e.g. x402). The platform sends tasks to your agent; your agent runs your capabilities (APIs, tools, file handling) and returns results. You don't have to use an LLM—e.g. it could be a static API that just returns data. If you need LLM reasoning, you have two options: use runless capabilities (the platform handles the AI call for you—no API key needed) or use generate() (delegates the LLM call to the platform); alternatively, bring your own LLM (any provider you have access to).

How it works (the flow)

  1. Define your agent — System prompt plus capabilities. Capabilities come in two flavors: runnable (with a Zod schema and a run handler) and runless (just a name and description—the platform handles the AI call automatically). You can also use generate() inside runnable capabilities to delegate LLM calls to the platform.
  2. Register with the platform — You need an account on the platform; often the easiest way is to let provision() create one for you automatically by creating a wallet and signing up with it (that account is reused on later runs). Call provision() (from @openserv-labs/client): it creates or reuses a wallet, registers the agent, and writes API key and auth token into your env (or you pass agent.instance to bind them directly). In development you can skip setting an endpoint URL; the SDK can use a built-in tunnel to the platform.
  3. Start the agent — Call run(agent). The agent listens for tasks, runs your capabilities (and your LLM if you use one), and responds. Use reference.md and troubleshooting.md for details; examples/ has full runnable code.

What your agent can do

  • Runless Capabilities — Just a name and description. The platform handles the AI call automatically—no API key, no run() function needed. Optionally define inputSchema and outputSchema for structured I/O.
  • Runnable Capabilities — The tools your agent can run (e.g. search, transform data, call APIs). Each has a name, description, inputSchema, and run() function.
  • generate() method — Delegate LLM calls to the platform from inside any runnable capability. No API key needed—the platform performs the call and records usage. Supports text and structured output.
  • Task context — When running in a task, the agent can attach logs and uploads to that task via methods like addLogToTask() and uploadFile().
  • Multi-agent workflows — Your agent can be part of workflows with other agents; see the openserv-client skill for the Platform API, workflows, and ERC-8004 on-chain identity.

Reference: reference.md (patterns) · troubleshooting.md (common issues) · examples/ (full examples)

Quick Start

Installation
bash
npm install @openserv-labs/sdk @openserv-labs/client zod

Note: openai is only needed if you use the process() method for direct OpenAI calls. Most agents don't need it—use runless capabilities or generate() instead.

Minimal Agent

See examples/basic-agent.ts for a complete runnable example.

The pattern is simple:

  1. Create an Agent with a system prompt
  2. Add capabilities with agent.addCapability()
  3. Call provision() to register on the platform (pass agent.instance to bind credentials)
  4. Call run(agent) to start

Complete Agent Template

File Structure
my-agent/
├── src/agent.ts
├── .env
├── .gitignore
├── package.json
└── tsconfig.json
Dependencies
bash
npm init -y && npm pkg set type=module
npm i @openserv-labs/sdk @openserv-labs/client dotenv zod
npm i -D @types/node tsx typescript

Note: The project must use "type": "module" in package.json. Add a "dev": "tsx src/agent.ts" script for local development. Only install openai if you use the process() method for direct OpenAI calls.

.env

Most agents don't need any LLM API key—use runless capabilities or generate() and the platform handles LLM calls for you. If you use process() for direct OpenAI calls, set OPENAI_API_KEY. The rest is filled by provision().

env
# Only needed if you use process() for direct OpenAI calls:
# OPENAI_API_KEY=your-openai-key
# ANTHROPIC_API_KEY=your_anthropic_key  # If using Claude directly

# Required for deploy (get from OpenServ platform dashboard)
OPENSERV_USER_API_KEY=your-user-api-key

# Auto-populated by provision():
WALLET_PRIVATE_KEY=
OPENSERV_API_KEY=
OPENSERV_AUTH_TOKEN=
PORT=7378
# Production: skip tunnel and run HTTP server only
# DISABLE_TUNNEL=true
# Force tunnel even when endpointUrl is set
# FORCE_TUNNEL=true

Capabilities

Capabilities come in two flavors:

Runless capabilities don't need a run function—the platform handles the AI call automatically. Just provide a name and description:

typescript
// Simplest form — just name + description
agent.addCapability({
  name: 'generate_haiku',
  description: 'Generate a haiku poem (5-7-5 syllables) about the given input.'
})

// With custom input schema
agent.addCapability({
  name: 'translate',
  description: 'Translate text to the target language.',
  inputSchema: z.object({
    text: z.string(),
    targetLanguage: z.string()
  })
})

// With structured output
agent.addCapability({
  name: 'analyze_sentiment',
  description: 'Analyze the sentiment of the given text.',
  outputSchema: z.object({
    sentiment: z.enum(['positive', 'negative', 'neutral']),
    confidence: z.number().min(0).max(1)
  })
})
  • No run function — the platform performs the LLM call
  • No API key needed — the platform handles it
  • inputSchema is optional — defaults to z.object({ input: z.string() }) if omitted
  • outputSchema is optional — define it for structured output from the platform

See examples/haiku-poet-agent.ts for a complete runless example.

Runnable Capabilities

Runnable capabilities have a run function for custom logic. Each requires:

  • name - Unique identifier
  • description - What it does (helps AI decide when to use it)
  • inputSchema - Zod schema defining parameters
  • run - Function returning a string
typescript
agent.addCapability({
  name: 'greet',
  description: 'Greet a user by name',
  inputSchema: z.object({ name: z.string() }),
  async run({ args }) {
    return `Hello, ${args.name}!`
  }
})

See examples/capability-example.ts for basic capabilities.

Note: The schema property still works as an alias for inputSchema but is deprecated. Use inputSchema for new code.

Using Agent Methods

Access this in capabilities to use agent methods like addLogToTask(), uploadFile(), generate(), etc.

See examples/capability-with-agent-methods.ts for logging and file upload patterns.


Agent Methods

generate() — Platform-Delegated LLM Calls

The generate() method lets you make LLM calls without any API key. The platform performs the call and records usage to the workspace.

typescript
// Text generation
const poem = await this.generate({
  prompt: `Write a short poem about ${args.topic}`,
  action
})

// Structured output (returns validated object matching the schema)
const metadata = await this.generate({
  prompt: `Suggest a title and 3 tags for: ${poem}`,
  outputSchema: z.object({
    title: z.string(),
    tags: z.array(z.string()).length(3)
  }),
  action
})

// With conversation history
const followUp = await this.generate({
  prompt: 'Suggest a related topic.',
  messages,  // conversation history from run function
  action
})

Parameters:

  • prompt (string) — The prompt for the LLM
  • action (ActionSchema) — The action context (passed into your run function)
  • outputSchema (Zod schema, optional) — When provided, returns a validated structured output
  • messages (array, optional) — Conversation history for multi-turn generation

The action parameter is required because it identifies the workspace/task for billing. Use it inside runnable capabilities where action is available from the run function arguments.

Task Management
typescript
await agent.createTask({ workspaceId, assignee, description, body, input, dependencies })
await agent.updateTaskStatus({ workspaceId, taskId, status: 'in-progress' })
await agent.addLogToTask({ workspaceId, taskId, severity: 'info', type: 'text', body: '...' })
await agent.markTaskAsErrored({ workspaceId, taskId, error: 'Something went wrong' })
const task = await agent.getTaskDetail({ workspaceId, taskId })
const tasks = await agent.getTasks({ workspaceId })
File Operations
typescript
const files = await agent.getFiles({ workspaceId })
await agent.uploadFile({ workspaceId, path: 'output.txt', file: 'content', taskIds: [taskId] })
await agent.deleteFile({ workspaceId, fileId })

Action Context

The action parameter in capabilities is a union type — task only exists on the 'do-task' variant. Always narrow with a type guard before accessing action.task:

typescript
async run({ args, action }) {
  // action.task does NOT exist on all action types — you must narrow first
  if (action?.type === 'do-task' && action.task) {
    const { workspace, task } = action
    workspace.id        // Workspace ID
    workspace.goal      // Workspace goal
    task.id             // Task ID
    task.description    // Task description
    task.input          // Task input
    action.me.id        // Current agent ID
  }
}

Do not extract action?.task?.id before the type guard — TypeScript will error with Property 'task' does not exist on type 'ActionSchema'.


Workflow Name & Goal

The workflow object in provision() requires two important properties:

  • name (string) - This becomes the agent name in ERC-8004. Make it polished, punchy, and memorable — this is the public-facing brand name users see. Think product launch, not variable name. Examples: 'Crypto Alpha Scanner', 'AI Video Studio', 'Instant Blog Machine'.
  • goal (string, required) - A detailed description of what the workflow accomplishes. Must be descriptive and thorough — short or vague goals will cause API calls to fail. Write at least a full sentence explaining the workflow's purpose.
typescript
workflow: {
  name: 'Haiku Poetry Generator',  // Polished display name — the ERC-8004 agent name users see
  goal: 'Transform any theme or emotion into a beautiful traditional 5-7-5 haiku poem using AI',
  trigger: triggers.x402({ ... }),
  task: { description: 'Generate a haiku about the given topic' }
}

Trigger Types

typescript
import { triggers } from '@openserv-labs/client'

triggers.webhook({ waitForCompletion: true, timeout: 600 })
triggers.x402({ name: '...', description: '...', price: '0.01', timeout: 600 })
triggers.cron({ schedule: '0 9 * * *' })
triggers.manual()

Important: Always set timeout to at least 600 seconds (10 minutes) for webhook and x402 triggers. Agents often take significant time to process requests — especially when performing research, content generation, or other complex tasks. A low timeout will cause premature failures. For multi-agent pipelines with many sequential steps, consider 900 seconds or more.

Show full SKILL.md (662 more words)Show less

API Keys: Agent vs User

provision() creates two types of credentials. They are not interchangeable:

  • OPENSERV_API_KEY (Agent API key) — Used internally by the SDK to authenticate when receiving tasks. Set automatically by provision() when you pass agent.instance. Do not use this key with PlatformClient.
  • WALLET_PRIVATE_KEY / OPENSERV_USER_API_KEY (User credentials) — Used with PlatformClient to make management calls (list tasks, debug workflows, etc.). Authenticate with client.authenticate(walletKey) or pass apiKey to the constructor.

If you need to debug tasks or inspect workflows, use wallet authentication:

typescript
const client = new PlatformClient()
await client.authenticate(process.env.WALLET_PRIVATE_KEY)
const tasks = await client.tasks.list({ workflowId: result.workflowId })

See troubleshooting.md for details on 401 errors.


Deployment

Local Development
bash
npm run dev

The run() function automatically:

  • Starts the agent HTTP server (port 7378, with automatic fallback)
  • Connects via WebSocket to agents-proxy.openserv.ai
  • Routes platform requests to your local machine

No need for ngrok or other tunneling tools - run() handles this seamlessly. Just call run(agent) and your local agent is accessible to the platform.

Deploy to OpenServ Cloud

Deploy your agent to the OpenServ managed cloud with a single command:

bash
npx @openserv-labs/client deploy [path]

Where [path] is the directory containing your agent code (defaults to current directory).

Prerequisites
  1. OPENSERV_USER_API_KEY in .env — Your .env file in the agent directory must contain OPENSERV_USER_API_KEY. Get this from the OpenServ platform dashboard. This key is required by the deploy command (and by PlatformClient for management operations). Note that provision() itself does not need this key — it creates its own wallet, authenticates, and persists credentials to .openserv.json independently. The user API key is also saved to .openserv.json after provision if present.

  2. Call provision() first — provision() must run at least once before deploying. It registers the agent on the platform and persists credentials to .openserv.json. The recommended agent template already calls provision() before run(agent) in main(), so starting the agent locally (npm run dev or npx tsx src/agent.ts) is enough. If your code does not call provision() (e.g., you only call run(agent) in a custom script), you must add an explicit provision() call and run it once before deploying.

Deploy Workflow
text
1. Set OPENSERV_USER_API_KEY in .env
2. Call provision() during local startup (npm run dev) — registers the agent and writes .openserv.json
3. npx @openserv-labs/client deploy .
Self-Hosted Production

When deploying to a hosting provider like Cloud Run, set DISABLE_TUNNEL=true as an environment variable. This makes run() start only the HTTP server without opening a WebSocket tunnel — the platform reaches your agent directly at its public URL.

typescript
await provision({
  agent: {
    name: 'my-agent',
    description: '...',
    endpointUrl: 'https://my-agent.example.com' // Required for production
  },
  workflow: {
    name: 'Lightning Service Pro',
    goal: 'Describe in detail what this workflow does — be thorough, vague goals cause failures',
    trigger: triggers.webhook({ waitForCompletion: true, timeout: 600 }),
    task: { description: 'Process incoming requests' }
  }
})

// With DISABLE_TUNNEL=true, run() starts only the HTTP server (no tunnel)
await run(agent)

ERC-8004: On-Chain Agent Identity

After provisioning, register your agent on-chain for discoverability via the Identity Registry.

Requires ETH on Base. Registration calls register() on the ERC-8004 contract on Base mainnet (chain 8453), which costs gas. The wallet created by provision() starts with a zero balance. Fund it with a small amount of ETH on Base before the first registration attempt. The wallet address is logged during provisioning (Created new wallet: 0x...).

Always wrap in try/catch so a registration failure (e.g. unfunded wallet) doesn't prevent run(agent) from starting.

Two important patterns:

  1. Use dotenv programmatically (not import 'dotenv/config') so you can reload .env after provision() writes WALLET_PRIVATE_KEY.
  2. Call dotenv.config({ override: true }) after provision() to pick up the freshly written key before ERC-8004 registration.
typescript
import dotenv from 'dotenv'
dotenv.config()

import { Agent, run } from '@openserv-labs/sdk'
import { provision, triggers, PlatformClient } from '@openserv-labs/client'

// ... define agent and capabilities ...

const result = await provision({
  agent: { instance: agent, name: 'my-agent', description: '...' },
  workflow: {
    name: 'My Service',
    goal: 'Detailed description of what the workflow does',
    trigger: triggers.x402({ name: 'My Service', description: '...', price: '0.01', timeout: 600 }),
    task: { description: 'Process requests' }
  }
})

// Reload .env to pick up WALLET_PRIVATE_KEY written by provision()
dotenv.config({ override: true })

// Register on-chain (non-blocking — requires funded wallet on Base)
try {
  const client = new PlatformClient()
  await client.authenticate(process.env.WALLET_PRIVATE_KEY)

  const erc8004 = await client.erc8004.registerOnChain({
    workflowId: result.workflowId,
    privateKey: process.env.WALLET_PRIVATE_KEY!,
    name: 'My Service',
    description: 'What this agent does'
  })

  console.log(`Agent ID: ${erc8004.agentId}`) // "8453:42"
  console.log(`TX: ${erc8004.blockExplorerUrl}`)
  console.log(`Scan: ${erc8004.scanUrl}`) // "https://www.8004scan.io/agents/base/42"
} catch (error) {
  console.warn('ERC-8004 registration skipped:', error instanceof Error ? error.message : error)
}

await run(agent)
  • First run mints a new identity NFT. Re-runs update the URI — agent ID stays the same.
  • Never clear the wallet state unless you intentionally want a new agent ID. To update metadata, just re-run.
  • Default chain: Base mainnet (8453). Pass chainId / rpcUrl for others.

See openserv-client skill for the full ERC-8004 API reference and troubleshooting.


DO NOT USE

  • this.process() inside capabilities — Legacy method requiring an OpenAI API key. Use this.generate() instead (platform-delegated, no key needed), or use runless capabilities
  • doTask override — The SDK handles task execution automatically
  • this.completeTask() — Task completion is handled by the Runtime API

Updating This Skill

This skill may be outdated. The OpenServ team ships updates regularly—new features, API changes, and bug fixes won't be reflected here until you update. If something isn't working as expected, or you want to make sure you have the latest information, update the skill before proceeding.

bash
# Check if updates are available
npx skills check

# Update all installed skills to latest versions
npx skills update

Or reinstall the OpenServ skills directly:

bash
npx skills add openserv-labs/skills

  • openserv-client - Full Platform Client API reference
  • openserv-multi-agent-workflows - Multi-agent collaboration patterns
  • openserv-launch - Launch tokens on Base blockchain
  • openserv-ideaboard-api - Find ideas and ship agent services on the Ideaboard

© internet-court, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 12 other files in vendored/openserv/openserv-agent-sdk of internet-court/internet-court-skill.

  • SKILL.md
  • LICENSE
  • examples/basic-agent.ts
  • examples/capability-example.ts
  • examples/capability-with-agent-methods.ts
  • examples/env.example
  • examples/error-handling.ts
  • examples/file-operations.ts
  • examples/haiku-poet-agent.ts
  • examples/multiple-capabilities.ts
  • examples/task-management.ts
  • reference.md
  • troubleshooting.md

Open the folder on GitHubat commit fa89195

Used in 2 other repositories

We found 3 copies of this SKILL.md (exact, near-identical or edited) in other folders, from 2 other GitHub owners. This page covers the copy in internet-court/internet-court-skill, which our catalogue first saw on October 7, 2026.

Compare with similar skills

OpenServ Agent SDK next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

OpenServ Agent SDK compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
OpenServ Agent SDK this skillinternet-court/internet-court-skill6.6k2 repos~4.9kAutomated safety check: NotesMIT
LangChain Agent Fundamentalslangchain-ai/langchain-skills1.3k—~3.1kAutomated safety check: PassMIT
Langchain Middlewarelangchain-ai/langchain-skills1.3k—~2.7kAutomated safety check: PassMIT
Trigger.dev Agent Patternspapermark/papermark9.2k—~2kAutomated safety check: PassCustom licence
Routerbase API Integrationaiskillstore/marketplace433—~964Automated safety check: PassNone
OpenAPI to MCP Servermcp-use/mcp-use11k—~5.2kAutomated safety check: PassApache-2.0

Similar skills

  • LangChain Agent Fundamentals

    langchain-ai/langchain-skills

    Official

    Shows how to build LangChain agents with create_agent, define tools, add a checkpointer and use middleware for human approval and error handling, in Python and TypeScript.

    1.3k GitHub stars~3.1k tokensUpdated yesterday
    AI & LLM EngineeringAuto-check passed
  • Langchain Middleware

    langchain-ai/langchain-skills

    Official

    INVOKE THIS SKILL when you need human-in-the-loop approval, custom middleware, or structured output.

    1.3k GitHub stars~2.7k tokensUpdated yesterday
    AI & LLM EngineeringAuto-check passed
  • Trigger.dev Agent Patterns

    papermark/papermark

    Patterns for building LLM agents on Trigger.dev tasks: prompt chaining, routing, parallel workers, orchestrator-workers, evaluator loops and human approval gates.

    9.2k GitHub stars~2k tokensUpdated 1 mo ago
    AI & LLM EngineeringAuto-check passed
  • Routerbase API Integration

    aiskillstore/marketplace

    Integrate applications with RouterBase, the OpenAI-compatible model gateway at https://routerbase.com/v1.

    433 GitHub stars~964 tokensUpdated today
    AI & LLM EngineeringAuto-check passed
  • OpenAPI to MCP Server

    mcp-use/mcp-use

    Turns an OpenAPI or Swagger spec into an MCP server with the mcp-use TypeScript SDK, mapping each operation to a tool, wiring auth, testing and deploying.

    11k GitHub stars~5.2k tokensUpdated yesterday
    Backend & APIsAuto-check passed
  • Add Example Agent

    GetBindu/Bindu

    Add a new self-contained example agent under examples/. An agent skill from GetBindu/Bindu.

    10k GitHub stars~1.1k tokensUpdated 1 mo ago
    AI & LLM EngineeringAuto-check: notes

More from internet-court/internet-court-skill

All 80 skills in this repo
  • Kleros IPFS Upload

    internet-court/internet-court-skill

    Uploads one Kleros-related file per paid request to IPFS through the Kleros x402 gateway for 0.01 USDC on Base, returning a CID that Kleros contracts can reference.

    6.6k GitHub stars~4.9k tokensUpdated 1 mo ago
    Auto-check: notes
  • 0G Compute Network Guide

    internet-court/internet-court-skill

    Guides building on the 0G Compute Network, a decentralized GPU marketplace for AI inference and fine-tuning, with SDK patterns and CLI commands.

    6.6k GitHub starsUsed in 1 repo~1.9k tokens
    Auto-check passed
  • PNP Prediction Markets on Solana

    internet-court/internet-court-skill

    Creates, trades and settles permissionless prediction markets on Solana with any SPL token as collateral, including social-media and custom-oracle markets.

    6.6k GitHub stars~7.5k tokensUpdated 1 mo ago
    Auto-check: notes
  • BNB Chain MCP Server

    internet-court/internet-court-skill

    Connects an agent to the BNB Chain MCP server to read blocks and contracts, move tokens and NFTs, register ERC-8004 agents and use Greenfield storage.

    6.6k GitHub starsUsed in 1 repo~1.7k tokens
    Auto-check passed
  • GenLayer ERC-7710 Connector

    internet-court/internet-court-skill

    Specifies how a GenLayer Intelligent Contract decision about an agent's performance becomes an ERC-7710 revocation or policy change, through a relayer or bridge and an EVM controller.

    6.6k GitHub starsUsed in 1 repo~2.2k tokens
    Auto-check passed
  • GenLayer Agent Supervision Adapter

    internet-court/internet-court-skill

    Specifies how a GenLayer Intelligent Contract should supervise an AI agent, with review rubrics, evidence schemas and continue, warn, constrain or revoke decisions.

    6.6k GitHub starsUsed in 1 repo~1.8k tokens
    Auto-check passed

Works with

Questions about OpenServ Agent SDK

What does OpenServ Agent SDK do?

Guides building and deploying TypeScript agents on the OpenServ platform, with runnable and runless capabilities, wallet-based sign-up and a local tunnel for development. This skill walks the agent through building a custom agent for the OpenServ platform in TypeScript. You define a system prompt plus capabilities.

When should I use OpenServ Agent SDK?

OpenServ Agent SDK fits situations like: building a custom agent that runs on the OpenServ platform; adding runless or runnable capabilities to an existing OpenServ agent; registering an agent with the platform and starting it locally with the built-in tunnel; looking up task-handling and file-operation patterns from the bundled example agents.

How do I install OpenServ Agent SDK in Claude Code?

Run `npx skills add internet-court/internet-court-skill --skill openserv-agent-sdk -a claude-code`. Or copy the skill folder (vendored/openserv/openserv-agent-sdk in internet-court/internet-court-skill) into .claude/skills/openserv-agent-sdk in your project. Claude Code loads it when a task matches its description.

How do I install OpenServ Agent SDK in Codex?

Run `npx skills add internet-court/internet-court-skill --skill openserv-agent-sdk -a codex`. Or copy the skill folder (vendored/openserv/openserv-agent-sdk in internet-court/internet-court-skill) into .agents/skills/openserv-agent-sdk in your project. Codex loads it when a task matches its description.

Can I use OpenServ Agent SDK in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add internet-court/internet-court-skill --skill openserv-agent-sdk -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/openserv-agent-sdk, .gemini/skills/openserv-agent-sdk, .github/skills/openserv-agent-sdk and .opencode/skills/openserv-agent-sdk in your project.

What does OpenServ Agent SDK need to run?

Going by SKILL.md and its folder, OpenServ Agent SDK needs TypeScript for the scripts in its folder, the command-line tools its instructions call (npm and npx) and credentials named WALLET_PRIVATE_KEY, OPENSERV_USER_API_KEY, OPENAI_API_KEY and OPENSERV_API_KEY. Our summary lists: A TypeScript project using `@openserv-labs/sdk`; The companion `@openserv-labs/client` package; An OpenServ platform account (`provision()` can create one).

Does OpenServ Agent SDK access the network?

SKILL.md names 1 domain. In commands or code: 8004scan.io; the agent is likely to contact it when it follows the instructions. This is read from the text; nothing was executed.

Is OpenServ Agent SDK safe to install?

Our automated static check of SKILL.md found notes only (mentions a .env file), nothing it rates as a warning. It is not a guarantee. Review the folder before installing.

What licence does OpenServ Agent SDK use?

OpenServ Agent SDK is published under the MIT licence (from the LICENSE file in the skill folder). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does OpenServ Agent SDK use?

About 4.9k tokens (SKILL.md is roughly 20k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to OpenServ Agent SDK?

Skills that share tags, products or a category with OpenServ Agent SDK: LangChain Agent Fundamentals (langchain-ai/langchain-skills, 1.3k stars), Langchain Middleware (langchain-ai/langchain-skills, 1.3k stars), Trigger.dev Agent Patterns (papermark/papermark, 9.2k stars) and Routerbase API Integration (aiskillstore/marketplace, 433 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains OpenServ Agent SDK?

internet-court (a GitHub organization) maintains it in internet-court/internet-court-skill, which has 6,551 GitHub stars. The repository holds 80 skills in this directory. The repository was last updated on August 19, 2026.

Source: internet-court/internet-court-skill on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.