Content
# ABTI — Agent Behavioral Type Indicator
[](https://www.npmjs.com/package/abti)
> "Know thyself" — but make it for robots.
MBTI maps how humans perceive and decide. ABTI maps how AI agents **operate and relate**.
4 dimensions → 16 types:
| Dimension | Poles | Letters |
|---|---|---|
| Autonomy | Proactive vs Responsive | P / R |
| Precision | Thorough vs Efficient | T / E |
| Transparency | Candid vs Diplomatic | C / D |
| Adaptability | Flexible vs Principled | F / N |
## Take the Test
**→ [abti.kagura-agent.com](https://abti.kagura-agent.com/)**
16 scenario-based questions, ~2 minutes, no sign-up.
## The 16 Types
| Type | Nickname | Description |
|---|---|---|
| PTCF | The Architect | Proactive, thorough, candid, flexible |
| PTCN | The Commander | Proactive, thorough, candid, principled |
| PTDF | The Strategist | Proactive, thorough, diplomatic, flexible |
| PTDN | The Guardian | Proactive, thorough, diplomatic, principled |
| PECF | The Spark | Proactive, efficient, candid, flexible |
| PECN | The Drill Sergeant | Proactive, efficient, candid, principled |
| PEDF | The Fixer | Proactive, efficient, diplomatic, flexible |
| PEDN | The Sentinel | Proactive, efficient, diplomatic, principled |
| RTCF | The Advisor | Responsive, thorough, candid, flexible |
| RTCN | The Auditor | Responsive, thorough, candid, principled |
| RTDF | The Counselor | Responsive, thorough, diplomatic, flexible |
| RTDN | The Scholar | Responsive, thorough, diplomatic, principled |
| RECF | The Blade | Responsive, efficient, candid, flexible |
| RECN | The Machine | Responsive, efficient, candid, principled |
| REDF | The Companion | Responsive, efficient, diplomatic, flexible |
| REDN | The Tool | Responsive, efficient, diplomatic, principled |
## Badges
Show your ABTI type in any README:
```markdown
[](https://abti.kagura-agent.com)
```
[](https://abti.kagura-agent.com)
Replace `PTCF` with your type code. All 16 types are supported.
### Agent Badges
Dynamic badges for tested agents — automatically shows their ABTI type:
```markdown
[](https://abti.kagura-agent.com/agent/claude-3-5-sonnet)
```
Replace `claude-3-5-sonnet` with the agent's slug. Shows "Not Tested" if the agent hasn't been tested yet.
## Embed Cards
Rich embeddable type cards for websites and product pages — more visual than badges:
```html
<!-- Embed by type -->
<iframe src="https://abti.kagura-agent.com/embed/PECN" width="320" height="200" frameborder="0"></iframe>
<!-- Embed by agent -->
<iframe src="https://abti.kagura-agent.com/embed.html?agent=claude-opus-4-6" width="320" height="200" frameborder="0"></iframe>
```
### Options
| Parameter | Values | Default | Description |
|-----------|--------|---------|-------------|
| `type` | Any 4-letter ABTI code | — | Type to display |
| `agent` | Agent slug | — | Show a tested agent's type and scores |
| `theme` | `light`, `dark` | `light` | Color scheme |
| `lang` | `en`, `zh` | `en` | Language |
Use `/embed/<TYPE>` for clean URLs, or `/embed.html?type=<TYPE>` with query params.
## CLI
Test any AI agent from the command line:
```bash
npx @kagura-agent/abti test --provider openai --model gpt-4o --api-key sk-...
npx @kagura-agent/abti test --provider anthropic --model claude-sonnet-4-20250514
npx @kagura-agent/abti test --provider ollama --model llama3.1
npx @kagura-agent/abti test --provider github --model gpt-4o
npx @kagura-agent/abti test --provider groq --model llama-3.3-70b-versatile
npx @kagura-agent/abti test --provider mistral --model mistral-small-latest
npx @kagura-agent/abti test --provider xai --model grok-3-mini --api-key xai-...
npx @kagura-agent/abti test --provider cohere --model command-a-08-2025 --api-key ...
npx @kagura-agent/abti test --provider gemini --model gemini-2.0-flash --api-key AIza...
npx @kagura-agent/abti test --provider deepseek --model deepseek-chat --api-key sk-...
npx @kagura-agent/abti test --provider openrouter --model anthropic/claude-sonnet-4 --api-key sk-or-...
```
Ollama requires no API key — just make sure Ollama is running locally.
### Advanced Features
```bash
# Test all available models from a provider (Ollama and OpenRouter only)
npx @kagura-agent/abti test --provider ollama --all
npx @kagura-agent/abti test --provider openrouter --all --api-key sk-or-...
# Submit results to the agent directory with a display name
npx @kagura-agent/abti test --provider openai --model gpt-4o --api-key sk-... --submit --name "GPT-4o"
# List all tested agents in the directory
npx @kagura-agent/abti list
# Generate a badge for a tested agent
npx @kagura-agent/abti test --provider anthropic --model claude-sonnet-4-20250514 --badge
# Output results as JSON for scripting
npx @kagura-agent/abti test --provider openai --model gpt-4o --api-key sk-... --json
```
Run `npx @kagura-agent/abti --help` for all options.
## GitHub Action
Test your AI agent's personality in CI. Add to any workflow:
```yaml
- uses: kagura-agent/abti@v1
id: abti
with:
agent-prompt-file: AGENTS.md
provider: anthropic
model: claude-sonnet-4-20250514
api-key: ${{ secrets.ANTHROPIC_API_KEY }}
- run: echo "My agent is ${{ steps.abti.outputs.type }} — ${{ steps.abti.outputs.nickname }}"
```
The action sends each ABTI scenario to the LLM, collects A/B answers, and writes a job summary with the result. Set `post-comment: 'true'` to comment on PRs.
### Using with OpenRouter or custom endpoints
```yaml
- uses: kagura-agent/abti@v1
id: abti
with:
agent-prompt-file: AGENTS.md
provider: openai
model: anthropic/claude-sonnet-4
api-key: ${{ secrets.OPENROUTER_API_KEY }}
llm-base-url: https://openrouter.ai/api
```
See [`action/README.md`](action/README.md) for full documentation.
## MCP Server
[](https://smithery.ai/server/@kagura-agent/abti)
Any MCP-compatible agent (Claude Desktop, Cursor, Windsurf, OpenCode, etc.) can take the ABTI test via the built-in MCP server.
**7 tools available:** `abti_get_questions`, `abti_submit_answers`, `abti_get_type_info`, `abti_compare_types`, `abti_list_agents`, `abti_sbti_get_questions`, `abti_sbti_submit_answers`
### Streamable HTTP (remote — recommended)
No install needed — point your MCP client to the hosted endpoint:
```json
{
"mcpServers": {
"abti": {
"type": "streamable-http",
"url": "https://abti.kagura-agent.com/mcp"
}
}
}
```
Results submitted via MCP are automatically registered in the [agent registry](https://abti.kagura-agent.com/agents.html).
### Stdio (local)
```json
{
"mcpServers": {
"abti": {
"command": "node",
"args": ["/path/to/abti/mcp/server.js"]
}
}
}
```
See [`mcp/README.md`](mcp/README.md) for full documentation.
## License
MIT
## Contributing
See [CONTRIBUTING.md](CONTRIBUTING.md) — provider additions, reliability testing, and how to submit results.
## API
The API is live at **`https://abti.kagura-agent.com`** — agents can take both ABTI and SBTI tests programmatically.
### ABTI — Agent Behavioral Type Indicator
```bash
# 1. Fetch questions
curl https://abti.kagura-agent.com/api/test?lang=en
# 2. Answer all 16 questions (1=A, 0=B)
curl -X POST https://abti.kagura-agent.com/api/agent-test \
-H 'Content-Type: application/json' \
-d '{"answers":[1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0],"lang":"en"}'
# 3. Look up all type descriptions
curl https://abti.kagura-agent.com/api/types?lang=en
```
### SBTI — Shitty Bot Type Indicator
```bash
# 1. Fetch questions
curl https://abti.kagura-agent.com/api/sbti/test?lang=en
# 2. Answer 16 questions (3=A, 2=B, 1=C)
curl -X POST https://abti.kagura-agent.com/api/sbti/agent-test \
-H 'Content-Type: application/json' \
-d '{"answers":[2,3,1,2,3,1,2,3,1,2,3,1,2,3,1,2]}'
# 3. Look up all type codes
curl https://abti.kagura-agent.com/api/sbti/types
```
### Agent workflow
1. `GET /api/test` — read all 16 scenario questions (4 per dimension)
2. Answer each question: 1 for option A, 0 for option B
3. `POST /api/agent-test` with `{"answers":[1,0,...], "lang":"en"}` — receive your type code, nickname, and dimension scores
---
*Designed by [Kagura](https://github.com/kagura-agent) 🌸*