ReportJobsProfiles

Job postings ask for Claude Code five times as often as profiles list it

Twelve AI coding assistants and agent frameworks, counted in open job postings and in profile skills on the Metix AI Platform on September 21, 2026.

Run it92 API Credits to reproduceReproducing reads no records: every number is a count

5.1×

open postings name Claude Code for every profile that lists it as a skill (27,679 to 5,407).

Postings per profile, log scale. The tick is one to one; blue leans to postings, lilac to profiles.

In brief

  1. Of nine tools whose names cannot mean anything else, Claude Code has the widest gap: 27,679 open postings name it and 5,407 profiles list it, 5.1 postings per profile.
  2. LangChain runs the other way, with 30,546 profiles to 14,099 postings. DSPy does too: 390 profiles to 205 postings.
  3. The gap is wider outside the US. For Claude Code it is 3.3 postings per profile in the US and 8.4 everywhere else.
  4. Naming a coding tool does not raise the posted pay floor: 48% of such US postings start at $150k or more, against 52% for software engineer titles.

Postings against profiles

Part 1, Figures 01 to 03

Each tool's open postings against the profiles that list it as a skill, worldwide and inside and outside the US.

01

LangChain and Claude Code are the largest on either side, and they lean opposite ways

Nine AI coding assistants and agent frameworks whose names are unambiguous. Profiles that list each one on the left, open postings that name it on the right, on one scale, sorted by postings

Claude Code: 5407 profiles, 27679 postings; LangChain: 30546 profiles, 14099 postings; GitHub Copilot: 12641 profiles, 12790 postings; LangGraph: 8751 profiles, 9002 postings; Model Context Protocol: 5435 profiles, 5777 postings; LlamaIndex: 2767 profiles, 5120 postings; CrewAI: 2078 profiles, 3570 postings; AutoGen: 1833 profiles, 3464 postings; DSPy: 390 profiles, 205 postings

  1. 5,407Claude Code27,679
  2. 30,546LangChain14,099
  3. 12,641GitHub Copilot12,790
  4. 8,751LangGraph9,002
  5. 5,435Model Context Protocol5,777
  6. 2,767LlamaIndex5,120
  7. 2,078CrewAI3,570
  8. 1,833AutoGen3,464
  9. 390DSPy205

What it shows

LangChain is the one large tool with far more profiles than postings; Claude Code is the one with far more postings than profiles.

Method and limits

Postings and profiles run to similar sizes, so they share one scale.

Source: Metix AI Platform, jobs and profiles, 2026-09-21.

Querytools.json
POST /v1/jobs/query · POST /v1/people/query · queries/tools.json
{  "note": "Each tool's condition on job postings (description) and on profiles (skills). Cursor, Codex, and Windsurf count only when another AI coding tool is named alongside, because the plain words have other meanings.",  "tools": [    {      "id": "claude-code",      "family": "assistant",      "postings": {        "field": "description",        "match": "claude code"      },      "profiles": {        "field": "skills",        "match": "claude code"      },      "unambiguous": true    },    {      "id": "cursor",      "family": "assistant",      "postings": {        "all": [          {            "field": "description",            "match": "cursor"          },          {            "any": [              {                "field": "description",                "match": "claude"              },              {                "field": "description",                "match": "copilot"              },              {                "field": "description",                "match": "windsurf"              },              {                "field": "description",                "match": "codex"              }            ]          }        ]      },      "profiles": {        "all": [          {            "field": "skills",            "match": "cursor"          },          {            "any": [              {                "field": "skills",                "match": "claude"              },              {                "field": "skills",                "match": "copilot"              },              {                "field": "skills",                "match": "windsurf"              },              {                "field": "skills",                "match": "codex"              }            ]          }        ]      },      "unambiguous": false    },    {      "id": "github-copilot",      "family": "assistant",      "postings": {        "field": "description",        "match": "github copilot"      },      "profiles": {        "field": "skills",        "match": "github copilot"      },      "unambiguous": true    },    {      "id": "codex",      "family": "assistant",      "postings": {        "all": [          {            "field": "description",            "match": "codex"          },          {            "any": [              {                "field": "description",                "match": "openai"              },              {                "field": "description",                "match": "claude"              },              {                "field": "description",                "match": "copilot"              },              {                "field": "description",                "match": "cursor"              }            ]          }        ]      },      "profiles": {        "all": [          {            "field": "skills",            "match": "codex"          },          {            "any": [              {                "field": "skills",                "match": "openai"              },              {                "field": "skills",                "match": "claude"              },              {                "field": "skills",                "match": "copilot"              },              {                "field": "skills",                "match": "cursor"              }            ]          }        ]      },      "unambiguous": false    },    {      "id": "windsurf",      "family": "assistant",      "postings": {        "all": [          {            "field": "description",            "match": "windsurf"          },          {            "any": [              {                "field": "description",                "match": "cursor"              },              {                "field": "description",                "match": "copilot"              },              {                "field": "description",                "match": "claude"              },              {                "field": "description",                "match": "codex"              }            ]          }        ]      },      "profiles": {        "all": [          {            "field": "skills",            "match": "windsurf"          },          {            "any": [              {                "field": "skills",                "match": "cursor"              },              {                "field": "skills",                "match": "copilot"              },              {                "field": "skills",                "match": "claude"              },              {                "field": "skills",                "match": "codex"              }            ]          }        ]      },      "unambiguous": false    },    {      "id": "langchain",      "family": "framework",      "postings": {        "field": "description",        "match": "langchain"      },      "profiles": {        "field": "skills",        "match": "langchain"      },      "unambiguous": true    },    {      "id": "langgraph",      "family": "framework",      "postings": {        "field": "description",        "match": "langgraph"      },      "profiles": {        "field": "skills",        "match": "langgraph"      },      "unambiguous": true    },    {      "id": "mcp",      "family": "framework",      "postings": {        "field": "description",        "match": "model context protocol"      },      "profiles": {        "field": "skills",        "match": "model context protocol"      },      "unambiguous": true    },    {      "id": "llamaindex",      "family": "framework",      "postings": {        "field": "description",        "match": "llamaindex"      },      "profiles": {        "field": "skills",        "match": "llamaindex"      },      "unambiguous": true    },    {      "id": "crewai",      "family": "framework",      "postings": {        "field": "description",        "match": "crewai"      },      "profiles": {        "field": "skills",        "match": "crewai"      },      "unambiguous": true    },    {      "id": "autogen",      "family": "framework",      "postings": {        "field": "description",        "match": "autogen"      },      "profiles": {        "field": "skills",        "match": "autogen"      },      "unambiguous": true    },    {      "id": "dspy",      "family": "framework",      "postings": {        "field": "description",        "match": "dspy"      },      "profiles": {        "field": "skills",        "match": "dspy"      },      "unambiguous": true    }  ]}

02

Claude Code has 5.1 postings per profile. Model Context Protocol, LangGraph, GitHub Copilot sit near one to one.

Open postings per profile that lists the skill, on a log scale; the vertical line is one to one

Claude Code 5.12, AutoGen 1.89, LlamaIndex 1.85, CrewAI 1.72, Model Context Protocol 1.06, LangGraph 1.03, GitHub Copilot 1.01, DSPy 0.53, LangChain 0.46

