Package Information
Available Nodes
Documentation
@layer7/n8n-tanss-api
Modular, reusable MCP-compatible TANSS API tool for n8n AI Agent with comprehensive German UI support.
Overview
This tool provides a complete integration of the TANSS API for n8n AI Agents, enabling professional automation and intelligent ticket management. Built with MCP (Model Context Protocol) compatibility, it offers dynamic command discovery, comprehensive error handling, and seamless AI agent integration.
Features
🤖 AI Agent Integration
- MCP-compatible: Full Model Context Protocol support for AI agents
- Dynamic command discovery: Automatic endpoint detection from OpenAPI specification
- Context-aware suggestions: AI agents can suggest relevant actions based on current context
- Introspectable schemas: Machine-readable command and parameter schemas
- Agent-friendly naming: Commands follow
tanss.{resource}.{operation}
pattern
🔧 Core Capabilities
- Complete API coverage: All TANSS API endpoints supported
- Resource modules: Tickets, companies, employees, devices, contracts, and more
- Authentication: Bearer token and username/password support
- Parameter validation: OpenAPI schema-based validation
- Error handling: Comprehensive 4xx/5xx, network, and parsing error handling
- Optional parameters: Filter, pagination, sorting, field selection
🛠️ Usage Modes
- CLI mode: Manual debugging and testing
- n8n GUI: Visual configuration in n8n interface
- Direct embedding: Agent-prompt integration
- MCP server: Standalone MCP server for AI agents
Installation
npm install @layer7/n8n-tanss-api
Quick Start
AI Agent Usage
// Direct agent integration
const result = await agent.call('tanss.tickets.list', {
status: 'open',
limit: 10
});
// Create a new ticket
await agent.call('tanss.tickets.create', {
title: 'System Issue',
description: 'Server not responding',
priority: 'high'
});
// Search companies
const companies = await agent.call('tanss.companies.list', {
search: 'Acme Corp'
});
CLI Usage
# List available commands
tanss-cli list-commands
# Execute a command
tanss-cli call tanss.tickets.list --params '{"status":"open"}'
# Get command schema
tanss-cli schema tanss.tickets.create
# Test connection
tanss-cli test --url https://your-tanss.com --token your-token
# Interactive mode
tanss-cli interactive
n8n Configuration
Add Credentials:
- Go to n8n Credentials
- Add "TANSS API" credential
- Configure:
- Server URL:
https://your-tanss-server.com
- Authentication: Bearer Token or Username/Password
- Token/Credentials: Your TANSS API credentials
- Server URL:
Use in Workflows:
- Add "TANSS AI Agent" node
- Select your credential
- Choose operation (List Tickets, Create Company, etc.)
- Configure parameters
MCP Server
# Start MCP server
npm run mcp:server
# Or programmatically
import { TanssMCPServer } from '@layer7/n8n-tanss-api';
const server = new TanssMCPServer({
url: 'https://your-tanss.com',
token: 'your-token'
});
await server.start();
API Reference
Available Resources
Tickets
tanss.tickets.list
- List tickets with filteringtanss.tickets.get
- Get ticket by IDtanss.tickets.create
- Create new tickettanss.tickets.update
- Update existing tickettanss.tickets.delete
- Delete ticket
Companies
tanss.companies.list
- List companiestanss.companies.get
- Get company by IDtanss.companies.create
- Create new companytanss.companies.update
- Update companytanss.companies.delete
- Delete company
Employees
tanss.employees.list
- List employeestanss.employees.get
- Get employee by IDtanss.employees.create
- Create new employeetanss.employees.update
- Update employeetanss.employees.delete
- Delete employee
Devices
tanss.devices.list
- List devicestanss.devices.get
- Get device by IDtanss.devices.create
- Create new devicetanss.devices.update
- Update devicetanss.devices.delete
- Delete device
Contracts
tanss.contracts.list
- List contractstanss.contracts.get
- Get contract by IDtanss.contracts.create
- Create new contracttanss.contracts.update
- Update contracttanss.contracts.delete
- Delete contract
Command Parameters
All commands support standard parameters:
interface BaseParameters {
// Pagination
limit?: number;
offset?: number;
// Filtering
filter?: Record<string, any>;
search?: string;
// Field selection
fields?: string[];
// Sorting
sort?: string;
order?: 'asc' | 'desc';
}
Example Schemas
List Tickets
{
"name": "tanss.tickets.list",
"description": "List tickets with optional filtering and pagination",
"inputSchema": {
"type": "object",
"properties": {
"status": {
"type": "string",
"description": "Filter by ticket status",
"enum": ["open", "closed", "pending"]
},
"priority": {
"type": "string",
"description": "Filter by priority level",
"enum": ["low", "medium", "high", "urgent"]
},
"limit": {
"type": "number",
"description": "Maximum number of results",
"default": 50
},
"offset": {
"type": "number",
"description": "Number of results to skip",
"default": 0
}
}
}
}
Create Ticket
{
"name": "tanss.tickets.create",
"description": "Create a new support ticket",
"inputSchema": {
"type": "object",
"properties": {
"title": {
"type": "string",
"description": "Ticket title",
"required": true
},
"description": {
"type": "string",
"description": "Detailed description of the issue",
"required": true
},
"priority": {
"type": "string",
"description": "Priority level",
"enum": ["low", "medium", "high", "urgent"],
"default": "medium"
},
"companyId": {
"type": "number",
"description": "ID of the company this ticket belongs to"
}
},
"required": ["title", "description"]
}
}
Configuration
Environment Variables
# TANSS Server Configuration
TANSS_URL=https://your-tanss-server.com
TANSS_TOKEN=your-bearer-token
# Alternative: Username/Password
TANSS_USERNAME=your-username
TANSS_PASSWORD=your-password
# Optional: Advanced Configuration
TANSS_TIMEOUT=30000
TANSS_RETRY_ATTEMPTS=3
TANSS_DEBUG=true
Configuration File
Create tanss.config.json
:
{
"url": "https://your-tanss-server.com",
"auth": {
"type": "token",
"token": "your-bearer-token"
},
"options": {
"timeout": 30000,
"retryAttempts": 3,
"debug": false
}
}
AI Agent Examples
Ticket Management Workflow
// AI Agent can automatically handle ticket workflows
async function handleCustomerIssue(customerEmail, issueDescription) {
// 1. Find customer company
const companies = await agent.call('tanss.companies.list', {
search: customerEmail.split('@')[1]
});
if (companies.length === 0) {
// 2. Create new company if not found
const company = await agent.call('tanss.companies.create', {
name: customerEmail.split('@')[1],
email: customerEmail
});
}
// 3. Create ticket
const ticket = await agent.call('tanss.tickets.create', {
title: 'Customer Issue',
description: issueDescription,
companyId: companies[0]?.id || company.id,
priority: 'medium'
});
return ticket;
}
Automated Reporting
// Generate daily ticket report
async function generateDailyReport() {
const openTickets = await agent.call('tanss.tickets.list', {
status: 'open'
});
const urgentTickets = await agent.call('tanss.tickets.list', {
status: 'open',
priority: 'urgent'
});
return {
totalOpen: openTickets.length,
urgent: urgentTickets.length,
tickets: urgentTickets
};
}
Context-Aware Suggestions
The AI agent can suggest relevant actions based on context:
// Agent automatically suggests relevant commands
const suggestions = await agent.suggestActions({
hasOpenTickets: true,
ticketManagement: true,
companyManagement: false
});
// Returns: ['tanss.tickets.list', 'tanss.tickets.create']
Error Handling
The tool provides comprehensive error handling:
try {
const result = await agent.call('tanss.tickets.create', {
title: 'Test Ticket'
// Missing required 'description' field
});
} catch (error) {
if (error.type === 'validation') {
console.log('Validation errors:', error.errors);
// ['Missing required parameter: description']
} else if (error.type === 'network') {
console.log('Network error:', error.message);
} else if (error.type === 'api') {
console.log('API error:', error.status, error.message);
}
}
TypeScript Support
Complete TypeScript definitions are included:
import { TanssAPI, TicketCreateParams, TicketListParams } from '@layer7/n8n-tanss-api';
interface TicketCreateParams {
title: string;
description: string;
priority?: 'low' | 'medium' | 'high' | 'urgent';
companyId?: number;
assigneeId?: number;
dueDate?: string;
tags?: string[];
}
interface TicketListParams extends BaseListParams {
status?: 'open' | 'closed' | 'pending';
priority?: 'low' | 'medium' | 'high' | 'urgent';
assigneeId?: number;
companyId?: number;
createdAfter?: string;
createdBefore?: string;
}
// Usage with full type safety
const api = new TanssAPI({
url: 'https://your-tanss.com',
token: 'your-token'
});
const tickets: Ticket[] = await api.tickets.list({
status: 'open',
limit: 50
});
Versioning & API Coverage
Endpoint Coverage Matrix
The tool provides 100% coverage of the TANSS API specification:
Resource | List | Get | Create | Update | Delete | Coverage |
---|---|---|---|---|---|---|
Tickets | ✅ | ✅ | ✅ | ✅ | ✅ | 100% |
Companies | ✅ | ✅ | ✅ | ✅ | ✅ | 100% |
Employees | ✅ | ✅ | ✅ | ✅ | ✅ | 100% |
Devices | ✅ | ✅ | ✅ | ✅ | ✅ | 100% |
Contracts | ✅ | ✅ | ✅ | ✅ | ✅ | 100% |
Time Entries | ✅ | ✅ | ✅ | ✅ | ✅ | 100% |
Departments | ✅ | ✅ | ✅ | ✅ | ✅ | 100% |
Command Schema Export
All commands are exported in command.schema.json
for AI autocompletion:
{
"tanss.tickets.list": {
"name": "tanss.tickets.list",
"description": "List tickets with filtering and pagination",
"category": "tickets",
"resource": "tickets",
"operation": "list",
"method": "GET",
"path": "/tickets",
"inputSchema": { ... },
"outputSchema": { ... }
}
}
Development
Building from Source
# Clone repository
git clone https://github.com/julez4125/tanss-n8n-mcp-tool.git
cd tanss-n8n-mcp-tool
# Install dependencies
pnpm install
# Build project
pnpm build
# Run tests
pnpm test
# Start development server
pnpm dev
Adding New Endpoints
The tool automatically discovers new endpoints from the OpenAPI specification:
- Update the OpenAPI spec file
- Restart the tool
- New commands are automatically available
Custom Resource Modules
import { BaseResource } from '@layer7/n8n-tanss-api';
export class CustomResource extends BaseResource {
async customOperation(params: any) {
return this.request('GET', '/custom/endpoint', params);
}
}
Contributing
- Fork the repository
- Create a feature branch
- Make your changes
- Add tests
- Submit a pull request
License
MIT License - see LICENSE file for details.
Support
- Documentation: GitHub Wiki
- Issues: GitHub Issues
- Discussions: GitHub Discussions
Changelog
v1.0.0
- Initial release
- Complete TANSS API integration
- MCP compatibility
- AI agent support
- CLI interface
- n8n GUI integration
- Comprehensive error handling
- Dynamic command discovery
- OpenAPI-based validation
Made with ❤️ for the n8n and AI automation community