dev-to · Capability

Dev.to Forem API

The Dev.to Forem API (v1) is a RESTful API that provides programmatic access to the Dev.to developer community platform, which is built on the open-source Forem framework. The API enables developers to create, read, update, and manage articles, comments, users, organizations, tags, followers, listings, podcast episodes, pages, display ads, reactions, reading lists, and webhooks. It uses API key authentication, requires an accept header of application/vnd.forem.api-v1+json, and returns JSON responses. Unauthenticated endpoints are CORS-enabled, making it possible to fetch public content directl

Run with Naftiko DevToAPI

What You Can Do

POST
Createarticle — Publish article
/articles
GET
Getarticles — Published articles
/articles
GET
Getlatestarticles — Published articles sorted by published date
/articles/latest
GET
Getarticlebyid — Published article by id
/articles/{id}
PUT
Updatearticle — Update an article by id
/articles/{id}
GET
Getarticlebypath — Published article by path
/articles/{username}/{slug}
GET
Getuserarticles — User's articles
/articles/me
GET
Getuserpublishedarticles — User's published articles
/articles/me/published
GET
Getuserunpublishedarticles — User's unpublished articles
/articles/me/unpublished
GET
Getuserallarticles — User's all articles
/articles/me/all
PUT
Unpublisharticle — Unpublish an article
/articles/{id}/unpublish
GET
Getcommentsbyarticleid — Comments
/comments
GET
Getcommentbyid — Comment by id
/comments/{id}
GET
Getdisplayads — Display ads
/display_ads
POST
Createdisplayad — Create display ad
/display_ads
GET
Getdisplayadbyid — Display ad
/display_ads/{id}
PUT
Updatedisplayad — Update display ad
/display_ads/{id}
PUT
Unpublishdisplayad — Unpublish display ad
/display_ads/{id}/unpublish
GET
Getfollowedtags — Followed Tags
/follows/tags
GET
Getfollowers — Followers
/followers/users
GET
Getorganization — An organization
/organizations/{username}
GET
Getorgusers — Organization's users
/organizations/{username}/users
GET
Getorgarticles — Organization's Articles
/organizations/{username}/articles
GET
Getpages — Show details for all pages
/pages
POST
Createpage — Create a new page
/pages
GET
Getpagebyid — Show details for a page
/pages/{id}
PUT
Updatepage — Update details for a page
/pages/{id}
DELETE
Deletepage — Remove a page
/pages/{id}
GET
Getpodcastepisodes — Podcast Episodes
/podcast_episodes
GET
Getprofileimage — A Users or organizations profile image
/profile_images/{username}
POST
Togglereaction — Toggle reaction
/reactions/toggle
POST
Createreaction — Create reaction
/reactions
GET
Getreadinglist — Readinglist
/readinglist
GET
Gettags — Tags
/tags
GET
Getuserme — The authenticated user
/users/me
GET
Getuser — A User
/users/{id}
PUT
Unpublishuser — Unpublish a User's Articles and Comments
/users/{id}/unpublish
PUT
Suspenduser — Suspend a User
/users/{id}/suspend
GET
Getwebhooks — Webhooks
/webhooks
POST
Createwebhook — Create a webhook
/webhooks
GET
Getwebhookbyid — A webhook endpoint
/webhooks/{id}
DELETE
Deletewebhook — Delete a webhook endpoint
/webhooks/{id}

MCP Tools

createarticle

Publish article

getarticles

Published articles

read-only idempotent
getlatestarticles

Published articles sorted by published date

read-only idempotent
getarticlebyid

Published article by id

read-only idempotent
updatearticle

Update an article by id

idempotent
getarticlebypath

Published article by path

read-only idempotent
getuserarticles

User's articles

read-only idempotent
getuserpublishedarticles

User's published articles

read-only idempotent
getuserunpublishedarticles

User's unpublished articles

read-only idempotent
getuserallarticles

User's all articles

read-only idempotent
unpublisharticle

