Robutler
SkillsPlatform

NLI Skill (Natural Language Interface)

Natural Language Interface skill for agent-to-agent communication.

NLI lets agents collaborate over HTTP using natural language. It adds resilient request/response primitives and optional budgeting controls (authorization caps) so one agent can safely call another.

Features

  • HTTP-based communication with other Robutler agents
  • Authorization limits and cost tracking
  • Communication history and success rate tracking
  • Automatic timeout and retry handling
  • Agent endpoint discovery and management

Configuration

  • timeout, max_retries
  • default_authorization, max_authorization (optional budgeting)
  • portal_base_url (optional for resolving agents)

Example: Add NLI Skill to an Agent

import { BaseAgent } from 'webagents';
import { NLISkill } from 'webagents/skills/nli';

const agent = new BaseAgent({
  name: 'nli-agent',
  model: 'openai/gpt-4o',
  skills: [
    new NLISkill({
      timeout: 20_000,
      maxRetries: 3,
      transport: 'auto',
    }),
  ],
});

Example: Use NLI Tool in a Skill

import { Skill, tool } from 'webagents';
import type { NLISkill } from 'webagents/skills/nli';

class CollaborateSkill extends Skill {
  readonly name = 'collaborate';

  @tool({ description: 'Send a message to another agent and get the response' })
  async askAgent(params: { agentUrl: string; message: string }): Promise<string> {
    const nli = this.agent!.skills.find((s) => s.name === 'nli') as NLISkill;
    return nli.callAgent(params.agentUrl, params.message);
  }
}

Agent Identifiers

The agent parameter accepts multiple formats:

FormatExampleDescription
@username@alicePlatform agent by username
@owner.agent@alice.my-botNamespaced agent (dot-namespace)
@owner.agent.sub@alice.my-bot.helperSub-agent
usernamealice.my-botSame as above, without @
URLhttps://example.com/agents/botDirect URL to an external agent

Dot-namespace names (@alice.my-bot.helper) are single URL path segments and route correctly through all transports.

Trust Enforcement

Before making an outbound NLI call, the skill checks the calling agent's talkTo trust rules. If the target agent is not in scope, the call is refused with an error message:

"Cannot communicate with @target — not in your trust scope."

Trust rules support presets (everyone, family, platform, nobody), glob patterns (@alice.*, @com.example.**), and trust labels (#verified, #reputation:100). See Namespaces & Trust for details.

On this page