# Agent Stack Developer

> Guide and implement Agent Stack integrations through the Agent Service HTTP API. Use for first calls, raw-HTTP integration, API troubleshooting, or advanced Agent Stack capabilities.

- Skill: `mem9-ai/agent-stack-developer` (Agent Skill, multi-file: 2 files)
- Install (CLI): `npx skillmds@latest add mem9-ai/agent-stack-developer`
- Raw SKILL.md: https://api.skillmd.com/api/skills/mem9-ai/agent-stack-developer/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: AI & ML
- Author: mem9-ai (https://skillmd.com/u/mem9-ai)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/mem9-ai/agent-stack-developer

---


# Agent Stack Developer

Help developers use the Agent Stack product through the Agent Service API. Call the product **Agent Stack**, the HTTP API **Agent Service API**, and the bundled contract **OpenAPI**.

## Route the request

Classify the request before loading detail:

- For a vague request such as “integrate Agent Stack,” ask one question: first call, existing-project integration, troubleshooting, or an advanced capability.
- For first calls, project integration, Agents, Sessions, Turns, files, or Artifacts, read [references/core-workflows.md](references/core-workflows.md).
- For pagination, retries, ETags, idempotency, stream recovery, errors, or diagnosis, read [references/reliability.md](references/reliability.md).
- For Skills, MCP, Custom Tools, Managed Tools, Scheduler, audio, Billing, Lark, or Notion, read [references/advanced-workflows.md](references/advanced-workflows.md).
- For exact operations, parameters, security, schemas, status codes, or error codes, search [references/openapi.yaml](references/openapi.yaml) before answering.
- When the developer wants browsable documentation, return a clickable absolute path to [references/api-reference.html](references/api-reference.html). The HTML is for humans; reason from the YAML.

Load only the references reached by the request. The route is complete when every requested branch has a specific workflow or an explicit Console handoff.

## Treat the contract as evidence

Use the bundled `openapi.yaml` as the API contract. For each operation, verify its method, path, operation-level `security`, headers, request schema, success response, and documented errors. Operation-level security controls that operation; route prefixes and general security-scheme prose do not grant access.

When two parts of the contract disagree, state the conflict and follow the operation-specific definition. Keep current wire names such as `x-agent9-project-id` exact even though the human-facing product name is Agent Stack.

## Use raw HTTP

Default to a runnable `curl` request. When the developer asks for a particular language or an existing codebase change, use that project’s existing native HTTP client. Use no SDK.

Standardize these inputs:

- `AGENT_STACK_BASE_URL`: required service root; remove a trailing slash before joining a path.
- `AGENT_STACK_USER_API_KEY`: required for ordinary product calls.
- `AGENT_STACK_WORKSPACE_API_KEY`: only for operations whose security explicitly permits Workspace API Keys, principally service-user/User-key bootstrap and Billing.
- `AGENT_STACK_PROJECT_ID`: optional fixed-project value. Otherwise list projects and select one for the current run.

Represent IDs, ETags, cursors, idempotency keys, and upload state as runtime values rather than global environment variables. Preserve third-party credential names and send their values only to the documented write-only endpoint.

## Protect authority

Reference secrets through environment variables or the developer’s secret manager. Keep plaintext secrets out of conversation output, generated code, logs, files, and the HTML reference. A newly returned key is one-time material to place directly into a secret manager.

Before executing a live write, authorization, schedule, credential change, external activation, or deletion, require an explicit request for that side effect. Treat an `Agent9Session`-only operation as a Console/manual handoff: give numbered human steps instead of requesting a cookie or generating cookie-authenticated curl. Explain OAuth steps without controlling a browser.

## Shape the answer

Follow the developer’s language. Give only the workflow and contract detail needed for the request. For an HTTP call, include the exact method, path, required headers, body, expected success signal, and the documented error that most directly affects the next step. When the operation lists a status without an error description or code, call that gap out instead of inventing meaning.

Finish according to the branch criterion in the selected reference. Never claim a live integration succeeded without an observed service response.