Unpublish an article

idempotent
getcommentsbyarticleid

Comments

read-only idempotent
getcommentbyid

Comment by id

read-only idempotent
getdisplayads

Display ads

read-only idempotent
createdisplayad

Create display ad

getdisplayadbyid

Display ad

read-only idempotent
updatedisplayad

Update display ad

idempotent
unpublishdisplayad

Unpublish display ad

idempotent
getfollowedtags

Followed Tags

read-only idempotent
getfollowers

Followers

read-only idempotent
getorganization

An organization

read-only idempotent
getorgusers

Organization's users

read-only idempotent
getorgarticles

Organization's Articles

read-only idempotent
getpages

Show details for all pages

read-only idempotent
createpage

Create a new page

getpagebyid

Show details for a page

read-only idempotent
updatepage

Update details for a page

idempotent
deletepage

Remove a page

idempotent
getpodcastepisodes

Podcast Episodes

read-only idempotent
getprofileimage

A Users or organizations profile image

read-only idempotent
togglereaction

Toggle reaction

createreaction

Create reaction

getreadinglist

Readinglist

read-only idempotent
gettags

Tags

read-only idempotent
getuserme

The authenticated user

read-only idempotent
getuser

A User

read-only idempotent
unpublishuser

Unpublish a User's Articles and Comments

idempotent
suspenduser

Suspend a User

idempotent
getwebhooks

Webhooks

read-only idempotent
createwebhook

Create a webhook

getwebhookbyid

A webhook endpoint

read-only idempotent
deletewebhook

Delete a webhook endpoint

idempotent

Capability Spec

dev-to-capability.yaml Raw ↑
naftiko: 1.0.0-alpha2
info:
  label: Dev.to Forem API
  description: The Dev.to Forem API (v1) is a RESTful API that provides programmatic access to the Dev.to developer community
    platform, which is built on the open-source Forem framework. The API enables developers to create, read, update, and manage
    articles, comments, users, organizations, tags, followers, listings, podcast episodes, pages, display ads, reactions,
    reading lists, and webhooks. It uses API key authentication, requires an accept header of application/vnd.forem.api-v1+json,
    and returns JSON responses. Unauthenticated endpoints are CORS-enabled, making it possible to fetch public content directl
  tags:
  - Dev
  - To
  - API
  created: '2026-05-06'
  modified: '2026-05-06'