Claude Code5.1×
AutoGen1.9×
LlamaIndex1.9×
CrewAI1.7×
Model Context Protocol1.1×
LangGraph1.0×
GitHub Copilot1.0×
DSPy0.53×
LangChain0.46×

What it shows

LlamaIndex, AutoGen, and CrewAI are also above 1.7; DSPy and LangChain sit near 0.5, with twice as many profiles as postings.

Method and limits

Above 1, postings outnumber the profiles that list the skill. The scale is logarithmic, so 2 and 0.5 sit the same distance from one to one.

Source: Metix AI Platform, jobs and profiles, 2026-09-21.

Querytools.json
POST /v1/jobs/query · POST /v1/people/query · queries/tools.json
{  "note": "Each tool's condition on job postings (description) and on profiles (skills). Cursor, Codex, and Windsurf count only when another AI coding tool is named alongside, because the plain words have other meanings.",  "tools": [    {      "id": "claude-code",      "family": "assistant",      "postings": {        "field": "description",        "match": "claude code"      },      "profiles": {        "field": "skills",        "match": "claude code"      },      "unambiguous": true    },    {      "id": "cursor",      "family": "assistant",      "postings": {        "all": [          {            "field": "description",            "match": "cursor"          },          {            "any": [              {                "field": "description",                "match": "claude"              },              {                "field": "description",                "match": "copilot"              },              {                "field": "description",                "match": "windsurf"              },              {                "field": "description",                "match": "codex"              }            ]          }        ]      },      "profiles": {        "all": [          {            "field": "skills",            "match": "cursor"          },          {            "any": [              {                "field": "skills",                "match": "claude"              },              {                "field": "skills",                "match": "copilot"              },              {                "field": "skills",                "match": "windsurf"              },              {                "field": "skills",                "match": "codex"              }            ]          }        ]      },      "unambiguous": false    },    {      "id": "github-copilot",      "family": "assistant",      "postings": {        "field": "description",        "match": "github copilot"      },      "profiles": {        "field": "skills",        "match": "github copilot"      },      "unambiguous": true    },    {      "id": "codex",      "family": "assistant",      "postings": {        "all": [          {            "field": "description",            "match": "codex"          },          {            "any": [              {                "field": "description",                "match": "openai"              },              {                "field": "description",                "match": "claude"              },              {                "field": "description",                "match": "copilot"              },              {                "field": "description",                "match": "cursor"              }            ]          }        ]      },      "profiles": {        "all": [          {            "field": "skills",            "match": "codex"          },          {            "any": [              {                "field": "skills",                "match": "openai"              },              {                "field": "skills",                "match": "claude"              },              {                "field": "skills",                "match": "copilot"              },              {                "field": "skills",                "match": "cursor"              }            ]          }        ]      },      "unambiguous": false    },    {      "id": "windsurf",      "family": "assistant",      "postings": {        "all": [          {            "field": "description",            "match": "windsurf"          },          {            "any": [              {                "field": "description",                "match": "cursor"              },              {                "field": "description",                "match": "copilot"              },              {                "field": "description",                "match": "claude"              },              {                "field": "description",                "match": "codex"              }            ]          }        ]      },      "profiles": {        "all": [          {            "field": "skills",            "match": "windsurf"          },          {            "any": [              {                "field": "skills",                "match": "cursor"              },              {                "field": "skills",                "match": "copilot"              },              {                "field": "skills",                "match": "claude"              },              {                "field": "skills",                "match": "codex"              }            ]          }        ]      },      "unambiguous": false    },    {      "id": "langchain",      "family": "framework",      "postings": {        "field": "description",        "match": "langchain"      },      "profiles": {        "field": "skills",        "match": "langchain"      },      "unambiguous": true    },    {      "id": "langgraph",      "family": "framework",      "postings": {        "field": "description",        "match": "langgraph"      },      "profiles": {        "field": "skills",        "match": "langgraph"      },      "unambiguous": true    },    {      "id": "mcp",      "family": "framework",      "postings": {        "field": "description",        "match": "model context protocol"      },      "profiles": {        "field": "skills",        "match": "model context protocol"      },      "unambiguous": true    },    {      "id": "llamaindex",      "family": "framework",      "postings": {        "field": "description",        "match": "llamaindex"      },      "profiles": {        "field": "skills",        "match": "llamaindex"      },      "unambiguous": true    },    {      "id": "crewai",      "family": "framework",      "postings": {        "field": "description",        "match": "crewai"      },      "profiles": {        "field": "skills",        "match": "crewai"      },      "unambiguous": true    },    {      "id": "autogen",      "family": "framework",      "postings": {        "field": "description",        "match": "autogen"      },      "profiles": {        "field": "skills",        "match": "autogen"      },      "unambiguous": true    },    {      "id": "dspy",      "family": "framework",      "postings": {        "field": "description",        "match": "dspy"      },      "profiles": {        "field": "skills",        "match": "dspy"      },      "unambiguous": true    }  ]}

03

The gap is wider outside the US: 3.3 postings per profile for Claude Code in the US, 8.4 elsewhere

Postings per profile in the US (filled) and outside it (open), on a log scale

Claude Code: US 3.26, outside 8.40; LlamaIndex: US 1.34, outside 2.18; AutoGen: US 1.73, outside 1.96; CrewAI: US 1.83, outside 1.67; GitHub Copilot: US 0.87, outside 1.10; LangGraph: US 0.96, outside 1.07; Model Context Protocol: US 1.15, outside 0.99; DSPy: US 0.40, outside 0.63; LangChain: US 0.44, outside 0.47

Claude Code3.3× / 8.4×
LlamaIndex1.3× / 2.2×
AutoGen1.7× / 2.0×
CrewAI1.8× / 1.7×
GitHub Copilot0.87× / 1.1×
LangGraph0.96× / 1.1×
Model Context Protocol1.2× / 0.99×
DSPy0.40× / 0.63×
LangChain0.44× / 0.47×

What it shows

64% of the profiles that list Claude Code are in the US, but only 41% of the postings that name it. Employers outside the US ask for it at scale, while the people who publish it as a skill are mostly American.

Method and limits

Outside the US is the worldwide count minus the US count, so postings and profiles that give no country count as outside too.

Source: Metix AI Platform, jobs and profiles, 2026-09-21.

