Skip to main content
Glama

A production-grade Model Context Protocol server that connects Claude (or any MCP client) to SAP SuccessFactors via OData APIs. Query employee data, manage permissions, run compliance reports, and administer HR operations — all through natural language.

You: "Who on the Engineering team has a work anniversary this month?"

Claude: [calls get_anniversary_employees] Found 3 upcoming anniversaries...
         - Jane Smith (5 years - milestone!) - March 12
         - Bob Johnson (2 years) - March 18
         - Alice Chen (10 years - milestone!) - March 25

Why SF-MCP?

Challenge

SF-MCP Solution

SAP SuccessFactors APIs are complex and verbose

62 purpose-built tools with clean interfaces

Building OData queries requires deep SF knowledge

Natural language — ask Claude in plain English

Security concerns with API access

Per-request auth, input validation, audit logging

Managing multiple SF instances

21 data centers supported, cross-instance comparison

API rate limits and performance

Connection pooling, response caching, rate limiting

Related MCP server: Joule HR MCP Server

Tools

62 tools organized across 16 categories:

Tool

Description

get_configuration

Retrieve OData metadata for any entity

list_entities

Discover all available OData entities

compare_configurations

Compare entity config between two instances

Tool

Description

get_rbp_roles

List all Role-Based Permission roles

get_role_permissions

Get permissions for specific roles

get_user_permissions

Get all permissions for a user

get_user_roles

Get roles assigned to a user

get_permission_metadata

Map UI labels to permission types

check_user_permission

Check if user has specific permission

get_dynamic_groups

List permission groups (dynamic groups)

Tool

Description

get_role_history

View modification history for roles

get_role_assignment_history

View history of role assignments

get_login_audit_log

Login events — who logged in, when, from where

get_admin_audit_log

Admin-level config/data change history

get_sod_violations

Detect segregation-of-duty conflicts in RBP assignments

get_dormant_users

Active accounts with no recent login activity

Tool

Description

query_odata

Flexible OData queries with filtering, pagination

get_picklist_values

Get dropdown/picklist options

Tool

Description

get_employee_profile

Complete profile with job info, manager, optional compensation

search_employees

Find by name, department, location, or manager

get_employee_history

Job history — promotions, transfers, title changes

get_team_roster

Manager's team with direct/indirect reports

Tool

Description

get_time_off_balances

Vacation, PTO, sick leave balances

get_upcoming_time_off

Team absence calendar for a date range

get_time_off_requests

Pending/approved time-off requests

Tool

Description

get_open_requisitions

Job requisitions with status and hiring manager

get_candidate_pipeline

Candidates by stage for a requisition

get_new_hires

Recent/upcoming hires for onboarding

Tool

Description

get_terminations

Terminated employees for exit processing

get_employees_missing_data

Incomplete profiles for compliance audits

get_anniversary_employees

Upcoming work anniversaries for recognition

Tool

Description

get_performance_review_status

Review form completion across the org

get_compensation_details

Pay breakdown with recurring/non-recurring components

get_compensation_history

Full compensation change history (not just latest)

get_compensation_review_status

Comp planning worksheet completion by manager/department

get_salary_range_analysis

Compa-ratio: pay vs. grade midpoint

Tool

Description

get_goal_summary

Employee goals — category, weight, completion

get_development_plans

Development goals and learning activities

get_talent_flags

Potential, flight risk, impact of loss, key position

get_succession_nominees

Talent pool nominees for key positions

Tool

Description

get_position_details

Position with incumbent, department, FTE

get_vacant_positions

Open positions for headcount planning

get_org_chart

Org hierarchy from any position (up or down)

Tool

Description

get_mdf_object_definitions

List custom MDF objects and their fields

query_mdf_object

Query any MDF/generic object (cust_*)

get_foundation_objects

Query foundation objects (departments, cost centers, etc.)

Tool

Description

get_pending_approvals

Pending workflow items for a user or globally

get_workflow_history

Audit trail of approval steps

Tool

Description

get_alert_notifications

System alerts and notifications

get_scheduled_job_status

Scheduled job run status

get_integration_center_jobs

Integration Center job status

get_api_quota_status

Rate limit usage per instance

get_cache_status

Cache hit rates and entry counts

clear_cache

Clear cached responses

Tool

Description

get_global_assignments

International assignments — home/host details

get_employee_documents

Documents attached to an employee's record

get_pay_component_groups

Recurring pay elements (allowances, bonuses)

get_work_permit_expiry

Work permits/visas expiring soon

get_probation_end_dates

Employees approaching end of probation

Tool

Description

bulk_export_employees

Paginated full export of active employees

get_picklist_usage

Which picklists are used on which entity fields

get_country_specific_fields

Field population rates for a given country

Installation

Prerequisites

  • Python 3.10+

  • uv package manager

  • SAP SuccessFactors account with API access

Setup

git clone https://github.com/aiadiguru2025/sf-mcp.git
cd sf-mcp
uv sync

Quick Start

Development mode (MCP Inspector):

uv run mcp dev main.py

Stdio mode (Claude Desktop):

uv run main.py

HTTP mode (Cloud Run / remote):

PORT=8080 uv run main.py

Claude Desktop Integration

Step 1 — Find the path to uv

# macOS / Linux
which uv

# Windows (PowerShell)
Get-Command uv | Select-Object -ExpandProperty Source

Step 2 — Edit your Claude Desktop config

OS

Config path

macOS

~/Library/Application Support/Claude/claude_desktop_config.json

Windows

%APPDATA%\Claude\claude_desktop_config.json

Add the sf-mcp server:

{
  "mcpServers": {
    "sf-mcp": {
      "command": "/path/to/uv",
      "args": ["--directory", "/path/to/sf-mcp", "run", "main.py"]
    }
  }
}

Step 3 — Restart Claude Desktop

The MCP tools icon (hammer) will appear in the input area with all 62 tools available.

Note: Credentials (auth_user_id and auth_password) are provided on each tool call — nothing is stored in the config.

Deployment

Google Cloud Run

# Build and deploy
export PROJECT_ID=your-gcp-project-id
gcloud builds submit --tag gcr.io/$PROJECT_ID/sf-mcp
gcloud run deploy sf-mcp \
  --image gcr.io/$PROJECT_ID/sf-mcp \
  --platform managed \
  --region us-central1

Then point Claude Desktop to the remote URL:

{
  "mcpServers": {
    "sf-mcp": {
      "url": "https://sf-mcp-xxxxx-uc.a.run.app/mcp"
    }
  }
}

Docker (local)

docker build -t sf-mcp .
docker run -p 8080:8080 sf-mcp

API Key Protection (optional)

Set MCP_API_KEY to require authentication on the HTTP endpoint:

MCP_API_KEY=your-secret-key PORT=8080 uv run main.py

Clients must then include X-API-Key: your-secret-key in requests.

Configuration

All tool parameters (data_center, environment, auth_user_id, auth_password) are provided per-request. Server-side environment variables are optional:

Rate Limiting

Variable

Default

Description

SF_RATE_LIMIT

100

Max requests per window per instance

SF_RATE_LIMIT_WINDOW

60

Window duration in seconds

SF_RATE_LIMIT_WARN_THRESHOLD

0.8

Log warning at 80% usage

SF_RATE_LIMIT_RETRY_AFTER

5

Seconds to wait on 429 retry

SF_RATE_LIMIT_MAX_RETRIES

3

Max 429 retry attempts

Response Caching

Variable

Default

Description

SF_CACHE_TTL_METADATA

3600

Metadata cache TTL (1 hour)

SF_CACHE_TTL_SERVICE_DOC

3600

Service doc cache TTL (1 hour)

SF_CACHE_TTL_PICKLIST

1800

Picklist cache TTL (30 min)

SF_CACHE_TTL_PERMISSIONS

3600

Permission cache TTL (1 hour)

SF_CACHE_TTL_DEFAULT

0

Default TTL (0 = disabled)

SF_CACHE_MAX_ENTRIES

1000

Max cache entries before eviction

Endpoint Protection

Variable

Default

Description

MCP_API_KEY

(none)

API key for HTTP endpoint auth

Copy .env.example to .env to customize:

cp .env.example .env

Supported Data Centers

21 data centers across 6 continents with alias support:

Data Center

Alias

Location

Environments

DC2

DC57

Netherlands

preview, production, sales_demo

DC4

DC68

Virginia, US

preview, production, sales_demo

DC8

DC70

Ashburn, Virginia, US

preview, production, sales_demo

DC10

DC66

Sydney, Australia

preview, production

DC12

DC33

Germany

preview, production

DC15

DC30

Shanghai, China

preview, production

DC17

DC60

Toronto, Canada

preview, production

DC19

DC62

Sao Paulo, Brazil

preview, production

DC22

Dubai, UAE

preview, production

DC23

DC84

Riyadh, Saudi Arabia

preview, production

DC40

sales_demo

DC41

Virginia, US

preview, production

DC44

DC52

Singapore

preview, production

DC47

Canada Central

preview, production

DC50

Tokyo, Japan

preview, production

DC55

Frankfurt, Germany

preview, production

DC74

Zurich, Switzerland

preview, production

DC80

Mumbai, India

preview, production

DC82

Riyadh, Saudi Arabia

preview, production

Architecture

sf-mcp/
├── main.py                     # Entry point (stdio + HTTP modes)
├── sf_mcp/
│   ├── server.py               # FastMCP instance
│   ├── config.py               # DC mappings, constants, env vars
│   ├── auth.py                 # Credential resolution, API key middleware
│   ├── client.py               # HTTP client (OData, metadata, service doc, pagination)
│   ├── cache.py                # TTL-based response cache with deep-copy safety
│   ├── rate_limiter.py         # Sliding-window rate limiter (per-instance)
│   ├── validation.py           # 10 input validators with registry pattern
│   ├── decorators.py           # sf_tool decorator (cross-cutting concerns)
│   ├── dependencies.py         # FastMCP DI for schema exclusion
│   ├── logging_config.py       # Cloud Logging JSON formatter, audit_log()
│   ├── xml_utils.py            # Safe XML parsing (defusedxml), SAP date parsing
│   └── tools/                  # 62 tools across 16 modules
│       ├── configuration.py    # get_configuration, compare_configurations, list_entities
│       ├── permissions.py      # 7 RBP security tools
│       ├── audit.py            # Role history, role assignment history
│       ├── query.py            # query_odata, get_picklist_values
│       ├── employee.py         # Profile, search, history, team roster
│       ├── time_off.py         # Balances, upcoming absences, requests
│       ├── recruiting.py       # Requisitions, pipeline, new hires
│       ├── compliance.py       # Terminations, missing data, anniversaries, reviews, comp
│       ├── position.py         # Position details, vacancies, org chart
│       ├── workflow.py         # Pending approvals, workflow history
│       ├── mdf.py              # MDF object definitions, queries, foundation objects
│       ├── monitoring.py       # Alerts, scheduled jobs, integration jobs
│       ├── admin.py            # Rate limit quota, cache status, cache clear
│       └── utils.py            # Shared utilities (display_name)
├── tests/                      # 110 tests
├── Dockerfile                  # Cloud Run container
├── .env.example                # Configuration template
└── pyproject.toml              # Project metadata, dependencies, linter config

Design Principles

Zero boilerplate — The sf_tool decorator handles request ID generation, timing, audit logging, input validation, credential checking, error handling, and $top clamping. Tool functions contain only business logic.

Secure by default — 10 input validators (regex allowlists), OData injection prevention, XXE-safe XML parsing (defusedxml), timing-safe API key comparison (hmac.compare_digest), and automatic credential masking in logs.

Production-ready — Connection pooling (requests.Session), mutation-safe response caching (deep-copy on put/get), sliding-window rate limiting with automatic 429 retry, and Cloud Logging-compatible JSON audit trail.

Schema-clean — Internal parameters (request_id, start_time, api_host) are hidden from the MCP tool schema via FastMCP's Dependency injection, keeping tool interfaces clean for LLM consumers.

Security

Layer

Mechanism

Input validation

10 regex-based validators; OData filter blocklist checks raw + URL-decoded + double-decoded input

Injection prevention

Entity paths, $select, $orderby, $filter, $expand all validated; control characters rejected

Authentication

Per-request credentials (never stored); timing-safe API key comparison via hmac.compare_digest

XML safety

