For Engineering Managers
Alloy is API-first, which means everything — sprint planning, reporting, permissions, workflow enforcement — is automatable. No more clicking through a UI to get a status update. This guide shows how an EM can use Alloy to run their team, track progress, and report up, all from the command line or through integrations.
1. Why Alloy for EMs
Traditional project management tools make you the bottleneck. You click through boards, chase people for updates, and manually assemble reports. Alloy flips that:
- Everything is an API call. Standup summaries, sprint reports, and budget tracking can all be scripted or wired into Slack/CI.
- Workflow enforcement is built in. Set strict mode and the system rejects invalid transitions — no more tickets jumping from Backlog to Done.
- Multi-tenant by design. One Alloy instance serves every team in your org, with role-based access keeping things clean.
- MCP integration. Use natural language via the MCP server to query project status, create sprints, and generate reports without memorizing endpoints.
2. Sprint Planning
Create a sprint, assign tickets, and set a goal. Start with a two-week iteration:
curl -s -X POST "$BASE_URL/api/v1/projects/$PROJECT_ID/sprints" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOKEN" \
-d '{
"name": "Sprint 1 — Onboarding Flow",
"goal": "Ship user onboarding end-to-end",
"start_date": "2026-04-01",
"end_date": "2026-04-15"
}' | jq .
{
"id": "...",
"project_id": "...",
"name": "Sprint 1 — Onboarding Flow",
"goal": "Ship user onboarding end-to-end",
"start_date": "2026-04-01",
"end_date": "2026-04-15",
"status": "Planned",
"created_at": "...",
"updated_at": "..."
}
Start the sprint when the team is ready:
curl -s -X POST "$BASE_URL/api/v1/sprints/$SPRINT_ID/start" \
-H "Authorization: Bearer $TOKEN" | jq .
{
"id": "...",
"project_id": "...",
"name": "Sprint 1 — Onboarding Flow",
"goal": "Ship user onboarding end-to-end",
"start_date": "2026-04-01",
"end_date": "2026-04-15",
"status": "Active",
"created_at": "...",
"updated_at": "..."
}
CLI shortcut:
alloy sprint create --project PROJ --name "Sprint 1" --goal "Ship onboarding" --start 2026-04-01 --end 2026-04-15
See the Sprints & Boards guide for the full sprint lifecycle including boards, burndowns, and completion.
3. Team Visibility
See who is working on what by listing project tickets:
curl -s "$BASE_URL/api/v1/projects/$PROJECT_ID/tickets?limit=5" \
-H "Authorization: Bearer $TOKEN" | jq .
{
"items": [
{
"id": "...",
"project_id": "...",
"ticket_number": "...",
"title": "...",
"status": "...",
"priority": "...",
"assignee_id": "...",
"reporter_id": "...",
"created_at": "...",
"updated_at": "..."
}
],
"next_cursor": "..."
}
Filter by status (?status=InProgress) or assignee (?assignee_id=...) to
narrow results.
For a quick snapshot, use the MCP server’s /alloy:standup prompt or the
get_project_summary tool, which aggregates ticket counts by status and
lists active sprints in one call.
MCP shortcut: Ask your AI assistant: “Give me a summary of the PROJ project” — it calls
get_project_summarybehind the scenes.
See the Projects & Tickets guide for filtering, searching, and bulk operations.
4. Standup Automation
Instead of asking each engineer for updates, pull standup data from Alloy
directly. The MCP /alloy:standup prompt generates a summary from recent
ticket activity — transitions, comments, and time logged.
You can also build your own standup script. List tickets updated in the last 24 hours:
curl -s "$BASE_URL/api/v1/projects/$PROJECT_ID/tickets?status=InProgress&limit=50" \
-H "Authorization: Bearer $TOKEN" | jq '.items | length'
Pipe the output into Slack or your team channel. Because it is just an API, you can run this on a cron job or as a CI step.
See the MCP Tools Reference for the full list of MCP prompts and tools available for automation.
5. Workflow Enforcement
Prevent tickets from skipping steps by setting your workflow to strict mode. Create a workflow with defined transitions and enforcement:
curl -s -X POST "$BASE_URL/api/v1/orgs/$ORG_ID/workflows" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOKEN" \
-d '{
"name": "EM Strict Flow",
"statuses": [
{"name": "Backlog", "category": "todo"},
{"name": "Ready", "category": "todo"},
{"name": "InProgress", "category": "in_progress"},
{"name": "Review", "category": "in_progress"},
{"name": "Done", "category": "done"}
],
"transitions": [
{"from": "Backlog", "to": "Ready"},
{"from": "Ready", "to": "InProgress"},
{"from": "InProgress", "to": "Review"},
{"from": "Review", "to": "Done"},
{"from": "Review", "to": "InProgress"}
],
"enforcement": "strict"
}' | jq .
{
"id": "...",
"org_id": "...",
"name": "EM Strict Flow",
"statuses": [
{"name": "Backlog", "category": "todo"},
{"name": "Ready", "category": "todo"},
{"name": "InProgress", "category": "in_progress"},
{"name": "Review", "category": "in_progress"},
{"name": "Done", "category": "done"}
],
"transitions": [
{"from": "Backlog", "to": "Ready"},
{"from": "Ready", "to": "InProgress"},
{"from": "InProgress", "to": "Review"},
{"from": "Review", "to": "Done"},
{"from": "Review", "to": "InProgress"}
],
"enforcement": "strict",
"created_at": "...",
"updated_at": "..."
}
With strict enforcement, any attempt to transition a ticket outside the
allowed paths returns a 422 error. No more tickets jumping from Backlog
to Done.
See the Workflows & Statuses guide for assigning workflows to projects, enforcement modes, and handling rejected transitions.
6. Reporting
Pull capitalization reports grouped by team for leadership reviews. The report aggregates approved time entries with labor rates:
curl -s "$BASE_URL/api/v1/reports/capitalization?period=2026-03&group_by=team" \
-H "Authorization: Bearer $TOKEN" | jq .
{
"period": "2026-03",
"teams": []
}
When there are approved time entries with labor rates configured, each team
entry includes team_id, team_name, total_hours, total_amount_cents,
and a projects breakdown. Add include_budget=true to track spend against
budget.
For CSV exports (useful for finance reviews and spreadsheets):
curl -s "$BASE_URL/api/v1/reports/capitalization/export?period=2026-03&group_by=team" \
-H "Authorization: Bearer $TOKEN" -o report.csv
Tip: Schedule the CSV export as a weekly cron job and email it to leadership automatically.
See the Time Tracking & Finance guide for labor rates, approval workflows, and the full reporting API.
7. Permissions
Set up roles so the right people have the right access:
| Role | Who | What they can do |
|---|---|---|
| Owner | You (the EM) | Everything — manage members, billing, settings |
| Admin | Tech leads | Create projects, manage sprints, approve time |
| Member | Engineers | Create/edit tickets, log time, comment |
| Reporter | Stakeholders | Create tickets and comments, view everything |
| Viewer | Execs, auditors | Read-only access to projects, tickets, reports |
Invite a stakeholder as a Reporter:
curl -s -X POST "$BASE_URL/api/v1/orgs/$ORG_ID/invites" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOKEN" \
-d "{
\"email\": \"stakeholder-em@example.com\",
\"role\": \"Reporter\",
\"created_by\": \"$USER_ID\"
}" | jq .
{
"id": "...",
"invite_code": "...",
"invite_link": "...",
"email": "stakeholder-em@example.com",
"role": "Reporter",
"expires_at": "..."
}
See the Teams, Roles & Permissions guide for the full permission matrix, team management, and project membership.
8. Getting Started — Day 1 Checklist
Here is what to do when you first set up Alloy for your team:
- Create your organization —
POST /api/v1/orgswith your team name - Create a project for each workstream —
POST /api/v1/projects - Set up a workflow — Create a strict workflow matching your process and assign it to your projects
- Invite your team — Send invites with appropriate roles (Admin for leads, Member for engineers)
- Create your first sprint — Plan a two-week iteration with a clear goal
- Add tickets — Break work into tickets with priorities and assignees
- Configure labor rates — Set hourly rates for capitalization reporting
(
POST /api/v1/users/{id}/orgs/{org_id}/labor-rates) - Automate standups — Wire up the MCP
/alloy:standupprompt or build a cron script that queries ticket activity
Each step links to its respective guide above. Start with steps 1–4 and iterate from there.
Further reading:
- Projects & Tickets — creating and managing work
- Sprints & Boards — sprint lifecycle and burndowns
- Workflows & Statuses — process enforcement
- Time Tracking & Finance — time logging and reports
- Teams, Roles & Permissions — access control
- Labels, Tags & Organization — categorization
- API Reference — complete endpoint documentation
- MCP Tools Reference — MCP automation