Querytools.json
POST /v1/jobs/query · POST /v1/people/query · queries/tools.json
{  "note": "Each tool's condition on job postings (description) and on profiles (skills). Cursor, Codex, and Windsurf count only when another AI coding tool is named alongside, because the plain words have other meanings.",  "tools": [    {      "id": "claude-code",      "family": "assistant",      "postings": {        "field": "description",        "match": "claude code"      },      "profiles": {        "field": "skills",        "match": "claude code"      },      "unambiguous": true    },    {      "id": "cursor",      "family": "assistant",      "postings": {        "all": [          {            "field": "description",            "match": "cursor"          },          {            "any": [              {                "field": "description",                "match": "claude"              },              {                "field": "description",                "match": "copilot"              },              {                "field": "description",                "match": "windsurf"              },              {                "field": "description",                "match": "codex"              }            ]          }        ]      },      "profiles": {        "all": [          {            "field": "skills",            "match": "cursor"          },          {            "any": [              {                "field": "skills",                "match": "claude"              },              {                "field": "skills",                "match": "copilot"              },              {                "field": "skills",                "match": "windsurf"              },              {                "field": "skills",                "match": "codex"              }            ]          }        ]      },      "unambiguous": false    },    {      "id": "github-copilot",      "family": "assistant",      "postings": {        "field": "description",        "match": "github copilot"      },      "profiles": {        "field": "skills",        "match": "github copilot"      },      "unambiguous": true    },    {      "id": "codex",      "family": "assistant",      "postings": {        "all": [          {            "field": "description",            "match": "codex"          },          {            "any": [              {                "field": "description",                "match": "openai"              },              {                "field": "description",                "match": "claude"              },              {                "field": "description",                "match": "copilot"              },              {                "field": "description",                "match": "cursor"              }            ]          }        ]      },      "profiles": {        "all": [          {            "field": "skills",            "match": "codex"          },          {            "any": [              {                "field": "skills",                "match": "openai"              },              {                "field": "skills",                "match": "claude"              },              {                "field": "skills",                "match": "copilot"              },              {                "field": "skills",                "match": "cursor"              }            ]          }        ]      },      "unambiguous": false    },    {      "id": "windsurf",      "family": "assistant",      "postings": {        "all": [          {            "field": "description",            "match": "windsurf"          },          {            "any": [              {                "field": "description",                "match": "cursor"              },              {                "field": "description",                "match": "copilot"              },              {                "field": "description",                "match": "claude"              },              {                "field": "description",                "match": "codex"              }            ]          }        ]      },      "profiles": {        "all": [          {            "field": "skills",            "match": "windsurf"          },          {            "any": [              {                "field": "skills",                "match": "cursor"              },              {                "field": "skills",                "match": "copilot"              },              {                "field": "skills",                "match": "claude"              },              {                "field": "skills",                "match": "codex"              }            ]          }        ]      },      "unambiguous": false    },    {      "id": "langchain",      "family": "framework",      "postings": {        "field": "description",        "match": "langchain"      },      "profiles": {        "field": "skills",        "match": "langchain"      },      "unambiguous": true    },    {      "id": "langgraph",      "family": "framework",      "postings": {        "field": "description",        "match": "langgraph"      },      "profiles": {        "field": "skills",        "match": "langgraph"      },      "unambiguous": true    },    {      "id": "mcp",      "family": "framework",      "postings": {        "field": "description",        "match": "model context protocol"      },      "profiles": {        "field": "skills",        "match": "model context protocol"      },      "unambiguous": true    },    {      "id": "llamaindex",      "family": "framework",      "postings": {        "field": "description",        "match": "llamaindex"      },      "profiles": {        "field": "skills",        "match": "llamaindex"      },      "unambiguous": true    },    {      "id": "crewai",      "family": "framework",      "postings": {        "field": "description",        "match": "crewai"      },      "profiles": {        "field": "skills",        "match": "crewai"      },      "unambiguous": true    },    {      "id": "autogen",      "family": "framework",      "postings": {        "field": "description",        "match": "autogen"      },      "profiles": {        "field": "skills",        "match": "autogen"      },      "unambiguous": true    },    {      "id": "dspy",      "family": "framework",      "postings": {        "field": "description",        "match": "dspy"      },      "profiles": {        "field": "skills",        "match": "dspy"      },      "unambiguous": true    }  ]}

The coding assistants

Part 2, Figures 04 and 05

How often employers name each assistant, and which ones they name together.

04

36,208 postings name an AI coding assistant, and 76% of them name Claude Code

Open postings naming each assistant, and their share of postings naming at least one. Hatched bars are lower bounds

Claude Code 27679, Cursor 15676, GitHub Copilot 12790, Codex 7878, Windsurf 2234

  1. Claude Code27,679 · 76%
  2. Cursorstrict count: another tool named too15,676 · 43%
  3. GitHub Copilot12,790 · 35%
  4. Codexstrict count: another tool named too7,878 · 22%
  5. Windsurfstrict count: another tool named too2,234 · 6%

What it shows

After Claude Code comes Cursor, in at least 43% of these postings, then GitHub Copilot at 35%.

Method and limits

Cursor, Codex, and Windsurf are also ordinary words, so they count only when the description names another AI coding tool as well. That makes them lower bounds, and keeps them out of the demand and supply comparison above.

Source: Metix AI Platform, jobs, 2026-09-21.

Queriestools.json · dimensions.json
POST /v1/jobs/query · queries/tools.json
{  "note": "Each tool's condition on job postings (description) and on profiles (skills). Cursor, Codex, and Windsurf count only when another AI coding tool is named alongside, because the plain words have other meanings.",  "tools": [    {      "id": "claude-code",      "family": "assistant",      "postings": {        "field": "description",        "match": "claude code"      },      "profiles": {        "field": "skills",        "match": "claude code"      },      "unambiguous": true    },    {      "id": "cursor",      "family": "assistant",      "postings": {        "all": [          {            "field": "description",            "match": "cursor"          },          {            "any": [              {                "field": "description",                "match": "claude"              },              {                "field": "description",                "match": "copilot"              },              {                "field": "description",                "match": "windsurf"              },              {                "field": "description",                "match": "codex"              }            ]          }        ]      },      "profiles": {        "all": [          {            "field": "skills",            "match": "cursor"          },          {            "any": [              {                "field": "skills",                "match": "claude"              },              {                "field": "skills",                "match": "copilot"              },              {                "field": "skills",                "match": "windsurf"              },              {                "field": "skills",                "match": "codex"              }            ]          }        ]      },      "unambiguous": false    },    {      "id": "github-copilot",      "family": "assistant",      "postings": {        "field": "description",        "match": "github copilot"      },      "profiles": {        "field": "skills",        "match": "github copilot"      },      "unambiguous": true    },    {      "id": "codex",      "family": "assistant",      "postings": {        "all": [          {            "field": "description",            "match": "codex"          },          {            "any": [              {                "field": "description",                "match": "openai"              },              {                "field": "description",                "match": "claude"              },              {                "field": "description",                "match": "copilot"              },              {                "field": "description",                "match": "cursor"              }            ]          }        ]      },      "profiles": {        "all": [          {            "field": "skills",            "match": "codex"          },          {            "any": [              {                "field": "skills",                "match": "openai"              },              {                "field": "skills",                "match": "claude"              },              {                "field": "skills",                "match": "copilot"              },              {                "field": "skills",                "match": "cursor"              }            ]          }        ]      },      "unambiguous": false    },    {      "id": "windsurf",      "family": "assistant",      "postings": {        "all": [          {            "field": "description",            "match": "windsurf"          },          {            "any": [              {                "field": "description",                "match": "cursor"              },              {                "field": "description",                "match": "copilot"              },              {                "field": "description",                "match": "claude"              },              {                "field": "description",                "match": "codex"              }            ]          }        ]      },      "profiles": {        "all": [          {            "field": "skills",            "match": "windsurf"          },          {            "any": [              {                "field": "skills",                "match": "cursor"              },              {                "field": "skills",                "match": "copilot"              },              {                "field": "skills",                "match": "claude"              },              {                "field": "skills",                "match": "codex"              }            ]          }        ]      },      "unambiguous": false    },    {      "id": "langchain",      "family": "framework",      "postings": {        "field": "description",        "match": "langchain"      },      "profiles": {        "field": "skills",        "match": "langchain"      },      "unambiguous": true    },    {      "id": "langgraph",      "family": "framework",      "postings": {        "field": "description",        "match": "langgraph"      },      "profiles": {        "field": "skills",        "match": "langgraph"      },      "unambiguous": true    },    {      "id": "mcp",      "family": "framework",      "postings": {        "field": "description",        "match": "model context protocol"      },      "profiles": {        "field": "skills",        "match": "model context protocol"      },      "unambiguous": true    },    {      "id": "llamaindex",      "family": "framework",      "postings": {        "field": "description",        "match": "llamaindex"      },      "profiles": {        "field": "skills",        "match": "llamaindex"      },      "unambiguous": true    },    {      "id": "crewai",      "family": "framework",      "postings": {        "field": "description",        "match": "crewai"      },      "profiles": {        "field": "skills",        "match": "crewai"      },      "unambiguous": true    },    {      "id": "autogen",      "family": "framework",      "postings": {        "field": "description",        "match": "autogen"      },      "profiles": {        "field": "skills",        "match": "autogen"      },      "unambiguous": true    },    {      "id": "dspy",      "family": "framework",      "postings": {        "field": "description",        "match": "dspy"      },      "profiles": {        "field": "skills",        "match": "dspy"      },      "unambiguous": true    }  ]}
POST /v1/jobs/query · queries/dimensions.json
{  "countries": [    "United States",    "India",    "United Kingdom",    "Germany",    "Canada",    "France",    "Netherlands",    "Singapore",    "Australia",    "Japan"  ],  "industries": {    "tech": [      "IT Services and IT Consulting",      "Software Development",      "Technology, Information and Internet"    ],    "beyond": [      "Financial Services",      "Banking",      "Insurance",      "Manufacturing",      "Hospitals and Health Care",      "Retail",      "Telecommunications",      "Motor Vehicle Manufacturing",      "Higher Education",      "Government Administration"    ],    "note": "Selected industries, not a ranking. A posting can list several industries, so shares overlap."  },  "pay_thresholds_usd": [    100000,    150000,    200000,    250000  ],  "pay_baseline": {    "field": "title",    "match": "software engineer"  },  "us": {    "field": "location.country",    "eq": "United States"  },  "usd_stated": {    "all": [      {        "field": "salary.currency",        "eq": "USD"      },      {        "field": "salary.annual_min",        "exists": true      }    ]  }}