defusedxml prevents XXE, entity expansion, and DTD attacks

Audit logging

Every tool call logged with structured JSON; passwords automatically masked

Cache safety

Deep-copied on store and retrieval to prevent mutation bugs

Date handling

All SAP timestamp parsing uses explicit UTC to prevent timezone inconsistencies

Testing

# Run all 110 tests
uv run pytest tests/ -v

# Run with coverage
uv run pytest tests/ --cov=sf_mcp

# Lint
uv run ruff check .

# Type check
uv run mypy sf_mcp/

Test coverage includes:

  • Config — DC mapping resolution, case insensitivity, aliases, error cases

  • Validation — All 10 validators with valid/invalid inputs, injection prevention

  • Client — Mocked HTTP responses (200, 401, 500, empty, connection error)

  • Rate limiter — Limit enforcement, sliding window, per-instance isolation, thread safety

  • Cache — Put/get, TTL expiry, category TTLs, invalidation, eviction, deep-copy safety

  • Pagination — Single/multi page, max_pages limit, error handling, $skip increments

  • Decorators — Value injection, validation errors, max_top clamping, exception handling

API Reference

Every tool accepts these common parameters:

Parameter

Type

Required

Description

instance

string

Yes

SuccessFactors company ID

data_center

string

Yes

SAP data center code (e.g., DC55, DC10)

environment

string

Yes

preview, production, or sales_demo

auth_user_id

string

Yes

SuccessFactors user ID (without @instance)

auth_password

string

Yes

SuccessFactors password

get_configuration

Retrieve OData metadata for a SuccessFactors entity.

Parameter

Type

Required

Description

entity

string

Yes

OData entity name (e.g., User, Position)

list_entities

Discover all available OData entities in an instance.

Parameter

Type

Required

Description

category

string

No

foundation, employee, talent, platform, or all

compare_configurations

Compare entity config between two instances (e.g., dev vs prod).

Parameter

Type

Required

Description

instance1

string

Yes

First instance

instance2

string

Yes

Second instance

entity

string

Yes

Entity to compare

data_center1

string

Yes

Data center for instance1

environment1

string

Yes

Environment for instance1

data_center2

string

Yes

Data center for instance2

environment2

string

Yes

Environment for instance2

get_rbp_roles

Parameter

Type

Required

Description

include_description

boolean

No

Include role descriptions (default: false)

get_role_permissions

Parameter

Type

Required

Description

role_ids

string

Yes

Single or comma-separated: 10 or 10,20,30

locale

string

No

Locale for labels (default: en-US)

get_user_permissions

Parameter

Type

Required

Description

user_ids

string

Yes

Single or comma-separated: admin or admin,user2

locale

string

No

Locale for labels (default: en-US)

get_user_roles

Parameter

Type

Required

Description

user_id

string

Yes

User ID to look up roles for

include_permissions

boolean

No

Also fetch permissions per role (default: false)

get_permission_metadata

Parameter

Type

Required

Description

locale

string

No

Locale for labels (default: en-US)

check_user_permission

Parameter

Type

Required

Description

access_user_id

string

Yes

User whose permission to check

target_user_id

string

Yes

Target user of the permission

perm_type

string

Yes

Permission type from metadata

perm_string_value

string

Yes

Permission string value

perm_long_value

string

No

Permission long value (default: -1L)

get_dynamic_groups

Parameter

Type

Required

Description

group_type

string

No

Filter by group type

get_role_history

Parameter

Type

Required

Description

role_id

string

No

Filter by role ID

role_name

string

No

Filter by role name

from_date

string

No

Start date (YYYY-MM-DD)

to_date

string

No

End date (YYYY-MM-DD)

top

integer

No

Max records (default: 100, max: 500)

get_role_assignment_history

Parameter

Type

Required

Description

role_id

string

No

Filter by role ID

user_id

string

No

Filter by user ID

from_date

string

No

Start date (YYYY-MM-DD)

to_date

string

No

End date (YYYY-MM-DD)

top

integer

No

Max records (default: 100, max: 500)

At least one of role_id or user_id is required.

get_login_audit_log

Parameter

Type

Required

Description

user_id

string

No

Filter to a single user's login history

from_date

string

No

Start date (YYYY-MM-DD)

to_date

string

No

End date (YYYY-MM-DD)

top

integer

No

Max records (default: 100, max: 500)

Requires the instance's Audit Trail / Login Tracking feature to be provisioned.

get_admin_audit_log

Parameter

Type

Required

Description

entity_name

string

No

Filter by entity/object name (e.g., RBPRole, User)

changed_by

string

No

Filter by the admin who made the change

from_date

string

No

Start date (YYYY-MM-DD)

to_date

string

No

End date (YYYY-MM-DD)

top

integer

No

Max records (default: 100, max: 500)

Requires the instance's Audit Trail feature to be provisioned.

get_sod_violations

Parameter

Type

Required

Description

user_ids

string

Yes

Employee user ID(s), comma-separated (max 20)

permission_pairs

string

No

Custom conflict pairs: "PermA|PermB,PermC|PermD". Defaults to a built-in list of common RBP conflicts

get_dormant_users

Parameter

Type

Required

Description

dormant_days

integer

No

Flag users with no login in this many days (default: 90)

department

string

No

Filter by department

top

integer

No

Max records (default: 100, max: 500)

query_odata

Parameter

Type

Required

Description

entity

string

Yes

Entity name or key: User or User('admin')

select

string

No

Fields: userId,firstName,lastName

filter

string

No

OData filter: status eq 'active'

expand

string

No

Nav properties: empInfo,jobInfoNav

top

integer

No

Max records (default: 100, max: 1000)

skip

integer

No

Records to skip

orderby

string

No

Sort: lastName asc

paginate

boolean

No

Auto-fetch all pages (default: false)

max_pages

integer

No

Max pages when paginating (default: 10, max: 50)

get_picklist_values

Parameter

Type

Required

Description

picklist_id

string

Yes

Picklist ID: ecJobFunction, nationality

locale

string

No

Locale for labels (default: en-US)

include_inactive

boolean

No

Include inactive values (default: false)

get_employee_profile

Parameter

Type

Required

Description

user_id

string

Yes

Employee user ID

include_compensation

boolean

No

Include compensation (default: false)

search_employees

Parameter

Type

Required

Description

search_text

string

No

Partial name search

department

string

No

Filter by department

location

string

No

Filter by location

manager_id

string

No

Filter to manager's reports

status

string

No

active, inactive, or all (default: active)

top

integer

No

Max results (default: 50, max: 200)

get_employee_history

Parameter

Type

Required

Description

user_id

string

Yes

Employee user ID

include_compensation_changes

boolean

No

Include salary history (default: false)

get_team_roster

Parameter

Type

Required

Description

manager_id

string

Yes

Manager's user ID

include_indirect_reports

boolean

No

Include reports-of-reports (default: false)

top

integer

No

Max direct reports (default: 100, max: 200)

get_time_off_balances

Parameter

Type

Required

Description

user_ids

string

Yes

Comma-separated user IDs (max 50)

as_of_date

string

No

Balance as of date (YYYY-MM-DD)

get_upcoming_time_off

Parameter

Type

Required

Description

start_date

string

Yes

Range start (YYYY-MM-DD)

end_date

string

Yes

Range end (YYYY-MM-DD)

department

string

No

Filter by department

manager_id

string

No

Filter to manager's team

status

string

No

approved, pending, or all (default: approved)

top

integer

No

Max results (default: 200, max: 500)

get_time_off_requests

Parameter

Type

Required

Description

user_id

string

No

Filter to employee

status

string

No

pending, approved, rejected, cancelled, or all (default: pending)

from_date

string

No

Submitted after date (YYYY-MM-DD)

top

integer

No

Max results (default: 50, max: 200)

get_open_requisitions

Parameter

Type

Required

Description

department

string

No

Filter by department

hiring_manager_id

string

No

Filter by hiring manager

location

string

No

Filter by location

status

string

No

open, filled, closed, or all (default: open)

top

integer

No

Max results (default: 100, max: 500)

get_candidate_pipeline

Parameter

Type

Required

Description

requisition_id

string

Yes

Job requisition ID

include_rejected

boolean

No

Include rejected candidates (default: false)

top

integer

No

Max results (default: 100, max: 500)

get_new_hires

Parameter

Type

Required

Description

start_date_from

string

Yes

Hires on/after date (YYYY-MM-DD)

start_date_to

string

Yes

Hires on/before date (YYYY-MM-DD)

department

string

No

Filter by department

top

integer

No

Max results (default: 100, max: 500)

get_terminations

Parameter

Type

Required

Description

from_date

string

Yes

Range start (YYYY-MM-DD)

to_date

string

Yes

Range end (YYYY-MM-DD)

department

string

No

Filter by department

top

integer

No

Max results (default: 100, max: 500)

get_employees_missing_data

Parameter

Type

Required

Description

check_fields

string

Yes

Comma-separated: email, phone, address, emergency_contact

department

string

No

Filter by department

top

integer

No

Max results (default: 100, max: 500)

get_anniversary_employees

Parameter

Type

Required

Description

from_date

string

Yes

Range start (YYYY-MM-DD)

to_date

string

Yes

Range end (YYYY-MM-DD)

milestone_years_only

boolean

No

Only 1, 5, 10, 15, 20, 25+ years (default: false)

department

string

No

Filter by department

top

integer

No

Max results (default: 100, max: 500)

get_performance_review_status

Parameter

Type

Required

Description

form_template_id

string

No

Filter by form template

department

string

No

Filter by department

manager_id

string

No

Filter by manager

status

string

No

not_started, in_progress, completed, or "" for all

top

integer

No

Max results (default: 100, max: 500)

get_compensation_details

Parameter

Type

Required

Description

user_ids

string

Yes

Comma-separated user IDs (max 20)

effective_date

string

No

Compensation as of date (YYYY-MM-DD)

get_compensation_history

Parameter

Type

Required

Description

user_id

string

Yes

The employee's user ID

top

integer

No

Max history records (default: 50, max: 200)

get_compensation_review_status

Parameter

Type

Required

Description

form_template_id

string

Yes

The compensation worksheet's form template ID

department

string

No

Filter by department

manager_id

string

No

Filter by manager

status

string

No

not_started, in_progress, completed, or "" for all

top

integer

No

Max results (default: 100, max: 500)

get_salary_range_analysis

Parameter

Type

Required

Description

user_ids

string

Yes

Comma-separated user IDs (max 20)

Returns compa-ratio (current salary ÷ grade midpoint × 100) per employee.

get_goal_summary

Parameter

Type

Required

Description

user_id

string

Yes

The employee's user ID

status

string

No

not_started, in_progress, completed, or "" for all

top

integer

No

Max results (default: 100, max: 200)

get_development_plans

Parameter

Type

Required

Description

user_id

string

Yes

The employee's user ID

status

string

No

not_started, in_progress, completed, or "" for all

top

integer

No

Max results (default: 100, max: 200)

get_talent_flags

Parameter

Type

Required

Description

user_ids

string

Yes

Comma-separated user IDs (max 20)

Field availability depends on the instance's Succession Data Model configuration.

get_succession_nominees

Parameter

Type

Required

Description

pool_id

string

No

Filter to nominees for a specific talent pool

user_id

string

No

Filter to pools an employee is nominated to

top

integer

No

Max results (default: 100, max: 200)

get_position_details

Parameter

Type

Required

Description

position_id

string

Yes

Position ID

get_vacant_positions

Parameter

Type

Required

Description

department

string

No

Filter by department

location

string

No

Filter by location

top

integer

No

Max results (default: 100, max: 500)

get_org_chart

Parameter

Type

Required

Description

position_id

string

Yes

Starting position ID

direction

string

No

down or up (default: down)

levels

integer

No

Levels to traverse (default: 2, max: 5)

get_mdf_object_definitions

Parameter

Type

Required

Description

object_name

string

No

Specific MDF object (e.g., cust_myObject). Empty = list all.

query_mdf_object

Parameter

Type

Required

Description

object_name

string

Yes

MDF object name (e.g., cust_myObject)

select

string

No

Comma-separated fields

filter

string

No

OData filter

top

integer

No

Max results (default: 100, max: 500)

skip

integer

No

Pagination offset

orderby

string

No

Sort order

effective_date

string

No

Effective date filter (YYYY-MM-DD)

