# Getting started

Skmtc turns OpenAPI schemas into live, searchable API documentation. Your coding
agent can find an API, read its operations through MCP, or fetch the same docs
as compact Markdown. When you publish a new schema revision, the docs track it.
Code generation for published APIs is coming soon.

You can explore public APIs without an account. To publish your own schema,
[sign up with GitHub](https://skmtc.dev/signup). Your first sign-in creates a
personal account; an organization is optional.

## Point your agent at Skmtc [#point-your-agent-at-skmtc]

Paste this into Claude Code or another coding agent. The agent should inspect
your repository before suggesting a schema file or destination.

```text
Read https://docs.skmtc.dev/docs/getting-started.md and
https://docs.skmtc.dev/docs/getting-started/publish-api.md. Help me publish
the OpenAPI schema in this repository to Skmtc. First, run
`claude mcp add --transport http skmtc https://mcp.skmtc.dev/mcp/publish`
if the Skmtc MCP server is not configured. Ask me to sign in with GitHub in
the browser when Claude Code prompts. Find the schema file and show me the
destination account, API slug, and visibility (private or public). Ask me to
confirm all three before calling a publishing tool. Private is common; never
assume public. After publishing, verify the revision and give me the API page
and its Markdown URL. If the schema is generated in CI, use the CI guide at
https://docs.skmtc.dev/docs/getting-started/publish-from-ci.md.
```

The documentation URLs above also serve plain Markdown, so an agent can read
them without rendering the website. Public API pages have the same option:
append `.md` to an API or operation URL, or request
`Accept: text/markdown` from its HTML URL. An API's `llms.txt` lists its
operations for an agent to navigate.

## Connect Claude Code [#connect-claude-code]

Run this once in your terminal:

```sh
claude mcp add --transport http skmtc https://mcp.skmtc.dev/mcp/publish
```

In Claude Code, run `/mcp`, select **skmtc**, and follow the browser sign-in.
Sign in with GitHub and approve `publish:schemas`. Claude Code stores and
refreshes its own authorization; you do not need to create or paste a token.
Your personal account can publish to itself or to an organization where you
are a member. Public API discovery remains available without signing in.

## Hello world: publish a private API [#hello-world-publish-a-private-api]

Save this as `openapi.yaml`:

```yaml
openapi: 3.1.0
info:
  title: Hello world
  version: 1.0.0
paths:
  /hello:
    get:
      operationId: getHello
      summary: Say hello
      responses:
        '200':
          description: A greeting
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
```

Choose your destination explicitly before sending:

```text
Account:    ada
API slug:   hello-world
Visibility: private
```

Replace `ada` with your Skmtc account handle. Ask your connected Claude Code
agent to publish `openapi.yaml` with these exact values. It should show them
to you before calling `publish_schema`:

```text
Publish openapi.yaml to account ada, API slug hello-world, visibility private.
Show me the destination and ask for confirmation before publishing. Then
verify the new revision and give me the API page and Markdown URL.
```

Open `https://skmtc.dev/ada/apis/hello-world` while signed in. The public
Markdown convention is `https://skmtc.dev/ada/apis/hello-world.md`. A private
API stays private, including its Markdown view.

## Other ways to publish [#other-ways-to-publish]

To publish without an agent, open [Your APIs](https://skmtc.dev/dashboard),
select **New API**, and upload an OpenAPI JSON or YAML file. Check the account,
slug, and visibility before selecting **Add API**. The browser form starts at
**Private**.

For a direct REST call, use a token with `publish:schemas` and follow
[Publish an API](/docs/getting-started/publish-api). For automation, follow
[Publish from CI](/docs/getting-started/publish-from-ci).