05

55% of GitHub Copilot postings also name Claude Code. Only 25% of Claude Code postings name Copilot.

Each column is the postings that name one tool; each cell is the share of them that also name the tool in that row

Claude Code with Cursor 46%, Claude Code with GitHub Copilot 25%, Claude Code with Codex 24%, Claude Code with Windsurf 7%; GitHub Copilot with Claude Code 55%, GitHub Copilot with Cursor 40%, GitHub Copilot with Codex 12%, GitHub Copilot with Windsurf 5%

Also namesPostings naming Claude Code27,679Postings naming GitHub Copilot12,790
Claude Codesame tool55%
Cursor46%40%
GitHub Copilot25%same tool
Codex24%12%
Windsurf7%5%

What it shows

Postings that name Copilot usually name Claude Code too; postings that name Claude Code seldom add Copilot.

Method and limits

Only two columns are drawn, because the other three tools are defined as named alongside another tool, which would inflate their columns by construction.

Source: Metix AI Platform, jobs, 2026-09-21.

Queriestools.json · dimensions.json
POST /v1/jobs/query · queries/tools.json
{  "note": "Each tool's condition on job postings (description) and on profiles (skills). Cursor, Codex, and Windsurf count only when another AI coding tool is named alongside, because the plain words have other meanings.",  "tools": [    {      "id": "claude-code",      "family": "assistant",      "postings": {        "field": "description",        "match": "claude code"      },      "profiles": {        "field": "skills",        "match": "claude code"      },      "unambiguous": true    },    {      "id": "cursor",      "family": "assistant",      "postings": {        "all": [          {            "field": "description",            "match": "cursor"          },          {            "any": [              {                "field": "description",                "match": "claude"              },              {                "field": "description",                "match": "copilot"              },              {                "field": "description",                "match": "windsurf"              },              {                "field": "description",                "match": "codex"              }            ]          }        ]      },      "profiles": {        "all": [          {            "field": "skills",            "match": "cursor"          },          {            "any": [              {                "field": "skills",                "match": "claude"              },              {                "field": "skills",                "match": "copilot"              },              {                "field": "skills",                "match": "windsurf"              },              {                "field": "skills",                "match": "codex"              }            ]          }        ]      },      "unambiguous": false    },    {      "id": "github-copilot",      "family": "assistant",      "postings": {        "field": "description",        "match": "github copilot"      },      "profiles": {        "field": "skills",        "match": "github copilot"      },      "unambiguous": true    },    {      "id": "codex",      "family": "assistant",      "postings": {        "all": [          {            "field": "description",            "match": "codex"          },          {            "any": [              {                "field": "description",                "match": "openai"              },              {                "field": "description",                "match": "claude"              },              {                "field": "description",                "match": "copilot"              },              {                "field": "description",                "match": "cursor"              }            ]          }        ]      },      "profiles": {        "all": [          {            "field": "skills",            "match": "codex"          },          {            "any": [              {                "field": "skills",                "match": "openai"              },              {                "field": "skills",                "match": "claude"              },              {                "field": "skills",                "match": "copilot"              },              {                "field": "skills",                "match": "cursor"              }            ]          }        ]      },      "unambiguous": false    },    {      "id": "windsurf",      "family": "assistant",      "postings": {        "all": [          {            "field": "description",            "match": "windsurf"          },          {            "any": [              {                "field": "description",                "match": "cursor"              },              {                "field": "description",                "match": "copilot"              },              {                "field": "description",                "match": "claude"              },              {                "field": "description",                "match": "codex"              }            ]          }        ]      },      "profiles": {        "all": [          {            "field": "skills",            "match": "windsurf"          },          {            "any": [              {                "field": "skills",                "match": "cursor"              },              {                "field": "skills",                "match": "copilot"              },              {                "field": "skills",                "match": "claude"              },              {                "field": "skills",                "match": "codex"              }            ]          }        ]      },      "unambiguous": false    },    {      "id": "langchain",      "family": "framework",      "postings": {        "field": "description",        "match": "langchain"      },      "profiles": {        "field": "skills",        "match": "langchain"      },      "unambiguous": true    },    {      "id": "langgraph",      "family": "framework",      "postings": {        "field": "description",        "match": "langgraph"      },      "profiles": {        "field": "skills",        "match": "langgraph"      },      "unambiguous": true    },    {      "id": "mcp",      "family": "framework",      "postings": {        "field": "description",        "match": "model context protocol"      },      "profiles": {        "field": "skills",        "match": "model context protocol"      },      "unambiguous": true    },    {      "id": "llamaindex",      "family": "framework",      "postings": {        "field": "description",        "match": "llamaindex"      },      "profiles": {        "field": "skills",        "match": "llamaindex"      },      "unambiguous": true    },    {      "id": "crewai",      "family": "framework",      "postings": {        "field": "description",        "match": "crewai"      },      "profiles": {        "field": "skills",        "match": "crewai"      },      "unambiguous": true    },    {      "id": "autogen",      "family": "framework",      "postings": {        "field": "description",        "match": "autogen"      },      "profiles": {        "field": "skills",        "match": "autogen"      },      "unambiguous": true    },    {      "id": "dspy",      "family": "framework",      "postings": {        "field": "description",        "match": "dspy"      },      "profiles": {        "field": "skills",        "match": "dspy"      },      "unambiguous": true    }  ]}
POST /v1/jobs/query · queries/dimensions.json
{  "countries": [    "United States",    "India",    "United Kingdom",    "Germany",    "Canada",    "France",    "Netherlands",    "Singapore",    "Australia",    "Japan"  ],  "industries": {    "tech": [      "IT Services and IT Consulting",      "Software Development",      "Technology, Information and Internet"    ],    "beyond": [      "Financial Services",      "Banking",      "Insurance",      "Manufacturing",      "Hospitals and Health Care",      "Retail",      "Telecommunications",      "Motor Vehicle Manufacturing",      "Higher Education",      "Government Administration"    ],    "note": "Selected industries, not a ranking. A posting can list several industries, so shares overlap."  },  "pay_thresholds_usd": [    100000,    150000,    200000,    250000  ],  "pay_baseline": {    "field": "title",    "match": "software engineer"  },  "us": {    "field": "location.country",    "eq": "United States"  },  "usd_stated": {    "all": [      {        "field": "salary.currency",        "eq": "USD"      },      {        "field": "salary.annual_min",        "exists": true      }    ]  }}