get_foundation_objects

Parameter

Type

Required

Description

object_type

string

Yes

company, department, division, location, cost_center, job_code, job_function, pay_grade, pay_group, business_unit, event_reason, legal_entity

filter

string

No

Additional OData filter

top

integer

No

Max results (default: 100, max: 500)

include_inactive

boolean

No

Include end-dated records (default: false)

get_pending_approvals

Parameter

Type

Required

Description

user_id

string

No

Filter to specific approver

wf_request_id

string

No

Filter to specific workflow request

top

integer

No

Max results (default: 100, max: 500)

get_workflow_history

Parameter

Type

Required

Description

wf_request_id

string

Yes

Workflow request ID

top

integer

No

Max results (default: 100, max: 500)

get_alert_notifications

Parameter

Type

Required

Description

from_date

string

No

Start date (YYYY-MM-DD)

to_date

string

No

End date (YYYY-MM-DD)

top

integer

No

Max results (default: 100, max: 500)

get_scheduled_job_status

Parameter

Type

Required

Description

job_name

string

No

Filter by job name

top

integer

No

Max results (default: 50, max: 500)

get_integration_center_jobs

Parameter

Type

Required

Description

job_name

string

No

Filter by job name

status

string

No

Filter by status

top

integer

No

Max results (default: 50, max: 500)

get_api_quota_status

Returns current rate limit usage for the specified instance.

get_cache_status

Returns cache hit rates, entry counts by category, and memory usage.

clear_cache

Parameter

Type

Required

Description

target_instance

string

No

Clear specific instance. Empty = clear all.

get_global_assignments

Parameter

Type

Required

Description

user_id

string

No

Filter to a single employee's assignment history

active_only

boolean

No

Only currently active assignments (default: true)

top

integer

No

Max results (default: 100, max: 200)

get_employee_documents

Parameter

Type

Required

Description

user_id

string

Yes

The employee's user ID

document_type

string

No

Filter by document type

top

integer

No

Max results (default: 50, max: 100)

get_pay_component_groups

Parameter

Type

Required

Description

user_id

string

Yes

The employee's user ID

effective_date

string

No

Components as of date (YYYY-MM-DD)

get_work_permit_expiry

Parameter

Type

Required

Description

within_days

integer

No

Flag permits/visas expiring within N days (default: 90)

country

string

No

Filter by ISO country code

top

integer

No

Max results (default: 100, max: 500)

get_probation_end_dates

Parameter

Type

Required

Description

within_days

integer

No

Flag probation periods ending within N days (default: 30)

department

string

No

Filter by department

top

integer

No

Max results (default: 100, max: 500)

bulk_export_employees

Parameter

Type

Required

Description

select

string

No

Comma-separated fields. Defaults to a standard field set

department

string

No

Filter by department

status

string

No

active, inactive, or all (default: active)

top

integer

No

Records per page (default: 500, max: 1000)

max_pages

integer

No

Max pages to fetch (default: 10, max: 50)

get_picklist_usage

Parameter

Type

Required

Description

entities

string

No

Comma-separated entity names to scan. Defaults to a common set

get_country_specific_fields

Parameter

Type

Required

Description

entity

string

Yes

OData entity to analyze (e.g., PerPersonal, PerNationalId)

country

string

Yes

ISO country code to filter the sample

sample_size

integer

No

Records to sample for population rates (default: 50, max: 200)

Example Queries

Ask Claude in natural language:

Query

Tool Used

"Show me all users in the Sales department"

search_employees

"What permissions does jsmith have?"

get_user_permissions

"Compare User config between dev and prod"

compare_configurations

"Who's on vacation next week?"

get_upcoming_time_off

"List all open job requisitions for Engineering"

get_open_requisitions

"How much PTO does jdoe have left?"

get_time_off_balances

"Show me all new hires starting in March"

get_new_hires

"Who has a 10-year anniversary this month?"

get_anniversary_employees

"What are the status of performance reviews for my team?"

get_performance_review_status

"Show John's complete job history"

get_employee_history

"What custom MDF objects exist in our instance?"

get_mdf_object_definitions

"List all departments with their cost centers"

get_foundation_objects

"Are there any pending workflow approvals?"

get_pending_approvals

"Check the status of our integration jobs"

get_integration_center_jobs

Common SuccessFactors Entities

Category

Entities

Employee

User, EmpEmployment, EmpJob, PerPersonal, PerPhone, PerEmail

Foundation

FOCompany, FODepartment, FOJobCode, FOLocation, FOPayGrade

Position

Position, PositionEntity, PositionMatrixRelationship

Talent

Goal, GoalPlan, PerformanceReview, Competency

Recruiting

JobRequisition, Candidate, JobApplication

Use list_entities to discover all available entities in your instance.

Troubleshooting

  • Verify credential format: user ID without @instance

  • Confirm the password is correct

  • Ensure the API user has proper permissions in SuccessFactors Admin Center

All inputs are validated to prevent injection attacks:

Parameter

Rules

instance

Alphanumeric, underscores, hyphens only

entity

Valid OData entity name pattern

filter

No blocked keywords ($batch, $metadata, <script>, etc.)

locale

Format like en-US or de

select / orderby

Valid field name patterns

  1. Verify uv path in config is correct: which uv

  2. Check logs: tail -f ~/Library/Logs/Claude/mcp*.log

  3. Test manually: uv run mcp dev main.py

  4. Ensure Python 3.10+ is installed: python3 --version

  • The server auto-retries HTTP 429 responses (up to 3 times)

  • Use get_api_quota_status to check current usage

  • Increase limits via SF_RATE_LIMIT environment variable

  • Cache responses with SF_CACHE_TTL_DEFAULT to reduce API calls

Dependencies

Package

Version

Purpose

fastmcp

>=2.0.0

Model Context Protocol SDK

requests

>=2.31.0

HTTP client with connection pooling

defusedxml

>=0.7.0

XXE-safe XML parsing

python-dotenv

>=1.0.0

Environment variable loading

uvicorn

>=0.30.0

ASGI server for HTTP transport

Dev dependencies: pytest, ruff, mypy

Contributing

Contributions are welcome! Please:

  1. Fork the repository

  2. Create a feature branch: git checkout -b feature/my-feature

  3. Run tests: uv run pytest tests/ -v

  4. Run linting: uv run ruff check .

  5. Commit your changes

  6. Open a Pull Request

Changelog

See CHANGELOG.md for release history.

License

This project is licensed under the MIT License — see the LICENSE file for details.


Available Tools

29 tools
check_user_permissionB

Check if a specific user has a particular permission.

Quickly verify whether a user has access to a specific feature or data.

Args: instance: The SuccessFactors instance/company ID user_id: The user ID to check permission_type: Permission type to check (e.g., "Employee Central Effective Dated Entities") data_center: SAP data center code (e.g., 'DC55', 'DC10', 'DC4') environment: Environment type ('preview', 'production', 'sales_demo') auth_user_id: SuccessFactors user ID for authentication (required) auth_password: SuccessFactors password for authentication (required) locale: Locale for labels (default: en-US)

