> For the complete documentation index, see [llms.txt](https://knowledgebase.fabricdata.com/xytech/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://knowledgebase.fabricdata.com/xytech/xytech-x2-mcp-server/xytech-x2-mcp-server.md).

# Xytech X2 MCP Server

The X2 MCP server exposes Xytech's operational surface to autonomous agents and any MCP-compatible client — orders, media workflows, resource scheduling, transmission, timecards, and invoicing — through structured tools governed by OAuth with **permission scoping at the individual tool level**.

{% hint style="info" %}
**Access model:** OAuth 2.1 (Authorization Code + PKCE). Your Xytech administrator grants each agent identity access to a specific set of tools. An agent granted `xytech_search_orders` but not `xytech_create_order` can read but never write. All tool invocations are audited.
{% endhint %}

## Connect

|                             |                                                                                               |
| --------------------------- | --------------------------------------------------------------------------------------------- |
| **Server URL (production)** | `https://mcp.xytech.fabricdata.com/mcp`                                                       |
| **Health**                  | `https://mcp.xytech.fabricdata.com/health`                                                    |
| **Transport**               | Streamable HTTP                                                                               |
| **Auth**                    | OAuth 2.1 — Authorization Code grant with PKCE (S256). Dynamic Client Registration supported. |
| **Scopes**                  | Per-tool grants managed in Xytech administration                                              |

### OAuth endpoints

The server publishes standard discovery documents, so MCP clients configure themselves automatically:

|                                   |                                           |
| --------------------------------- | ----------------------------------------- |
| **Authorization**                 | `/oauth/authorize`                        |
| **Token**                         | `/oauth/token`                            |
| **Dynamic Client Registration**   | `/oauth/register`                         |
| **Authorization Server Metadata** | `/.well-known/oauth-authorization-server` |
| **Protected Resource Metadata**   | `/.well-known/oauth-protected-resource`   |
| **OpenID Configuration**          | `/.well-known/openid-configuration`       |

Authentication is interactive: agents complete a browser-based OAuth consent to obtain a token. (A headless client-credentials/service-account flow is not currently offered.)

**Claude / Claude Code:**

```bash
claude mcp add xytech-x2 https://mcp.xytech.fabricdata.com/mcp --transport http
# Complete the OAuth prompt in your browser; tool availability reflects your grants.
```

Any MCP-compatible client (agent frameworks, IDEs, orchestration platforms) connects the same way: register the server URL, complete OAuth, discover tools.

## Tool catalog

Tools are organized by operational lifecycle area.

### Orders & operations

`xytech_create_order` · `xytech_get_order` · `xytech_update_order` · `xytech_search_orders` · `xytech_search_all_orders` · `xytech_get_order_services` · `xytech_get_order_transactions` · `xytech_update_order_transaction` · `xytech_add_order_source` · `xytech_get_order_sources` · `xytech_search_orders_by_resource` · `xytech_update_service_row_field`

Create, read, update, and search work orders; manage order services, transactions, and sources.

### Media orders & assets

`xytech_create_media_order` · `xytech_get_media_order` · `xytech_update_media_order` · `xytech_search_media_orders` · `xytech_get_media_order_details` · `xytech_search_media_order_services` · `xytech_get_media_asset` · `xytech_search_media_assets`

Full media order lifecycle: instantiate orders for ingest, processing, and delivery workflows; query media assets.

### Transmission

`xytech_get_transmission_order` · `xytech_search_transmission_orders`

Query and track transmission orders for broadcast delivery coordination.

### Scheduling & resources

`xytech_check_resource_availability` · `xytech_check_group_availability` · `xytech_get_resource_schedule_v2` · `xytech_search_resources` · `xytech_create_quick_hold` · `xytech_get_resource_compatibility` · `xytech_search_resource_compatibility` · `xytech_get_scheduling_counter_rule` · `xytech_evaluate_counter_rules`

Check availability of people, rooms, and equipment; read schedules; place holds; evaluate scheduling rules.

### Jobs & titles

`xytech_create_job` · `xytech_get_job` · `xytech_search_jobs` · `xytech_create_title` · `xytech_get_title` · `xytech_update_title` · `xytech_search_titles`

### Personnel, timecards & payroll

`xytech_create_timecard_entry` · `xytech_get_timecard` · `xytech_list_timecards` · `xytech_search_timecards` · `xytech_upsert_timecard_lines` · `xytech_add_timecard_activity` · `xytech_get_timecard_batch` · `xytech_search_timecard_batches` · `xytech_approve_timecard_batch` · `xytech_get_employee_timecard_info` · `xytech_search_employees` · `xytech_get_employee_contract` · `xytech_search_employee_contracts` · `xytech_run_personnel_rule_check` · `xytech_list_personnel_rule_sets` · `xytech_get_personnel_rule_set` · `xytech_list_personnel_rule_categories` · `xytech_get_personnel_rule_category` · `xytech_list_payroll_rules` · `xytech_get_payroll_rule` · `xytech_list_payroll_types` · `xytech_list_penalty_types` · `xytech_get_penalty_type` · `xytech_list_unions` · `xytech_get_union` · `xytech_list_union_rules` · `xytech_get_union_rule` · `xytech_list_qualifications` · `xytech_get_qualification` · `xytech_list_qualification_groups`

Timecard entry through batch approval, with union, payroll, and personnel rule evaluation.

### Financials

`xytech_create_invoice_batch` · `xytech_get_invoice` · `xytech_get_invoice_batch` · `xytech_search_invoices` · `xytech_search_invoice_batches`

### Customers & contacts

`xytech_get_customer` · `xytech_update_customer` · `xytech_search_customers` · `xytech_get_contact` · `xytech_search_contacts`

### Monitoring & alerts

`xytech_healthcheck` · `xytech_create_alert` · `xytech_get_alert` · `xytech_search_alerts` · `xytech_dismiss_alert` · `xytech_get_notification` · `xytech_search_notifications`

Operational health checks and alert lifecycle — agents can monitor, raise, and clear alerts.

### Configuration & reference data

`xytech_list_reference_data` · `xytech_get_custom_field_info` · `xytech_refresh_custom_fields` · `xytech_get_service_template` · `xytech_search_service_templates` · `xytech_list_service_template_details` · `xytech_search_service_profiles` · `xytech_get_spec_detail_template` · `xytech_search_spec_detail_templates` · `xytech_get_effective_spec_values` · `xytech_compare_spec_values`

## Example agent session

> **Goal:** instantiate a media order for an image-ingest workflow and confirm resource availability.

```
1. xytech_healthcheck                          → verify connectivity
2. xytech_search_customers {name: "..."}       → resolve customer ID
3. xytech_create_media_order {...}             → instantiate the order
4. xytech_check_resource_availability {...}    → confirm ingest capacity
5. xytech_get_media_order_details {id}         → verify state
```

## Errors, retries, and safety

* Tools return structured errors with actionable messages; validation failures identify the offending field.
* Read tools (`get_*`, `search_*`, `list_*`) are safe to retry. For write tools, re-read state with the corresponding `get_*`/`search_*` tool before retrying, to avoid duplicate creation — the server does not deduplicate writes via idempotency keys.
* The server exposes a `/health` endpoint and the `xytech_healthcheck` tool for connectivity and liveness checks.

## Governance

* **Tool-level OAuth scoping** — grants map to Xytech's RBAC model; agents hold exactly the authority an administrator assigns.
* **Audit** — every invocation is logged against the agent identity.
* **Environments** — production (`mcp.xytech.fabricdata.com`) and staging (`mcp.fox.stg.xytech.fabricdata.com`) are provisioned separately; agent integrations are typically validated against staging first. Contact your Fabric account team for provisioning.

## See also

* [REST API v3](https://knowledgebase.fabricdata.com/xytech/rest-api-v3/) — machine-readable schemas, migration guide
* [Webhooks](https://knowledgebase.fabricdata.com/xytech/webhooks/) — event-driven workflows instead of polling
* [llms.txt](https://knowledgebase.fabricdata.com/xytech/llms.txt) — full markdown documentation index