Where the postings are

Part 3, Figures 06 and 07

The countries and industries of the postings that name an assistant.

06

The US holds 40% of these postings. India is second.

The 36,208 open postings that name at least one AI coding assistant, by country, drawn as a share of all of them

United States 14388, India 3762, United Kingdom 1463, Germany 1530, Canada 1563, France 685, Netherlands 324, Singapore 359, Australia 298, Japan 413, rest-of-world 11423

  1. United States14,388 · 39.7%
  2. India3,762 · 10.4%
  3. Canada1,563 · 4.3%
  4. Germany1,530 · 4.2%
  5. United Kingdom1,463 · 4.0%
  6. France685 · 1.9%
  7. Japan413 · 1.1%
  8. Singapore359 · 1.0%
  9. Netherlands324 · 0.9%
  10. Australia298 · 0.8%
  11. Rest of the world11,423 · 31.5%

Source: Metix AI Platform, jobs, 2026-09-21.

Queriestools.json · dimensions.json
POST /v1/jobs/query · queries/tools.json
{  "note": "Each tool's condition on job postings (description) and on profiles (skills). Cursor, Codex, and Windsurf count only when another AI coding tool is named alongside, because the plain words have other meanings.",  "tools": [    {      "id": "claude-code",      "family": "assistant",      "postings": {        "field": "description",        "match": "claude code"      },      "profiles": {        "field": "skills",        "match": "claude code"      },      "unambiguous": true    },    {      "id": "cursor",      "family": "assistant",      "postings": {        "all": [          {            "field": "description",            "match": "cursor"          },          {            "any": [              {                "field": "description",                "match": "claude"              },              {                "field": "description",                "match": "copilot"              },              {                "field": "description",                "match": "windsurf"              },              {                "field": "description",                "match": "codex"              }            ]          }        ]      },      "profiles": {        "all": [          {            "field": "skills",            "match": "cursor"          },          {            "any": [              {                "field": "skills",                "match": "claude"              },              {                "field": "skills",                "match": "copilot"              },              {                "field": "skills",                "match": "windsurf"              },              {                "field": "skills",                "match": "codex"              }            ]          }        ]      },      "unambiguous": false    },    {      "id": "github-copilot",      "family": "assistant",      "postings": {        "field": "description",        "match": "github copilot"      },      "profiles": {        "field": "skills",        "match": "github copilot"      },      "unambiguous": true    },    {      "id": "codex",      "family": "assistant",      "postings": {        "all": [          {            "field": "description",            "match": "codex"          },          {            "any": [              {                "field": "description",                "match": "openai"              },              {                "field": "description",                "match": "claude"              },              {                "field": "description",                "match": "copilot"              },              {                "field": "description",                "match": "cursor"              }            ]          }        ]      },      "profiles": {        "all": [          {            "field": "skills",            "match": "codex"          },          {            "any": [              {                "field": "skills",                "match": "openai"              },              {                "field": "skills",                "match": "claude"              },              {                "field": "skills",                "match": "copilot"              },              {                "field": "skills",                "match": "cursor"              }            ]          }        ]      },      "unambiguous": false    },    {      "id": "windsurf",      "family": "assistant",      "postings": {        "all": [          {            "field": "description",            "match": "windsurf"          },          {            "any": [              {                "field": "description",                "match": "cursor"              },              {                "field": "description",                "match": "copilot"              },              {                "field": "description",                "match": "claude"              },              {                "field": "description",                "match": "codex"              }            ]          }        ]      },      "profiles": {        "all": [          {            "field": "skills",            "match": "windsurf"          },          {            "any": [              {                "field": "skills",                "match": "cursor"              },              {                "field": "skills",                "match": "copilot"              },              {                "field": "skills",                "match": "claude"              },              {                "field": "skills",                "match": "codex"              }            ]          }        ]      },      "unambiguous": false    },    {      "id": "langchain",      "family": "framework",      "postings": {        "field": "description",        "match": "langchain"      },      "profiles": {        "field": "skills",        "match": "langchain"      },      "unambiguous": true    },    {      "id": "langgraph",      "family": "framework",      "postings": {        "field": "description",        "match": "langgraph"      },      "profiles": {        "field": "skills",        "match": "langgraph"      },      "unambiguous": true    },    {      "id": "mcp",      "family": "framework",      "postings": {        "field": "description",        "match": "model context protocol"      },      "profiles": {        "field": "skills",        "match": "model context protocol"      },      "unambiguous": true    },    {      "id": "llamaindex",      "family": "framework",      "postings": {        "field": "description",        "match": "llamaindex"      },      "profiles": {        "field": "skills",        "match": "llamaindex"      },      "unambiguous": true    },    {      "id": "crewai",      "family": "framework",      "postings": {        "field": "description",        "match": "crewai"      },      "profiles": {        "field": "skills",        "match": "crewai"      },      "unambiguous": true    },    {      "id": "autogen",      "family": "framework",      "postings": {        "field": "description",        "match": "autogen"      },      "profiles": {        "field": "skills",        "match": "autogen"      },      "unambiguous": true    },    {      "id": "dspy",      "family": "framework",      "postings": {        "field": "description",        "match": "dspy"      },      "profiles": {        "field": "skills",        "match": "dspy"      },      "unambiguous": true    }  ]}
POST /v1/jobs/query · queries/dimensions.json
{  "countries": [    "United States",    "India",    "United Kingdom",    "Germany",    "Canada",    "France",    "Netherlands",    "Singapore",    "Australia",    "Japan"  ],  "industries": {    "tech": [      "IT Services and IT Consulting",      "Software Development",      "Technology, Information and Internet"    ],    "beyond": [      "Financial Services",      "Banking",      "Insurance",      "Manufacturing",      "Hospitals and Health Care",      "Retail",      "Telecommunications",      "Motor Vehicle Manufacturing",      "Higher Education",      "Government Administration"    ],    "note": "Selected industries, not a ranking. A posting can list several industries, so shares overlap."  },  "pay_thresholds_usd": [    100000,    150000,    200000,    250000  ],  "pay_baseline": {    "field": "title",    "match": "software engineer"  },  "us": {    "field": "location.country",    "eq": "United States"  },  "usd_stated": {    "all": [      {        "field": "salary.currency",        "eq": "USD"      },      {        "field": "salary.annual_min",        "exists": true      }    ]  }}