capability:
  consumes:
  - type: http
    namespace: dev-to
    baseUri: https://dev.to/api
    description: Dev.to Forem API HTTP API.
    authentication:
      type: apikey
      in: header
      name: api-key
      value: '{{DEV_TO_TOKEN}}'
    resources:
    - name: articles
      path: /articles
      operations:
      - name: createarticle
        method: POST
        description: Publish article
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
      - name: getarticles
        method: GET
        description: Published articles
        inputParameters:
        - name: tag
          in: query
          type: string
          description: Filter articles by a single tag name.
        - name: tags
          in: query
          type: string
          description: Filter articles by a comma-separated list of tag names (articles must have all specified tags).
        - name: tags_exclude
          in: query
          type: string
          description: Exclude articles with these comma-separated tag names.
        - name: username
          in: query
          type: string
          description: Filter articles by the author's username.
        - name: state
          in: query
          type: string
          description: Filter articles by state. Defaults to the most popular articles.
        - name: top
          in: query
          type: integer
          description: Return the most popular articles published in the last N days.
        - name: collection_id
          in: query
          type: integer
          description: Return articles belonging to the specified collection.
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: articles-latest
      path: /articles/latest
      operations:
      - name: getlatestarticles
        method: GET
        description: Published articles sorted by published date
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: articles-id
      path: /articles/{id}
      operations:
      - name: getarticlebyid
        method: GET
        description: Published article by id
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
      - name: updatearticle
        method: PUT
        description: Update an article by id
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: articles-username-slug
      path: /articles/{username}/{slug}
      operations:
      - name: getarticlebypath
        method: GET
        description: Published article by path
        inputParameters:
        - name: username
          in: path
          type: string
          required: true
          description: The username of the article's author.
        - name: slug
          in: path
          type: string
          required: true
          description: The slug of the article.
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: articles-me
      path: /articles/me
      operations:
      - name: getuserarticles
        method: GET
        description: User's articles
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: articles-me-published
      path: /articles/me/published
      operations:
      - name: getuserpublishedarticles
        method: GET
        description: User's published articles
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: articles-me-unpublished
      path: /articles/me/unpublished
      operations:
      - name: getuserunpublishedarticles
        method: GET
        description: User's unpublished articles
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: articles-me-all
      path: /articles/me/all
      operations:
      - name: getuserallarticles
        method: GET
        description: User's all articles
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: articles-id-unpublish
      path: /articles/{id}/unpublish
      operations:
      - name: unpublisharticle
        method: PUT
        description: Unpublish an article
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: comments
      path: /comments
      operations:
      - name: getcommentsbyarticleid
        method: GET
        description: Comments
        inputParameters:
        - name: a_id
          in: query
          type: integer
          description: The article ID to retrieve comments for.
        - name: p_id
          in: query
          type: integer
          description: The podcast episode ID to retrieve comments for.
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: comments-id
      path: /comments/{id}
      operations:
      - name: getcommentbyid
        method: GET
        description: Comment by id
        inputParameters:
        - name: id
          in: path
          type: string
          required: true
          description: The ID of the comment.
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: display-ads
      path: /display_ads
      operations:
      - name: getdisplayads
        method: GET
        description: Display ads
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
      - name: createdisplayad
        method: POST
        description: Create display ad
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: display-ads-id
      path: /display_ads/{id}
      operations:
      - name: getdisplayadbyid
        method: GET
        description: Display ad
        inputParameters:
        - name: id
          in: path
          type: integer
          required: true
          description: The ID of the display ad.
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
      - name: updatedisplayad
        method: PUT
        description: Update display ad
        inputParameters:
        - name: id
          in: path
          type: integer
          required: true
          description: The ID of the display ad.
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: display-ads-id-unpublish
      path: /display_ads/{id}/unpublish
      operations:
      - name: unpublishdisplayad
        method: PUT
        description: Unpublish display ad
        inputParameters:
        - name: id
          in: path
          type: integer
          required: true
          description: The ID of the display ad.
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: follows-tags
      path: /follows/tags
      operations:
      - name: getfollowedtags
        method: GET
        description: Followed Tags
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: followers-users
      path: /followers/users
      operations:
      - name: getfollowers
        method: GET
        description: Followers
        inputParameters:
        - name: sort
          in: query
          type: string
          description: Sort order for followers.
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: organizations-username
      path: /organizations/{username}
      operations:
      - name: getorganization
        method: GET
        description: An organization
        inputParameters:
        - name: username
          in: path
          type: string
          required: true
          description: The username (slug) of the organization.
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: organizations-username-users
      path: /organizations/{username}/users
      operations:
      - name: getorgusers
        method: GET
        description: Organization's users
        inputParameters:
        - name: username
          in: path
          type: string
          required: true
          description: The username (slug) of the organization.
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: organizations-username-articles
      path: /organizations/{username}/articles
      operations:
      - name: getorgarticles
        method: GET
        description: Organization's Articles
        inputParameters:
        - name: username
          in: path
          type: string
          required: true
          description: The username (slug) of the organization.
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: pages
      path: /pages
      operations:
      - name: getpages
        method: GET
        description: Show details for all pages
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
      - name: createpage
        method: POST
        description: Create a new page
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: pages-id
      path: /pages/{id}
      operations:
      - name: getpagebyid
        method: GET
        description: Show details for a page
        inputParameters:
        - name: id
          in: path
          type: integer
          required: true
          description: The ID of the page.
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
      - name: updatepage
        method: PUT
        description: Update details for a page
        inputParameters:
        - name: id
          in: path
          type: integer
          required: true
          description: The ID of the page.
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
      - name: deletepage
        method: DELETE
        description: Remove a page
        inputParameters:
        - name: id
          in: path
          type: integer
          required: true
          description: The ID of the page.
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: podcast-episodes
      path: /podcast_episodes
      operations:
      - name: getpodcastepisodes
        method: GET
        description: Podcast Episodes
        inputParameters:
        - name: username
          in: query
          type: string
          description: Filter podcast episodes by the podcast owner's username.
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: profile-images-username
      path: /profile_images/{username}
      operations:
      - name: getprofileimage
        method: GET
        description: A Users or organizations profile image
        inputParameters:
        - name: username
          in: path
          type: string
          required: true
          description: The username of the user or organization.
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: reactions-toggle
      path: /reactions/toggle
      operations:
      - name: togglereaction
        method: POST
        description: Toggle reaction
        inputParameters:
        - name: category
          in: query
          type: string
          required: true
          description: The category of reaction.
        - name: reactable_id
          in: query
          type: integer
          required: true
          description: The ID of the reactable entity.
        - name: reactable_type
          in: query
          type: string
          required: true
          description: The type of entity being reacted to.
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: reactions
      path: /reactions
      operations:
      - name: createreaction
        method: POST
        description: Create reaction
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: readinglist
      path: /readinglist
      operations:
      - name: getreadinglist
        method: GET
        description: Readinglist
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: tags
      path: /tags
      operations:
      - name: gettags
        method: GET
        description: Tags
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: users-me
      path: /users/me
      operations:
      - name: getuserme
        method: GET
        description: The authenticated user
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: users-id
      path: /users/{id}
      operations:
      - name: getuser
        method: GET
        description: A User
        inputParameters:
        - name: id
          in: path
          type: string
          required: true
          description: The ID of the user.
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: users-id-unpublish
      path: /users/{id}/unpublish
      operations:
      - name: unpublishuser
        method: PUT
        description: Unpublish a User's Articles and Comments
        inputParameters:
        - name: id
          in: path
          type: integer
          required: true
          description: The ID of the user.
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: users-id-suspend
      path: /users/{id}/suspend
      operations:
      - name: suspenduser
        method: PUT
        description: Suspend a User
        inputParameters:
        - name: id
          in: path
          type: integer
          required: true
          description: The ID of the user.
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: webhooks
      path: /webhooks
      operations:
      - name: getwebhooks
        method: GET
        description: Webhooks
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
      - name: createwebhook
        method: POST
        description: Create a webhook
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: webhooks-id
      path: /webhooks/{id}
      operations:
      - name: getwebhookbyid
        method: GET
        description: A webhook endpoint
        inputParameters:
        - name: id
          in: path
          type: integer
          required: true
          description: The ID of the webhook.
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
      - name: deletewebhook
        method: DELETE
        description: Delete a webhook endpoint
        inputParameters:
        - name: id
          in: path
          type: integer
          required: true
          description: The ID of the webhook.
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
  exposes:
  - type: rest
    port: 8080
    namespace: dev-to-rest
    description: REST adapter for Dev.to Forem API.
    resources:
    - path: /articles
      name: createarticle
      operations:
      - method: POST
        name: createarticle
        description: Publish article
        call: dev-to.createarticle
        outputParameters:
        - type: object
          mapping: $.
    - path: /articles
      name: getarticles
      operations:
      - method: GET
        name: getarticles
        description: Published articles
        call: dev-to.getarticles
        outputParameters:
        - type: object
          mapping: $.
    - path: /articles/latest
      name: getlatestarticles
      operations:
      - method: GET
        name: getlatestarticles
        description: Published articles sorted by published date
        call: dev-to.getlatestarticles
        outputParameters:
        - type: object
          mapping: $.
    - path: /articles/{id}
      name: getarticlebyid
      operations:
      - method: GET
        name: getarticlebyid
        description: Published article by id
        call: dev-to.getarticlebyid
        outputParameters:
        - type: object
          mapping: $.
    - path: /articles/{id}
      name: updatearticle
      operations:
      - method: PUT
        name: updatearticle
        description: Update an article by id
        call: dev-to.updatearticle
        outputParameters:
        - type: object
          mapping: $.
    - path: /articles/{username}/{slug}
      name: getarticlebypath
      operations:
      - method: GET
        name: getarticlebypath
        description: Published article by path
        call: dev-to.getarticlebypath
        with:
          username: rest.username
          slug: rest.slug
        outputParameters:
        - type: object
          mapping: $.
    - path: /articles/me
      name: getuserarticles
      operations:
      - method: GET
        name: getuserarticles
        description: User's articles
        call: dev-to.getuserarticles
        outputParameters:
        - type: object
          mapping: $.
    - path: /articles/me/published
      name: getuserpublishedarticles
      operations:
      - method: GET
        name: getuserpublishedarticles
        description: User's published articles
        call: dev-to.getuserpublishedarticles
        outputParameters:
        - type: object
          mapping: $.
    - path: /articles/me/unpublished
      name: getuserunpublishedarticles
      operations:
      - method: GET
        name: getuserunpublishedarticles
        description: User's unpublished articles
        call: dev-to.getuserunpublishedarticles
        outputParameters:
        - type: object
          mapping: $.
    - path: /articles/me/all
      name: getuserallarticles
      operations:
      - method: GET
        name: getuserallarticles
        description: User's all articles
        call: dev-to.getuserallarticles
        outputParameters:
        - type: object
          mapping: $.
    - path: /articles/{id}/unpublish
      name: unpublisharticle
      operations:
      - method: PUT
        name: unpublisharticle
        description: Unpublish an article
        call: dev-to.unpublisharticle
        outputParameters:
        - type: object
          mapping: $.
    - path: /comments
      name: getcommentsbyarticleid
      operations:
      - method: GET
        name: getcommentsbyarticleid
        description: Comments
        call: dev-to.getcommentsbyarticleid
        outputParameters:
        - type: object
          mapping: $.
    - path: /comments/{id}
      name: getcommentbyid
      operations:
      - method: GET
        name: getcommentbyid
        description: Comment by id
        call: dev-to.getcommentbyid
        with:
          id: rest.id
        outputParameters:
        - type: object
          mapping: $.
    - path: /display_ads
      name: getdisplayads
      operations:
      - method: GET
        name: getdisplayads
        description: Display ads
        call: dev-to.getdisplayads
        outputParameters:
        - type: object
          mapping: $.
    - path: /display_ads
      name: createdisplayad
      operations:
      - method: POST
        name: createdisplayad
        description: Create display ad
        call: dev-to.createdisplayad
        outputParameters:
        - type: object
          mapping: $.
    - path: /display_ads/{id}
      name: getdisplayadbyid
      operations:
      - method: GET
        name: getdisplayadbyid
        description: Display ad
        call: dev-to.getdisplayadbyid
        with:
          id: rest.id
        outputParameters:
        - type: object
          mapping: $.
    - path: /display_ads/{id}
      name: updatedisplayad
      operations:
      - method: PUT
        name: updatedisplayad
        description: Update display ad
        call: dev-to.updatedisplayad
        with:
          id: rest.id
        outputParameters:
        - type: object
          mapping: $.
    - path: /display_ads/{id}/unpublish
      name: unpublishdisplayad
      operations:
      - method: PUT
        name: unpublishdisplayad
        description: Unpublish display ad
        call: dev-to.unpublishdisplayad
        with:
          id: rest.id
        outputParameters:
        - type: object
          mapping: $.
    - path: /follows/tags
      name: getfollowedtags
      operations:
      - method: GET
        name: getfollowedtags
        description: Followed Tags
        call: dev-to.getfollowedtags
        outputParameters:
        - type: object
          mapping: $.
    - path: /followers/users
      name: getfollowers
      operations:
      - method: GET
        name: getfollowers
        description: Followers
        call: dev-to.getfollowers
        outputParameters:
        - type: object
          mapping: $.
    - path: /organizations/{username}
      name: getorganization
      operations:
      - method: GET
        name: getorganization
        description: An organization
        call: dev-to.getorganization
        with:
          username: rest.username
        outputParameters:
        - type: object
          mapping: $.
    - path: /organizations/{username}/users
      name: getorgusers
      operations:
      - method: GET
        name: getorgusers
        description: Organization's users
        call: dev-to.getorgusers
        with:
          username: rest.username
        outputParameters:
        - type: object
          mapping: $.
    - path: /organizations/{username}/articles
      name: getorgarticles
      operations:
      - method: GET
        name: getorgarticles
        description: Organization's Articles
        call: dev-to.getorgarticles
        with:
          username: rest.username
        outputParameters:
        - type: object
          mapping: $.
    - path: /pages
      name: getpages
      operations:
      - method: GET
        name: getpages
        description: Show details for all pages
        call: dev-to.getpages
        outputParameters:
        - type: object
          mapping: $.
    - path: /pages
      name: createpage
      operations:
      - method: POST
        name: createpage
        description: Create a new page
        call: dev-to.createpage
        outputParameters:
        - type: object
          mapping: $.
    - path: /pages/{id}
      name: getpagebyid
      operations:
      - method: GET
        name: getpagebyid
        description: Show details for a page
        call: dev-to.getpagebyid
        with:
          id: rest.id
        outputParameters:
        - type: object
          mapping: $.
    - path: /pages/{id}
      name: updatepage
      operations:
      - method: PUT
        name: updatepage
        description: Update details for a page
        call: dev-to.updatepage
        with:
          id: rest.id
        outputParameters:
        - type: object
          mapping: $.
    - path: /pages/{id}
      name: deletepage
      operations:
      - method: DELETE
        name: deletepage
        description: Remove a page
        call: dev-to.deletepage
        with:
          id: rest.id
        outputParameters:
        - type: object
          mapping: $.
    - path: /podcast_episodes
      name: getpodcastepisodes
      operations:
      - method: GET
        name: getpodcastepisodes
        description: Podcast Episodes
        call: dev-to.getpodcastepisodes
        outputParameters:
        - type: object
          mapping: $.
    - path: /profile_images/{username}
      name: getprofileimage
      operations:
      - method: GET
        name: getprofileimage
        description: A Users or organizations profile image
        call: dev-to.getprofileimage
        with:
          username: rest.username
        outputParameters:
        - type: object
          mapping: $.
    - path: /reactions/toggle
      name: togglereaction
      operations:
      - method: POST
        name: togglereaction
        description: Toggle reaction
        call: dev-to.togglereaction
        outputParameters:
        - type: object
          mapping: $.
    - path: /reactions
      name: createreaction
      operations:
      - method: POST
        name: createreaction
        description: Create reaction
        call: dev-to.createreaction
        outputParameters:
        - type: object
          mapping: $.
    - path: /readinglist
      name: getreadinglist
      operations:
      - method: GET
        name: getreadinglist
        description: Readinglist
        call: dev-to.getreadinglist
        outputParameters:
        - type: object
          mapping: $.
    - path: /tags
      name: gettags
      operations:
      - method: GET
        name: gettags
        description: Tags
        call: dev-to.gettags
        outputParameters:
        - type: object
          mapping: $.
    - path: /users/me
      name: getuserme
      operations:
      - method: GET
        name: getuserme
        description: The authenticated user
        call: dev-to.getuserme
        outputParameters:
        - type: object
          mapping: $.
    - path: /users/{id}
      name: getuser
      operations:
      - method: GET
        name: getuser
        description: A User
        call: dev-to.getuser
        with:
          id: rest.id
        outputParameters:
        - type: object
          mapping: $.
    - path: /users/{id}/unpublish
      name: unpublishuser
      operations:
      - method: PUT
        name: unpublishuser
        description: Unpublish a User's Articles and Comments
        call: dev-to.unpublishuser
        with:
          id: rest.id
        outputParameters:
        - type: object
          mapping: $.
    - path: /users/{id}/suspend
      name: suspenduser
      operations:
      - method: PUT
        name: suspenduser
        description: Suspend a User
        call: dev-to.suspenduser
        with:
          id: rest.id
        outputParameters:
        - type: object
          mapping: $.
    - path: /webhooks
      name: getwebhooks
      operations:
      - method: GET
        name: getwebhooks
        description: Webhooks
        call: dev-to.getwebhooks
        outputParameters:
        - type: object
          mapping: $.
    - path: /webhooks
      name: createwebhook
      operations:
      - method: POST
        name: createwebhook
        description: Create a webhook
        call: dev-to.createwebhook
        outputParameters:
        - type: object
          mapping: $.
    - path: /webhooks/{id}
      name: getwebhookbyid
      operations:
      - method: GET
        name: getwebhookbyid
        description: A webhook endpoint
        call: dev-to.getwebhookbyid
        with:
          id: rest.id
        outputParameters:
        - type: object
          mapping: $.
    - path: /webhooks/{id}
      name: deletewebhook
      operations:
      - method: DELETE
        name: deletewebhook
        description: Delete a webhook endpoint
        call: dev-to.deletewebhook
        with:
          id: rest.id
        outputParameters:
        - type: object
          mapping: $.
  - type: mcp
    port: 9090
    namespace: dev-to-mcp
    transport: http
    description: MCP adapter for Dev.to Forem API for AI agent use.
    tools:
    - name: createarticle
      description: Publish article
      hints:
        readOnly: false
        destructive: false
        idempotent: false
      call: dev-to.createarticle
      outputParameters:
      - type: object
        mapping: $.
    - name: getarticles
      description: Published articles
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: dev-to.getarticles
      with:
        tag: tools.tag
        tags: tools.tags
        tags_exclude: tools.tags_exclude
        username: tools.username
        state: tools.state
        top: tools.top
        collection_id: tools.collection_id
      inputParameters:
      - name: tag
        type: string
        description: Filter articles by a single tag name.
      - name: tags
        type: string
        description: Filter articles by a comma-separated list of tag names (articles must have all specified tags).
      - name: tags_exclude
        type: string
        description: Exclude articles with these comma-separated tag names.
      - name: username
        type: string
        description: Filter articles by the author's username.
      - name: state
        type: string
        description: Filter articles by state. Defaults to the most popular articles.
      - name: top
        type: integer
        description: Return the most popular articles published in the last N days.
      - name: collection_id
        type: integer
        description: Return articles belonging to the specified collection.
      outputParameters:
      - type: object
        mapping: $.
    - name: getlatestarticles
      description: Published articles sorted by published date
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: dev-to.getlatestarticles
      outputParameters:
      - type: object
        mapping: $.
    - name: getarticlebyid
      description: Published article by id
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: dev-to.getarticlebyid
      outputParameters:
      - type: object
        mapping: $.
    - name: updatearticle
      description: Update an article by id
      hints:
        readOnly: false
        destructive: false
        idempotent: true
      call: dev-to.updatearticle
      outputParameters:
      - type: object
        mapping: $.
    - name: getarticlebypath
      description: Published article by path
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: dev-to.getarticlebypath
      with:
        username: tools.username
        slug: tools.slug
      inputParameters:
      - name: username
        type: string
        description: The username of the article's author.
        required: true
      - name: slug
        type: string
        description: The slug of the article.
        required: true
      outputParameter

# --- truncated at 32 KB (44 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/dev-to/refs/heads/main/capabilities/dev-to-capability.yaml