Solves a scheduling/roster problem (gym class rosters, dance-school timetables,
Solves a scheduling/roster problem (gym class rosters, dance-school timetables, restaurant shift plans) with OR-Tools CP-SAT: assigns resources to slot demands honoring availability, tags, and constraints (no double-booking, max-per-day, min-rest, forbidden/required pairs, fixed assignments, max total hours), optimizing the requested objective. Infeasible inputs come back with the specific conflicting demands/constraints named.
Paid test badge: not yet. The checks above are free: we call the tool without paying and read the payment request it sends back. The Verified badge needs paid calls whose answers match the promised output, and nobody can buy a badge.
Endpoint
POST https://x402-api-24223879872.us-east1.run.app/v1/schedule-solve
| Category | Everything else |
|---|---|
| Provider host | x402-api-24223879872.us-east1.run.app |
| Networks | eip155:8453 |
| Payment schemes | exact |
| Self-reported calls, 30 days | 1 from 1 payers (the provider's figure, not ours) |
Our checks, last 30 days
We never call tools that send, buy, move money or file anything, not even without paying.
Example input (from the provider)
{
"body": {
"constraints": [
{
"type": "no_double_booking"
}
],
"demands": [
{
"id": "yoga-mon-9am",
"required": 1,
"requiresTags": [
"yoga"
],
"slotId": "mon-9am"
},
{
"id": "yoga-mon-10am",
"required": 1,
"requiresTags": [
"yoga"
],
"slotId": "mon-10am"
}
],
"objective": "balance_load",
"resources": [
{
"availability": "all",
"id": "alice",
"tags": [
"yoga"
]
},
{
"availability": [
"mon-9am",
"mon-10am"
],
"id": "bob",
"tags": [
"yoga",
"spin"
]
}
],
"slots": [
{
"day": "MON",
"end": "10:00",
"id": "mon-9am",
"start": "09:00"
},
{
"day": "MON",
"end": "11:00",
"id": "mon-10am",
"start": "10:00"
}
],
"timeLimitSeconds": 5
},
"bodyType": "json",
"method": "POST",
"type": "http"
}
Promised output schema (from the provider)
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"input": {
"additionalProperties": false,
"properties": {
"body": {
"properties": {
"constraints": {
"description": "Optional typed constraints: no_double_booking, max_per_day, min_rest_between, forbid_pair, require_pair, fixed_assignment, max_total_hours.",
"items": {
"type": "object"
},
"type": "array"
},
"demands": {
"description": "Assignment requirements, each tied to a slot.",
"items": {
"type": "object"
},
"type": "array"
},
"objective": {
"default": "balance_load",
"enum": [
"balance_load",
"maximize_preferences",
"minimize_resources"
],
"type": "string"
},
"resources": {
"description": "People/rooms/equipment that can be assigned, with tags and availability.",
"items": {
"type": "object"
},
"type": "array"
},
"slots": {
"description": "Time or label slots demands can be assigned to.",
"items": {
"type": "object"
},
"type": "array"
},
"timeLimitSeconds": {
"default": 5,
"maximum": 15,
"type": "number"
}
},
"required": [
"slots",
"resources",
"demands"
]
},
"bodyType": {
"enum": [
"json",
"form-data",
"text"
],
"type": "string"
},
"method": {
"enum": [
"POST"
],
"type": "string"
},
"type": {
"const": "http",
"type": "string"
}
},
"required": [
"type",
"method",
"bodyType",
"body"
],
"type": "object"
},
"output": {
"properties": {
"example": {
"properties": {
"assignments": {
"items": {
"properties": {
"demandId": {
"type": "string"
},
"resourceId": {
"type": "string"
},
"slotId": {
"type": "string"
}
},
"type": "object"
},
"type": "array"
},
"infeasibility": {
"nullable": true,
"properties": {
"explanation": {
"type": "string"
},
"unsatisfiableConstraints": {
"items": {
"type": "string"
},
"type": "array"
}
},
"type": "object"
},
"stats": {
"properties": {
"objectiveValue": {
"type": [
"number",
"null"
]
},
"resourceLoad": {
"type": "object"
},
"wallTimeMs": {
"type": "number"
}
},
"type": "object"
},
"status": {
"enum": [
"optimal",
"feasible",
"infeasible",
"timeout"
],
"type": "string"
}
},
"type": "object"
},
"type": {
"type": "string"
}
},
"required": [
"type"
],
"type": "object"
}
},
"required": [
"input"
],
"type": "object"
}