07

IT services and software lead. Financial services (4,092) outnumbers internet companies (3,101).

Share of postings naming at least one AI coding assistant whose industries include each one listed. These are selected industries, not a ranking, and a posting can list several, so shares overlap

IT Services and IT Consulting 10794, Software Development 9214, Technology, Information and Internet 3101, Financial Services 4092, Banking 674, Insurance 531, Manufacturing 1780, Hospitals and Health Care 450, Retail 404, Telecommunications 355, Motor Vehicle Manufacturing 129, Higher Education 122, Government Administration 52

Technology

  1. IT Services and IT Consulting10,794 · 29.8%
  2. Software Development9,214 · 25.4%
  3. Technology, Information and Internet3,101 · 8.6%

Beyond technology

  1. Financial Services4,092 · 11.3%
  2. Manufacturing1,780 · 4.9%
  3. Banking674 · 1.9%
  4. Insurance531 · 1.5%
  5. Hospitals and Health Care450 · 1.2%
  6. Retail404 · 1.1%
  7. Telecommunications355 · 1.0%
  8. Motor Vehicle Manufacturing129 · 0.4%
  9. Higher Education122 · 0.3%
  10. Government Administration52 · 0.1%

Source: Metix AI Platform, jobs, 2026-09-21.

Queriestools.json · dimensions.json
POST /v1/jobs/query · queries/tools.json
{  "note": "Each tool's condition on job postings (description) and on profiles (skills). Cursor, Codex, and Windsurf count only when another AI coding tool is named alongside, because the plain words have other meanings.",  "tools": [    {      "id": "claude-code",      "family": "assistant",      "postings": {        "field": "description",        "match": "claude code"      },      "profiles": {        "field": "skills",        "match": "claude code"      },      "unambiguous": true    },    {      "id": "cursor",      "family": "assistant",      "postings": {        "all": [          {            "field": "description",            "match": "cursor"          },          {            "any": [              {                "field": "description",                "match": "claude"              },              {                "field": "description",                "match": "copilot"              },              {                "field": "description",                "match": "windsurf"              },              {                "field": "description",                "match": "codex"              }            ]          }        ]      },      "profiles": {        "all": [          {            "field": "skills",            "match": "cursor"          },          {            "any": [              {                "field": "skills",                "match": "claude"              },              {                "field": "skills",                "match": "copilot"              },              {                "field": "skills",                "match": "windsurf"              },              {                "field": "skills",                "match": "codex"              }            ]          }        ]      },      "unambiguous": false    },    {      "id": "github-copilot",      "family": "assistant",      "postings": {        "field": "description",        "match": "github copilot"      },      "profiles": {        "field": "skills",        "match": "github copilot"      },      "unambiguous": true    },    {      "id": "codex",      "family": "assistant",      "postings": {        "all": [          {            "field": "description",            "match": "codex"          },          {            "any": [              {                "field": "description",                "match": "openai"              },              {                "field": "description",                "match": "claude"              },              {                "field": "description",                "match": "copilot"              },              {                "field": "description",                "match": "cursor"              }            ]          }        ]      },      "profiles": {        "all": [          {            "field": "skills",            "match": "codex"          },          {            "any": [              {                "field": "skills",                "match": "openai"              },              {                "field": "skills",                "match": "claude"              },              {                "field": "skills",                "match": "copilot"              },              {                "field": "skills",                "match": "cursor"              }            ]          }        ]      },      "unambiguous": false    },    {      "id": "windsurf",      "family": "assistant",      "postings": {        "all": [          {            "field": "description",            "match": "windsurf"          },          {            "any": [              {                "field": "description",                "match": "cursor"              },              {                "field": "description",                "match": "copilot"              },              {                "field": "description",                "match": "claude"              },              {                "field": "description",                "match": "codex"              }            ]          }        ]      },      "profiles": {        "all": [          {            "field": "skills",            "match": "windsurf"          },          {            "any": [              {                "field": "skills",                "match": "cursor"              },              {                "field": "skills",                "match": "copilot"              },              {                "field": "skills",                "match": "claude"              },              {                "field": "skills",                "match": "codex"              }            ]          }        ]      },      "unambiguous": false    },    {      "id": "langchain",      "family": "framework",      "postings": {        "field": "description",        "match": "langchain"      },      "profiles": {        "field": "skills",        "match": "langchain"      },      "unambiguous": true    },    {      "id": "langgraph",      "family": "framework",      "postings": {        "field": "description",        "match": "langgraph"      },      "profiles": {        "field": "skills",        "match": "langgraph"      },      "unambiguous": true    },    {      "id": "mcp",      "family": "framework",      "postings": {        "field": "description",        "match": "model context protocol"      },      "profiles": {        "field": "skills",        "match": "model context protocol"      },      "unambiguous": true    },    {      "id": "llamaindex",      "family": "framework",      "postings": {        "field": "description",        "match": "llamaindex"      },      "profiles": {        "field": "skills",        "match": "llamaindex"      },      "unambiguous": true    },    {      "id": "crewai",      "family": "framework",      "postings": {        "field": "description",        "match": "crewai"      },      "profiles": {        "field": "skills",        "match": "crewai"      },      "unambiguous": true    },    {      "id": "autogen",      "family": "framework",      "postings": {        "field": "description",        "match": "autogen"      },      "profiles": {        "field": "skills",        "match": "autogen"      },      "unambiguous": true    },    {      "id": "dspy",      "family": "framework",      "postings": {        "field": "description",        "match": "dspy"      },      "profiles": {        "field": "skills",        "match": "dspy"      },      "unambiguous": true    }  ]}
POST /v1/jobs/query · queries/dimensions.json
{  "countries": [    "United States",    "India",    "United Kingdom",    "Germany",    "Canada",    "France",    "Netherlands",    "Singapore",    "Australia",    "Japan"  ],  "industries": {    "tech": [      "IT Services and IT Consulting",      "Software Development",      "Technology, Information and Internet"    ],    "beyond": [      "Financial Services",      "Banking",      "Insurance",      "Manufacturing",      "Hospitals and Health Care",      "Retail",      "Telecommunications",      "Motor Vehicle Manufacturing",      "Higher Education",      "Government Administration"    ],    "note": "Selected industries, not a ranking. A posting can list several industries, so shares overlap."  },  "pay_thresholds_usd": [    100000,    150000,    200000,    250000  ],  "pay_baseline": {    "field": "title",    "match": "software engineer"  },  "us": {    "field": "location.country",    "eq": "United States"  },  "usd_stated": {    "all": [      {        "field": "salary.currency",        "eq": "USD"      },      {        "field": "salary.annual_min",        "exists": true      }    ]  }}

Pay

Part 4, Figure 08

Whether naming an assistant comes with a higher posted pay floor in the US.

08

Naming an AI coding tool does not raise the posted pay floor

Share of US postings that state an annual USD salary whose minimum reaches each level: postings naming an AI coding assistant (2,688) and software engineer titles (6,198)

$100k: 80% vs 89%, $150k: 48% vs 52%, $200k: 20% vs 18%, $250k: 6% vs 5%

$100k or more80%89%
$150k or more48%52%
$200k or more20%18%
$250k or more6%5%

What it shows

The two distributions nearly match, which is enough to say that naming a tool does not mark a better-paid job.

