# Everything an agent needs to read the job market

Section: Documentation
Source: https://platform.metix.ai/docs
Every page in one file: https://platform.metix.ai/llms-full.txt

People, companies and live job postings, over one REST API and one MCP server. Start with the quickstart if you want it working in five minutes, or the API reference if you already know the shape.

- [Start with the data](https://platform.metix.ai/docs/quickstart.md)
- [Explore API reference](https://platform.metix.ai/docs/api.md)

Connect it to what you already use

### Skills

Four skills that teach any assistant the endpoints, the field vocabulary, and the two-step shape. They work in any agent, with MCP or without it.

The assistant now knows the endpoints and the field names, so it writes the request itself instead of guessing at the shape.

Search biotech companies with 50 to 500 employees and show me what comes back.

[All four skills](https://platform.metix.ai/docs/skills.md)

```
npx skills add MetixAI-Official/metix-skills

# Four skills: people search, company search,
# job search, and one that spans all three when
# a question needs more than one of them.

# Same key as everything else here. Set it in
# the shell you run the agent from:
export METIX_KEY="metix_xxxxxxxxxxxx"
```

### Claude Code

Register the MCP server over streamable HTTP. Create a key first: the same one works for MCP, for the skills, and for the REST API.

The seven data tools appear in the agent's tool list. You never name them: ask for what you want and it picks.

Find ML engineers in San Francisco, then read the records behind the ids.

[MCP setup](https://platform.metix.ai/docs/mcp.md)

```
claude mcp add --scope user --transport http metix \
  https://mira-api.metix.ai/mcp \
  --header "Authorization: Bearer $METIX_KEY"

claude mcp list
# metix: https://mira-api.metix.ai/mcp (HTTP) - Connected

# Older clients speak legacy SSE instead. Point
# those at the same host on /sse, with the same
# Authorization header.
```

### Codex

The same server, registered with Codex. The key stays in your environment instead of being written into the config file, and the skills on the first tab install for Codex as well.

Same seven tools, same key. Codex sandboxes shell commands without network access by default, which is fine for MCP and blocks a raw curl until you allow it.

Which companies posted data engineer roles in the US this month?

[MCP setup](https://platform.metix.ai/docs/mcp.md)

```
codex mcp add metix \
  --url https://mira-api.metix.ai/mcp \
  --bearer-token-env-var METIX_KEY

codex mcp get metix
# transport: streamable_http
# bearer_token_env_var: METIX_KEY
# Read at call time, so it never lands in the file.

# The Skills tab covers Codex too: its installer
# writes .agents/skills, which Codex reads.
```

### curl

One request against the live API. It answers with ids, which is what a working search looks like.

You get ids back, never records. Send up to 100 of them to the matching detail route, and choose the fields you want with _source.

[Quickstart](https://platform.metix.ai/docs/quickstart.md)

```
curl -s -X POST "https://mira-api.metix.ai/v1/people-search" \
  -H "Authorization: Bearer $METIX_KEY" \
  -H "Content-Type: application/json" \
  -d '{"text": "ML engineers in San Francisco", "size": 25}'

# {"code": 200, "msg": "ok", "data": {"profile_ids": [
#   "UHyKQXeFCLaGeBwgjwisBg", "YhlkBSsJWv7zeGUJMaymMw" ]}}

# Ids only. Records come from the detail route.
```

### Python

Plain requests. There is no SDK to install, so there is no SDK version to keep up with.

Two calls, always in that order: search for ids, then read the records behind them. Ids bill far cheaper than records, so search wider than you plan to read.

[Quickstart](https://platform.metix.ai/docs/quickstart.md)

```
import os, requests

r = requests.post("https://mira-api.metix.ai/v1/people-search",
    headers={"Authorization": f"Bearer {os.environ['METIX_KEY']}"},
    json={"text": "ML engineers in San Francisco", "size": 25})

ids = r.json()["data"]["profile_ids"]
# Ids, not records. Send up to 100 of them to
# POST /entity/v1/profiles/detail-by-id
print(ids)
```

### TypeScript

Plain fetch. There is no SDK to install, so there is no SDK version to keep up with.

Two calls, always in that order: search for ids, then read the records behind them. Ids bill far cheaper than records, so search wider than you plan to read.

[Quickstart](https://platform.metix.ai/docs/quickstart.md)

```
const r = await fetch("https://mira-api.metix.ai/v1/people-search", {
  method: "POST",
  headers: {
    Authorization: `Bearer ${process.env.METIX_KEY}`,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({ text: "ML engineers in San Francisco", size: 25 }),
});
// Ids, not records. Send up to 100 to the detail route.
const { profile_ids } = (await r.json()).data;
```

## Three datasets

People, jobs, and companies. Each one is searched with the same Query Spec grammar and read through its own detail route, so learning one dataset teaches you the other two.

- [People](https://platform.metix.ai/docs/api/people.md) (`Search + detail`): Search professional profiles by role, skills, employer, education, location, and seniority, then read the records you keep.
- [Jobs](https://platform.metix.ai/docs/api/jobs.md) (`Search + detail`): Search active openings by role, function, company, location, pay, and posting date as a live demand signal.
- [Companies](https://platform.metix.ai/docs/api/companies.md) (`Search + detail`): Search organizations by industry, size, headquarters, and funding, and attach that context to people and job results.
- [Agents and MCP](https://platform.metix.ai/docs/skills.md) (`Agent access`): Reach the same three datasets from an MCP client or an agent skill, under the same key and the same Credit rules.

## How a request works

Every dataset works the same way, and it is worth knowing before you write any code: search hands back encrypted string IDs, and a second call turns the IDs you keep into records. There is no single call that does both.

| Step | Call | What comes back |
| --- | --- | --- |
| 1 | Search the dataset with a Query Spec tree | Encrypted string IDs, plus a cursor while more pages remain |
| 2 | Send up to 100 of those IDs to the detail route | Full public records, and the IDs that could not be resolved |
| 3 | Join across datasets | Company context for a job, or the people inside a company |

> **Search results are IDs**
>
> A search response carries no record data. Code that expects records back from a search reads an empty payload and concludes there is nothing there. See [the API overview](https://platform.metix.ai/docs/api.md) for a worked example of both calls.

## One data foundation, three access surfaces

| Surface | Use it when | Start here |
| --- | --- | --- |
| Metix AI skills | An agent needs reusable multi-step search and analysis instructions | /docs/skills |
| MCP | A compatible client should reach the same data conversationally | /docs/mcp |
| REST API | A product needs deterministic requests and JSON responses | /docs/quickstart |

> **MCP schema boundary**
>
> Capability-specific MCP tool names are documented only after schema verification. Use the REST reference today instead of guessing a tool name.