ParametersJSON Schema
NameRequiredDescriptionDefault
instanceYes
user_idYes
permission_typeYes
data_centerYes
environmentYes
auth_user_idYes
auth_passwordYes
localeNoen-US

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. While it mentions authentication requirements in the parameter list, it doesn't describe the tool's behavior beyond the basic check—such as whether it returns a boolean, detailed permission info, error handling, rate limits, or side effects. For a permission-checking tool with zero annotation coverage, this leaves significant gaps in understanding how it operates.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured and appropriately sized. It starts with a clear purpose statement, followed by a brief elaboration, and then a detailed parameter list. Every sentence earns its place, though the parameter explanations are lengthy but necessary given the schema coverage gap. It could be slightly more front-loaded with usage context.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity (8 parameters, 7 required) and the presence of an output schema (which means return values don't need explanation in the description), the description is fairly complete. It covers all parameters in detail and states the tool's purpose. However, it lacks behavioral context (e.g., how the check is performed, error cases) and usage guidelines, which are important for a tool with no annotations.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description includes a detailed 'Args' section that explains each of the 8 parameters, providing meaning beyond the input schema (which has 0% description coverage). It clarifies parameter purposes (e.g., 'instance: The SuccessFactors instance/company ID'), gives examples (e.g., for 'permission_type'), and notes defaults (e.g., 'locale: Locale for labels (default: en-US)'). This fully compensates for the lack of schema descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Check if a specific user has a particular permission' and 'Quickly verify whether a user has access to a specific feature or data.' This specifies the verb ('check/verify') and resource ('user permission/access'), but it doesn't explicitly differentiate from sibling tools like 'get_user_permissions' or 'get_role_permissions' that might retrieve permission lists rather than check a specific one.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention sibling tools like 'get_user_permissions' (which might list all permissions for a user) or 'get_role_permissions' (which might check role-based permissions), nor does it specify prerequisites or exclusions. The agent must infer usage from the tool name and parameters alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

compare_configurationsA

Compare entity configuration/metadata between two SuccessFactors instances.

This is useful for verifying that dev/test/production environments are aligned before deployments, or for auditing configuration drift.

Args: instance1: First SF instance/company ID (e.g., dev instance) instance2: Second SF instance/company ID (e.g., prod instance) entity: OData entity to compare (e.g., "User", "EmpEmployment", "Position") data_center1: SAP data center for instance1 (e.g., 'DC55') environment1: Environment for instance1 ('preview', 'production') data_center2: SAP data center for instance2 (e.g., 'DC55') environment2: Environment for instance2 ('preview', 'production') auth_user_id: SuccessFactors user ID for authentication (required, used for both instances) auth_password: SuccessFactors password for authentication (required, used for both instances)

Returns: dict containing comparison results with match percentage and field differences

ParametersJSON Schema
NameRequiredDescriptionDefault
instance1Yes
instance2Yes
entityYes
data_center1Yes
environment1Yes
data_center2Yes
environment2Yes
auth_user_idYes
auth_passwordYes
instanceNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions authentication requirements and that the comparison returns match percentage and field differences, but does not cover other important aspects like rate limits, error handling, whether it's read-only or has side effects, or performance characteristics for large comparisons.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with a clear purpose statement, usage context, parameter documentation, and return value description. While comprehensive, it could be slightly more concise by combining some parameter explanations or using a more compact format for the similar data_center/environment pairs.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity (10 parameters, no annotations, 0% schema coverage) and the presence of an output schema, the description does an excellent job explaining parameters and purpose. However, it could provide more behavioral context about limitations, performance, or error scenarios to be fully complete for a complex comparison tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage, the description fully compensates by providing clear explanations for all 10 parameters, including examples (e.g., 'dev instance', 'prod instance', 'User', 'DC55', 'preview') and clarifying that auth credentials are 'required, used for both instances'. This adds substantial value beyond the bare schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the specific verb ('compare') and resource ('entity configuration/metadata between two SuccessFactors instances'), distinguishing it from sibling tools like 'get_configuration' (which retrieves single-instance data) or 'list_entities' (which lists available entities). It explicitly mentions the comparison scope across environments.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context for when to use this tool ('verifying that dev/test/production environments are aligned before deployments, or for auditing configuration drift'), but does not explicitly state when NOT to use it or name specific alternatives among the sibling tools (e.g., 'get_configuration' for single-instance checks).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_anniversary_employeesB

Find employees with upcoming work anniversaries for recognition programs.

Args: instance: The SuccessFactors instance/company ID from_date: Start of anniversary search range (YYYY-MM-DD) to_date: End of anniversary search range (YYYY-MM-DD) data_center: SAP data center code (e.g., 'DC55', 'DC10', 'DC4') environment: Environment type ('preview', 'production', 'sales_demo') auth_user_id: SuccessFactors user ID for authentication (required) auth_password: SuccessFactors password for authentication (required) milestone_years_only: If True, only show 1, 5, 10, 15, 20, 25+ year milestones department: Filter by department top: Maximum results (default: 100, max: 500)

ParametersJSON Schema
NameRequiredDescriptionDefault
instanceYes
from_dateYes
to_dateYes
data_centerYes
environmentYes
auth_user_idYes
auth_passwordYes
milestone_years_onlyNo
departmentNo
topNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. While it mentions authentication requirements in the parameter list, it doesn't describe important behavioral aspects: whether this is a read-only operation, potential rate limits, what happens when no results are found, or how results are structured. For a tool with 10 parameters and no annotation coverage, this is a significant gap in behavioral transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with a clear purpose statement followed by a parameter list. Every sentence earns its place, and the information is front-loaded. It could be slightly more concise by integrating the parameter explanations more seamlessly, but overall it's efficiently organized without wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (10 parameters, 7 required) and the presence of an output schema, the description is reasonably complete. The parameter documentation is thorough, and the output schema will handle return value documentation. However, for a tool with no annotations and significant behavioral implications (authentication, data retrieval), the description could better address operational context like error conditions or result formatting.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage, the description fully compensates by providing clear documentation for all 10 parameters. Each parameter is listed with meaningful explanations: date formats, example values, defaults, and constraints. The description adds substantial value beyond what the bare schema provides, explaining what each parameter means and how to use it.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Find employees with upcoming work anniversaries for recognition programs.' This specifies the verb ('find'), resource ('employees'), and context ('for recognition programs'). However, it doesn't explicitly differentiate from sibling tools like 'get_new_hires' or 'get_terminations' which also retrieve employee data based on different criteria.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. With many sibling tools that retrieve employee data (e.g., 'get_new_hires', 'get_terminations', 'search_employees'), there's no indication of when anniversary searches are appropriate versus other employee queries. The description mentions the context ('for recognition programs') but doesn't provide explicit usage rules or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_candidate_pipelineA

Track candidates for a job requisition through hiring stages.

Shows all applicants for a specific job requisition with their current stage, application date, and status.

Args: instance: The SuccessFactors instance/company ID requisition_id: The job requisition ID data_center: SAP data center code (e.g., 'DC55', 'DC10', 'DC4') environment: Environment type ('preview', 'production', 'sales_demo') auth_user_id: SuccessFactors user ID for authentication (required) auth_password: SuccessFactors password for authentication (required) include_rejected: If True, include rejected candidates (default: False) top: Maximum results (default: 100, max: 500)

ParametersJSON Schema
NameRequiredDescriptionDefault
instanceYes
requisition_idYes
data_centerYes
environmentYes
auth_user_idYes
auth_passwordYes
include_rejectedNo
topNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden for behavioral disclosure. It mentions authentication requirements and result limits, which is helpful, but doesn't cover important aspects like whether this is a read-only operation, potential rate limits, error conditions, or what happens when parameters are invalid. For a tool with authentication and data retrieval, more behavioral context is needed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured and appropriately sized. It starts with the core purpose, then provides details about what information is shown, and finally lists all parameters with clear explanations. While efficient, the parameter section could be slightly more concise by grouping related authentication parameters together.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (8 parameters, authentication requirements) and the presence of an output schema, the description is mostly complete. It covers authentication needs, result limits, and parameter meanings thoroughly. The main gap is lack of behavioral context about read-only nature, error handling, and rate limits, but the output schema reduces the need to describe return values.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description provides excellent parameter semantics with 0% schema description coverage. It clearly explains what each parameter means ('SuccessFactors instance/company ID', 'job requisition ID', 'SAP data center code', etc.), provides examples for data_center, specifies default values for include_rejected and top, and indicates which parameters are required. This fully compensates for the lack of schema descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose with specific verbs ('track candidates', 'shows all applicants') and resources ('for a job requisition', 'through hiring stages'). It distinguishes itself from sibling tools like 'get_open_requisitions' by focusing on candidate tracking rather than requisition listing.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. While it mentions what the tool does, it doesn't specify scenarios where it's preferred over other candidate-related tools or when other tools might be more appropriate. There's no mention of prerequisites or limitations beyond the parameter requirements.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_compensation_detailsB

Get compensation breakdown for employees including base pay and pay components.

Args: instance: The SuccessFactors instance/company ID user_ids: Employee user ID(s) - single ID or comma-separated (max 20) data_center: SAP data center code (e.g., 'DC55', 'DC10', 'DC4') environment: Environment type ('preview', 'production', 'sales_demo') auth_user_id: SuccessFactors user ID for authentication (required) auth_password: SuccessFactors password for authentication (required) effective_date: Show compensation as of this date (YYYY-MM-DD). Defaults to latest.

ParametersJSON Schema
NameRequiredDescriptionDefault
instanceYes
user_idsYes
data_centerYes
environmentYes
auth_user_idYes
auth_passwordYes
effective_dateNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. It mentions authentication requirements (auth_user_id, auth_password) and a max limit for user_ids (20), which adds useful context. However, it lacks critical details: whether this is a read-only operation, potential rate limits, error conditions, or what the output schema contains. For a tool with sensitive compensation data and no annotations, this is a significant gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured and appropriately sized. The first sentence states the purpose clearly, followed by a bullet-like 'Args:' section that efficiently documents parameters. Every sentence earns its place, with no redundant information. It could be slightly more front-loaded by integrating key constraints (e.g., max 20 IDs) into the purpose statement, but overall it's concise and effective.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity (7 parameters, sensitive data, no annotations) and the presence of an output schema, the description is moderately complete. It thoroughly documents parameters but lacks behavioral context (e.g., security implications, error handling). The output schema mitigates the need to explain return values, but for a compensation tool with authentication, more guidance on usage and risks would improve completeness. It's adequate but has clear gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate fully. It provides clear semantics for all 7 parameters: explaining what each represents (e.g., 'Employee user ID(s)', 'SAP data center code'), giving examples (e.g., 'DC55'), noting constraints ('max 20'), and specifying defaults ('Defaults to latest'). This adds substantial value beyond the bare schema. A 5 is reserved for exceptional detail like format specifics or interdependencies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Get compensation breakdown for employees including base pay and pay components.' It specifies the verb ('Get'), resource ('compensation breakdown'), and scope ('for employees'), distinguishing it from sibling tools like get_employee_profile or get_employee_history. However, it doesn't explicitly differentiate from all siblings (e.g., query_odata might also retrieve compensation data), so it's not a perfect 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It lists parameters but doesn't mention prerequisites, exclusions, or comparisons to sibling tools like get_employee_profile (which might include compensation) or query_odata (a generic query tool). Without such context, users must infer usage from the tool name and parameters alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_configurationA

Retrieve OData entity metadata/configuration from a SuccessFactors instance.

This tool fetches the $metadata document for a specific entity, showing all available fields, their types, and constraints.

Args: instance: The SuccessFactors instance/company ID entity: OData entity to inspect (e.g., "User", "EmpEmployment", "Position") data_center: SAP data center code (e.g., 'DC55', 'DC10', 'DC4') environment: Environment type ('preview', 'production', 'sales_demo') auth_user_id: SuccessFactors user ID for authentication (required) auth_password: SuccessFactors password for authentication (required)

Returns: dict containing entity metadata with field definitions

ParametersJSON Schema
NameRequiredDescriptionDefault
instanceYes
entityYes
data_centerYes
environmentYes
auth_user_idYes
auth_passwordYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It effectively describes the tool's function (fetching metadata), output (field definitions, types, constraints), and authentication requirements (user ID and password). However, it does not mention potential rate limits, error conditions, or data sensitivity, leaving some behavioral aspects uncovered.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured and front-loaded with the core purpose, followed by detailed parameter explanations and return value. Every sentence adds value—no fluff or repetition—making it efficient and easy to parse for an AI agent.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (6 required parameters, no annotations, but with an output schema), the description is complete. It explains the tool's purpose, all parameters with examples, and the return type. The output schema handles return values, so the description appropriately focuses on usage and inputs without redundancy.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate fully. It provides clear semantics for all 6 parameters: 'instance' as company ID, 'entity' as OData entity to inspect with examples, 'data_center' as SAP code with examples, 'environment' as type with examples, and authentication details as required. This adds significant value beyond the bare schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose with specific verbs ('Retrieve', 'fetches') and resources ('OData entity metadata/configuration', '$metadata document'). It distinguishes itself from siblings by focusing on entity metadata retrieval rather than operational data like employee profiles or permissions, making its scope explicit.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for inspecting entity fields and constraints, but does not explicitly state when to use this tool versus alternatives like 'list_entities' or 'query_odata'. It provides context for metadata retrieval but lacks explicit exclusions or comparisons with sibling tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_dynamic_groupsA

List all dynamic permission groups in the instance.

Dynamic groups are used in RBP to define target populations.

Args: instance: The SuccessFactors instance/company ID data_center: SAP data center code (e.g., 'DC55', 'DC10', 'DC4') environment: Environment type ('preview', 'production', 'sales_demo') auth_user_id: SuccessFactors user ID for authentication (required) auth_password: SuccessFactors password for authentication (required) top: Maximum results (default: 100, max: 500)

ParametersJSON Schema
NameRequiredDescriptionDefault
instanceYes
data_centerYes
environmentYes
auth_user_idYes
auth_passwordYes
topNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It discloses authentication requirements and pagination behavior ('top' parameter with default and max), which adds useful context. However, it lacks details on rate limits, error handling, or response format, leaving behavioral gaps for a tool with authentication and data retrieval.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with a purpose statement followed by a parameter list. Each sentence adds value, but the parameter explanations could be more integrated into the flow rather than a separate 'Args:' section. Overall, it is appropriately sized and front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (authentication, multiple parameters) and the presence of an output schema, the description is largely complete. It covers authentication needs and parameter meanings, though it could benefit from more behavioral context. The output schema likely handles return values, reducing the description's burden.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It provides clear semantics for all 6 parameters: explains what 'instance', 'data_center', 'environment', 'auth_user_id', 'auth_password', and 'top' represent, including examples and constraints. This fully addresses the schema's lack of descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'List all dynamic permission groups in the instance.' It specifies the verb ('List') and resource ('dynamic permission groups'), and adds context about their use in RBP. However, it does not explicitly differentiate from sibling tools like 'get_rbp_roles' or 'get_permission_metadata', which prevents a score of 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It mentions that dynamic groups are used in RBP, but does not specify scenarios, prerequisites, or exclusions. With many sibling tools related to permissions and roles, this lack of differentiation is a significant gap.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_employee_historyA

View an employee's job history including promotions, transfers, and title changes.

Shows chronological job records with title, department, location, and manager for each period. Useful for reviewing career progression.

Args: instance: The SuccessFactors instance/company ID user_id: The employee's user ID data_center: SAP data center code (e.g., 'DC55', 'DC10', 'DC4') environment: Environment type ('preview', 'production', 'sales_demo') auth_user_id: SuccessFactors user ID for authentication (required) auth_password: SuccessFactors password for authentication (required) include_compensation_changes: If True, also fetches salary history

ParametersJSON Schema
NameRequiredDescriptionDefault
instanceYes
user_idYes
data_centerYes
environmentYes
auth_user_idYes
auth_passwordYes
include_compensation_changesNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden. It discloses that authentication credentials are required (auth_user_id, auth_password) which is crucial behavioral context. However, it doesn't mention rate limits, pagination, error handling, or whether this is a read-only operation (though 'View' implies reading). The description adds some value but leaves gaps in behavioral disclosure.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with purpose first, then details, then parameter explanations. It's appropriately sized for a 7-parameter tool with authentication requirements. Minor improvement could be front-loading the authentication requirement more prominently, but overall it's efficient with minimal waste.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity (7 parameters, authentication, compensation option) and presence of an output schema (which handles return values), the description is quite complete. It covers purpose, usage context, and all parameter semantics. The main gap is lack of behavioral details like rate limits or error handling, but with an output schema, the description doesn't need to explain return values.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage, the description fully compensates by providing clear semantic explanations for all 7 parameters. Each parameter gets a meaningful description that explains what it represents (e.g., 'SAP data center code', 'Environment type', 'If True, also fetches salary history'), adding substantial value beyond the bare schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose with specific verbs ('View', 'Shows') and resources ('employee's job history', 'chronological job records'). It distinguishes this tool from siblings like 'get_employee_profile' or 'get_compensation_details' by focusing specifically on historical job changes rather than current data or compensation details.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context about when to use this tool ('Useful for reviewing career progression'), but doesn't explicitly state when NOT to use it or mention specific alternatives. It doesn't compare against siblings like 'get_employee_profile' (current data) or 'get_compensation_details' (compensation focus), though the compensation parameter hints at overlap.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_employee_profileA

Get a complete employee profile including job info, contact details, and manager.

Returns the employee's current job title, department, location, manager, email, phone, and hire date in a single call. Optionally includes compensation.

Args: instance: The SuccessFactors instance/company ID user_id: The employee's user ID (e.g., 'jsmith') data_center: SAP data center code (e.g., 'DC55', 'DC10', 'DC4') environment: Environment type ('preview', 'production', 'sales_demo') auth_user_id: SuccessFactors user ID for authentication (required) auth_password: SuccessFactors password for authentication (required) include_compensation: If True, also fetches current compensation details

ParametersJSON Schema
NameRequiredDescriptionDefault
instanceYes
user_idYes
data_centerYes
environmentYes
auth_user_idYes
auth_passwordYes
include_compensationNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden. It discloses that the tool returns data in a single call and includes optional compensation, but lacks details on rate limits, authentication behavior, error handling, or data freshness. It doesn't contradict annotations, but provides only basic operational context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is appropriately sized and front-loaded with the core purpose first, followed by return details and parameter explanations. Every sentence adds value, though the parameter section is somewhat lengthy but necessary given the lack of schema descriptions.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (7 parameters, no annotations) and the presence of an output schema, the description is reasonably complete. It explains the tool's purpose, return data, and all parameters semantically. The output schema likely covers return values, so the description doesn't need to detail them further.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate fully. It provides clear semantic explanations for all 7 parameters, including examples (e.g., 'jsmith', 'DC55'), required status, and the purpose of 'include_compensation'. This adds significant value beyond the bare schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose with specific verbs ('Get a complete employee profile') and resources ('employee profile including job info, contact details, and manager'). It distinguishes from siblings like 'get_employee_history' or 'get_compensation_details' by specifying it returns current comprehensive data in a single call.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage by listing what data is returned and mentioning an optional compensation inclusion, but it doesn't explicitly state when to use this tool versus alternatives like 'get_employee_history' for historical data or 'get_compensation_details' for compensation-only queries. No explicit exclusions or prerequisites are provided beyond parameter requirements.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_employees_missing_dataA

Find employees with incomplete profiles for compliance audits.

Checks for missing email, phone, address, or emergency contact data.

Args: instance: The SuccessFactors instance/company ID check_fields: Comma-separated fields to check: 'email', 'phone', 'address', 'emergency_contact' data_center: SAP data center code (e.g., 'DC55', 'DC10', 'DC4') environment: Environment type ('preview', 'production', 'sales_demo') auth_user_id: SuccessFactors user ID for authentication (required) auth_password: SuccessFactors password for authentication (required) department: Filter by department top: Maximum results (default: 100, max: 500)

ParametersJSON Schema
NameRequiredDescriptionDefault
instanceYes
check_fieldsYes
data_centerYes
environmentYes
auth_user_idYes
auth_passwordYes
departmentNo
topNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden. It clearly indicates this is a read operation (finding/checking) and specifies authentication requirements. However, it doesn't disclose rate limits, pagination behavior beyond 'top' parameter, or what happens when no results are found. It adds some behavioral context but leaves gaps.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with purpose statement, field checks, and detailed parameter documentation. While comprehensive, it's appropriately sized for an 8-parameter tool. Every sentence serves a purpose, though the parameter section is lengthy but necessary given the schema coverage gap.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (8 parameters, authentication requirements) and 0% schema coverage, the description does an excellent job explaining inputs. With an output schema present, return values don't need explanation. The main gap is lack of behavioral details like rate limits or error handling, but overall it's quite complete for the agent's needs.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage, the description fully compensates by providing detailed parameter explanations. Each of the 8 parameters is clearly documented with examples, defaults, and requirements. The description adds substantial value beyond the bare schema, explaining field options, data center codes, environment types, and authentication needs.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the specific purpose: 'Find employees with incomplete profiles for compliance audits' with explicit verb 'find' and resource 'employees with incomplete profiles'. It distinguishes from siblings by focusing on missing data checks rather than general employee retrieval or other HR functions.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context for usage ('for compliance audits') and specifies what fields are checked, but doesn't explicitly state when NOT to use this tool or name specific alternatives among the sibling tools. The context is well-defined but lacks explicit exclusion guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_new_hiresA

List recent and upcoming new hires for onboarding planning.

Shows employees hired within a date range with their job details.

Args: instance: The SuccessFactors instance/company ID start_date_from: Show hires starting on or after this date (YYYY-MM-DD) start_date_to: Show hires starting on or before this date (YYYY-MM-DD) data_center: SAP data center code (e.g., 'DC55', 'DC10', 'DC4') environment: Environment type ('preview', 'production', 'sales_demo') auth_user_id: SuccessFactors user ID for authentication (required) auth_password: SuccessFactors password for authentication (required) department: Filter by department top: Maximum results (default: 100, max: 500)

ParametersJSON Schema
NameRequiredDescriptionDefault
instanceYes
start_date_fromYes
start_date_toYes
data_centerYes
environmentYes
auth_user_idYes
auth_passwordYes
departmentNo
topNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden for behavioral disclosure. It mentions authentication requirements and default/max values for 'top', but doesn't cover rate limits, pagination, error handling, or what specific data fields are returned. For a tool with 9 parameters and no annotation coverage, this leaves significant behavioral gaps.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with purpose statement upfront, followed by detailed parameter documentation. Every sentence serves a purpose, though the Args section is quite lengthy due to 9 parameters. It could be more concise by grouping related parameters, but overall it's efficiently organized.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (9 parameters, authentication required) and the presence of an output schema, the description is reasonably complete. It thoroughly documents all parameters and their semantics. The main gap is lack of behavioral context (rate limits, error handling), but the output schema reduces need to describe return values.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage, the description fully compensates by providing detailed parameter documentation in the Args section. Each parameter is clearly explained with examples (e.g., 'YYYY-MM-DD', 'DC55'), defaults ('default: 100'), constraints ('max: 500'), and requirements ('required'). This adds substantial meaning beyond the bare schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'List recent and upcoming new hires for onboarding planning' and 'Shows employees hired within a date range with their job details.' This specifies the verb ('list', 'shows'), resource ('new hires', 'employees'), and scope ('recent and upcoming', 'within a date range', 'with job details'), distinguishing it from sibling tools like get_terminations or get_employee_profile.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage context ('for onboarding planning') and date-range filtering, but doesn't explicitly state when to use this tool versus alternatives like search_employees or get_employee_history. It provides basic functional context but lacks explicit guidance on tool selection among siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_open_requisitionsA

List job requisitions with status and hiring manager.

Shows open (or all) job requisitions for tracking the hiring pipeline.

Args: instance: The SuccessFactors instance/company ID data_center: SAP data center code (e.g., 'DC55', 'DC10', 'DC4') environment: Environment type ('preview', 'production', 'sales_demo') auth_user_id: SuccessFactors user ID for authentication (required) auth_password: SuccessFactors password for authentication (required) department: Filter by department hiring_manager_id: Filter by hiring manager's user ID location: Filter by work location status: Requisition status: 'open', 'filled', 'closed', or 'all' (default: 'open') top: Maximum results (default: 100, max: 500)

ParametersJSON Schema
NameRequiredDescriptionDefault
instanceYes
data_centerYes
environmentYes
auth_user_idYes
auth_passwordYes
departmentNo
hiring_manager_idNo
locationNo
statusNoopen
topNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It describes the tool as a listing operation with filtering capabilities, which implies read-only behavior, but does not address authentication requirements (beyond parameter listing), rate limits, pagination, or error handling. The mention of 'default: 100, max: 500' for 'top' hints at result limits, but overall behavioral context is minimal.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with a clear purpose statement followed by a detailed parameter breakdown. Every sentence earns its place, but the 'Args' section is lengthy due to the high parameter count, which is necessary given the lack of schema descriptions. It could be more front-loaded with key usage notes, but overall it is efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with 10 parameters, 0% schema coverage, no annotations, but an output schema, the description is reasonably complete. It covers all parameters in detail and states the tool's purpose, though it lacks behavioral context like authentication flow or error handling. The presence of an output schema reduces the need to describe return values, making this adequate but not exhaustive.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Given 0% schema description coverage, the description fully compensates by providing detailed parameter semantics in the 'Args' section. It explains each of the 10 parameters, including purposes (e.g., 'Filter by department'), examples (e.g., 'DC55'), defaults (e.g., 'default: open'), and constraints (e.g., 'max: 500'), adding significant value beyond the bare schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose with specific verbs ('List job requisitions') and resources ('job requisitions with status and hiring manager'), and distinguishes it from siblings by focusing on requisitions rather than employees, permissions, or other HR data. The second sentence elaborates on the scope ('open or all job requisitions for tracking the hiring pipeline'), making it unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage context ('for tracking the hiring pipeline') but does not explicitly state when to use this tool versus alternatives like 'get_candidate_pipeline' or 'search_employees'. It provides no guidance on prerequisites or exclusions, leaving the agent to infer based on the tool name and parameters.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_performance_review_statusB

Track performance review form completion across the organization.

Args: instance: The SuccessFactors instance/company ID data_center: SAP data center code (e.g., 'DC55', 'DC10', 'DC4') environment: Environment type ('preview', 'production', 'sales_demo') auth_user_id: SuccessFactors user ID for authentication (required) auth_password: SuccessFactors password for authentication (required) form_template_id: Filter by form template ID department: Filter by department (applied client-side) manager_id: Filter by manager's user ID (applied client-side) status: Filter by form status: 'not_started', 'in_progress', 'completed', or '' for all top: Maximum results (default: 100, max: 500)

ParametersJSON Schema
NameRequiredDescriptionDefault
instanceYes
data_centerYes
environmentYes
auth_user_idYes
auth_passwordYes
form_template_idNo
departmentNo
manager_idNo
statusNo
topNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. While it mentions authentication requirements and filtering parameters, it doesn't describe important behavioral aspects: whether this is a read-only operation, potential rate limits, pagination behavior beyond the 'top' parameter, error conditions, or what the output contains. For a tool with 10 parameters and authentication needs, this leaves significant gaps in understanding how the tool behaves.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with a clear purpose statement followed by organized parameter documentation. Each parameter explanation is brief and focused. While slightly longer due to the 10 parameters, every sentence serves a purpose. The structure helps users quickly understand both what the tool does and how to use it.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (10 parameters, authentication requirements) and the presence of an output schema, the description is moderately complete. It covers authentication needs and filtering parameters adequately, and the output schema will handle return value documentation. However, for a tool with no annotations and significant behavioral implications (tracking performance data across an organization), the description should provide more context about limitations, security considerations, or typical use cases.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage, the description compensates well by providing clear explanations for all 10 parameters. Each parameter gets a brief but meaningful explanation, including examples for 'data_center', default values, and filtering logic (e.g., 'applied client-side' for department/manager filters). The description adds substantial value beyond the bare schema, though it could provide more detail on parameter formats or constraints.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Track performance review form completion across the organization.' This specifies the verb ('track') and resource ('performance review form completion') with organizational scope. However, it doesn't explicitly differentiate from sibling tools like 'get_employee_profile' or 'search_employees' that might also retrieve performance data, leaving some ambiguity about when this specific tool is uniquely appropriate.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. With many sibling tools available (e.g., 'get_employee_profile', 'search_employees', 'query_odata'), there's no indication of whether this is the primary method for performance review data or if other tools might be better for specific scenarios. The description lacks any 'when-to-use' or 'when-not-to-use' context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_permission_metadataA

Get the mapping of permission type labels for RBP security analysis.

This metadata helps understand what permission categories exist in the system, mapping technical IDs to human-readable labels.

Args: instance: The SuccessFactors instance/company ID data_center: SAP data center code (e.g., 'DC55', 'DC10', 'DC4') environment: Environment type ('preview', 'production', 'sales_demo') auth_user_id: SuccessFactors user ID for authentication (required) auth_password: SuccessFactors password for authentication (required) locale: Locale for labels (default: en-US)

ParametersJSON Schema
NameRequiredDescriptionDefault
instanceYes
data_centerYes
environmentYes
auth_user_idYes
auth_passwordYes
localeNoen-US

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.5/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It states this is a 'Get' operation (implying read-only) but doesn't explicitly confirm it's non-destructive. It mentions authentication parameters are 'required' but doesn't describe error handling, rate limits, or what the output contains beyond 'mapping technical IDs to human-readable labels.' For a tool with authentication requirements, more behavioral context is needed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured and appropriately sized. The first paragraph states the purpose, the second adds context, and the 'Args:' section clearly documents parameters. While efficient, the 'Args:' formatting is slightly verbose compared to integrating parameter details into flowing text, but all content earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has an output schema (which handles return values), no annotations, and 6 parameters with 0% schema coverage, the description does well on parameters but lacks behavioral context. It covers authentication needs and the mapping purpose but doesn't address error cases, performance, or how this metadata integrates with RBP analysis. For a security-related tool with authentication, more completeness would be beneficial.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must fully compensate. It provides clear semantics for all 6 parameters: 'instance' (SuccessFactors instance/company ID), 'data_center' (SAP data center code with examples), 'environment' (environment type with examples), 'auth_user_id' (SuccessFactors user ID for authentication), 'auth_password' (SuccessFactors password for authentication), and 'locale' (locale for labels with default). This adds substantial value beyond the bare schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Get the mapping of permission type labels for RBP security analysis.' It specifies the verb ('Get'), resource ('mapping of permission type labels'), and context ('for RBP security analysis'). This distinguishes it from sibling tools like 'get_user_permissions' or 'get_role_permissions' which focus on user/role-specific permissions rather than metadata mappings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It mentions the tool helps 'understand what permission categories exist in the system,' but doesn't specify scenarios where this metadata is needed (e.g., before analyzing permissions) or contrast it with related tools like 'get_rbp_roles' or 'get_role_permissions' that might provide overlapping or complementary data.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_picklist_valuesA

Get all values for a specific picklist.

Picklists are used throughout SuccessFactors for dropdown fields. This tool retrieves all options for a given picklist, which is essential for data validation and understanding available field values.

Args: instance: The SuccessFactors instance/company ID picklist_id: The picklist identifier (e.g., "ecJobFunction", "nationality") data_center: SAP data center code (e.g., 'DC55', 'DC10', 'DC4') environment: Environment type ('preview', 'production', 'sales_demo') auth_user_id: SuccessFactors user ID for authentication (required) auth_password: SuccessFactors password for authentication (required) locale: Locale for labels (default: en-US) include_inactive: If True, includes inactive/expired values (default: False)

Common picklists: - ecJobFunction: Job functions - ecJobCode: Job codes - ecPayGrade: Pay grades - ecDepartment: Departments - nationality: Countries/nationalities - maritalStatus: Marital status options

ParametersJSON Schema
NameRequiredDescriptionDefault
instanceYes
picklist_idYes
data_centerYes
environmentYes
auth_user_idYes
auth_passwordYes
localeNoen-US
include_inactiveNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions authentication requirements and includes_inactive parameter, but doesn't cover important aspects like rate limits, error handling, response format, pagination, or whether this is a read-only operation. For an 8-parameter tool with authentication needs, this leaves significant behavioral gaps.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with clear sections: purpose explanation, parameter documentation, and common examples. While comprehensive, some sentences could be more concise (e.g., 'Picklists are used throughout SuccessFactors for dropdown fields' could be combined with the first sentence). Overall, it's appropriately sized for an 8-parameter tool with complex authentication requirements.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (8 parameters, authentication requirements) and the presence of an output schema, the description is reasonably complete. It thoroughly documents parameters and provides context about picklist usage. However, it could better address behavioral aspects like authentication scope, error conditions, or performance characteristics to be fully comprehensive for this type of enterprise API tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description provides excellent parameter semantics despite 0% schema description coverage. It explains each parameter's purpose with examples (e.g., picklist_id examples like 'ecJobFunction', data_center codes like 'DC55'), clarifies required vs optional parameters, provides default values, and even includes a helpful list of common picklists with their meanings. This fully compensates for the lack of schema descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose with a specific verb ('Get') and resource ('values for a specific picklist'), and distinguishes it from siblings by explaining picklists are for dropdown fields in SuccessFactors. It provides essential context about data validation and understanding available field values, making the purpose unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. While it mentions picklists are used throughout SuccessFactors, it doesn't specify scenarios where this tool is preferred over other data retrieval tools like get_employee_profile or query_odata. There's no mention of prerequisites or constraints beyond the required parameters.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_rbp_rolesB

Get all Role-Based Permission (RBP) roles in the instance.

Lists all security roles configured in the system, including admin roles, HR roles, manager roles, and employee self-service roles.

Args: instance: The SuccessFactors instance/company ID data_center: SAP data center code (e.g., 'DC55', 'DC10', 'DC4') environment: Environment type ('preview', 'production', 'sales_demo') auth_user_id: SuccessFactors user ID for authentication (required) auth_password: SuccessFactors password for authentication (required) include_description: If True, includes detailed role descriptions

ParametersJSON Schema
NameRequiredDescriptionDefault
instanceYes
data_centerYes
environmentYes
auth_user_idYes
auth_passwordYes
include_descriptionNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden. It states this is a read operation ('Get all', 'Lists all') but doesn't disclose behavioral traits like authentication requirements (implied by parameters but not explicitly stated), rate limits, pagination, error conditions, or what 'all' means in practice (e.g., whether it returns all roles at once or requires pagination).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Well-structured with a clear purpose statement, bullet-point examples, and a dedicated Args section. The description is appropriately sized (7 sentences) and front-loaded with the core functionality. Minor redundancy exists (e.g., 'Get all' and 'Lists all' are repetitive).

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no annotations, 6 parameters with 0% schema coverage, and an output schema present, the description does well on parameters but lacks behavioral context (authentication needs, rate limits, pagination). The output schema likely covers return values, so that gap is acceptable, but for a tool with authentication parameters and no annotations, more operational guidance would help.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It provides meaningful context for all 6 parameters: explains 'instance' as company ID, 'data_center' with examples, 'environment' with enum-like values, clarifies auth parameters as 'required', and describes what 'include_description' does. This adds substantial value beyond the bare schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb ('Get all') and resource ('Role-Based Permission (RBP) roles in the instance'), with specific examples of role types (admin, HR, manager, employee self-service). It distinguishes from siblings like 'get_user_roles' by focusing on system-wide security roles rather than user-specific assignments.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit guidance on when to use this tool versus alternatives like 'get_user_roles' or 'get_permission_metadata'. The description mentions listing 'all security roles' but doesn't specify use cases, prerequisites, or exclusions relative to sibling tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_role_assignment_historyA

Get history of role assignments - who was granted roles and when.

This tool shows the assignment history of RBP roles to users, helping audit who has been given access and by whom.

Args: instance: The SuccessFactors instance/company ID data_center: SAP data center code (e.g., 'DC55', 'DC10', 'DC4') environment: Environment type ('preview', 'production', 'sales_demo') auth_user_id: SuccessFactors user ID for authentication (required) auth_password: SuccessFactors password for authentication (required) role_id: Optional role ID to filter assignments for a specific role user_id: Optional user ID to filter assignments for a specific user from_date: Optional start date filter (ISO format: YYYY-MM-DD) to_date: Optional end date filter (ISO format: YYYY-MM-DD) top: Maximum records to return (default 100, max 500)

ParametersJSON Schema
NameRequiredDescriptionDefault
instanceYes
data_centerYes
environmentYes
auth_user_idYes
auth_passwordYes
role_idNo
user_idNo
from_dateNo
to_dateNo
topNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It does mention authentication requirements and filtering capabilities, but lacks details about rate limits, pagination behavior beyond the 'top' parameter, error conditions, or what specific data fields are returned in the history records. The description is functional but not comprehensive.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with a clear purpose statement followed by detailed parameter documentation. While somewhat lengthy due to the 10 parameters, every sentence adds value. The front-loaded purpose statement is effective, and the parameter section is organized for clarity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 10-parameter tool with no annotations, the description provides substantial context about authentication, filtering, and date formats. The existence of an output schema reduces the need to describe return values. The main gap is lack of behavioral details like rate limits or error handling, but overall this is reasonably complete for an audit-focused query tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Given 0% schema description coverage, the description compensates well by documenting all 10 parameters with clear explanations. It provides format details (ISO date format), optional/required status, default values, and practical examples (e.g., 'DC55', 'DC10'). The only gap is lack of enum values for 'environment' and 'data_center' parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose with specific verbs ('get', 'shows') and resources ('history of role assignments', 'RBP roles to users'). It distinguishes this tool from siblings like 'get_user_roles' or 'get_rbp_roles' by focusing specifically on the historical audit trail of role assignments rather than current state.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives like 'get_user_roles' or 'get_rbp_roles'. While it mentions the tool helps with auditing, it doesn't specify scenarios where this historical view is preferable to current-state queries, nor does it mention prerequisites or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_role_historyA

Get modification history for RBP roles.

Returns who modified the role, when, and what changes were made. This helps audit role configuration changes over time.

Args: instance: The SuccessFactors instance/company ID data_center: SAP data center code (e.g., 'DC55', 'DC10', 'DC4') environment: Environment type ('preview', 'production', 'sales_demo') auth_user_id: SuccessFactors user ID for authentication (required) auth_password: SuccessFactors password for authentication (required) role_id: Optional role ID to filter (e.g., "10") role_name: Optional role name to filter (alternative to role_id) from_date: Optional start date filter (ISO format: YYYY-MM-DD) to_date: Optional end date filter (ISO format: YYYY-MM-DD) top: Maximum records to return (default 100, max 500)

ParametersJSON Schema
NameRequiredDescriptionDefault
instanceYes
data_centerYes
environmentYes
auth_user_idYes
auth_passwordYes
role_idNo
role_nameNo
from_dateNo
to_dateNo
topNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It effectively describes the tool's behavior: it returns audit history including who, when, and what changes, with filtering capabilities and pagination (top parameter). It mentions authentication requirements and default/max values for 'top,' though it doesn't cover error handling, rate limits, or data freshness.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with purpose first, followed by return details, usage context, and a clear parameter list. It's appropriately sized for a 10-parameter tool, though the 'Args:' section is lengthy but necessary. Every sentence earns its place, but some redundancy exists (e.g., 'optional' is stated multiple times).

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a complex tool with 10 parameters, 0% schema coverage, no annotations, but with an output schema, the description is largely complete. It covers purpose, behavior, and detailed parameter semantics. The output schema likely handles return values, so the description doesn't need to explain them. Minor gaps include lack of error cases or performance characteristics.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Given 0% schema description coverage, the description compensates fully by providing detailed semantics for all 10 parameters. It explains each parameter's purpose (e.g., 'instance: The SuccessFactors instance/company ID'), format constraints (e.g., ISO format for dates), optionality, defaults (top default 100, max 500), and relationships (role_name as alternative to role_id). This adds significant value beyond the bare schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose with specific verb ('Get modification history') and resource ('RBP roles'), distinguishing it from sibling tools like 'get_rbp_roles' (which likely lists roles) and 'get_role_assignment_history' (which likely tracks user assignments). The second sentence elaborates on what information is returned, reinforcing the audit-focused purpose.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage context through 'This helps audit role configuration changes over time,' suggesting it's for auditing purposes. However, it doesn't explicitly state when to use this tool versus alternatives like 'get_rbp_roles' or 'get_role_assignment_history,' nor does it mention prerequisites or exclusions beyond the required authentication parameters.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_role_permissionsA

Get detailed permissions for a specific RBP role.

Shows what each role can access and do - essential for security audits.

Args: instance: The SuccessFactors instance/company ID role_id: The role ID to get permissions for (e.g., "10") data_center: SAP data center code (e.g., 'DC55', 'DC10', 'DC4') environment: Environment type ('preview', 'production', 'sales_demo') auth_user_id: SuccessFactors user ID for authentication (required) auth_password: SuccessFactors password for authentication (required) locale: Locale for labels (default: en-US)

ParametersJSON Schema
NameRequiredDescriptionDefault
instanceYes
role_idYes
data_centerYes
environmentYes
auth_user_idYes
auth_passwordYes
localeNoen-US

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden for behavioral disclosure. While it mentions authentication requirements in the Args section, it doesn't describe rate limits, error conditions, response format, or what 'detailed permissions' actually includes. For a tool with 7 parameters and no annotation coverage, this is insufficient.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is appropriately sized and front-loaded with the core purpose first, followed by usage context, then detailed parameters. The Args section is comprehensive but necessary given the parameter count. One minor improvement could be integrating parameter explanations more seamlessly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (7 parameters, no annotations, but with output schema), the description provides good coverage of inputs and purpose. The existence of an output schema means return values don't need explanation. However, more behavioral context would improve completeness for this authentication-required tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage, the description fully compensates by providing detailed parameter explanations in the Args section. Each parameter gets clear semantic context with examples (e.g., 'e.g., "10"', 'e.g., 'DC55'', 'default: en-US'), adding substantial value beyond the bare schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the specific action ('Get detailed permissions') and resource ('for a specific RBP role'), distinguishing it from sibling tools like get_user_permissions or get_rbp_roles. It explicitly mentions the purpose is for security audits, providing clear differentiation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context about when to use this tool ('essential for security audits'), but doesn't explicitly state when NOT to use it or name specific alternatives among the sibling tools. It implies usage for role permission analysis without comparative guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_team_rosterA

Get a manager's team roster with direct (and optionally indirect) reports.

Shows all active team members with their job title, department, location, and hire date. Useful for org chart views, team planning, and 1-on-1 prep.

Args: instance: The SuccessFactors instance/company ID manager_id: The manager's user ID data_center: SAP data center code (e.g., 'DC55', 'DC10', 'DC4') environment: Environment type ('preview', 'production', 'sales_demo') auth_user_id: SuccessFactors user ID for authentication (required) auth_password: SuccessFactors password for authentication (required) include_indirect_reports: If True, also fetches reports-of-reports (1 level deep) top: Maximum direct reports to return (default: 100, max: 200)

ParametersJSON Schema
NameRequiredDescriptionDefault
instanceYes
manager_idYes
data_centerYes
environmentYes
auth_user_idYes
auth_passwordYes
include_indirect_reportsNo
topNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden. It discloses authentication requirements (auth_user_id and auth_password are required) and some behavioral traits (default values, maximum limits for 'top' parameter). However, it doesn't mention rate limits, error conditions, pagination behavior, or what 'active' means operationally.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with purpose statement, use cases, and parameter documentation. Every sentence adds value, though the parameter section is quite detailed (necessary given schema gaps). It could be slightly more concise by integrating some parameter details into the main description.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity (8 parameters, authentication requirements) and presence of an output schema, the description provides substantial context. It covers authentication, parameter meanings, use cases, and data scope. The main gap is lack of behavioral details like rate limits or error handling, but the output schema reduces need to describe return values.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage for 8 parameters, the description fully compensates by providing detailed semantic explanations for every parameter. It clarifies what each parameter represents (e.g., 'SAP data center code', 'Environment type', 'Maximum direct reports to return'), including default values and constraints that aren't in the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the specific action ('Get a manager's team roster') and resource ('with direct (and optionally indirect) reports'), distinguishing it from sibling tools like get_employee_profile or search_employees. It explicitly mentions what data is returned (job title, department, location, hire date) and the scope (active team members).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context for when to use this tool ('Useful for org chart views, team planning, and 1-on-1 prep'), but doesn't explicitly state when not to use it or name specific alternatives among the many sibling tools. It implies usage for manager-focused team data retrieval.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_terminationsB

List terminated employees in a date range for exit processing and compliance.

Args: instance: The SuccessFactors instance/company ID from_date: Start of date range (YYYY-MM-DD) to_date: End of date range (YYYY-MM-DD) data_center: SAP data center code (e.g., 'DC55', 'DC10', 'DC4') environment: Environment type ('preview', 'production', 'sales_demo') auth_user_id: SuccessFactors user ID for authentication (required) auth_password: SuccessFactors password for authentication (required) department: Filter by department top: Maximum results (default: 100, max: 500)

ParametersJSON Schema
NameRequiredDescriptionDefault
instanceYes
from_dateYes
to_dateYes
data_centerYes
environmentYes
auth_user_idYes
auth_passwordYes
departmentNo
topNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden but provides minimal behavioral information. It mentions authentication requirements in the parameter list but doesn't describe rate limits, pagination behavior, error conditions, or what the output contains. For a tool with 9 parameters and sensitive HR data, this is inadequate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is appropriately sized but not optimally structured. The purpose statement is clear, but the parameter documentation could be better integrated. The 'Args:' section is useful but creates some redundancy with the schema. Every sentence earns its place, but the flow could be more seamless.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (9 parameters, HR compliance context) and the presence of an output schema, the description is moderately complete. It covers parameters well but lacks behavioral context about authentication flows, error handling, and compliance implications. The output schema existence reduces the need to describe return values, but more operational guidance would help.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage, the description compensates well by providing clear explanations for all 9 parameters including examples (e.g., 'DC55', 'DC10', 'DC4' for data_center), defaults ('default: 100, max: 500' for top), and requirements ('required' for auth fields). The only gap is that 'department' lacks examples of valid values.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose with specific verb ('List') and resource ('terminated employees'), and distinguishes it from siblings by specifying 'for exit processing and compliance'. It's not just a generic list tool but has a specific compliance-oriented purpose.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives like 'search_employees' or 'get_employee_history'. While it mentions 'exit processing and compliance' as context, it doesn't explicitly state when this tool should be chosen over other employee-related tools in the sibling list.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_time_off_balancesA

Check vacation, PTO, and sick leave balances for one or more employees.

Quickly answer 'How much PTO do I have?' for any employee. Supports checking multiple employees at once.

Args: instance: The SuccessFactors instance/company ID user_ids: Employee user ID(s) - single ID or comma-separated (max 50) data_center: SAP data center code (e.g., 'DC55', 'DC10', 'DC4') environment: Environment type ('preview', 'production', 'sales_demo') auth_user_id: SuccessFactors user ID for authentication (required) auth_password: SuccessFactors password for authentication (required) as_of_date: Check balance as of this date (YYYY-MM-DD). Defaults to today.

ParametersJSON Schema
NameRequiredDescriptionDefault
instanceYes
user_idsYes
data_centerYes
environmentYes
auth_user_idYes
auth_passwordYes
as_of_dateNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden. It mentions authentication requirements and the ability to check multiple employees (max 50), which adds useful behavioral context. However, it doesn't disclose other important traits like rate limits, error conditions, or what the output contains (though an output schema exists).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is appropriately sized and front-loaded with the core purpose first, followed by usage context, then detailed parameter documentation. Every sentence earns its place, though the parameter section is quite detailed (necessary given the schema coverage gap).

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (7 parameters, authentication requirements) and 0% schema description coverage, the description does an excellent job explaining parameters and purpose. The existence of an output schema means return values don't need explanation. However, some behavioral aspects like rate limits or error handling aren't covered.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage, the description fully compensates by providing detailed parameter documentation in the Args section. Each of the 7 parameters is clearly explained with examples, format requirements, and default values, adding substantial meaning beyond the bare schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose with specific verbs ('check', 'answer') and resources ('vacation, PTO, and sick leave balances for employees'). It distinguishes itself from siblings like 'get_time_off_requests' and 'get_upcoming_time_off' by focusing on balances rather than requests or upcoming time off.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context for when to use this tool ('Quickly answer "How much PTO do I have?" for any employee') and mentions support for checking multiple employees. However, it doesn't explicitly state when NOT to use it or name specific alternatives among siblings, though the purpose differentiation implies alternatives exist.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_time_off_requestsA

View time-off requests for approval tracking.

Shows pending, approved, or rejected time-off requests. Filter by employee or view all requests visible to you.

Args: instance: The SuccessFactors instance/company ID data_center: SAP data center code (e.g., 'DC55', 'DC10', 'DC4') environment: Environment type ('preview', 'production', 'sales_demo') auth_user_id: SuccessFactors user ID for authentication (required) auth_password: SuccessFactors password for authentication (required) user_id: Filter to a specific employee's requests (optional) status: Filter by status: 'pending', 'approved', 'rejected', 'cancelled', or 'all' (default: 'pending') from_date: Only show requests created on or after this date (YYYY-MM-DD) top: Maximum results (default: 50, max: 200)

ParametersJSON Schema
NameRequiredDescriptionDefault
instanceYes
data_centerYes
environmentYes
auth_user_idYes
auth_passwordYes
user_idNo
statusNopending
from_dateNo
topNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions authentication requirements ('auth_user_id' and 'auth_password' are required) and result limits ('top' with default 50, max 200), which are useful behavioral details. However, it doesn't cover important aspects like whether this is a read-only operation (implied by 'view' but not explicit), rate limits, error handling, or what 'visible to you' means in terms of permissions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with a clear purpose statement followed by a detailed parameter section. Every sentence earns its place by providing necessary information. It could be slightly more concise by integrating the parameter explanations more seamlessly, but the separation into purpose and args sections is logical and helpful.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (9 parameters, authentication required) and the presence of an output schema (which means return values don't need explanation in the description), the description is reasonably complete. It covers authentication needs, filtering options, and result limits. The main gap is lack of explicit read-only confirmation and permission context, but overall it provides good context for a query tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description includes an 'Args:' section that documents all 9 parameters with clear explanations, default values, and examples (e.g., data center codes like 'DC55', status values like 'pending'). With 0% schema description coverage, this parameter documentation in the description fully compensates and provides essential semantic context beyond the bare schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'View time-off requests for approval tracking' and 'Shows pending, approved, or rejected time-off requests.' It specifies the verb ('view', 'shows') and resource ('time-off requests'), but doesn't explicitly differentiate it from sibling tools like 'get_time_off_balances' or 'get_upcoming_time_off' beyond the approval tracking context.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides some usage context: 'Filter by employee or view all requests visible to you' and mentions filtering by status. However, it doesn't explicitly state when to use this tool versus alternatives like 'get_time_off_balances' (which might show balances rather than requests) or 'get_upcoming_time_off' (which might show scheduled time off). The guidance is implied rather than explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_upcoming_time_offA

See who is out or taking time off in a date range (team absence calendar).

Shows all approved (or pending) absences for a period. Filter by department or manager to see just your team.

Args: instance: The SuccessFactors instance/company ID start_date: Start of date range (YYYY-MM-DD) end_date: End of date range (YYYY-MM-DD) data_center: SAP data center code (e.g., 'DC55', 'DC10', 'DC4') environment: Environment type ('preview', 'production', 'sales_demo') auth_user_id: SuccessFactors user ID for authentication (required) auth_password: SuccessFactors password for authentication (required) department: Filter by department name or code manager_id: Filter to a specific manager's team status: Filter by approval status: 'approved', 'pending', or 'all' (default: 'approved') top: Maximum results (default: 200, max: 500)

ParametersJSON Schema
NameRequiredDescriptionDefault
instanceYes
start_dateYes
end_dateYes
data_centerYes
environmentYes
auth_user_idYes
auth_passwordYes
departmentNo
manager_idNo
statusNoapproved
topNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden for behavioral disclosure. While it mentions what data is shown ('approved (or pending) absences'), it doesn't disclose important behavioral traits like authentication requirements (implied but not explicit), rate limits, pagination behavior, error handling, or what happens when filters return no results. The description provides basic functionality but lacks operational context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with purpose first, then filtering context, then detailed parameter documentation. Every sentence earns its place, though the Args section is quite lengthy (which is necessary given the parameter count). The information is front-loaded with the most important purpose statement first.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (11 parameters, authentication required) and the presence of an output schema, the description covers the core functionality adequately. However, for a tool with no annotations and authentication requirements, it should provide more behavioral context about security implications, error scenarios, and operational constraints. The parameter documentation is excellent, but overall context could be richer.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage for 11 parameters, the description fully compensates by providing detailed parameter documentation in the Args section. Each parameter gets clear explanation including examples ('e.g., 'DC55', 'DC10', 'DC4''), default values ('default: 200, max: 500'), and usage context ('required'). This adds substantial meaning beyond what the bare schema provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose with specific verbs ('see who is out or taking time off') and resource ('team absence calendar'), and distinguishes it from siblings by focusing on upcoming time off rather than balances or requests. The opening sentence provides immediate clarity about what the tool does.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context about when to use this tool ('See who is out or taking time off in a date range') and mentions filtering capabilities ('Filter by department or manager to see just your team'). However, it doesn't explicitly state when NOT to use it or name specific alternatives among the sibling tools (like get_time_off_balances or get_time_off_requests).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_user_permissionsA

Get all permissions for a specific user across all their assigned roles.

Useful for answering 'What can this user do?' by showing their complete permission set.

Args: instance: The SuccessFactors instance/company ID user_id: The user ID to look up permissions for data_center: SAP data center code (e.g., 'DC55', 'DC10', 'DC4') environment: Environment type ('preview', 'production', 'sales_demo') auth_user_id: SuccessFactors user ID for authentication (required) auth_password: SuccessFactors password for authentication (required) locale: Locale for labels (default: en-US)

ParametersJSON Schema
NameRequiredDescriptionDefault
instanceYes
user_idYes
data_centerYes
environmentYes
auth_user_idYes
auth_passwordYes
localeNoen-US

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions authentication requirements and a default locale, but lacks details on rate limits, error handling, response format, or whether this is a read-only operation, leaving significant gaps for a tool with 7 parameters.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is appropriately sized and front-loaded with the core purpose, followed by usage context and parameter details. The Args section is structured but slightly verbose; every sentence earns its place, though it could be more streamlined.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (7 parameters, no annotations) and the presence of an output schema, the description covers purpose, usage, and parameters adequately. However, it lacks behavioral details like safety or performance, which are important for a tool with authentication and multiple inputs.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It adds meaningful semantics for all 7 parameters, explaining their purposes (e.g., 'SAP data center code', 'Environment type', 'Locale for labels') and noting required authentication fields, which goes beyond the bare schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose with specific verbs ('Get all permissions') and resources ('for a specific user across all their assigned roles'), and distinguishes it from siblings like 'get_user_roles' or 'get_role_permissions' by focusing on the complete permission set rather than roles or metadata.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context for when to use this tool ('Useful for answering "What can this user do?"'), but does not explicitly mention when not to use it or name alternatives among siblings, such as 'get_user_roles' for role-level information instead of permissions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_user_rolesA

Get all RBP roles assigned to a specific user.

This tool complements get_user_permissions by showing which roles are assigned to a user, not just the resulting permissions.

Args: instance: The SuccessFactors instance/company ID user_id: The user ID to look up roles for data_center: SAP data center code (e.g., 'DC55', 'DC10', 'DC4') environment: Environment type ('preview', 'production', 'sales_demo') auth_user_id: SuccessFactors user ID for authentication (required) auth_password: SuccessFactors password for authentication (required) include_permissions: If True, also fetches permissions for each role

ParametersJSON Schema
NameRequiredDescriptionDefault
instanceYes
user_idYes
data_centerYes
environmentYes
auth_user_idYes
auth_passwordYes
include_permissionsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden. It mentions authentication requirements ('auth_user_id', 'auth_password') and the optional 'include_permissions' flag, but lacks critical behavioral details like whether this is a read-only operation, potential rate limits, error conditions, or what the output contains. For a tool with 7 parameters and no annotations, this is insufficient.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with a clear purpose statement, usage context, and parameter explanations. It's appropriately sized for a 7-parameter tool, though the 'Args' section is somewhat lengthy. Every sentence adds value, with no redundant information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 7 parameters, no annotations, but an output schema exists, the description does reasonably well. It explains parameters thoroughly and provides usage context. However, it lacks behavioral transparency details (e.g., safety, side effects) that would be important for a tool accessing user data. The output schema reduces but doesn't eliminate the need for some behavioral context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It provides semantic explanations for all 7 parameters in the 'Args' section, clarifying their purposes (e.g., 'instance: The SuccessFactors instance/company ID', 'include_permissions: If True, also fetches permissions for each role'). This adds significant value beyond the bare schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Get all RBP roles assigned to a specific user.' It specifies the verb ('Get'), resource ('RBP roles'), and target ('specific user'). It also distinguishes from sibling 'get_user_permissions' by explaining this shows roles rather than resulting permissions.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly provides usage guidance: 'This tool complements get_user_permissions by showing which roles are assigned to a user, not just the resulting permissions.' This directly states when to use this tool versus the sibling alternative, offering clear comparative context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_entitiesA

List all available OData entities in the SuccessFactors instance.

This discovery tool helps users understand what data is available to query. It fetches the service document which lists all entity sets.

Args: instance: The SuccessFactors instance/company ID data_center: SAP data center code (e.g., 'DC55', 'DC10', 'DC4') environment: Environment type ('preview', 'production', 'sales_demo') auth_user_id: SuccessFactors user ID for authentication (required) auth_password: SuccessFactors password for authentication (required) category: Optional filter - 'foundation', 'employee', 'talent', 'platform', 'all' (default: all)

Returns: dict containing entity list, count, and optional category breakdown

ParametersJSON Schema
NameRequiredDescriptionDefault
instanceYes
data_centerYes
environmentYes
auth_user_idYes
auth_passwordYes
categoryNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden. It discloses that this is a read operation ('fetches the service document'), but lacks details on authentication behavior, rate limits, error handling, or what 'service document' entails. It adds some context about being a discovery tool but misses key behavioral traits for a tool with authentication parameters.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is appropriately sized and front-loaded with the core purpose in the first sentence. The Args and Returns sections are structured for clarity. Minor redundancy exists (e.g., 'SuccessFactors' repeated), but overall it's efficient with zero wasted sentences.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (6 params, authentication, discovery function) and no annotations, the description does well: it explains purpose, parameters, and return values. However, with an output schema present, the Returns section is somewhat redundant. It lacks details on error cases or operational constraints, leaving minor gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must fully compensate. It successfully adds meaning for all 6 parameters: explaining what each represents (e.g., 'SAP data center code', 'Environment type'), providing examples ('DC55', 'preview'), noting requirements ('required'), and detailing the category filter with options and default. This goes well beyond the bare schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose with specific verbs ('List all available OData entities') and resources ('SuccessFactors instance'), distinguishing it from sibling tools that focus on specific data queries (e.g., query_odata, get_employee_profile). It explicitly identifies this as a 'discovery tool' for understanding available data.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context for when to use this tool ('helps users understand what data is available to query'), but does not explicitly state when not to use it or name specific alternatives. It implies usage for discovery before querying, but lacks explicit exclusions or comparisons to siblings like query_odata.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

query_odataA

Query any OData entity with flexible filtering, sorting, and field selection.

This is the most flexible tool - it can query any entity in the system. Use other specialized tools for common queries (employee profiles, etc.).

Args: instance: The SuccessFactors instance/company ID entity: OData entity to query (e.g., "User", "EmpJob", "Position") data_center: SAP data center code (e.g., 'DC55', 'DC10', 'DC4') environment: Environment type ('preview', 'production', 'sales_demo') auth_user_id: SuccessFactors user ID for authentication (required) auth_password: SuccessFactors password for authentication (required) select: Comma-separated fields to return (e.g., "userId,firstName,lastName") filter: OData filter expression (e.g., "department eq 'Engineering'") orderby: Sort order (e.g., "hireDate desc") expand: Navigation properties to expand (e.g., "manager,hr") top: Maximum records (default 100, max 1000) skip: Records to skip for pagination (default 0)

ParametersJSON Schema
NameRequiredDescriptionDefault
instanceYes
entityYes
data_centerYes
environmentYes
auth_user_idYes
auth_passwordYes
selectNo
filterNo
orderbyNo
expandNo
topNo
skipNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. It mentions authentication requirements ('auth_user_id' and 'auth_password' are required) and pagination defaults ('default 100, max 1000'), which adds useful context. However, it doesn't cover important aspects like rate limits, error handling, or response format details, leaving gaps in behavioral understanding.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with a clear purpose statement, usage guidelines, and detailed parameter documentation. While comprehensive, it's appropriately sized for a complex tool with many parameters. The information is front-loaded with the most important details first, though the parameter section is lengthy but necessary.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (12 parameters, no annotations, but with output schema), the description does a good job covering purpose, usage, and parameters. The presence of an output schema means return values don't need explanation. However, some behavioral aspects like error conditions or performance characteristics are missing, preventing a perfect score.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage, the description fully compensates by providing detailed explanations for all 12 parameters. Each parameter is clearly documented with examples (e.g., "entity: OData entity to query (e.g., 'User', 'EmpJob', 'Position')"), default values, and constraints, adding significant value beyond the bare schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose as 'Query any OData entity with flexible filtering, sorting, and field selection.' It specifies the verb ('query'), resource ('any OData entity'), and scope ('flexible filtering, sorting, and field selection'), and explicitly distinguishes it from specialized sibling tools for common queries like employee profiles.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit guidance on when to use this tool vs alternatives: 'Use other specialized tools for common queries (employee profiles, etc.).' It clearly positions this as the most flexible tool for general queries while directing users to specialized tools for specific use cases, which helps the agent make informed decisions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_employeesA

Search for employees by name, department, location, or manager.

Find employees without knowing their exact user IDs. Supports partial name matching and filtering by department, location, or manager.

Args: instance: The SuccessFactors instance/company ID data_center: SAP data center code (e.g., 'DC55', 'DC10', 'DC4') environment: Environment type ('preview', 'production', 'sales_demo') auth_user_id: SuccessFactors user ID for authentication (required) auth_password: SuccessFactors password for authentication (required) search_text: Partial name to search (searches first name and last name) department: Filter by department name or code location: Filter by work location manager_id: Filter to show only this manager's direct reports status: Employee status filter: 'active', 'inactive', or 'all' (default: 'active') top: Maximum number of results to return (default: 50, max: 200)

ParametersJSON Schema
NameRequiredDescriptionDefault
instanceYes
data_centerYes
environmentYes
auth_user_idYes
auth_passwordYes
search_textNo
departmentNo
locationNo
manager_idNo
statusNoactive
topNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. While it mentions authentication requirements and result limits ('default: 50, max: 200'), it doesn't describe important behavioral aspects like rate limits, error handling, response format, pagination, or whether this is a read-only operation. For an 11-parameter search tool with authentication, this leaves significant gaps.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with purpose first, then usage context, followed by detailed parameter documentation. While comprehensive, the parameter section is quite lengthy for 11 parameters, making it somewhat dense. However, every sentence serves a clear purpose, and the information is appropriately front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (11 parameters, authentication, search functionality) and the presence of an output schema, the description is partially complete. It thoroughly documents parameters but lacks behavioral context about the search operation itself. The output schema existence means it doesn't need to explain return values, but other behavioral aspects remain undocumented.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage, the description fully compensates by providing detailed parameter documentation in the 'Args:' section. It explains what each parameter does, provides examples ('e.g., 'DC55', 'DC10', 'DC4''), specifies defaults, and clarifies usage ('searches first name and last name', 'direct reports'). This adds substantial value beyond the bare schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Search for employees by name, department, location, or manager.' It specifies the verb ('search') and resource ('employees'), and distinguishes itself from siblings by focusing on flexible search capabilities rather than retrieving specific employee data like 'get_employee_profile' or 'get_employee_history'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context for when to use this tool: 'Find employees without knowing their exact user IDs.' It implies this is for discovery rather than direct lookup, but doesn't explicitly state when NOT to use it or name specific alternatives among the many sibling tools, which prevents a perfect score.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

TDQS

A3.6/5.0
Disambiguation4/5

Most tools have distinct purposes targeting specific HR/employee management functions like permissions, hiring, time-off, and employee data, with clear boundaries. However, some overlap exists between get_user_permissions and check_user_permission, and between get_employee_profile and get_employee_history, which could cause minor confusion.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern using snake_case, such as get_employee_profile, check_user_permission, and compare_configurations. This uniformity makes the tool set predictable and easy to navigate.

Tool Count3/5

With 29 tools, the count is borderline high for an HR system server, potentially overwhelming for agents. While it covers many aspects of SuccessFactors, it feels heavy and could benefit from consolidation or better scoping to reduce complexity.

Completeness4/5

The tool set provides comprehensive coverage for HR operations, including employee data, permissions, hiring, time-off, and configuration. Minor gaps exist, such as lack of create/update/delete tools for CRUD operations, but agents can work around this using the flexible query_odata tool.

Maintenance

ActivityStale
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    C
    maintenance
    Exposes SAP SuccessFactors HR data as MCP tools for AI agents, enabling natural language queries about employees, jobs, performance, and organizational structure.
  • F
    license
    Not graded
    quality
    C
    maintenance
    Enables interaction with SAP Business One Service Layer through MCP, providing tools for querying entities, checking sessions, and executing OData requests with optional write protection.

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/aiadiguru2025/sf-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server