Method and limits

The groups overlap (many software engineer postings name a tool) and the first includes roles outside engineering, so this is not a controlled comparison.

Source: Metix AI Platform, jobs, 2026-09-21.

Queriestools.json · dimensions.json
POST /v1/jobs/query · queries/tools.json
{  "note": "Each tool's condition on job postings (description) and on profiles (skills). Cursor, Codex, and Windsurf count only when another AI coding tool is named alongside, because the plain words have other meanings.",  "tools": [    {      "id": "claude-code",      "family": "assistant",      "postings": {        "field": "description",        "match": "claude code"      },      "profiles": {        "field": "skills",        "match": "claude code"      },      "unambiguous": true    },    {      "id": "cursor",      "family": "assistant",      "postings": {        "all": [          {            "field": "description",            "match": "cursor"          },          {            "any": [              {                "field": "description",                "match": "claude"              },              {                "field": "description",                "match": "copilot"              },              {                "field": "description",                "match": "windsurf"              },              {                "field": "description",                "match": "codex"              }            ]          }        ]      },      "profiles": {        "all": [          {            "field": "skills",            "match": "cursor"          },          {            "any": [              {                "field": "skills",                "match": "claude"              },              {                "field": "skills",                "match": "copilot"              },              {                "field": "skills",                "match": "windsurf"              },              {                "field": "skills",                "match": "codex"              }            ]          }        ]      },      "unambiguous": false    },    {      "id": "github-copilot",      "family": "assistant",      "postings": {        "field": "description",        "match": "github copilot"      },      "profiles": {        "field": "skills",        "match": "github copilot"      },      "unambiguous": true    },    {      "id": "codex",      "family": "assistant",      "postings": {        "all": [          {            "field": "description",            "match": "codex"          },          {            "any": [              {                "field": "description",                "match": "openai"              },              {                "field": "description",                "match": "claude"              },              {                "field": "description",                "match": "copilot"              },              {                "field": "description",                "match": "cursor"              }            ]          }        ]      },      "profiles": {        "all": [          {            "field": "skills",            "match": "codex"          },          {            "any": [              {                "field": "skills",                "match": "openai"              },              {                "field": "skills",                "match": "claude"              },              {                "field": "skills",                "match": "copilot"              },              {                "field": "skills",                "match": "cursor"              }            ]          }        ]      },      "unambiguous": false    },    {      "id": "windsurf",      "family": "assistant",      "postings": {        "all": [          {            "field": "description",            "match": "windsurf"          },          {            "any": [              {                "field": "description",                "match": "cursor"              },              {                "field": "description",                "match": "copilot"              },              {                "field": "description",                "match": "claude"              },              {                "field": "description",                "match": "codex"              }            ]          }        ]      },      "profiles": {        "all": [          {            "field": "skills",            "match": "windsurf"          },          {            "any": [              {                "field": "skills",                "match": "cursor"              },              {                "field": "skills",                "match": "copilot"              },              {                "field": "skills",                "match": "claude"              },              {                "field": "skills",                "match": "codex"              }            ]          }        ]      },      "unambiguous": false    },    {      "id": "langchain",      "family": "framework",      "postings": {        "field": "description",        "match": "langchain"      },      "profiles": {        "field": "skills",        "match": "langchain"      },      "unambiguous": true    },    {      "id": "langgraph",      "family": "framework",      "postings": {        "field": "description",        "match": "langgraph"      },      "profiles": {        "field": "skills",        "match": "langgraph"      },      "unambiguous": true    },    {      "id": "mcp",      "family": "framework",      "postings": {        "field": "description",        "match": "model context protocol"      },      "profiles": {        "field": "skills",        "match": "model context protocol"      },      "unambiguous": true    },    {      "id": "llamaindex",      "family": "framework",      "postings": {        "field": "description",        "match": "llamaindex"      },      "profiles": {        "field": "skills",        "match": "llamaindex"      },      "unambiguous": true    },    {      "id": "crewai",      "family": "framework",      "postings": {        "field": "description",        "match": "crewai"      },      "profiles": {        "field": "skills",        "match": "crewai"      },      "unambiguous": true    },    {      "id": "autogen",      "family": "framework",      "postings": {        "field": "description",        "match": "autogen"      },      "profiles": {        "field": "skills",        "match": "autogen"      },      "unambiguous": true    },    {      "id": "dspy",      "family": "framework",      "postings": {        "field": "description",        "match": "dspy"      },      "profiles": {        "field": "skills",        "match": "dspy"      },      "unambiguous": true    }  ]}
POST /v1/jobs/query · queries/dimensions.json
{  "countries": [    "United States",    "India",    "United Kingdom",    "Germany",    "Canada",    "France",    "Netherlands",    "Singapore",    "Australia",    "Japan"  ],  "industries": {    "tech": [      "IT Services and IT Consulting",      "Software Development",      "Technology, Information and Internet"    ],    "beyond": [      "Financial Services",      "Banking",      "Insurance",      "Manufacturing",      "Hospitals and Health Care",      "Retail",      "Telecommunications",      "Motor Vehicle Manufacturing",      "Higher Education",      "Government Administration"    ],    "note": "Selected industries, not a ranking. A posting can list several industries, so shares overlap."  },  "pay_thresholds_usd": [    100000,    150000,    200000,    250000  ],  "pay_baseline": {    "field": "title",    "match": "software engineer"  },  "us": {    "field": "location.country",    "eq": "United States"  },  "usd_stated": {    "all": [      {        "field": "salary.currency",        "eq": "USD"      },      {        "field": "salary.annual_min",        "exists": true      }    ]  }}

Run it

Three ways in. Each says what it costs before you start.

1 API Credit buys 25 search results or 5 full records; $1 buys 30 API Credits.

Run it in your agent

245 to 320 API Credits$8.17 to $10.67More than the 100 free API Credits

Your agent stops and asks before spending more than 320 API Credits.

Your agent follows the prompt step by step: it reads the rules, runs the counts, checks the definitions the prompt asks it to check, and writes the files and charts. Use an agent that can write files, such as Claude Code or Codex.

Set up onceKey, connection, and a free check. Skip this if your agent already reaches the Platform.
  1. 1Get a key

    Create a key on the Metix AI Platform →

    New accounts get 100 API Credits once, valid for 30 days. Set the key in the shell you start your agent from, or add the line to ~/.zshrc or ~/.bashrc so every new terminal has it:

    Shell
    export METIX_KEY=metix_xxxxxxxx
  2. 2Connect your agent

    Claude Code

    Registers the Platform for every project. Start claude in any folder and the ten metix tools are there.

    Shell
    : "${METIX_KEY:?run step 1 first}" &&
    claude mcp add --scope user --transport http metix \
      https://mira-api.metix.ai/mcp \
      --header "Authorization: Bearer $METIX_KEY"
    MCP setup guide →

    Codex

    Registers the same server. The key stays in your environment instead of the config file.

    Shell
    codex mcp add metix \
      --url https://mira-api.metix.ai/mcp \
      --bearer-token-env-var METIX_KEY
    MCP setup guide →

    Skills

    Four skills that teach any agent the Platform's endpoints and query rules, for agents without MCP. The installer starts with none ticked: press space on each, then enter.

    Shell
    npx skills add MetixAI-Official/metix-skills
    Skills install guide →

    Other MCP

    Point the client at this endpoint over streamable HTTP with both headers; without the Accept header the server answers 406. Older clients use /sse on the same host.

    Endpoint and headers
    https://mira-api.metix.ai/mcp
    Authorization: Bearer <your key>
    Accept: application/json, text/event-stream
    MCP setup guide →
  3. 3Check the setup

    Ask this first. It reads your balance and the field list, runs no search, and costs nothing:

    Prompt for your agent
    Use the Metix AI Platform to check my key status and read the contract; both are free. Then tell me my API Credit balance and which datasets I can query. Do not run any search.

4Paste the prompt

Start your agent in an empty folder, then paste. It writes its files there.

The question

Answer one question with the Metix AI Platform: for the AI coding assistants and agent frameworks that employers name in job postings, how does demand compare with the people who list them as skills? Work only through the public Platform (REST at https://mira-api.metix.ai, the MCP server, or the metix-skills) with the key in METIX_KEY, and never print the key.

  1. 01Read before querying

    Call GET /contract (free). Postings use querySpecByEntity.job and match "description"; profiles use querySpecByEntity.profile and match "skills". A count with size 1 costs 1 API Credit, so plan every number as a count. Check the balance with GET /auth/key/status (free) at the start and at the end, and stop and ask before the run passes 320 API Credits.

  2. 02Tools

    Coding assistants: Claude Code, Cursor, GitHub Copilot, Codex, Windsurf. Agent frameworks and protocols: LangChain, LangGraph, LlamaIndex, CrewAI, AutoGen, DSPy, and the Model Context Protocol (match "model context protocol").

  3. 03Audit every name before trusting it

    match needs every word present but not side by side. Read 40 to 60 job descriptions per tool and check that the words around the name are about AI. Cursor, Codex, and Windsurf are also ordinary words; if more than 5% of their matches are off-topic, count them only when the same text names another AI coding tool, on both postings and profiles, and audit again.

  4. 04Keep ambiguous tools out of the ratio

    After tightening, count their profiles too. If a tightened tool has only a few hundred profiles, its ratio mostly measures the definition, so show it in the demand charts as a lower bound and leave it out of any demand-to-supply comparison.

  5. 05Count

    For every tool: postings and profiles, worldwide and with location.country eq "United States". Every count of people goes through the small-cell rule (under 10 becomes "<10").

  6. 06Dimensions, all as counts

    Pairs of coding assistants named in the same posting. Postings naming any assistant by country (the ten largest plus the rest) and by a selected list of industries (say it is not a ranking, and that a posting can list several). US pay floors for postings naming any assistant and, as a baseline, for titles matching "software engineer": salary.currency eq "USD", then salary.annual_min gte 100000, 150000, 200000, 250000.

  7. 07Beware of definitions that force the answer

    A tool defined as "named alongside another tool" will always co-occur with another tool, so draw co-mention rows only for tools matched by name.

  8. 08Outputs

    Write demand.json and co-mentions.json, countries.json, industries.json, and pay.json with "unit": "jobs", supply.json with "unit": "profiles", each with the snapshot date and the query file it came from. Report the balance from GET /auth/key/status before and after as the cost.

  9. 09Charts

    A two-sided chart with profiles growing left and postings growing right on one scale; postings per profile on a log scale with a line at one to one; the same ratio split into the US and everywhere else; assistant counts with lower bounds hatched; the co-mention rows; countries scaled to the total; industries in two groups; pay as the share at or above each level for both groups. Every chart title states its finding.

  10. 10Limits, stated before the first chart

    Postings refresh daily but profile skills are self-reported and updated slowly, and the newest tools lag the most, so the ratio compares demand with published skills, not with the skills people have. Naming a tool is not the same as requiring it. Reposts are not collapsed. One day, not a trend.

What you get

The aggregate files and the chart, a note on what the audits found and what they changed, and the API Credits the run spent, read from the balance before and after.

A call that returns 402 insufficient_quota means the key works and the balance is empty.

Reproduce the numbers

92 API Credits$3.07Fits in the 100 free API Credits

A short standard-library Python script sends the committed queries as counts and writes the aggregate files this page is built from. It needs Python and METIX_KEY set in the shell (step 1 of the agent path); your agent can run these lines for you as well.

Shell
curl -fsSL https://platform.metix.ai/casebook/source/ai-tool-stack-in-hiring-2026.tar.gz | tar xz
cd ai-tool-stack-in-hiring-2026
: "${METIX_KEY:?set METIX_KEY first}" && python3 cases/ai-tool-stack-in-hiring-2026/fetch.py

What you get

data/*.json and data/receipt.json. Run git diff cases/ai-tool-stack-in-hiring-2026/data to see what moved: the numbers should match, apart from what changed in the data since the snapshot.

Adapt it

Costs what your version reads. Write your own ceiling into step 1 of the prompt.

The prompt is the case. Change the parts in this table and your agent answers your question instead, with the same checks and the same way of reporting cost.

To change Edit For example
The tools Step 2, and audit each in step 3 Vector databases: Pinecone, Weaviate, Qdrant, pgvector
The comparison Step 6 Replace the country split with seniority or job function
The market Step 5 Run it for one country: add its location.country to every count

What to ask before running it

  1. Which tools, and could any name mean something else?
  2. Demand only, or demand against supply? Supply needs profile skills and the small-cell rule.
  3. Which breakdowns matter: countries, industries, pay?
  4. How many API Credits may the audits spend reading descriptions?

Method and limits

How the population was defined, counted, and checked, and what the numbers cannot show.

Demand: postings

Open postings on the Metix AI Platform on September 21, 2026 whose description names a tool. Claude Code, GitHub Copilot, LangChain, LangGraph, LlamaIndex, CrewAI, AutoGen, DSPy, and the Model Context Protocol match by name; Cursor, Codex, and Windsurf count only when the description names another AI coding tool as well. The definitions are in tools.json.

Supply: profiles

Profiles that list the same tool among their skills, with conditions that mirror the postings. Everything is a count: no profile and no posting is read. Every count of people passes the small-cell rule, so anything under 10 shows as "<10".

Audit

The agent read samples of job descriptions to check the matches. Claude Code and GitHub Copilot meant the tool in 40 of 40, AutoGen in 39 of 40. The plain words held in 55, 55, and 56 of 60 for Cursor, Codex, and Windsurf, so their condition was tightened. Tightened, those three leave only 258, 452, and 13 profiles, too few for a meaningful ratio, so they stay out of the demand and supply comparison.

Countries, industries, and pay

Countries count postings that name at least one assistant by location.country, with the rest combined. Industries are a selected list, not a ranking, and a posting can list several. The pay comparison uses US postings titled "software engineer", which can overlap with the first group. The dimensions are in dimensions.json.

Limits

Skills on a profile are self-reported and updated slowly, and newer tools are the most likely to be missing, so the ratios measure the gap between demand and published skills. Reposts are not collapsed. Naming a tool is not the same as requiring it. This is one day, not a trend.

The last reproduction

What reproducing this case cost the last time the script ran, read from the Platform's own balance before and after.

Ran on
2026-09-21
Calls
92
Search results
92
Records read
0
API Credits
92

Search results are IDs returned by searches, one per count query and one per match on a full search. Records are postings or profiles read in full: this case reads none.

Making this case cost about 236 API Credits more: the agent's audits, trial queries, and earlier runs that the published replay replaced. You do not pay that again.