<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Kin Lane</title>
    <description>The latest articles on DEV Community by Kin Lane (@kinlane).</description>
    <link>https://dev.to/kinlane</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F520245%2F784ec874-c366-4588-b736-9eac98dbe9f0.jpg</url>
      <title>DEV Community: Kin Lane</title>
      <link>https://dev.to/kinlane</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/kinlane"/>
    <language>en</language>
    <item>
      <title>API Evangelist Daily — Monday, November 2, 2026</title>
      <dc:creator>Kin Lane</dc:creator>
      <pubDate>Tue, 03 Nov 2026 16:52:43 +0000</pubDate>
      <link>https://dev.to/kinlane/api-evangelist-daily-monday-november-2-2026-2o1o</link>
      <guid>https://dev.to/kinlane/api-evangelist-daily-monday-november-2-2026-2o1o</guid>
      <description>&lt;p&gt;This is the API Evangelist Daily for Monday, November 2, 2026 — what is new across APIs.io, API Evangelist and API Commons, plus a few things from the shelf.&lt;/p&gt;

&lt;h2&gt;
  
  
  New on API Evangelist
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://apievangelist.com/2026/11/02/add-webhooks-to-your-product-and-recover-failed-deliveries-with-svix/" rel="noopener noreferrer"&gt;Add Webhooks To Your Product And Recover Failed Deliveries With Svix&lt;/a&gt;&lt;/strong&gt; — A big customer asks whether your product can notify their system the moment an order ships. Your engineers say yes, then quote you weeks of work, because sending the message turns out to be the easy part.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://apievangelist.com/2026/11/02/check-two-openapi-versions-for-breaking-changes-and-know-what-it-cannot-see/" rel="noopener noreferrer"&gt;Check Two OpenAPI Versions For Breaking Changes, And Know What It Cannot See&lt;/a&gt;&lt;/strong&gt; — This is the third story in my series on what each API Evangelist operation can do. Friday I searched sixteen years of research.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://apievangelist.com/2026/11/02/control-who-sees-your-data-manage-warehouses-and-run-ai-models-with-snowflake/" rel="noopener noreferrer"&gt;Control Who Sees Your Data, Manage Warehouses And Run AI Models With Snowflake&lt;/a&gt;&lt;/strong&gt; — A new analyst starts on Monday and can't see the sales tables until someone files a request. A departing contractor still has access nobody remembered to remove.&lt;/li&gt;
&lt;li&gt;Plus 6 more today: &lt;a href="https://apievangelist.com/2026/11/02/find-the-root-cause-of-outages-search-logs-and-forecast-monitoring-costs-with-dynatrace/" rel="noopener noreferrer"&gt;Find The Root Cause Of Outages, Search Logs And Forecast Monitoring Costs With Dynatrace&lt;/a&gt;; &lt;a href="https://apievangelist.com/2026/11/02/manage-marketing-emails-campaign-budgets-and-customer-conversations-with-hubspot/" rel="noopener noreferrer"&gt;Manage Marketing Emails, Campaign Budgets And Customer Conversations With HubSpot&lt;/a&gt;; &lt;a href="https://apievangelist.com/2026/11/02/run-website-reports-send-server-events-and-handle-privacy-deletion-requests-with-google-analytics/" rel="noopener noreferrer"&gt;Run Website Reports, Send Server Events And Handle Privacy Deletion Requests With Google Analytics&lt;/a&gt;; &lt;a href="https://apievangelist.com/2026/11/02/the-decoder-only-pours-part-of-the-bedrock/" rel="noopener noreferrer"&gt;The Decoder Only Pours Part Of The Bedrock&lt;/a&gt;; &lt;a href="https://apievangelist.com/2026/11/02/the-same-fifty-providers-sit-under-every-kind-of-application/" rel="noopener noreferrer"&gt;The Same Fifty Providers Sit Under Every Kind Of Application&lt;/a&gt;; &lt;a href="https://apievangelist.com/2026/11/02/use-a-score-to-build-your-api-roadmap-and-not-to-chase-a-number/" rel="noopener noreferrer"&gt;Use A Score To Build Your API Roadmap And Not To Chase A Number&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  New on APIs.io
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://apis.io/2026/11/02/ai-agents-has-1016-providers-and-41-percent-of-them-are-still-human-only/" rel="noopener noreferrer"&gt;AI Agents has 1,016 providers and 41.0% of them are still human-only&lt;/a&gt;&lt;/strong&gt; — The AI Agents tag on apis.io holds 1,016 providers and 323 APIs, and one number frames it: 417 of those providers, 41.0%, sit in the human-only band of our agent readiness measure. These are companies carrying the word agent on their own listing.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://apis.io/2026/11/02/four-of-the-top-20-in-our-investing-industry-manage-infrastructure-not-money/" rel="noopener noreferrer"&gt;Four of the top 20 in our investing industry manage infrastructure, not money&lt;/a&gt;&lt;/strong&gt; — Four of the 20 highest scorers in our Investing &amp;amp; Venture Capital industry have nothing to do with investing. Bentley Systems is fifth at 71.2, Limble CMMS seventh at 70.8, MaintainX twelfth at 66.7 and SewerAI tied for eighteenth at 63.9.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://apis.io/2026/11/02/infobips-connectivity-api-offers-sim-swap-twice-and-its-async-lookup-has-no-webhook-contract/" rel="noopener noreferrer"&gt;Infobip's Connectivity API offers SIM swap checks twice, and its async lookup has no webhook contract&lt;/a&gt;&lt;/strong&gt; — The Infobip Connectivity API is the telecom identity layer of Infobip: number lookups, silent mobile verification, SIM swap checks, national ID checks, biometric sessions, and CAMARA endpoints. Its contract has 36 operations and 7 webhooks.&lt;/li&gt;
&lt;li&gt;Plus 8 more today: &lt;a href="https://apis.io/2026/11/02/just-over-half-of-our-pricing-records-cite-evidence-and-32-percent-were-generated/" rel="noopener noreferrer"&gt;Just over half of our pricing records cite evidence, and 32% of them were generated&lt;/a&gt;; &lt;a href="https://apis.io/2026/11/02/palo-alto-networks-moves-agent-identity-into-silicon-its-record-has-not-followed/" rel="noopener noreferrer"&gt;Palo Alto Networks Moves Agent Identity Into Silicon. Its Record Has Not Followed.&lt;/a&gt;; &lt;a href="https://apis.io/2026/11/02/photoroom-says-fix-the-catalog-before-the-protocol-and-the-api-record-agrees/" rel="noopener noreferrer"&gt;Photoroom Says Fix the Catalog Before the Protocol, and Its Own Record Shows the Same Gap&lt;/a&gt;; &lt;a href="https://apis.io/2026/11/02/serverless-page-shows-30-of-141-providers-and-the-sample-flatters-the-market-by-23-points/" rel="noopener noreferrer"&gt;The serverless page shows 30 of 141 providers, and the sample flatters the market by 23 points&lt;/a&gt;; &lt;a href="https://apis.io/2026/11/02/simscale-polled-engineers-on-ai-and-one-in-twenty-are-scaling/" rel="noopener noreferrer"&gt;SimScale Polled Engineers on AI, and One in Twenty Are Scaling It&lt;/a&gt;; &lt;a href="https://apis.io/2026/11/02/sobot-defines-the-customer-service-agent-skill-its-apis-still-describe-the-seat/" rel="noopener noreferrer"&gt;Sobot Defines the Customer Service Agent Skill. Its API Pages Do Not Show One Yet.&lt;/a&gt;; &lt;a href="https://apis.io/2026/11/02/three-times-as-many-provider-sites-serve-llms-txt-as-security-txt/" rel="noopener noreferrer"&gt;Three times as many provider sites serve llms.txt as security.txt&lt;/a&gt;; &lt;a href="https://apis.io/2026/11/02/workato-customer-says-nobody-has-figured-out-agent-pricing-so-build-the-meter-first/" rel="noopener noreferrer"&gt;A Workato Customer Says Nobody Has Figured Out Agent Pricing, So Build the Meter First&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Kin Score mover
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://apis.io/providers/sully-ai/" rel="noopener noreferrer"&gt;Sully AI&lt;/a&gt;&lt;/strong&gt; rose 24.4 points, from 21.0 to 45.4 (developing), between the 2026-10-30 and 2026-10-31 scoring runs.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Provider spotlight
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://apis.io/providers/mastercard/" rel="noopener noreferrer"&gt;Mastercard&lt;/a&gt;&lt;/strong&gt; — Mastercard is a global technology company in the payments industry, providing APIs for payment processing, fraud detection, data analytics, and financial services. Kin Score 57.3 (strong), agent readiness 42.8 (agent-native).&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  From the conversations
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://conversations.apievangelist.com/store/2025-01-16-reza-shafii-kong/" rel="noopener noreferrer"&gt;API Evangelist Conversation with Reza Shafii, Product Executive At Kong&lt;/a&gt;&lt;/strong&gt; — My friend Emanual had tagged me in one of Reza's posts on LinkedIn about API integrations being dead, so I invitied Reza to come over and explain more about what he meant. I knew the title was bait, but I was interested in hearing Reza's argument and after the conversation it is clear that he's done a lot of thinking at this intersection and wasn't just adding to the AI hype.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  FAQ
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://faq.apievangelist.com/questions/how-do-i-name-things-in-my-api/" rel="noopener noreferrer"&gt;How do I name things in my API?&lt;/a&gt;&lt;/strong&gt; Use the language the business uses, plural nouns for collections, consistent casing everywhere, and no abbreviations that require a decoder ring. Then write the convention down and lint it.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Guidance
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://guidance.apievangelist.com/store/quality/" rel="noopener noreferrer"&gt;Quality&lt;/a&gt;&lt;/strong&gt; — The measurable correctness consistency and completeness of API definitions&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Standard
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://standards.apievangelist.com/store/epcis/" rel="noopener noreferrer"&gt;EPCIS&lt;/a&gt;&lt;/strong&gt; — EPCIS (Electronic Product Code Information Services) is the GS1 standard for capturing and sharing supply chain event data — what happened to an object, where, when, and why.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Investor
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://apis.io/vcs/foundry-group/" rel="noopener noreferrer"&gt;Foundry Group&lt;/a&gt;&lt;/strong&gt; — Foundry Group is a Boulder, Colorado venture capital firm founded in 2007 by Brad Feld, Seth Levine, Ryan McIntyre, and Jason Mendelson. The firm invests in early-stage technology startups across the United States, organizing its work around long-lived, horizontal investment themes (such as "glue", "protocol", "distribution", and "human computer interaction") rather than narrow verticals, with a particular affinity…&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Country
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://apis.io/countries/portugal/" rel="noopener noreferrer"&gt;🇵🇹 Portugal&lt;/a&gt;&lt;/strong&gt; — 10 API providers on APIs.io; the most in Artificial Intelligence (3), Customer Support &amp;amp; Service (2), Government &amp;amp; Public Sector (2).&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Regulation
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://regulations.apievangelist.com/store/esign-ueta/" rel="noopener noreferrer"&gt;ESIGN Act and UETA&lt;/a&gt;&lt;/strong&gt; — ESIGN is the US federal statute giving electronic signatures and records the same legal effect as their paper equivalents, and UETA is the uniform state law adopted in almost every state that does the same at state level.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Tool
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://tools.apievangelist.com/store/apache-couchdb/" rel="noopener noreferrer"&gt;Apache CouchDB&lt;/a&gt;&lt;/strong&gt; — NoSQL document database using JSON for documents, HTTP for API, and JavaScript for MapReduce queries.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Everything mentioned is linked in the show notes. Find any API at apis.io, and see what we are working on at apievangelist.com.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Originally published at &lt;a href="https://newsletters.apievangelist.com/daily/2026/11/02/" rel="noopener noreferrer"&gt;https://newsletters.apievangelist.com/daily/2026/11/02/&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>api</category>
      <category>ai</category>
      <category>mcp</category>
      <category>openapi</category>
    </item>
    <item>
      <title>API Evangelist Daily — Thursday, October 29, 2026</title>
      <dc:creator>Kin Lane</dc:creator>
      <pubDate>Fri, 30 Oct 2026 17:57:41 +0000</pubDate>
      <link>https://dev.to/kinlane/api-evangelist-daily-thursday-october-29-2026-3mjd</link>
      <guid>https://dev.to/kinlane/api-evangelist-daily-thursday-october-29-2026-3mjd</guid>
      <description>&lt;p&gt;This is the API Evangelist Daily for Thursday, October 29, 2026 — what is new across APIs.io, API Evangelist and API Commons, plus a few things from the shelf.&lt;/p&gt;

&lt;h2&gt;
  
  
  New on API Evangelist
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://apievangelist.com/2026/10/29/api-evangelist-is-now-a-financial-contributor-to-openlint/" rel="noopener noreferrer"&gt;API Evangelist Is Now A Financial Contributor To OpenLint&lt;/a&gt;&lt;/strong&gt; — API Evangelist just became a financial contributor to OpenLint on Open Collective, with a €1,000 contribution. I want to explain why, and ask you to do the same if your work depends on API linting.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://apievangelist.com/2026/10/29/automate-branch-cleanup-and-push-notifications-with-gitlab/" rel="noopener noreferrer"&gt;Automate Branch Cleanup And Push Notifications With GitLab&lt;/a&gt;&lt;/strong&gt; — If you manage a software team, you have seen the repository that nobody tidies: hundreds of old branches, release branches someone forgot to protect, and a chat channel that never hears about a push until somebody complains. Those are housekeeping jobs, and housekeeping is exactly what software is good at.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://apievangelist.com/2026/10/29/automate-ecommerce-email-campaigns-and-segment-shoppers-with-omnisend/" rel="noopener noreferrer"&gt;Automate Ecommerce Email Campaigns And Segment Shoppers With Omnisend&lt;/a&gt;&lt;/strong&gt; — If you run an online store, you already know the email that earns money: the welcome note to a new subscriber, the campaign to people who bought last spring, the reminder to someone who left a cart. The hard part is keeping your subscriber list, your product catalog and your campaigns in step with what is actually happening in the store.&lt;/li&gt;
&lt;li&gt;Plus 7 more today: &lt;a href="https://apievangelist.com/2026/10/29/e-invoicing-the-shape-of-the-answer/" rel="noopener noreferrer"&gt;E-Invoicing: The Shape Of The Answer&lt;/a&gt;; &lt;a href="https://apievangelist.com/2026/10/29/google-ships-agent-skills-like-products-and-thats-the-lifecycle-they-need/" rel="noopener noreferrer"&gt;Google Ships Agent Skills Like Products, And That's The Lifecycle They Need&lt;/a&gt;; &lt;a href="https://apievangelist.com/2026/10/29/lint-an-openapi-and-find-out-which-rules-decide-if-it-passes/" rel="noopener noreferrer"&gt;Lint An OpenAPI And Find Out Which Rules Decide If It Passes&lt;/a&gt;; &lt;a href="https://apievangelist.com/2026/10/29/manage-event-contacts-discount-codes-and-campaign-email-with-cvent-event-cloud/" rel="noopener noreferrer"&gt;Manage Event Contacts, Discount Codes And Campaign Email With Cvent Event Cloud&lt;/a&gt;; &lt;a href="https://apievangelist.com/2026/10/29/run-code-without-managing-servers-and-release-it-safely-with-aws-lambda/" rel="noopener noreferrer"&gt;Run Code Without Managing Servers And Release It Safely With AWS Lambda&lt;/a&gt;; &lt;a href="https://apievangelist.com/2026/10/29/run-traffic-reports-and-build-audience-segments-with-adobe-analytics/" rel="noopener noreferrer"&gt;Run Traffic Reports And Build Audience Segments With Adobe Analytics&lt;/a&gt;; &lt;a href="https://apievangelist.com/2026/10/29/skills-over-mcp-is-now-officially-beta/" rel="noopener noreferrer"&gt;Skills Over MCP Is Now Officially Beta&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  New on APIs.io
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://apis.io/2026/10/29/barndoor-sorts-oktas-mcp-tools-into-allow-hold-deny/" rel="noopener noreferrer"&gt;Barndoor Sorts Okta's MCP Tools Into Allow, Hold and Deny&lt;/a&gt;&lt;/strong&gt; — Barndoor has written a gating plan for Okta's open-source MCP server, which lets agents run Okta management operations through Okta's Admin Management APIs. The post walks the real server.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://apis.io/2026/10/29/traefik-puts-runtime-governance-in-front-of-oci-agents/" rel="noopener noreferrer"&gt;Traefik Puts Runtime Governance in Front of OCI Agents&lt;/a&gt;&lt;/strong&gt; — Traefik Labs built a full agent stack in an Oracle Cloud tenancy and wrote up what it took to let those agents act: OCI Enterprise AI Sandbox, Identity Domains, Guardrails, Generative AI and Kubernetes Engine, with Traefik Hub as the one path out of the sandbox. Then they poisoned a runbook.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://apis.io/2026/10/29/vercel-mcp-takes-feedback-from-the-agent/" rel="noopener noreferrer"&gt;Vercel: The MCP Server Now Takes Feedback From the Agent&lt;/a&gt;&lt;/strong&gt; — Vercel's changelog entry of October 23 adds a submitfeedback tool to the Vercel MCP server: a way to send bug reports, friction reports and feature requests to the Vercel team directly from an agent or harness. You ask in plain language, and the assistant attaches structured context describing the task, the expected behavior and what went wrong.&lt;/li&gt;
&lt;li&gt;Plus 2 more today: &lt;a href="https://apis.io/2026/10/29/workos-zero-trust-checks-every-mcp-tool-call/" rel="noopener noreferrer"&gt;WorkOS: Zero Trust Means Checking Every MCP Tool Call&lt;/a&gt;; &lt;a href="https://apis.io/2026/10/29/zapier-mcp-and-the-recruiters-who-turned-the-knob/" rel="noopener noreferrer"&gt;Zapier MCP and the Recruiters Who Turned the Knob&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Kin Score mover
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://apis.io/providers/spendesk/" rel="noopener noreferrer"&gt;Spendesk&lt;/a&gt;&lt;/strong&gt; rose 29.1 points, from 30.5 to 59.6 (strong), between the 2026-10-11 and 2026-10-17 scoring runs.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Provider spotlight
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://apis.io/providers/rollee/" rel="noopener noreferrer"&gt;Rollee&lt;/a&gt;&lt;/strong&gt; — Rollee is an Open Finance / employment-data platform that lets fintechs, lenders, and HR platforms verify the income, employment, and work history of both salaried and self-employed workers in real time. Kin Score 55.6 (strong), agent readiness 36.9 (agent-ready).&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  From the conversations
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://conversations.apievangelist.com/store/2024-12-05-lorna-mitchell/" rel="noopener noreferrer"&gt;API Evangelist Conversation with Lorna Mitchell, OpenAPI Specification Maintainer with the OpenAPI Initiative&lt;/a&gt;&lt;/strong&gt; — Lorna Mitchell, OpenAPI Specification Maintainer with the OpenAPI Initiative, and overall API experience expert came by to educate me (us) on OpenAPI Overlays, helping contrast with the core OpenAPI spec, as well as with Arazzo Workflows, sharing how it will help bring more stakeholders into the API lifecycle and contribute to better API experiences. Lorna is a well spring of knowledge when it comes to OpenAPI, but…&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  FAQ
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://faq.apievangelist.com/questions/how-do-i-manage-policies-across-multiple-gateways/" rel="noopener noreferrer"&gt;How do I manage policies consistently across multiple API gateways?&lt;/a&gt;&lt;/strong&gt; Define the policy once in a vendor-neutral form, generate or verify each gateway's configuration from it, and report coverage across all of them. Hand-maintaining parallel policy sets never stays in sync.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Guidance
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://guidance.apievangelist.com/store/production/" rel="noopener noreferrer"&gt;Production&lt;/a&gt;&lt;/strong&gt; — Governing APIs that are live and serving real traffic&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Standard
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://standards.apievangelist.com/store/privacy-by-design/" rel="noopener noreferrer"&gt;Privacy By Design&lt;/a&gt;&lt;/strong&gt; — A framework and approach that embeds privacy protections into the design and operation of IT systems, networked infrastructure, and business practices from the ground up, rather than as an afterthought.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Investor
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://apis.io/vcs/fifth-wall/" rel="noopener noreferrer"&gt;Fifth Wall&lt;/a&gt;&lt;/strong&gt; — Fifth Wall is a venture capital firm founded in 2016 by Brendan F. Wallace and Brad Greiwe and headquartered in Los Angeles, California, with additional offices in New York, San Francisco, and London.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Country
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://apis.io/countries/norway/" rel="noopener noreferrer"&gt;🇳🇴 Norway&lt;/a&gt;&lt;/strong&gt; — 34 API providers on APIs.io; the most in IoT &amp;amp; Connected Devices (6), Artificial Intelligence (6), Energy (4).&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Regulation
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://regulations.apievangelist.com/store/eidas/" rel="noopener noreferrer"&gt;eIDAS Regulation (Electronic Identification and Trust Services)&lt;/a&gt;&lt;/strong&gt; — eIDAS is the EU regulation governing electronic identification and trust services — including the qualified website (QWAC) and seal (QSEAL) certificates that identify regulated third parties in open banking.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Tool
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://tools.apievangelist.com/store/apache-cocoon/" rel="noopener noreferrer"&gt;Apache Cocoon&lt;/a&gt;&lt;/strong&gt; — Web application framework built around the areas of pipeline processing and separation of concerns using XML.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Everything mentioned is linked in the show notes. Find any API at apis.io, and see what we are working on at apievangelist.com.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Originally published at &lt;a href="https://newsletters.apievangelist.com/daily/2026/10/29/" rel="noopener noreferrer"&gt;https://newsletters.apievangelist.com/daily/2026/10/29/&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>api</category>
      <category>ai</category>
      <category>mcp</category>
      <category>openapi</category>
    </item>
    <item>
      <title>API Evangelist Daily — Wednesday, October 28, 2026</title>
      <dc:creator>Kin Lane</dc:creator>
      <pubDate>Fri, 30 Oct 2026 17:56:31 +0000</pubDate>
      <link>https://dev.to/kinlane/api-evangelist-daily-wednesday-october-28-2026-3di0</link>
      <guid>https://dev.to/kinlane/api-evangelist-daily-wednesday-october-28-2026-3di0</guid>
      <description>&lt;p&gt;This is the API Evangelist Daily for Wednesday, October 28, 2026 — what is new across APIs.io, API Evangelist and API Commons, plus a few things from the shelf.&lt;/p&gt;

&lt;h2&gt;
  
  
  New on API Evangelist
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://apievangelist.com/2026/10/28/advertising-the-shape-of-the-answer/" rel="noopener noreferrer"&gt;Advertising: The Shape Of The Answer&lt;/a&gt;&lt;/strong&gt; — Last week I wrote about DeepInfer and the shape of the answer, and how batch-invariant inference, deterministic sampling and schema-constrained output make valid JSON table stakes and push the real work onto agreeing on the shape. Advertising is the industry I wanted to look at next, because it agreed on its shape more than fifteen years ago and then runs that shape at a volume nobody else does.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://apievangelist.com/2026/10/28/australian-government-is-open-but-not-yet-discoverable-by-agents/" rel="noopener noreferrer"&gt;Australian Government Is Open But Not Yet Discoverable By Agents&lt;/a&gt;&lt;/strong&gt; — Australian government publishes more than almost anyone, and an agent still cannot find most of it on its own.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://apievangelist.com/2026/10/28/can-your-mcp-server-finish-the-job/" rel="noopener noreferrer"&gt;Can Your MCP Server Finish The Job?&lt;/a&gt;&lt;/strong&gt; — When I wrote that MCP is last-mile plumbing, the best response I got wasn't a comment. It was a repost, with one example that turned my analogy into a test.&lt;/li&gt;
&lt;li&gt;Plus 8 more today: &lt;a href="https://apievangelist.com/2026/10/28/connect-to-your-customers-accounting-hr-and-crm-systems-with-merge/" rel="noopener noreferrer"&gt;Connect To Your Customers Accounting, HR And CRM Systems With Merge&lt;/a&gt;; &lt;a href="https://apievangelist.com/2026/10/28/run-a-managed-graph-database-and-predict-connections-with-amazon-neptune/" rel="noopener noreferrer"&gt;Run A Managed Graph Database And Predict Connections With Amazon Neptune&lt;/a&gt;; &lt;a href="https://apievangelist.com/2026/10/28/send-contracts-for-electronic-signature-and-track-them-with-docusign/" rel="noopener noreferrer"&gt;Send Contracts For Electronic Signature And Track Them With Docusign&lt;/a&gt;; &lt;a href="https://apievangelist.com/2026/10/28/send-marketing-email-and-manage-contact-lists-with-sendgrid/" rel="noopener noreferrer"&gt;Send Marketing Email And Manage Contact Lists With SendGrid&lt;/a&gt;; &lt;a href="https://apievangelist.com/2026/10/28/the-mcp-maintenance-bill-depends-on-how-you-built-it/" rel="noopener noreferrer"&gt;The MCP Maintenance Bill Depends On How You Built It&lt;/a&gt;; &lt;a href="https://apievangelist.com/2026/10/28/trigger-builds-and-retry-failed-jobs-automatically-with-buildkite/" rel="noopener noreferrer"&gt;Trigger Builds And Retry Failed Jobs Automatically With Buildkite&lt;/a&gt;; &lt;a href="https://apievangelist.com/2026/10/28/two-hundred-nine-api-companies-and-seven-hundred-seventy-five-enterprises-hire-in-different-worlds/" rel="noopener noreferrer"&gt;Two Hundred Nine API Companies And Seven Hundred Seventy-Five Enterprises Hire In Different Worlds&lt;/a&gt;; &lt;a href="https://apievangelist.com/2026/10/28/who-actually-gets-to-define-api-standards/" rel="noopener noreferrer"&gt;Who Actually Gets To Define API Standards&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  New on APIs.io
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://apis.io/2026/10/28/brale-rewrote-its-docs-around-the-path-its-catalog-record-still-shows/" rel="noopener noreferrer"&gt;Brale rewrote its docs around a supported path, and deprecated a page its catalog record still shows&lt;/a&gt;&lt;/strong&gt; — Brale has relaunched its developer documentation, and the argument behind it is one most payment APIs never admit out loud. In Introducing the New Brale API Docs, the regulated stablecoin issuer writes that "Stablecoin integrations don't stall at minting.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Kin Score mover
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://apis.io/providers/doorloop/" rel="noopener noreferrer"&gt;DoorLoop&lt;/a&gt;&lt;/strong&gt; rose 29.7 points, from 21.9 to 51.6 (developing), between the 2026-10-11 and 2026-10-17 scoring runs.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Provider spotlight
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://apis.io/providers/rokt/" rel="noopener noreferrer"&gt;Rokt&lt;/a&gt;&lt;/strong&gt; — Rokt is an eCommerce technology platform that uses AI and machine learning to serve personalized non-endemic offers and ads during transaction moments. Kin Score 63.5 (strong), agent readiness 53.8 (agent-native).&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  From the conversations
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://conversations.apievangelist.com/store/2024-12-05-henry-calvert-gsma/" rel="noopener noreferrer"&gt;API Evangelist Conversation with Henry Calvert, Global Head of Future Networks @ GSMA&lt;/a&gt;&lt;/strong&gt; — Henry Calvert, Global Head of Future Networks at GSMA came by to talk about the GSMA Open Gateway, a suite of APIs the GSMA Open Gateway global initiative aims to drive the exposure and monetization of telecommunication networks through APIs and federation. The GSMA launched the Open Gateway APIs under the Linux Foundation in a project called CAMARA, and you can find all the OpenAPI specifications for the APIs on…&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  FAQ
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://faq.apievangelist.com/questions/how-do-i-make-my-api-discoverable/" rel="noopener noreferrer"&gt;How do I make my API discoverable?&lt;/a&gt;&lt;/strong&gt; Publish machine-readable pointers on your own domain — an OpenAPI at a stable URL, an APIs.json index, an llms.txt — get listed where people already look, and make sure a search engine can read your docs.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Guidance
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://guidance.apievangelist.com/store/privacy/" rel="noopener noreferrer"&gt;Privacy&lt;/a&gt;&lt;/strong&gt; — The political struggle over personal data and who controls it through APIs&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Standard
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://standards.apievangelist.com/store/postman-environments/" rel="noopener noreferrer"&gt;Postman Environments&lt;/a&gt;&lt;/strong&gt; — Postman environments are collections of variables that let you easily switch between different configurations (like development, staging, and production server URLs) without manually changing values throughout your API requests.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Investor
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://apis.io/vcs/felicis/" rel="noopener noreferrer"&gt;Felicis Ventures&lt;/a&gt;&lt;/strong&gt; — Felicis Ventures is an early-stage venture capital firm founded in 2006 by Aydin Senkut and headquartered in Menlo Park, California. The firm backs founders "who rewrite the rules," concentrating the majority of its capital at Seed and Series A while also participating in Series B and select growth rounds, with reported assets under management of roughly $2.4B and a tenth flagship fund (FV X) of $900M closed in June…&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Country
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://apis.io/countries/nigeria/" rel="noopener noreferrer"&gt;🇳🇬 Nigeria&lt;/a&gt;&lt;/strong&gt; — 35 API providers on APIs.io; the most in Financial Technology (24), Payments &amp;amp; Money Movement (19), Banking &amp;amp; Open Banking (10).&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Regulation
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://regulations.apievangelist.com/store/easa-u-space/" rel="noopener noreferrer"&gt;EASA U-space Regulatory Framework&lt;/a&gt;&lt;/strong&gt; — U-space is the European framework for managing large numbers of drones in shared airspace.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Tool
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://tools.apievangelist.com/store/apache-cloudstack/" rel="noopener noreferrer"&gt;Apache CloudStack&lt;/a&gt;&lt;/strong&gt; — Open-source cloud computing platform for deploying and managing IaaS cloud infrastructure.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Everything mentioned is linked in the show notes. Find any API at apis.io, and see what we are working on at apievangelist.com.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Originally published at &lt;a href="https://newsletters.apievangelist.com/daily/2026/10/28/" rel="noopener noreferrer"&gt;https://newsletters.apievangelist.com/daily/2026/10/28/&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>api</category>
      <category>ai</category>
      <category>mcp</category>
      <category>openapi</category>
    </item>
    <item>
      <title>API Evangelist Daily — Tuesday, October 27, 2026</title>
      <dc:creator>Kin Lane</dc:creator>
      <pubDate>Wed, 28 Oct 2026 15:50:15 +0000</pubDate>
      <link>https://dev.to/kinlane/api-evangelist-daily-tuesday-october-27-2026-556g</link>
      <guid>https://dev.to/kinlane/api-evangelist-daily-tuesday-october-27-2026-556g</guid>
      <description>&lt;p&gt;This is the API Evangelist Daily for Tuesday, October 27, 2026 — what is new across APIs.io, API Evangelist and API Commons, plus a few things from the shelf.&lt;/p&gt;

&lt;h2&gt;
  
  
  New on API Evangelist
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://apievangelist.com/2026/10/27/automate-clusters-user-access-and-patching-with-red-hat/" rel="noopener noreferrer"&gt;Automate Clusters, User Access, And Patching With Red Hat&lt;/a&gt;&lt;/strong&gt; — If you are responsible for the servers and cloud systems your business runs on, the work never really stops: spin up an environment for a new project, give a new hire access, run the same maintenance job across a fleet of machines, and find out which systems still need a security patch. Red Hat lets you do much of that through APIs, which are a way for other software, or an AI assistant, to carry out those tasks for…&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://apievangelist.com/2026/10/27/compare-usps-ups-fedex-and-dhl-shipping-rates-with-smklog/" rel="noopener noreferrer"&gt;Compare USPS, UPS, FedEx, And DHL Shipping Rates With SMKlog&lt;/a&gt;&lt;/strong&gt; — If you ship parcels from the US, you have probably done this: open four carrier websites, type the same box dimensions into each, and compare prices by hand before buying a label. SMKlog does that comparison for you, and it also offers it as an API, a way for your own software, or an AI assistant, to ask for the prices directly.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://apievangelist.com/2026/10/27/manage-products-orders-and-coupons-for-your-online-store-with-woocommerce/" rel="noopener noreferrer"&gt;Manage Products, Orders, And Coupons For Your Online Store With WooCommerce&lt;/a&gt;&lt;/strong&gt; — If you run an online store on WordPress, a lot of your week probably goes to the same chores: adding products, fixing a price on a variation, creating a coupon for a promotion, looking up a customer, and chasing down an order that needs a refund. Doing that by hand in an admin screen works until the store grows.&lt;/li&gt;
&lt;li&gt;Plus 6 more today: &lt;a href="https://apievangelist.com/2026/10/27/regulation-writes-the-api/" rel="noopener noreferrer"&gt;Regulation Writes The API&lt;/a&gt;; &lt;a href="https://apievangelist.com/2026/10/27/run-your-catalog-pricing-and-customers-in-software-with-bigcommerce/" rel="noopener noreferrer"&gt;Run Your Catalog, Pricing, And Customers In Software With BigCommerce&lt;/a&gt;; &lt;a href="https://apievangelist.com/2026/10/27/share-files-and-add-maps-places-and-routes-to-your-business-with-google/" rel="noopener noreferrer"&gt;Share Files And Add Maps, Places, And Routes To Your Business With Google&lt;/a&gt;; &lt;a href="https://apievangelist.com/2026/10/27/telecom-the-shape-of-the-answer/" rel="noopener noreferrer"&gt;Telecom Network APIs: The Shape Of The Answer&lt;/a&gt;; &lt;a href="https://apievangelist.com/2026/10/27/why-i-forked-spectral-and-why-it-became-openlint/" rel="noopener noreferrer"&gt;Why I Forked Spectral, And Why It Became OpenLint&lt;/a&gt;; &lt;a href="https://apievangelist.com/2026/10/27/writing-the-style-guide-for-the-tools-an-agent-reads-first/" rel="noopener noreferrer"&gt;Writing the MCP Style Guide for the Tools an Agent Reads First&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  New on APIs.io
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://apis.io/2026/10/27/amazon-mwaa-ships-four-agent-skills-for-airflow/" rel="noopener noreferrer"&gt;Amazon MWAA ships four agent skills for Airflow&lt;/a&gt;&lt;/strong&gt; — AWS has given Airflow users a packaged way to hand pipeline work to a coding assistant. In Amazon Managed Workflows for Apache Airflow now offers AI agent skills, AWS announces that MWAA now integrates with the Agent Toolkit for AWS to provide four built-in skills, authoring-mwaa-workflow, debugging-mwaa-workflow, testing-mwaa-workflow and upgrading-mwaa-environments, usable from "any AI coding assistant that…&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://apis.io/2026/10/27/canonical-holds-117-contracts-and-twelve-percent-of-them-are-callable/" rel="noopener noreferrer"&gt;Canonical scores 74.8, exemplar, on 117 contracts and only twelve percent of them are callable&lt;/a&gt;&lt;/strong&gt; — Canonical scores 74.8 on the Kin Score, exemplar band, and it is falling: down 7.0 from 81.8 at the previous run. Its Agent Readiness is 43.3, agent-ready, and the rubric records that a gate held it back from agent-native.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://apis.io/2026/10/27/greylock-portfolio-splits-in-two-at-the-published-contract/" rel="noopener noreferrer"&gt;Greylock's portfolio splits in two at the published contract: 47.3 against 24.4&lt;/a&gt;&lt;/strong&gt; — Greylock Partners has 157 portfolio companies on the apis.io network, and 91 of them (58%) publish APIs we index. Those 91 average 37.8 on the Kin Score and 24.2 on Agent Readiness, which puts the portfolio in the thin band.&lt;/li&gt;
&lt;li&gt;Plus 7 more today: &lt;a href="https://apis.io/2026/10/27/mabl-says-the-author-cannot-be-the-only-verifier/" rel="noopener noreferrer"&gt;mabl says the author cannot be the only verifier&lt;/a&gt;; &lt;a href="https://apis.io/2026/10/27/sage-puts-an-agent-on-making-tax-digital-and-the-api-record-stops-short/" rel="noopener noreferrer"&gt;Sage puts an agent on Making Tax Digital, and the API record stops short&lt;/a&gt;; &lt;a href="https://apis.io/2026/10/27/snowflake-oncology-agents-stand-on-one-of-the-catalogs-strongest-records/" rel="noopener noreferrer"&gt;Snowflake's oncology agents stand on one of the catalog's strongest records&lt;/a&gt;; &lt;a href="https://apis.io/2026/10/27/stannp-letters-api-has-a-free-test-mode-the-rubric-cannot-see/" rel="noopener noreferrer"&gt;The Stannp Letters API has a free test mode the rubric cannot see&lt;/a&gt;; &lt;a href="https://apis.io/2026/10/27/starburst-describes-an-mcp-endpoint-its-public-record-does-not-show/" rel="noopener noreferrer"&gt;Starburst describes an MCP endpoint its public record does not show&lt;/a&gt;; &lt;a href="https://apis.io/2026/10/27/the-markets-section-cannot-read-a-third-of-its-own-cohort/" rel="noopener noreferrer"&gt;The apis.io markets section cannot read integrations for 35 percent of its cohort&lt;/a&gt;; &lt;a href="https://apis.io/2026/10/27/video-streaming-on-apis-io-is-led-by-the-pipes-not-the-streamers/" rel="noopener noreferrer"&gt;Video streaming on apis.io is led by the pipes, not the streamers&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Kin Score mover
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://apis.io/providers/smklog-com/" rel="noopener noreferrer"&gt;SMKlog&lt;/a&gt;&lt;/strong&gt; rose 31.9 points, from 54.2 to 86.1 (exemplar), between the 2026-10-11 and 2026-10-17 scoring runs.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Provider spotlight
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://apis.io/providers/google-ads/" rel="noopener noreferrer"&gt;Google Ads&lt;/a&gt;&lt;/strong&gt; — The Google Ads API is the modern programmatic interface to Google Ads and the next generation of the AdWords API. Kin Score 71.9 (exemplar), agent readiness 41.8 (agent-ready).&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  From the conversations
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://conversations.apievangelist.com/store/2024-12-03-asanka-abeysinghe/" rel="noopener noreferrer"&gt;API Evangelist Conversation with Asanka Abeysinghe, CTO at WSO2&lt;/a&gt;&lt;/strong&gt; — Asanka Abeysinghe, CTO at WSO2 came by for a conversation about the realities on the ground within enterprises when it comes to the platformication of all things, from Internet Developer Portals (IDP) to API platforms. Asanka has been at this a while, and he and I have been discussing the realities of API management for years, and we share a lot of the same views when it comes to the expansion and evolution of our…&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  FAQ
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://faq.apievangelist.com/questions/how-do-i-keep-my-documentation-from-going-stale/" rel="noopener noreferrer"&gt;How do I keep my documentation from going stale?&lt;/a&gt;&lt;/strong&gt; Generate everything you can from the contract, keep the prose in version control next to the code, and test the examples in CI. Documentation maintained separately from the API will always drift.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Guidance
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://guidance.apievangelist.com/store/pricing/" rel="noopener noreferrer"&gt;Pricing&lt;/a&gt;&lt;/strong&gt; — The structure for monetizing API consumption by volume tier or feature&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Standard
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://standards.apievangelist.com/store/erc-20/" rel="noopener noreferrer"&gt;ERC-20&lt;/a&gt;&lt;/strong&gt; — ERC-20 is the Ethereum token standard: a small interface of six functions and two events that any fungible token contract implements.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Investor
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://apis.io/vcs/eqt-ventures/" rel="noopener noreferrer"&gt;EQT Ventures&lt;/a&gt;&lt;/strong&gt; — EQT Ventures is the early-stage venture capital business within EQT Group, launched in 2016 and operating out of Stockholm with investment-advisory offices in London, Berlin, Paris, Amsterdam, and the United States (San Francisco / New York); the funds themselves are domiciled in Luxembourg. The firm is a sector-agnostic, conviction-led lead investor that backs what it calls "Generation-Defining Companies" from…&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Country
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://apis.io/countries/new-zealand/" rel="noopener noreferrer"&gt;🇳🇿 New Zealand&lt;/a&gt;&lt;/strong&gt; — 33 API providers on APIs.io; the most in Education &amp;amp; EdTech (8), Real Estate (5), Payments &amp;amp; Money Movement (5).&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Regulation
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://regulations.apievangelist.com/store/dtac/" rel="noopener noreferrer"&gt;Digital Technology Assessment Criteria (DTAC)&lt;/a&gt;&lt;/strong&gt; — The Digital Technology Assessment Criteria (DTAC) is the NHS's national baseline that digital health technologies are assessed against before being adopted across the health and care system.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Tool
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://tools.apievangelist.com/store/apache-celix/" rel="noopener noreferrer"&gt;Apache Celix&lt;/a&gt;&lt;/strong&gt; — Implementation of the OSGi specification in C and C++ for building modular, dynamic applications.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Everything mentioned is linked in the show notes. Find any API at apis.io, and see what we are working on at apievangelist.com.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Originally published at &lt;a href="https://newsletters.apievangelist.com/daily/2026/10/27/" rel="noopener noreferrer"&gt;https://newsletters.apievangelist.com/daily/2026/10/27/&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>api</category>
      <category>ai</category>
      <category>mcp</category>
      <category>openapi</category>
    </item>
    <item>
      <title>API Evangelist Daily — Monday, October 26, 2026</title>
      <dc:creator>Kin Lane</dc:creator>
      <pubDate>Tue, 27 Oct 2026 13:49:57 +0000</pubDate>
      <link>https://dev.to/kinlane/api-evangelist-daily-monday-october-26-2026-1ehc</link>
      <guid>https://dev.to/kinlane/api-evangelist-daily-monday-october-26-2026-1ehc</guid>
      <description>&lt;p&gt;This is the API Evangelist Daily for Monday, October 26, 2026 — what is new across APIs.io, API Evangelist and API Commons, plus a few things from the shelf.&lt;/p&gt;

&lt;h2&gt;
  
  
  New on API Evangelist
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://apievangelist.com/2026/10/26/a-meter-with-no-rate-on-it/" rel="noopener noreferrer"&gt;A Meter With No Rate On It&lt;/a&gt;&lt;/strong&gt; — Salesforce is going to charge Flex Credits when AI agents call into a production org. Every successful call a registered agent makes, over MCP or straight through the API, gets counted as a "Headless Platform Interaction" and draws down credits.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://apievangelist.com/2026/10/26/automate-projects-tasks-and-team-goals-with-asana/" rel="noopener noreferrer"&gt;Automate Projects, Tasks And Team Goals With Asana&lt;/a&gt;&lt;/strong&gt; — Every growing team hits the same wall. Work arrives from email, forms, support tickets and chat, and someone has to copy it into the project tool by hand, assign it, and remind people about it.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://apievangelist.com/2026/10/26/calculate-sales-tax-and-file-returns-automatically-with-avalara/" rel="noopener noreferrer"&gt;Calculate Sales Tax And File Returns Automatically With Avalara&lt;/a&gt;&lt;/strong&gt; — If you sell into more than one state, or more than one country, you have probably found yourself searching for how to charge the right sales tax on every order, how to know where you even owe it, and how to get the returns filed without a spreadsheet marathon at the end of every period. Most people asking those questions are not looking for an API.&lt;/li&gt;
&lt;li&gt;Plus 9 more today: &lt;a href="https://apievangelist.com/2026/10/26/create-track-and-report-on-issues-automatically-with-jira/" rel="noopener noreferrer"&gt;Create, Track And Report On Issues Automatically With Jira&lt;/a&gt;; &lt;a href="https://apievangelist.com/2026/10/26/shipping-the-shape-of-the-answer/" rel="noopener noreferrer"&gt;Shipping: The Shape Of The Answer&lt;/a&gt;; &lt;a href="https://apievangelist.com/2026/10/26/start-with-the-flow-not-the-agent/" rel="noopener noreferrer"&gt;Start With The Flow, Not The Agent&lt;/a&gt;; &lt;a href="https://apievangelist.com/2026/10/26/take-payments-run-subscriptions-and-send-invoices-with-stripe/" rel="noopener noreferrer"&gt;Take Payments, Run Subscriptions And Send Invoices With Stripe&lt;/a&gt;; &lt;a href="https://apievangelist.com/2026/10/26/the-most-programmable-sectors-in-australia/" rel="noopener noreferrer"&gt;The Most Programmable Sectors In Australia&lt;/a&gt;; &lt;a href="https://apievangelist.com/2026/10/26/the-specification-layer-now-has-a-home/" rel="noopener noreferrer"&gt;The Specification Layer Now Has a Home&lt;/a&gt;; &lt;a href="https://apievangelist.com/2026/10/26/track-errors-releases-and-cron-jobs-in-your-software-with-sentry/" rel="noopener noreferrer"&gt;Track Errors, Releases And Cron Jobs In Your Software With Sentry&lt;/a&gt;; &lt;a href="https://apievangelist.com/2026/10/26/what-466-conformant-a2a-agent-cards-are-actually-offering/" rel="noopener noreferrer"&gt;What 467 Conformant A2A Agent Cards Are Actually Offering&lt;/a&gt;; &lt;a href="https://apievangelist.com/2026/10/26/what-sets-australia-apart-in-banking-and-telco/" rel="noopener noreferrer"&gt;What Sets Australia Apart In Banking And Telco&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  New on APIs.io
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://apis.io/2026/10/26/apigee-runs-mcp-inside-your-own-cluster-and-its-record-has-no-mcp-server/" rel="noopener noreferrer"&gt;Apigee runs MCP inside your own cluster, and its record has no MCP server&lt;/a&gt;&lt;/strong&gt; — Google has taken Apigee's MCP support to the customers whose runtimes cannot move. In Announcing MCP support in Apigee hybrid, the post explains that last December's preview turned existing APIs "secured, governed and cataloged" into tools agents can call "without writing code or standing up MCP servers of your own," and that the first question back was "can I have this where my runtime actually lives?" With Apigee…&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://apis.io/2026/10/26/climate-and-sustainability-is-ranked-first-by-postman-because-of-one-tag/" rel="noopener noreferrer"&gt;Climate &amp;amp; Sustainability has 1,276 providers, and Postman ranks first because of one tag&lt;/a&gt;&lt;/strong&gt; — The Climate &amp;amp; Sustainability industry page now lists 1,276 providers in its member rows. In June we wrote about the same vertical at 72 providers.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://apis.io/2026/10/26/cloudflare-wakes-an-agent-with-its-first-mcp-event/" rel="noopener noreferrer"&gt;Cloudflare wakes an agent with its first MCP event&lt;/a&gt;&lt;/strong&gt; — Cloudflare has shipped the first production use this series has seen of a feature that is not yet a specification. In Cloudflare API MCP server sends Workers Issues as MCP Events, the changelog explains that Workers Issues, Cloudflare's built-in error monitoring that groups related production failures "without an SDK or application wrapper," now reaches agents as MCP Events.&lt;/li&gt;
&lt;li&gt;Plus 7 more today: &lt;a href="https://apis.io/2026/10/26/diffbots-dql-search-api-is-its-best-contract-and-we-point-it-at-the-wrong-host/" rel="noopener noreferrer"&gt;Diffbot's DQL Search API is its best contract, and we point it at the wrong host&lt;/a&gt;; &lt;a href="https://apis.io/2026/10/26/ghost-scores-77-on-fifty-six-operations-the-catalog-lists-twice/" rel="noopener noreferrer"&gt;Ghost scores 77.1, exemplar, on fifty-six operations the catalog lists twice&lt;/a&gt;; &lt;a href="https://apis.io/2026/10/26/kong-runs-its-review-agents-in-ci-behind-its-own-ai-gateway/" rel="noopener noreferrer"&gt;Kong runs its review agents in CI, behind its own AI gateway&lt;/a&gt;; &lt;a href="https://apis.io/2026/10/26/moltrust-says-a-limit-in-a-system-prompt-is-only-a-request/" rel="noopener noreferrer"&gt;MolTrust says a limit in a system prompt is only a request&lt;/a&gt;; &lt;a href="https://apis.io/2026/10/26/rag-use-case-lists-five-topic-pages-and-leaves-out-pinecone/" rel="noopener noreferrer"&gt;The RAG use case lists five topic pages scoring 9.6 and leaves out Pinecone&lt;/a&gt;; &lt;a href="https://apis.io/2026/10/26/sim-and-esim-lifecycle-has-thirteen-providers-and-the-iot-specialists-trail-the-cpaas/" rel="noopener noreferrer"&gt;SIM and eSIM lifecycle has thirteen providers, and the IoT specialists trail the CPaaS platforms&lt;/a&gt;; &lt;a href="https://apis.io/2026/10/26/token-security-says-anthropics-compliance-api-closes-the-endpoint-blind-spot/" rel="noopener noreferrer"&gt;Token Security says Anthropic's Compliance API closes the endpoint blind spot&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Kin Score mover
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://apis.io/providers/deputy/" rel="noopener noreferrer"&gt;Deputy&lt;/a&gt;&lt;/strong&gt; rose 33.0 points, from 23.7 to 56.7 (strong), between the 2026-10-11 and 2026-10-17 scoring runs.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Provider spotlight
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://apis.io/providers/fireflies/" rel="noopener noreferrer"&gt;Fireflies.ai&lt;/a&gt;&lt;/strong&gt; — Fireflies.ai is an AI meeting assistant that automatically joins video calls, records, transcribes, and summarizes meetings across platforms such as Zoom, Google Meet, and Microsoft Teams. Kin Score 71.1 (exemplar), agent readiness 60.4 (agent-ready).&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  From the conversations
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://conversations.apievangelist.com/store/2024-11-01-greg-dennis-zeil/" rel="noopener noreferrer"&gt;API Evangelist Conversation with Greg Dennis, Senior Software Engineer at Zeil&lt;/a&gt;&lt;/strong&gt; — Greg Dennis who was on my team at Postman, and part of my master plan to spend as much VC money as I could on open source API technology, came by to share his expert view on the diff between HTTP APIs and programming language library APIs. Greg is one of the caring souls who are tending to the JSON Schema specification, and has extensive experience developing and maintaining his .NET JSON Schema…&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  FAQ
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://faq.apievangelist.com/questions/how-do-i-govern-multiple-api-protocols/" rel="noopener noreferrer"&gt;How do I govern REST, event-driven, GraphQL and gRPC together?&lt;/a&gt;&lt;/strong&gt; Hold every protocol to the same set of obligations — machine-readable contract, named owner, security model, versioning policy, catalog entry — while using each one's native contract format to enforce them.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Guidance
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://guidance.apievangelist.com/store/power/" rel="noopener noreferrer"&gt;Power&lt;/a&gt;&lt;/strong&gt; — The asymmetric relationships between platforms developers and end users mediated by APIs&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Standard
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://standards.apievangelist.com/store/equator-principles/" rel="noopener noreferrer"&gt;Equator Principles&lt;/a&gt;&lt;/strong&gt; — A risk management framework adopted by financial institutions for determining, assessing and managing environmental and social risk in projects, primarily for project finance and related lending activities.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Investor
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://apis.io/vcs/emergence-capital/" rel="noopener noreferrer"&gt;Emergence Capital&lt;/a&gt;&lt;/strong&gt; — Emergence Capital is an early-stage venture capital firm founded in 2003 and headquartered in San Francisco, California, focused exclusively on early-stage B2B / enterprise software. Its founding thesis — that business software would move to the cloud — produced some of the defining SaaS bets of the era, including a contrarian 2003 investment in Salesforce and being the sole venture backer of Veeva's 2008 Series A.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Country
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://apis.io/countries/netherlands/" rel="noopener noreferrer"&gt;🇳🇱 Netherlands&lt;/a&gt;&lt;/strong&gt; — 78 API providers on APIs.io; the most in Education &amp;amp; EdTech (15), Digital Health &amp;amp; Telehealth (9), Healthcare (8).&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Regulation
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://regulations.apievangelist.com/store/dscsa/" rel="noopener noreferrer"&gt;Drug Supply Chain Security Act (DSCSA)&lt;/a&gt;&lt;/strong&gt; — Title II of the US Drug Quality and Security Act, requiring an interoperable, electronic, package-level traceability system for prescription drugs across manufacturers, repackagers, wholesale distributors and dispensers, including serialization, verification and the electronic exchange of transaction information.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Tool
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://tools.apievangelist.com/store/apache-cayenne/" rel="noopener noreferrer"&gt;Apache Cayenne&lt;/a&gt;&lt;/strong&gt; — Open-source Java ORM framework providing object-relational mapping, remoting, and web services support.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Everything mentioned is linked in the show notes. Find any API at apis.io, and see what we are working on at apievangelist.com.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Originally published at &lt;a href="https://newsletters.apievangelist.com/daily/2026/10/26/" rel="noopener noreferrer"&gt;https://newsletters.apievangelist.com/daily/2026/10/26/&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>api</category>
      <category>ai</category>
      <category>mcp</category>
      <category>openapi</category>
    </item>
    <item>
      <title>Deploy a Real MCP Server in Two Minutes — Naftiko Shipyard on Cloudflare Containers</title>
      <dc:creator>Kin Lane</dc:creator>
      <pubDate>Fri, 08 May 2026 19:30:56 +0000</pubDate>
      <link>https://dev.to/kinlane/deploy-a-real-mcp-server-in-two-minutes-naftiko-shipyard-on-cloudflare-containers-32mo</link>
      <guid>https://dev.to/kinlane/deploy-a-real-mcp-server-in-two-minutes-naftiko-shipyard-on-cloudflare-containers-32mo</guid>
      <description>&lt;p&gt;The Naftiko Framework's Shipyard tutorial walks through eleven capability YAMLs — mock MCP at one end, a fully wired domain-driven aggregate at the other. Step 1 is what you run to prove the engine reads YAML. Step 11 is what you run to feel what the framework actually produces.&lt;/p&gt;

&lt;p&gt;This post is about deploying step 11 with a single click.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://deploy.workers.cloudflare.com/?url=https://github.com/naftiko/shipyard-cloudflare" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmri2oswa719hlglk1co7.png" alt="Run in Cloudflare" width="184" height="39"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What gets deployed
&lt;/h2&gt;

&lt;p&gt;Three protocol adapters from one capability YAML:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Adapter&lt;/th&gt;
&lt;th&gt;Path&lt;/th&gt;
&lt;th&gt;Tools / resources&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;MCP&lt;/td&gt;
&lt;td&gt;&lt;code&gt;POST /mcp&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;list-ships&lt;/code&gt;, &lt;code&gt;get-ship&lt;/code&gt;, &lt;code&gt;list-legacy-vessels&lt;/code&gt;, &lt;code&gt;create-voyage&lt;/code&gt;, &lt;code&gt;get-ship-with-crew&lt;/code&gt;, &lt;code&gt;get-voyage-manifest&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;REST&lt;/td&gt;
&lt;td&gt;&lt;code&gt;/api/...&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Same domain as REST resources&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;SKILL&lt;/td&gt;
&lt;td&gt;&lt;code&gt;/skill&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Skill groups for structured agent discovery&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Backed by two consumed APIs:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Maritime Registry&lt;/strong&gt; at &lt;code&gt;mocks.naftiko.net/rest/naftiko-shipyard-maritime-registry-api/1.0.0-alpha2&lt;/code&gt; — bearer auth&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Legacy Dockyard&lt;/strong&gt; at &lt;code&gt;mocks.naftiko.net/rest/naftiko-shipyard-legacy-dockyard-api/1.0.0-alpha2&lt;/code&gt; — API key auth&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Both are public Naftiko mocks. The deploy ships dummy tokens that work against them — no upstream credentials needed.&lt;/p&gt;

&lt;p&gt;The MCP server itself requires a bearer token (dummy &lt;code&gt;sk-mcp-YYYYYYYYYYYY&lt;/code&gt; ships in the deploy).&lt;/p&gt;

&lt;h2&gt;
  
  
  The Cloudflare shape
&lt;/h2&gt;

&lt;p&gt;The Naftiko Framework engine ships as &lt;code&gt;ghcr.io/naftiko/framework:latest&lt;/code&gt;. Cloudflare Containers runs Docker images behind a Worker, brokered by a Durable Object. Five files in the deploy repo do the work — the capability YAML, three shared imports, a Dockerfile, a wrangler config, and a small Worker that proxies traffic to the right port (&lt;code&gt;/mcp&lt;/code&gt; → 3001, &lt;code&gt;/skill&lt;/code&gt; → 3003, everything else → REST 3002).&lt;/p&gt;

&lt;p&gt;The same shape powers &lt;code&gt;manage-companies&lt;/code&gt; in production today. The Shipyard end-to-end deploy is the production pattern, sized to the canonical tutorial example.&lt;/p&gt;

&lt;h2&gt;
  
  
  Click → live URL
&lt;/h2&gt;

&lt;p&gt;Click the button. Cloudflare authenticates you, forks the repo, provisions a Worker plus a Container, builds the Dockerfile, and assigns you a &lt;code&gt;*.workers.dev&lt;/code&gt; hostname. Two to three minutes from click to running.&lt;/p&gt;

&lt;p&gt;When it finishes you have:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;https://&amp;lt;your-worker&amp;gt;.workers.dev/&lt;/code&gt; — landing page&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;https://&amp;lt;your-worker&amp;gt;.workers.dev/mcp&lt;/code&gt; — MCP server&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;https://&amp;lt;your-worker&amp;gt;.workers.dev/api/...&lt;/code&gt; — REST adapter&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;https://&amp;lt;your-worker&amp;gt;.workers.dev/skill&lt;/code&gt; — Skill server&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That MCP URL is what you give to your AI tools.&lt;/p&gt;

&lt;h2&gt;
  
  
  Wiring the MCP endpoint into your AI tools
&lt;/h2&gt;

&lt;p&gt;Substitute your worker URL where you see &lt;code&gt;&amp;lt;your-worker&amp;gt;&lt;/code&gt; below. Bearer token defaults to &lt;code&gt;sk-mcp-YYYYYYYYYYYY&lt;/code&gt; unless you've changed it.&lt;/p&gt;

&lt;h3&gt;
  
  
  Claude Desktop
&lt;/h3&gt;

&lt;p&gt;Edit &lt;code&gt;~/Library/Application Support/Claude/claude_desktop_config.json&lt;/code&gt; (Mac) or &lt;code&gt;%APPDATA%\Claude\claude_desktop_config.json&lt;/code&gt; (Windows):&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"mcpServers"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"naftiko-shipyard"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"type"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"streamable-http"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"url"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"https://&amp;lt;your-worker&amp;gt;.workers.dev/mcp"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"headers"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"Authorization"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Bearer sk-mcp-YYYYYYYYYYYY"&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Restart Claude Desktop. Tools appear in the picker.&lt;/p&gt;

&lt;h3&gt;
  
  
  Claude Code
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;claude mcp add &lt;span class="nt"&gt;--transport&lt;/span&gt; http naftiko-shipyard https://&amp;lt;your-worker&amp;gt;.workers.dev/mcp &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--header&lt;/span&gt; &lt;span class="s2"&gt;"Authorization: Bearer sk-mcp-YYYYYYYYYYYY"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Confirm with &lt;code&gt;claude mcp list&lt;/code&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  ChatGPT
&lt;/h3&gt;

&lt;p&gt;ChatGPT supports remote MCP servers through Custom Connectors (Pro and Enterprise plans). Settings → Connectors → Custom → Add custom connector. Server URL: &lt;code&gt;https://&amp;lt;your-worker&amp;gt;.workers.dev/mcp&lt;/code&gt;. Authentication: Custom header — name &lt;code&gt;Authorization&lt;/code&gt;, value &lt;code&gt;Bearer sk-mcp-YYYYYYYYYYYY&lt;/code&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Gemini CLI
&lt;/h3&gt;

&lt;p&gt;Edit &lt;code&gt;~/.gemini/settings.json&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"mcpServers"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"naftiko-shipyard"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"httpUrl"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"https://&amp;lt;your-worker&amp;gt;.workers.dev/mcp"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"headers"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"Authorization"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Bearer sk-mcp-YYYYYYYYYYYY"&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Restart &lt;code&gt;gemini&lt;/code&gt;. Confirm with &lt;code&gt;/mcp list&lt;/code&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why this matters past the demo
&lt;/h2&gt;

&lt;p&gt;The Shipyard end-to-end is a sample. The interesting thing is that it isn't shaped any differently from a real Naftiko capability. Same one-click pattern — capability YAML in a folder, Dockerfile pulling the framework image, Worker proxying ports, Durable Object brokering a container — runs &lt;code&gt;manage-companies&lt;/code&gt; in production. Replace the YAML in your fork, redeploy, and you have a different MCP server at the same URL.&lt;/p&gt;

&lt;p&gt;That is the actual unlock. A public MCP endpoint that you control, callable from Claude, Claude Code, ChatGPT, and Gemini.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Source: &lt;a href="https://github.com/naftiko/shipyard-cloudflare" rel="noopener noreferrer"&gt;https://github.com/naftiko/shipyard-cloudflare&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Tutorial: &lt;a href="https://github.com/naftiko/framework/wiki/Tutorial-%E2%80%90-Part-1" rel="noopener noreferrer"&gt;https://github.com/naftiko/framework/wiki/Tutorial-%E2%80%90-Part-1&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Naftiko Framework: &lt;a href="https://github.com/naftiko/framework" rel="noopener noreferrer"&gt;https://github.com/naftiko/framework&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>containers</category>
      <category>cloud</category>
    </item>
    <item>
      <title>JSON Structure: The Schema Language That Actually Works for Developer</title>
      <dc:creator>Kin Lane</dc:creator>
      <pubDate>Tue, 05 May 2026 23:09:19 +0000</pubDate>
      <link>https://dev.to/kinlane/json-structure-the-schema-language-that-actually-works-for-developer-1bi9</link>
      <guid>https://dev.to/kinlane/json-structure-the-schema-language-that-actually-works-for-developer-1bi9</guid>
      <description>&lt;p&gt;If you've ever tried to do serious code generation from JSON Schema — or used OpenAPI tooling on a complex schema and watched it give up mid-object — you've felt the same frustration that drove Clemens Vasters to build something new.&lt;/p&gt;

&lt;p&gt;Clemens is a principal architect at Microsoft working on Fabric, the messaging and real-time intelligence platform. He needs schemas that work as data definition languages: things you can generate code from, land in database columns, feed to LLMs with enough fidelity that the LLM can reason about the data correctly. JSON Schema is designed to &lt;em&gt;validate&lt;/em&gt; documents. Those are not the same job.&lt;/p&gt;

&lt;p&gt;I talked with him twice — in February and again this week — and came away with a clear picture of what JSON Structure is and why it matters. Here's the short version.&lt;/p&gt;

&lt;h2&gt;
  
  
  What's wrong with JSON Schema
&lt;/h2&gt;

&lt;p&gt;JSON Schema's compositional constructs (&lt;code&gt;anyOf&lt;/code&gt;, &lt;code&gt;allOf&lt;/code&gt;, &lt;code&gt;oneOf&lt;/code&gt;) are expressive but carry no semantic guarantees. The convention that you represent inheritance as an &lt;code&gt;allOf&lt;/code&gt; with a base type is &lt;em&gt;just a convention&lt;/em&gt; — no rule, no standard, no requirement that code generators interpret it consistently. Every tool hits a different wall at a different time.&lt;/p&gt;

&lt;p&gt;The type system is anchored to JSON's native types: strings, numbers, booleans, arrays, objects. That's not enough for real data modeling. Datetimes, decimals, durations — you're working around the type system, not with it.&lt;/p&gt;

&lt;p&gt;Dollar-ref can appear anywhere in a document and point to arbitrary external locations. Authentication, caching, relative vs. absolute paths — all of that is undefined. The spec hands you the construct and leaves every operational detail to you.&lt;/p&gt;

&lt;h2&gt;
  
  
  What JSON Structure fixes
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Type system&lt;/strong&gt;: A richer set of types that maps clearly to database columns and programming language primitives. Not "string with format." Actual types.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;References&lt;/strong&gt;: Dollar-ref is only legal in a defined reusable-types section. External references use an &lt;code&gt;$import&lt;/code&gt; mechanism — import the whole document, optionally namespace it, then reference from the import. Two steps, no ambiguity.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Extensibility&lt;/strong&gt;: The &lt;code&gt;$uses&lt;/code&gt; clause declares exactly which extension specs a document depends on, expressed in the same language as everything else. Not a foreign vocabulary mechanism bolted on from outside.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Readability&lt;/strong&gt;: The shape is familiar if you know JSON Schema. The spec is written so a normal developer can read it and understand it, not just metadata specialists.&lt;/p&gt;

&lt;h2&gt;
  
  
  The tooling
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;SDK in 8 languages (C#, C++, Rust, Python, Perl, TypeScript, JavaScript) — validates schemas and validates documents against schemas — on all the standard package managers&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Avrotize&lt;/strong&gt; code generator produces organized, compile-ready projects in C#, Java, Rust, Go, C++, TypeScript, JavaScript from a JSON Structure schema. Generated classes are self-serializing and understand conformant JSON. The C# implementation also handles CBOR, MessagePack, and XML.&lt;/li&gt;
&lt;li&gt;Spec is in the IETF as a draft — neutral, stable, no lock-in&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Why it matters for AI
&lt;/h2&gt;

&lt;p&gt;Clemens made the point directly: most Kafka/messaging systems work today because the publisher and consumer teams are in the same room. They operate on convention and out-of-band communication. An AI agent consuming a data stream doesn't have that room. It gets the schema and nothing else. Schema quality directly determines what the agent can do correctly.&lt;/p&gt;

&lt;p&gt;Richer, more precise schemas are not a nice-to-have in the AI era. They're the difference between an agent that reasons correctly about your data and one that hallucinates field meanings.&lt;/p&gt;

&lt;h2&gt;
  
  
  The relationship to OpenAPI and AsyncAPI
&lt;/h2&gt;

&lt;p&gt;The baseline use case looks exactly the same as JSON Schema — define request/response objects in an HTTP API. Clemens intentionally kept the surface familiar. If OpenAPI adopted JSON Structure, it would get a better type system and better-defined compositional semantics. That's an invitation, not a demand.&lt;/p&gt;




&lt;p&gt;Start at &lt;a href="https://jsonstructure.org" rel="noopener noreferrer"&gt;jsonstructure.org&lt;/a&gt;. The spec, SDKs, and examples are all there. Community is still small enough to get direct answers from the author.&lt;/p&gt;

&lt;p&gt;At &lt;a href="https://naftiko.io" rel="noopener noreferrer"&gt;Naftiko&lt;/a&gt; we're actively working through where JSON Structure sits alongside JSON Schema in our capabilities framework. More on that soon.&lt;/p&gt;

</description>
      <category>json</category>
      <category>validation</category>
    </item>
    <item>
      <title>Wrap the GitHub MCP Registry as a Naftiko Capability — REST, MCP, and Agent Skills From One Spec</title>
      <dc:creator>Kin Lane</dc:creator>
      <pubDate>Thu, 30 Apr 2026 23:33:26 +0000</pubDate>
      <link>https://dev.to/kinlane/wrap-the-github-mcp-registry-as-a-naftiko-capability-rest-mcp-and-agent-skills-from-one-spec-2mp5</link>
      <guid>https://dev.to/kinlane/wrap-the-github-mcp-registry-as-a-naftiko-capability-rest-mcp-and-agent-skills-from-one-spec-2mp5</guid>
      <description>&lt;p&gt;The &lt;a href="https://github.com/mcp" rel="noopener noreferrer"&gt;GitHub MCP Registry&lt;/a&gt; exists. It is a real piece of infrastructure now — vendors publish into it, enterprises mirror it, IDEs are starting to point at it for discovery.&lt;/p&gt;

&lt;p&gt;The problem with the registry today, as a developer, is that it is a webpage you scroll. Your agent reads it badly. Your security team queries it manually. Your platform automation cannot really call it as a tool because it does not look like one — it looks like a JSON catalog of metadata, with search-as-keyword.&lt;/p&gt;

&lt;p&gt;This post is the engineering version of the argument: wrap the registry as a Naftiko capability, expose three surfaces from one spec, and turn it into something every consumer (humans, agents, pipelines) can call the same way.&lt;/p&gt;

&lt;h2&gt;
  
  
  The shape of a Naftiko capability
&lt;/h2&gt;

&lt;p&gt;A Naftiko capability YAML is a single artifact that declares two things:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;consumes&lt;/code&gt;&lt;/strong&gt; — what upstream APIs the capability calls&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;exposes&lt;/code&gt;&lt;/strong&gt; — what surfaces the capability serves outward (REST, MCP, Agent Skills)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The &lt;a href="https://github.com/naftiko/framework" rel="noopener noreferrer"&gt;Naftiko Engine&lt;/a&gt; runs the spec. The same artifact is the deployable unit, the documentation, and the governance contract. Specs do not drift from runtime, because the spec &lt;em&gt;is&lt;/em&gt; the runtime artifact. The framework wiki has the long-form argument under &lt;a href="https://github.com/naftiko/framework/wiki/Spec%E2%80%90Driven-Integration" rel="noopener noreferrer"&gt;Spec-Driven Integration&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;For the GitHub MCP Registry, the capability shape is roughly:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;naftiko&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;1.0.0-alpha2"&lt;/span&gt;

&lt;span class="na"&gt;info&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;github-mcp-registry-discovery&lt;/span&gt;
  &lt;span class="na"&gt;description&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Conversational discovery surface over the GitHub MCP Registry&lt;/span&gt;
  &lt;span class="na"&gt;version&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;1.0.0"&lt;/span&gt;

&lt;span class="na"&gt;consumes&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;github-registry&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;http&lt;/span&gt;
    &lt;span class="na"&gt;baseUrl&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;https://api.github.com&lt;/span&gt;
    &lt;span class="na"&gt;auth&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;github_app_installation&lt;/span&gt;
    &lt;span class="na"&gt;operations&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="na"&gt;list-registry-entries&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
        &lt;span class="na"&gt;method&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;GET&lt;/span&gt;
        &lt;span class="na"&gt;path&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;/repos/{{ .registry_owner }}/{{ .registry_repo }}/contents/servers&lt;/span&gt;
      &lt;span class="na"&gt;get-registry-entry&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
        &lt;span class="na"&gt;method&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;GET&lt;/span&gt;
        &lt;span class="na"&gt;path&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;/repos/{{ .registry_owner }}/{{ .registry_repo }}/contents/servers/{{ .entry_path }}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That is the consume side. The capability now knows how to read the registry through GitHub's Contents API. The next block is where the conversational discovery comes in — the &lt;code&gt;exposes&lt;/code&gt; side.&lt;/p&gt;

&lt;h2&gt;
  
  
  Three exposures, one spec
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;exposes&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;rest&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;operations&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="na"&gt;find-mcp-servers&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
        &lt;span class="na"&gt;method&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;GET&lt;/span&gt;
        &lt;span class="na"&gt;path&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;/v1/mcp-servers&lt;/span&gt;
        &lt;span class="na"&gt;parameters&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
          &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;purpose&lt;/span&gt;
            &lt;span class="na"&gt;in&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;query&lt;/span&gt;
            &lt;span class="na"&gt;schema&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="pi"&gt;{&lt;/span&gt; &lt;span class="nv"&gt;type&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="nv"&gt;string&lt;/span&gt; &lt;span class="pi"&gt;}&lt;/span&gt;
          &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;vendor&lt;/span&gt;
            &lt;span class="na"&gt;in&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;query&lt;/span&gt;
            &lt;span class="na"&gt;schema&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="pi"&gt;{&lt;/span&gt; &lt;span class="nv"&gt;type&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="nv"&gt;string&lt;/span&gt; &lt;span class="pi"&gt;}&lt;/span&gt;
          &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;review_status&lt;/span&gt;
            &lt;span class="na"&gt;in&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;query&lt;/span&gt;
            &lt;span class="na"&gt;schema&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="pi"&gt;{&lt;/span&gt; &lt;span class="nv"&gt;type&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="nv"&gt;string&lt;/span&gt;&lt;span class="pi"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;enum&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="pi"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;approved&lt;/span&gt;&lt;span class="pi"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;pending&lt;/span&gt;&lt;span class="pi"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;revoked&lt;/span&gt;&lt;span class="pi"&gt;]&lt;/span&gt; &lt;span class="pi"&gt;}&lt;/span&gt;
        &lt;span class="na"&gt;outputParameters&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
          &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;servers&lt;/span&gt;
            &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;array&lt;/span&gt;
            &lt;span class="na"&gt;jsonpath&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;$.results[*]&lt;/span&gt;
            &lt;span class="na"&gt;items&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
              &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="pi"&gt;{&lt;/span&gt; &lt;span class="nv"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="nv"&gt;urn&lt;/span&gt;&lt;span class="pi"&gt;,&lt;/span&gt;            &lt;span class="nv"&gt;jsonpath&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="nv"&gt;$.urn&lt;/span&gt; &lt;span class="pi"&gt;}&lt;/span&gt;
              &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="pi"&gt;{&lt;/span&gt; &lt;span class="nv"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="nv"&gt;install_url&lt;/span&gt;&lt;span class="pi"&gt;,&lt;/span&gt;    &lt;span class="nv"&gt;jsonpath&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="nv"&gt;$.install.url&lt;/span&gt; &lt;span class="pi"&gt;}&lt;/span&gt;
              &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="pi"&gt;{&lt;/span&gt; &lt;span class="nv"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="nv"&gt;scopes&lt;/span&gt;&lt;span class="pi"&gt;,&lt;/span&gt;         &lt;span class="nv"&gt;jsonpath&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="nv"&gt;$.install.scopes&lt;/span&gt;&lt;span class="pi"&gt;[&lt;/span&gt;&lt;span class="err"&gt;*&lt;/span&gt;&lt;span class="pi"&gt;]&lt;/span&gt; &lt;span class="pi"&gt;}&lt;/span&gt;
              &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="pi"&gt;{&lt;/span&gt; &lt;span class="nv"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="nv"&gt;review_status&lt;/span&gt;&lt;span class="pi"&gt;,&lt;/span&gt;  &lt;span class="nv"&gt;jsonpath&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="nv"&gt;$.governance.review.status&lt;/span&gt; &lt;span class="pi"&gt;}&lt;/span&gt;
              &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="pi"&gt;{&lt;/span&gt; &lt;span class="nv"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="nv"&gt;review_date&lt;/span&gt;&lt;span class="pi"&gt;,&lt;/span&gt;    &lt;span class="nv"&gt;jsonpath&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="nv"&gt;$.governance.review.date&lt;/span&gt; &lt;span class="pi"&gt;}&lt;/span&gt;

  &lt;span class="na"&gt;mcp&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;transport&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;streamable-http&lt;/span&gt;
    &lt;span class="na"&gt;tools&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="na"&gt;find-mcp-servers&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
        &lt;span class="na"&gt;description&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Find MCP servers in the registry filtered by purpose, vendor, or review status&lt;/span&gt;
        &lt;span class="na"&gt;inputSchema&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
          &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;object&lt;/span&gt;
          &lt;span class="na"&gt;properties&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
            &lt;span class="na"&gt;purpose&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;        &lt;span class="pi"&gt;{&lt;/span&gt; &lt;span class="nv"&gt;type&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="nv"&gt;string&lt;/span&gt;&lt;span class="pi"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;description&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;What&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;task&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;the&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;agent&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;needs&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;the&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;server&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;for"&lt;/span&gt; &lt;span class="pi"&gt;}&lt;/span&gt;
            &lt;span class="na"&gt;vendor&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;         &lt;span class="pi"&gt;{&lt;/span&gt; &lt;span class="nv"&gt;type&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="nv"&gt;string&lt;/span&gt;&lt;span class="pi"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;description&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Vendor&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;name&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;filter&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;(optional)"&lt;/span&gt; &lt;span class="pi"&gt;}&lt;/span&gt;
            &lt;span class="na"&gt;review_status&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;  &lt;span class="pi"&gt;{&lt;/span&gt; &lt;span class="nv"&gt;type&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="nv"&gt;string&lt;/span&gt;&lt;span class="pi"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;enum&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="pi"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;approved&lt;/span&gt;&lt;span class="pi"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;pending&lt;/span&gt;&lt;span class="pi"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;revoked&lt;/span&gt;&lt;span class="pi"&gt;]&lt;/span&gt; &lt;span class="pi"&gt;}&lt;/span&gt;
        &lt;span class="na"&gt;outputSchema&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
          &lt;span class="c1"&gt;# shaped output, same projection as REST&lt;/span&gt;

  &lt;span class="na"&gt;skills&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;package&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;github-mcp-registry-discovery&lt;/span&gt;
    &lt;span class="na"&gt;skills&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;find-mcp-servers&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;get-mcp-server-details&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That single block emits three runtime surfaces:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A REST endpoint your platform team's existing portal can render&lt;/li&gt;
&lt;li&gt;An MCP server your agent can call directly from the IDE&lt;/li&gt;
&lt;li&gt;A skill folder you can install into any agent that supports Agent Skills&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Same source of truth. The Naftiko Framework Wiki documents the underlying &lt;a href="https://github.com/naftiko/framework/wiki/Guide%E2%80%90Use%E2%80%90Cases" rel="noopener noreferrer"&gt;Compose AI Context&lt;/a&gt; and &lt;a href="https://github.com/naftiko/framework/wiki/Guide%E2%80%90Use%E2%80%90Cases" rel="noopener noreferrer"&gt;Rightsize AI Context&lt;/a&gt; use cases that explain why the typed &lt;code&gt;outputParameters&lt;/code&gt; matter — you are not handing a verbose registry envelope to the model, you are handing it task-ready fields.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why this matters for agents
&lt;/h2&gt;

&lt;p&gt;The agent change is the one developers feel first.&lt;/p&gt;

&lt;p&gt;Today, an agent that needs an MCP server fetches the registry page and parses it. The model burns tokens reading entries it will not use. The accuracy of selection depends on whether the model parsed the JSON correctly under context-window pressure.&lt;/p&gt;

&lt;p&gt;After wrapping the registry, the agent calls a typed tool. &lt;code&gt;find-mcp-servers&lt;/code&gt; accepts structured inputs (&lt;code&gt;purpose&lt;/code&gt;, &lt;code&gt;vendor&lt;/code&gt;, &lt;code&gt;review_status&lt;/code&gt;) and returns a structured output. The model is no longer reading a webpage. It is making a tool call.&lt;/p&gt;

&lt;p&gt;That is what right-sized AI context looks like in production. Not better prompts. Better tools that return better-shaped data, so the model has less to do.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why this matters for vendor-neutrality
&lt;/h2&gt;

&lt;p&gt;Two extensions hit the developer-portal market this year — Zuplo &lt;code&gt;x-mcp&lt;/code&gt; and Redocly &lt;code&gt;x-mcp&lt;/code&gt;. Both let you describe MCP server tools as OpenAPI extensions. Both are useful. Both lock you to whichever portal vendor ships them.&lt;/p&gt;

&lt;p&gt;A Naftiko capability YAML is open. It emits valid OpenAPI for any portal that already speaks OpenAPI. The MCP catalog ships as a sibling artifact. Your custom Swagger UI client (or whatever you have) renders the REST half today, and the MCP half feeds whatever MCP-aware tooling you wire up — without picking either Zuplo or Redocly's Redoc fork.&lt;/p&gt;

&lt;p&gt;The contract is portable. The vendor extension is not.&lt;/p&gt;

&lt;h2&gt;
  
  
  Three places this shows up at runtime
&lt;/h2&gt;

&lt;p&gt;Once the capability is shipped, three different consumers call it three different ways:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;A developer in VS Code&lt;/strong&gt; asks Copilot "what MCP servers are approved for Jira?" — Copilot calls the MCP tool, returns a typed list, the developer installs the right server in two clicks&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;An automation pipeline&lt;/strong&gt; queries the REST endpoint to check whether a server is allow-listed before installing it in a sandbox — programmatic discovery, no HTML scraping&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;A security reviewer&lt;/strong&gt; uses the same MCP tool but filters by &lt;code&gt;review_status: pending&lt;/code&gt; and &lt;code&gt;review_date&lt;/code&gt; &amp;lt; last 30 days — the same surface, a different question, returns the audit slice&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The capability is not a single tool. It is a single contract that all three workflows query.&lt;/p&gt;

&lt;h2&gt;
  
  
  How to actually ship it
&lt;/h2&gt;

&lt;p&gt;Steps:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Write the capability YAML — declare the GitHub Contents API as &lt;code&gt;consumes&lt;/code&gt;, declare the three &lt;code&gt;exposes&lt;/code&gt; surfaces&lt;/li&gt;
&lt;li&gt;Add governance metadata — tags on &lt;code&gt;consumes&lt;/code&gt; for vendor risk, tags on &lt;code&gt;exposes&lt;/code&gt; for agent safety + scope&lt;/li&gt;
&lt;li&gt;Run it under the Naftiko Engine (&lt;code&gt;docker run naftiko/framework:latest&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;Point your IDE at the MCP endpoint, point your portal at the REST endpoint, install the skill package into agents&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The Naftiko Framework runs the spec. The framework wiki &lt;a href="https://github.com/naftiko/framework/wiki/Tutorial-%E2%80%90-Part-1" rel="noopener noreferrer"&gt;Tutorial Part 1&lt;/a&gt; walks through the basic engine setup if you have not used Naftiko before.&lt;/p&gt;

&lt;h2&gt;
  
  
  The closer
&lt;/h2&gt;

&lt;p&gt;A registry is a list. A capability is a tool. The first thing every enterprise running MCP at any meaningful scale is going to need is a way to query its registry without scrolling — for humans, for agents, and for the automation in between.&lt;/p&gt;

&lt;p&gt;Naftiko ships that contract today. One YAML, three surfaces, vendor-neutral.&lt;/p&gt;

&lt;p&gt;Stop scrolling. Start calling.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Naftiko is the API integration framework for the AI era. Wrap your APIs as capabilities. Expose REST + MCP + Agent Skills from one spec. Ship governance, observability, and identity as defaults. → &lt;a href="https://naftiko.io?utm_source=devto&amp;amp;utm_medium=blog&amp;amp;utm_campaign=mcp-server-discovery-as-conversation&amp;amp;utm_content=mcp-server-discovery-devto" rel="noopener noreferrer"&gt;naftiko.io&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

</description>
      <category>mcp</category>
      <category>ai</category>
      <category>api</category>
    </item>
    <item>
      <title>What 253 Enterprises Are Actually Investing In (Hint: It's Not Just AI)</title>
      <dc:creator>Kin Lane</dc:creator>
      <pubDate>Fri, 24 Apr 2026 13:19:20 +0000</pubDate>
      <link>https://dev.to/kinlane/what-253-enterprises-are-actually-investing-in-hint-its-not-just-ai-5cio</link>
      <guid>https://dev.to/kinlane/what-253-enterprises-are-actually-investing-in-hint-its-not-just-ai-5cio</guid>
      <description>&lt;p&gt;If you read the trade press, every enterprise on earth is doing exactly one thing right now: AI. Every keynote, every analyst note, every LinkedIn post says the same thing. AI-first. Agent-native. Foundation-model-powered.&lt;/p&gt;

&lt;p&gt;So we went and looked at what enterprises are actually spending money on. Not what their CMOs are saying. What their engineering orgs are hiring for, contributing to, and buying. And the answer is more interesting than the hype cycle gives it credit for.&lt;/p&gt;

&lt;h2&gt;
  
  
  How we measured
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://signals.naftiko.io" rel="noopener noreferrer"&gt;Naftiko Signals&lt;/a&gt; profiles 253 enterprise companies by reading the engineering signals that cost real money: job postings, open source contributions, SaaS portfolios, standards participation, and tooling choices. Marketing is cheap. Headcount is not. A company that has been hiring for a capability for eighteen months is telling you something a press release cannot.&lt;/p&gt;

&lt;p&gt;We bucket those signals into 44 areas of technology spanning the full stack — AI, cloud, data, APIs, integrations, security, governance, observability, platform engineering, and the rest. Then we count: out of 253 enterprises, how many show meaningful investment in each area?&lt;/p&gt;

&lt;p&gt;Here is what came back.&lt;/p&gt;

&lt;h2&gt;
  
  
  The top of the list
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Rank&lt;/th&gt;
&lt;th&gt;Area&lt;/th&gt;
&lt;th&gt;Companies&lt;/th&gt;
&lt;th&gt;%&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;Artificial Intelligence&lt;/td&gt;
&lt;td&gt;253&lt;/td&gt;
&lt;td&gt;86%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;Active Directory&lt;/td&gt;
&lt;td&gt;253&lt;/td&gt;
&lt;td&gt;86%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;Electronic Data Interchange&lt;/td&gt;
&lt;td&gt;252&lt;/td&gt;
&lt;td&gt;86%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;Deep Learning&lt;/td&gt;
&lt;td&gt;252&lt;/td&gt;
&lt;td&gt;86%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;Data&lt;/td&gt;
&lt;td&gt;252&lt;/td&gt;
&lt;td&gt;86%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;6&lt;/td&gt;
&lt;td&gt;Machine Learning&lt;/td&gt;
&lt;td&gt;251&lt;/td&gt;
&lt;td&gt;85%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;7&lt;/td&gt;
&lt;td&gt;Operations&lt;/td&gt;
&lt;td&gt;249&lt;/td&gt;
&lt;td&gt;85%&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Read that list again. AI is tied for first — with Active Directory. And one rank below both of them, holding 86% of the enterprise market, is EDI. The protocol your grandfather used to send purchase orders.&lt;/p&gt;

&lt;p&gt;This is the story the hype cycle refuses to tell.&lt;/p&gt;

&lt;h2&gt;
  
  
  What it actually means
&lt;/h2&gt;

&lt;p&gt;Three things jump out of this data, and none of them are the thing the analysts are selling.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;AI is real, but it is not alone at the top. Yes, 86% of enterprises are investing in AI, ML, and Deep Learning. That part of the narrative is true. What is missing from the narrative is that the same enterprises are investing — at the exact same intensity — in identity infrastructure, B2B document exchange, and operational tooling. The boring stuff did not go away. It got more important, because every AI initiative eventually has to authenticate against Active Directory and exchange data with a partner over EDI.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The unglamorous layers are load-bearing. Active Directory at #2 and EDI at #3 are not legacy footnotes. They are the substrate every shiny initiative runs on top of. When 86% of large enterprises are still actively investing in EDI in 2026, that is not technical debt — it is the operating reality of how business actually moves between organizations. Anyone selling an "agent-to-agent commerce" vision that does not have an EDI story is selling a slide deck.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;"Data" is the silent winner. "Data" as a category sits at 86%, alongside Deep Learning and Machine Learning. Enterprises figured out a long time ago that AI without data infrastructure is a demo, not a system. The investment in pipelines, governance, and storage matches the investment in models — because it has to.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  What the hype cycle gets wrong
&lt;/h2&gt;

&lt;p&gt;The dominant story of 2026 is that AI is reshaping everything and the rest of the stack is along for the ride. The signals say something more honest: AI is being layered on top of a stack that enterprises are still actively maintaining and growing. The directory service is not going away. The EDI gateway is not going away. The operational tooling is not going away. They are getting more investment, not less, because the AI layer increases the demands on all of them.&lt;/p&gt;

&lt;p&gt;If you are building for enterprises, this matters. A product that assumes the legacy substrate is dissolving will lose to a product that assumes it is thickening. Because the data says it is thickening.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why this is visible at all
&lt;/h2&gt;

&lt;p&gt;The reason any of this is visible is that we stopped relying on what enterprises say and started reading what they do. Job postings are a leading indicator of investment. OSS contributions are a leading indicator of internal capability. SaaS portfolios are a leading indicator of architectural strategy. Standards participation is a leading indicator of interoperability commitment. None of these are secret. They are just unaggregated.&lt;/p&gt;

&lt;p&gt;Signals aggregates them. Every company we profile is an open YAML file in a Git repository. Every signal definition is open. Every ranking is reproducible. If you disagree with how we classified a company, you can submit a PR.&lt;/p&gt;

&lt;h2&gt;
  
  
  What to do with this
&lt;/h2&gt;

&lt;p&gt;If you are an operator inside an enterprise: use this list as a reality check on your own roadmap. If your AI strategy assumes EDI and AD are someone else's problem, the other 86% of enterprises disagree with you.&lt;/p&gt;

&lt;p&gt;If you are building software for enterprises: the boring categories at the top of this list are where the buyers are. The fastest path to relevance is connecting the new layer (AI, agents, MCP) to the substrate (identity, EDI, data, ops) — not pretending the substrate is gone.&lt;/p&gt;

&lt;p&gt;If you are trying to make sense of the market: stop reading press releases. Read the signals. They are open.&lt;/p&gt;

&lt;h2&gt;
  
  
  Try it
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Platform: &lt;a href="https://signals.naftiko.io" rel="noopener noreferrer"&gt;signals.naftiko.io&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Browse the areas of technology view to see the full ranking across all 44 signal groups&lt;/li&gt;
&lt;li&gt;Browse the radar to see how each area sits across Adopting, Optimizing, Evaluating, and Watching&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The hype cycle tells you what enterprises want you to think they are doing. The signals tell you what they are actually paying people to build. Those are not the same list — and the gap between them is where the real opportunities live.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>enterprise</category>
      <category>api</category>
      <category>opensource</category>
    </item>
    <item>
      <title>Stop Writing Integration Code. Write a Spec Instead.</title>
      <dc:creator>Kin Lane</dc:creator>
      <pubDate>Tue, 21 Apr 2026 19:03:35 +0000</pubDate>
      <link>https://dev.to/kinlane/stop-writing-integration-code-write-a-spec-instead-n0d</link>
      <guid>https://dev.to/kinlane/stop-writing-integration-code-write-a-spec-instead-n0d</guid>
      <description>&lt;p&gt;Most enterprise integration work follows a familiar pattern. A team needs to connect system A to system B. A developer writes a client, adds authentication, shapes the response, exposes it somewhere. It works. It ships. Within a sprint it starts drifting from whatever documentation existed. Within a quarter, three other teams have written their own version of the same integration with different assumptions.&lt;/p&gt;

&lt;p&gt;This is not a tooling failure. It is a methodology failure. The integration intent — what to consume, how to shape it, what to expose — was never captured in a durable, inspectable artifact. It went straight into code and started drifting immediately.&lt;/p&gt;

&lt;h2&gt;
  
  
  Spec-Driven Integration
&lt;/h2&gt;

&lt;p&gt;Let me talk for a little bit about Spec-Driven Integration (SDI), and why it provides a new way to look at how we integrate.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/naftiko/framework/wiki/Spec%E2%80%90Driven-Integration" rel="noopener noreferrer"&gt;Spec-Driven Integration&lt;/a&gt; (SDI) is a methodology that treats the specification as the primary integration artifact. Not documentation. Not generated code. The executable definition itself.&lt;/p&gt;

&lt;p&gt;A capability specification declares:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;What upstream APIs are consumed (base URIs, authentication, resources, operations)&lt;/li&gt;
&lt;li&gt;How data is shaped (input parameters, output extraction via JSONPath)&lt;/li&gt;
&lt;li&gt;What is exposed downstream (REST endpoints, MCP tools, Agent Skills)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The specification is complete enough to execute directly. An engine reads it at runtime, handles HTTP consumption, data transformation, format conversion, and protocol exposure. No code generation. No compilation.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;naftiko&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;1.0.0-alpha1"&lt;/span&gt;

&lt;span class="na"&gt;capability&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;consumes&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;http&lt;/span&gt;
      &lt;span class="na"&gt;namespace&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;payments&lt;/span&gt;
      &lt;span class="na"&gt;baseUri&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;https://api.internal.company/v2&lt;/span&gt;
      &lt;span class="na"&gt;authentication&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
        &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;bearer&lt;/span&gt;
        &lt;span class="na"&gt;token&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;{{PAYMENTS_TOKEN}}"&lt;/span&gt;
      &lt;span class="na"&gt;resources&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
        &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;transactions&lt;/span&gt;
          &lt;span class="na"&gt;path&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;/transactions&lt;/span&gt;
          &lt;span class="na"&gt;operations&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
            &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;list-transactions&lt;/span&gt;
              &lt;span class="na"&gt;method&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;GET&lt;/span&gt;
              &lt;span class="na"&gt;outputParameters&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
                &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;transactions&lt;/span&gt;
                  &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;array&lt;/span&gt;
                  &lt;span class="na"&gt;value&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;$.data&lt;/span&gt;

  &lt;span class="na"&gt;exposes&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;mcp&lt;/span&gt;
      &lt;span class="na"&gt;port&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="m"&gt;3001&lt;/span&gt;
      &lt;span class="na"&gt;namespace&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;payments-tools&lt;/span&gt;
      &lt;span class="na"&gt;tools&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
        &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;list-recent-transactions&lt;/span&gt;
          &lt;span class="na"&gt;description&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;List&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;recent&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;payment&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;transactions"&lt;/span&gt;
          &lt;span class="na"&gt;call&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;payments.list-transactions&lt;/span&gt;
          &lt;span class="na"&gt;outputParameters&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
            &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;array&lt;/span&gt;
              &lt;span class="na"&gt;mapping&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;$.data"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That YAML is the integration. Run it in a container. The MCP tool is live on port 3001.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Code Generation Creates Drift
&lt;/h2&gt;

&lt;p&gt;The common objection is: "We already generate code from our OpenAPI specs." Code generation moves the specification one step away from execution. The generated code becomes the artifact that runs, not the spec. The moment someone modifies the generated code — to add a retry, to shape a response, to handle an edge case — the spec and the implementation diverge. Drift is reintroduced.&lt;/p&gt;

&lt;p&gt;I am looking for SDI to avoid this entirely. The spec IS what executes. There is no intermediate code artifact that can diverge.&lt;/p&gt;

&lt;h2&gt;
  
  
  The SDI Workflow
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Specify&lt;/strong&gt; — Write a YAML capability spec capturing the integration intent&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Validate&lt;/strong&gt; — Lint and analyze for completeness before execution&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Execute&lt;/strong&gt; — Run the engine. No build step. No code generation.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Refine&lt;/strong&gt; — Evolve the spec based on production feedback&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;This cycle keeps the spec primary. What is deployed always matches documented intent because they are the same artifact.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why This Matters for AI
&lt;/h2&gt;

&lt;p&gt;AI agents need structured contracts to reason about. An agent can parse a capability spec, understand what tools are available, what inputs they require, and what outputs they produce. It cannot do the same with custom integration code spread across multiple repos.&lt;/p&gt;

&lt;p&gt;When the spec is the integration, AI agents can:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Discover available capabilities by reading specs&lt;/li&gt;
&lt;li&gt;Call tools reliably because the contract is deterministic&lt;/li&gt;
&lt;li&gt;Propose spec refinements based on usage patterns&lt;/li&gt;
&lt;li&gt;Validate consistency without reverse-engineering code&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;SDI is not just a cleaner way to build integrations. It is the prerequisite for AI agents to use your integrations reliably. What I like about SDI, is it takes what we have been investing in for the last decade and helps me integrate AI into existing operational workflows I've worked hard on for years.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/naftiko/framework/wiki/Spec%E2%80%90Driven-Integration" rel="noopener noreferrer"&gt;Read the full methodology&lt;/a&gt; | &lt;a href="https://github.com/naftiko/fleet?utm_source=devto&amp;amp;utm_medium=blog&amp;amp;utm_campaign=methodology-spec-driven-integration&amp;amp;utm_content=sdi-stop-writing-code-devto" rel="noopener noreferrer"&gt;Explore the Naftiko Fleet&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>productivity</category>
      <category>devops</category>
      <category>automation</category>
    </item>
    <item>
      <title>A Big Four Firm Just Ranked #1 in API Investment. Ahead of Every Tech Company.</title>
      <dc:creator>Kin Lane</dc:creator>
      <pubDate>Thu, 16 Apr 2026 14:32:01 +0000</pubDate>
      <link>https://dev.to/kinlane/a-big-four-firm-just-ranked-1-in-api-investment-ahead-of-every-tech-company-33l3</link>
      <guid>https://dev.to/kinlane/a-big-four-firm-just-ranked-1-in-api-investment-ahead-of-every-tech-company-33l3</guid>
      <description>&lt;p&gt;At &lt;a href="https://naftiko.io" rel="noopener noreferrer"&gt;Naftiko&lt;/a&gt;, We track technology investment signals across 292 companies at Naftiko — APIs, AI, cloud, data, security, governance, automation, integrations. Scored and ranked.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://signals.naftiko.io/companies/#ey" rel="noopener noreferrer"&gt;EY ranks number one&lt;/a&gt;. Not among professional services firms. Across all 292 companies. Ahead of Citi, UnitedHealth, Morgan Stanley, Cisco, Visa, Nvidia, and Alphabet.&lt;/p&gt;

&lt;p&gt;An accounting firm. Number one.&lt;/p&gt;

&lt;h2&gt;
  
  
  The numbers
&lt;/h2&gt;

&lt;p&gt;EY scores 2,603 points. The professional services sector overall:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;EY: 2,603 (22.8% of sector)&lt;/li&gt;
&lt;li&gt;Accenture: 2,022&lt;/li&gt;
&lt;li&gt;Booz Allen: 1,447&lt;/li&gt;
&lt;li&gt;McKinsey: 1,435&lt;/li&gt;
&lt;li&gt;KPMG: 1,200&lt;/li&gt;
&lt;li&gt;PwC: 1,155&lt;/li&gt;
&lt;li&gt;Bain: 991&lt;/li&gt;
&lt;li&gt;Deloitte: 572&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;EY leads every category. APIs, AI, cloud, data, security, governance, services, integrations, containers, observability. Broad, deep, consistent.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why professional services is ahead
&lt;/h2&gt;

&lt;p&gt;Technology as a sector scores 44,840 points — but across 49 companies (avg 915 each). Professional services scores 11,425 across 8 companies (avg 1,428 each). Per-company investment density is 56% higher than technology.&lt;/p&gt;

&lt;p&gt;The reason is structural. Professional services firms don't build one product. They build integration and transformation capabilities for every client, across every industry. A single firm like EY needs competency in financial services data platforms, healthcare interoperability, manufacturing automation, retail personalization, and energy management — simultaneously.&lt;/p&gt;

&lt;p&gt;They also sit at the intersection of business strategy and technical implementation. They wire SAP to Salesforce, connect Workday to Azure AD, build data pipelines from Oracle to Snowflake. Their API and integration investment is not aspirational. It is operational.&lt;/p&gt;

&lt;h2&gt;
  
  
  What EY is doing differently
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Cloud and data are the foundation.&lt;/strong&gt; Cloud (219) and data (222) are where enterprises build the platforms AI agents will consume. EY is investing in the substrate.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Governance is a differentiator.&lt;/strong&gt; 92 points — significantly ahead of the field. For an audit and compliance firm, this makes strategic sense. But it also positions them for AI agent governance.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Security is the highest in the sector.&lt;/strong&gt; 139 points. In a world where AI agents are about to get API access to enterprise systems, security investment is the prerequisite for adoption.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why this matters for developers
&lt;/h2&gt;

&lt;p&gt;The professional services investment pattern maps directly to what AI agent infrastructure needs:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Discover and inventory APIs across environments with hundreds of services&lt;/li&gt;
&lt;li&gt;Govern API access with identity propagation, policy enforcement, and audit trails&lt;/li&gt;
&lt;li&gt;Compose capabilities from existing APIs into reusable units of work&lt;/li&gt;
&lt;li&gt;Observe what agents are doing and whether integrations work&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Professional services firms are the most integration-intensive organizations on the planet. They are investing accordingly. The question is whether the rest of the enterprise world catches up before the agents arrive, or after. For me, this is counter to what I read about professional services companies in mainstream team press, that they are irrelevant and going away.&lt;/p&gt;

&lt;p&gt;You can &lt;a href="https://industries.naftiko.io/signals/professional-services/8jdyBqh8nG/" rel="noopener noreferrer"&gt;explore the full signals data&lt;/a&gt; and run governed AI capabilities yourself using the open-source &lt;a href="https://github.com/naftiko/fleet?utm_source=devto&amp;amp;utm_medium=blog&amp;amp;utm_campaign=industry-professional-services&amp;amp;utm_content=ey-most-invested-devto" rel="noopener noreferrer"&gt;Naftiko Fleet&lt;/a&gt;. Feel free to email me personally at &lt;a href="mailto:kinlane@naftiko.io"&gt;kinlane@naftiko.io&lt;/a&gt; if you have any questions.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>productivity</category>
      <category>career</category>
    </item>
    <item>
      <title>Making Your APIs Visible Using Capabilities for GitHub 7 GitBook Discovery and Documentation</title>
      <dc:creator>Kin Lane</dc:creator>
      <pubDate>Wed, 15 Apr 2026 21:26:40 +0000</pubDate>
      <link>https://dev.to/kinlane/making-your-apis-visible-using-capabilities-for-github-7-gitbook-discovery-and-documentation-mno</link>
      <guid>https://dev.to/kinlane/making-your-apis-visible-using-capabilities-for-github-7-gitbook-discovery-and-documentation-mno</guid>
      <description>&lt;p&gt;Your organization has more APIs than anyone thinks. Specs are scattered across GitHub repos. Docs exist in GitBook spaces that were created for a launch and never updated. Some APIs have specs but no docs. Others have docs but no specs. A handful have neither.&lt;/p&gt;

&lt;p&gt;This is the API visibility problem, and it's universal. GitHub and GitBook are both excellent platforms. The gap is the workflow between them.&lt;/p&gt;

&lt;h2&gt;
  
  
  Capabilities
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://github.com/naftiko/fleet?utm_source=devto&amp;amp;utm_medium=blog&amp;amp;utm_campaign=collection-api-discovery-and-documentation&amp;amp;utm_content=docs-drifting-devto" rel="noopener noreferrer"&gt;Naftiko capabilities&lt;/a&gt; — each a portable YAML file that consumes the GitHub and/or GitBook APIs and exposes MCP tools for the workflows that documentation writers and governance teams need. No code generation, no SDK, no platform subscription.&lt;/p&gt;

&lt;h2&gt;
  
  
  Discovery
&lt;/h2&gt;

&lt;p&gt;Helping you with your API discovery.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;GitHub OpenAPI Scanner&lt;/strong&gt; — scans every repo in a GitHub org for OpenAPI/AsyncAPI specs&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;GitBook Space Auditor&lt;/strong&gt; — checks spaces for completeness, staleness, missing descriptions&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;API Documentation Gap Analyzer&lt;/strong&gt; — compares GitHub specs vs GitBook docs, finds gaps in both directions&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Documentation Coverage Scorer&lt;/strong&gt; — measures what percentage of API operations are documented&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Here's the scanner:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;naftiko&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;0.5"&lt;/span&gt;
&lt;span class="na"&gt;info&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;label&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;GitHub&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;OpenAPI&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;Scanner"&lt;/span&gt;
  &lt;span class="na"&gt;description&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Scans&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;GitHub&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;organization&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;repositories&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;for&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;OpenAPI&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;and&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;AsyncAPI&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;specification&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;files,&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;building&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;an&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;inventory&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;of&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;every&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;API&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;definition&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;across&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;the&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;org."&lt;/span&gt;
&lt;span class="na"&gt;capability&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;exposes&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;mcp"&lt;/span&gt;
      &lt;span class="na"&gt;namespace&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;spec-scanner"&lt;/span&gt;
      &lt;span class="na"&gt;tools&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
        &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;scan-org-for-specs"&lt;/span&gt;
          &lt;span class="na"&gt;description&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Scans&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;all&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;repositories&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;in&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;a&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;GitHub&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;organization&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;for&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;OpenAPI&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;and&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;AsyncAPI&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;specification&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;files."&lt;/span&gt;
          &lt;span class="na"&gt;inputParameters&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
            &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;org&lt;/span&gt;
              &lt;span class="na"&gt;in&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;query&lt;/span&gt;
              &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;string&lt;/span&gt;
          &lt;span class="na"&gt;steps&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
            &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;search-openapi&lt;/span&gt;
              &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;call&lt;/span&gt;
              &lt;span class="na"&gt;call&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;github.search-code"&lt;/span&gt;
              &lt;span class="na"&gt;with&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
                &lt;span class="na"&gt;q&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;org:{{org}}&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;filename:openapi"&lt;/span&gt;
                &lt;span class="na"&gt;per_page&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="m"&gt;100&lt;/span&gt;
            &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;search-asyncapi&lt;/span&gt;
              &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;call&lt;/span&gt;
              &lt;span class="na"&gt;call&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;github.search-code"&lt;/span&gt;
              &lt;span class="na"&gt;with&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
                &lt;span class="na"&gt;q&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;org:{{org}}&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;filename:asyncapi"&lt;/span&gt;
                &lt;span class="na"&gt;per_page&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="m"&gt;100&lt;/span&gt;
  &lt;span class="na"&gt;consumes&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;namespace&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;github"&lt;/span&gt;
      &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;http"&lt;/span&gt;
      &lt;span class="na"&gt;baseUri&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;https://api.github.com"&lt;/span&gt;
      &lt;span class="na"&gt;authentication&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
        &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;bearer"&lt;/span&gt;
        &lt;span class="na"&gt;token&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;{{github_token}}"&lt;/span&gt;
      &lt;span class="na"&gt;inputParameters&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
        &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;github_token"&lt;/span&gt;
          &lt;span class="na"&gt;in&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;environment"&lt;/span&gt;
        &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Accept"&lt;/span&gt;
          &lt;span class="na"&gt;in&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;header"&lt;/span&gt;
          &lt;span class="na"&gt;value&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;application/vnd.github+json"&lt;/span&gt;
        &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;X-GitHub-Api-Version"&lt;/span&gt;
          &lt;span class="na"&gt;in&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;header"&lt;/span&gt;
          &lt;span class="na"&gt;value&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;2022-11-28"&lt;/span&gt;
      &lt;span class="na"&gt;resources&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
        &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;code-search"&lt;/span&gt;
          &lt;span class="na"&gt;label&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Code&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;Search"&lt;/span&gt;
          &lt;span class="na"&gt;description&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Search&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;for&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;code&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;across&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;repositories"&lt;/span&gt;
          &lt;span class="na"&gt;path&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;/search/code"&lt;/span&gt;
          &lt;span class="na"&gt;operations&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
            &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;search-code"&lt;/span&gt;
              &lt;span class="na"&gt;method&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;GET"&lt;/span&gt;
              &lt;span class="na"&gt;label&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Search&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;Code"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;And here's the gap analyzer that compares both platforms:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;naftiko&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;0.5"&lt;/span&gt;
&lt;span class="na"&gt;info&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;label&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;API&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;Documentation&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;Gap&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;Analyzer"&lt;/span&gt;
  &lt;span class="na"&gt;description&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Compares&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;API&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;specifications&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;discovered&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;on&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;GitHub&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;against&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;documentation&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;published&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;in&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;GitBook&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;to&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;identify&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;undocumented&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;APIs&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;and&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;orphaned&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;docs."&lt;/span&gt;
&lt;span class="na"&gt;capability&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;exposes&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;mcp"&lt;/span&gt;
      &lt;span class="na"&gt;namespace&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;gap-analyzer"&lt;/span&gt;
      &lt;span class="na"&gt;tools&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
        &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;compare-specs-to-docs"&lt;/span&gt;
          &lt;span class="na"&gt;description&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Searches&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;GitHub&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;for&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;API&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;specs&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;and&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;GitBook&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;for&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;documentation&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;spaces,&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;then&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;compares&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;the&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;two&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;to&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;identify&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;gaps."&lt;/span&gt;
          &lt;span class="na"&gt;inputParameters&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
            &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;org&lt;/span&gt;
              &lt;span class="na"&gt;in&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;query&lt;/span&gt;
              &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;string&lt;/span&gt;
            &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;gitbook_orgId&lt;/span&gt;
              &lt;span class="na"&gt;in&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;query&lt;/span&gt;
              &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;string&lt;/span&gt;
          &lt;span class="na"&gt;steps&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
            &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;find-github-specs&lt;/span&gt;
              &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;call&lt;/span&gt;
              &lt;span class="na"&gt;call&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;github.search-code"&lt;/span&gt;
              &lt;span class="na"&gt;with&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
                &lt;span class="na"&gt;q&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;org:{{org}}&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;filename:openapi"&lt;/span&gt;
                &lt;span class="na"&gt;per_page&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="m"&gt;100&lt;/span&gt;
            &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;find-gitbook-spaces&lt;/span&gt;
              &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;call&lt;/span&gt;
              &lt;span class="na"&gt;call&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;gitbook.list-spaces"&lt;/span&gt;
              &lt;span class="na"&gt;with&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
                &lt;span class="na"&gt;orgId&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;{{gitbook_orgId}}"&lt;/span&gt;
  &lt;span class="na"&gt;consumes&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;namespace&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;github"&lt;/span&gt;
      &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;http"&lt;/span&gt;
      &lt;span class="na"&gt;baseUri&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;https://api.github.com"&lt;/span&gt;
      &lt;span class="na"&gt;authentication&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
        &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;bearer"&lt;/span&gt;
        &lt;span class="na"&gt;token&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;{{github_token}}"&lt;/span&gt;
      &lt;span class="na"&gt;inputParameters&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
        &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;github_token"&lt;/span&gt;
          &lt;span class="na"&gt;in&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;environment"&lt;/span&gt;
        &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Accept"&lt;/span&gt;
          &lt;span class="na"&gt;in&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;header"&lt;/span&gt;
          &lt;span class="na"&gt;value&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;application/vnd.github+json"&lt;/span&gt;
      &lt;span class="na"&gt;resources&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
        &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;code-search"&lt;/span&gt;
          &lt;span class="na"&gt;label&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Code&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;Search"&lt;/span&gt;
          &lt;span class="na"&gt;path&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;/search/code"&lt;/span&gt;
          &lt;span class="na"&gt;operations&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
            &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;search-code"&lt;/span&gt;
              &lt;span class="na"&gt;method&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;GET"&lt;/span&gt;
              &lt;span class="na"&gt;label&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Search&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;Code"&lt;/span&gt;
    &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;namespace&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;gitbook"&lt;/span&gt;
      &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;http"&lt;/span&gt;
      &lt;span class="na"&gt;baseUri&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;https://api.gitbook.com/v1"&lt;/span&gt;
      &lt;span class="na"&gt;authentication&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
        &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;bearer"&lt;/span&gt;
        &lt;span class="na"&gt;token&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;{{gitbook_token}}"&lt;/span&gt;
      &lt;span class="na"&gt;inputParameters&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
        &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;gitbook_token"&lt;/span&gt;
          &lt;span class="na"&gt;in&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;environment"&lt;/span&gt;
      &lt;span class="na"&gt;resources&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
        &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;org-spaces"&lt;/span&gt;
          &lt;span class="na"&gt;label&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Organization&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;Spaces"&lt;/span&gt;
          &lt;span class="na"&gt;path&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;/orgs/{{orgId}}/spaces"&lt;/span&gt;
          &lt;span class="na"&gt;inputParameters&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
            &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;orgId"&lt;/span&gt;
              &lt;span class="na"&gt;in&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;path"&lt;/span&gt;
          &lt;span class="na"&gt;operations&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
            &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;list-spaces"&lt;/span&gt;
              &lt;span class="na"&gt;method&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;GET"&lt;/span&gt;
              &lt;span class="na"&gt;label&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;List&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;Spaces"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  GitHub → GitBook
&lt;/h2&gt;

&lt;p&gt;Keeping your repos in alignment with what teams do in Gitbook.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;GitHub-to-GitBook Spec Publisher&lt;/strong&gt; — fetches specs from GitHub, creates GitBook spaces&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;API Catalog Publisher&lt;/strong&gt; — aggregates multi-repo specs into a browsable GitBook collection&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;OpenAPI GitBook Uploader&lt;/strong&gt; — uploads specs to GitBook's native interactive API viewer&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;API Changelog Publisher&lt;/strong&gt; — generates changelogs from spec diffs, publishes to GitBook&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Here's the publisher capabilty:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;naftiko&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;0.5"&lt;/span&gt;
&lt;span class="na"&gt;info&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;label&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;GitHub-to-GitBook&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;Spec&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;Publisher"&lt;/span&gt;
  &lt;span class="na"&gt;description&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Discovers&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;OpenAPI&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;specifications&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;in&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;GitHub&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;repositories&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;and&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;publishes&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;them&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;as&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;structured&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;documentation&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;in&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;GitBook&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;spaces."&lt;/span&gt;
&lt;span class="na"&gt;capability&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;exposes&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;mcp"&lt;/span&gt;
      &lt;span class="na"&gt;namespace&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;spec-publisher"&lt;/span&gt;
      &lt;span class="na"&gt;tools&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
        &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;publish-spec-to-gitbook"&lt;/span&gt;
          &lt;span class="na"&gt;description&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Fetches&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;an&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;OpenAPI&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;spec&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;from&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;a&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;GitHub&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;repo&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;and&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;creates&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;or&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;updates&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;a&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;GitBook&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;space&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;with&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;the&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;spec&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;content."&lt;/span&gt;
          &lt;span class="na"&gt;inputParameters&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
            &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;owner&lt;/span&gt;
              &lt;span class="na"&gt;in&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;query&lt;/span&gt;
              &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;string&lt;/span&gt;
            &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;repo&lt;/span&gt;
              &lt;span class="na"&gt;in&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;query&lt;/span&gt;
              &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;string&lt;/span&gt;
            &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;spec_path&lt;/span&gt;
              &lt;span class="na"&gt;in&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;query&lt;/span&gt;
              &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;string&lt;/span&gt;
            &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;gitbook_orgId&lt;/span&gt;
              &lt;span class="na"&gt;in&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;query&lt;/span&gt;
              &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;string&lt;/span&gt;
            &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;space_title&lt;/span&gt;
              &lt;span class="na"&gt;in&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;query&lt;/span&gt;
              &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;string&lt;/span&gt;
          &lt;span class="na"&gt;steps&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
            &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;fetch-spec&lt;/span&gt;
              &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;call&lt;/span&gt;
              &lt;span class="na"&gt;call&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;github.get-file-contents"&lt;/span&gt;
              &lt;span class="na"&gt;with&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
                &lt;span class="na"&gt;owner&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;{{owner}}"&lt;/span&gt;
                &lt;span class="na"&gt;repo&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;{{repo}}"&lt;/span&gt;
                &lt;span class="na"&gt;file_path&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;{{spec_path}}"&lt;/span&gt;
            &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;create-space&lt;/span&gt;
              &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;call&lt;/span&gt;
              &lt;span class="na"&gt;call&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;gitbook.create-space"&lt;/span&gt;
              &lt;span class="na"&gt;with&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
                &lt;span class="na"&gt;orgId&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;{{gitbook_orgId}}"&lt;/span&gt;
                &lt;span class="na"&gt;title&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;{{space_title}}"&lt;/span&gt;
                &lt;span class="na"&gt;visibility&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;public"&lt;/span&gt;
        &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;batch-publish-org-specs"&lt;/span&gt;
          &lt;span class="na"&gt;description&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Scans&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;a&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;GitHub&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;org&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;for&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;all&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;OpenAPI&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;specs&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;and&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;publishes&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;each&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;to&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;a&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;GitBook&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;space."&lt;/span&gt;
          &lt;span class="na"&gt;inputParameters&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
            &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;org&lt;/span&gt;
              &lt;span class="na"&gt;in&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;query&lt;/span&gt;
              &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;string&lt;/span&gt;
            &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;gitbook_orgId&lt;/span&gt;
              &lt;span class="na"&gt;in&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;query&lt;/span&gt;
              &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;string&lt;/span&gt;
          &lt;span class="na"&gt;steps&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
            &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;find-specs&lt;/span&gt;
              &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;call&lt;/span&gt;
              &lt;span class="na"&gt;call&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;github.search-code"&lt;/span&gt;
              &lt;span class="na"&gt;with&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
                &lt;span class="na"&gt;q&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;org:{{org}}&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;filename:openapi"&lt;/span&gt;
                &lt;span class="na"&gt;per_page&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="m"&gt;100&lt;/span&gt;
            &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;list-existing&lt;/span&gt;
              &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;call&lt;/span&gt;
              &lt;span class="na"&gt;call&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;gitbook.list-spaces"&lt;/span&gt;
              &lt;span class="na"&gt;with&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
                &lt;span class="na"&gt;orgId&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;{{gitbook_orgId}}"&lt;/span&gt;
  &lt;span class="na"&gt;consumes&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;namespace&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;github"&lt;/span&gt;
      &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;http"&lt;/span&gt;
      &lt;span class="na"&gt;baseUri&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;https://api.github.com"&lt;/span&gt;
      &lt;span class="na"&gt;authentication&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
        &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;bearer"&lt;/span&gt;
        &lt;span class="na"&gt;token&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;{{github_token}}"&lt;/span&gt;
      &lt;span class="na"&gt;inputParameters&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
        &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;github_token"&lt;/span&gt;
          &lt;span class="na"&gt;in&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;environment"&lt;/span&gt;
        &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Accept"&lt;/span&gt;
          &lt;span class="na"&gt;in&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;header"&lt;/span&gt;
          &lt;span class="na"&gt;value&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;application/vnd.github+json"&lt;/span&gt;
      &lt;span class="na"&gt;resources&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
        &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;repo-contents"&lt;/span&gt;
          &lt;span class="na"&gt;label&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Repository&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;File&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;Contents"&lt;/span&gt;
          &lt;span class="na"&gt;path&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;/repos/{{owner}}/{{repo}}/contents/{{file_path}}"&lt;/span&gt;
          &lt;span class="na"&gt;inputParameters&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
            &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;owner"&lt;/span&gt;
              &lt;span class="na"&gt;in&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;path"&lt;/span&gt;
            &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;repo"&lt;/span&gt;
              &lt;span class="na"&gt;in&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;path"&lt;/span&gt;
            &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;file_path"&lt;/span&gt;
              &lt;span class="na"&gt;in&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;path"&lt;/span&gt;
          &lt;span class="na"&gt;operations&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
            &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;get-file-contents"&lt;/span&gt;
              &lt;span class="na"&gt;method&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;GET"&lt;/span&gt;
              &lt;span class="na"&gt;label&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Get&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;File&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;Contents"&lt;/span&gt;
        &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;code-search"&lt;/span&gt;
          &lt;span class="na"&gt;label&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Code&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;Search"&lt;/span&gt;
          &lt;span class="na"&gt;path&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;/search/code"&lt;/span&gt;
          &lt;span class="na"&gt;operations&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
            &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;search-code"&lt;/span&gt;
              &lt;span class="na"&gt;method&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;GET"&lt;/span&gt;
              &lt;span class="na"&gt;label&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Search&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;Code"&lt;/span&gt;
    &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;namespace&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;gitbook"&lt;/span&gt;
      &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;http"&lt;/span&gt;
      &lt;span class="na"&gt;baseUri&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;https://api.gitbook.com/v1"&lt;/span&gt;
      &lt;span class="na"&gt;authentication&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
        &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;bearer"&lt;/span&gt;
        &lt;span class="na"&gt;token&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;{{gitbook_token}}"&lt;/span&gt;
      &lt;span class="na"&gt;inputParameters&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
        &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;gitbook_token"&lt;/span&gt;
          &lt;span class="na"&gt;in&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;environment"&lt;/span&gt;
      &lt;span class="na"&gt;resources&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
        &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;org-spaces"&lt;/span&gt;
          &lt;span class="na"&gt;label&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Organization&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;Spaces"&lt;/span&gt;
          &lt;span class="na"&gt;path&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;/orgs/{{orgId}}/spaces"&lt;/span&gt;
          &lt;span class="na"&gt;inputParameters&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
            &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;orgId"&lt;/span&gt;
              &lt;span class="na"&gt;in&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;path"&lt;/span&gt;
          &lt;span class="na"&gt;operations&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
            &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;list-spaces"&lt;/span&gt;
              &lt;span class="na"&gt;method&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;GET"&lt;/span&gt;
              &lt;span class="na"&gt;label&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;List&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;Spaces"&lt;/span&gt;
            &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;create-space"&lt;/span&gt;
              &lt;span class="na"&gt;method&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;POST"&lt;/span&gt;
              &lt;span class="na"&gt;label&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Create&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;Space"&lt;/span&gt;
        &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;openapi-specs"&lt;/span&gt;
          &lt;span class="na"&gt;label&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;OpenAPI&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;Specs"&lt;/span&gt;
          &lt;span class="na"&gt;path&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;/spaces/{{spaceId}}/openapi"&lt;/span&gt;
          &lt;span class="na"&gt;inputParameters&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
            &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;spaceId"&lt;/span&gt;
              &lt;span class="na"&gt;in&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;path"&lt;/span&gt;
          &lt;span class="na"&gt;operations&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
            &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;upload-openapi"&lt;/span&gt;
              &lt;span class="na"&gt;method&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;POST"&lt;/span&gt;
              &lt;span class="na"&gt;label&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Upload&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;OpenAPI&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;Spec"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  GitBook → GitHub
&lt;/h2&gt;

&lt;p&gt;Now let's go back the other way from GitHub to Gitbook.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;GitBook-to-GitHub Spec Centralizer&lt;/strong&gt; — extracts docs from GitBook, commits to a central GitHub repo&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Multi-Repo Spec Consolidator&lt;/strong&gt; — consolidates scattered specs into one canonical repo&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Governance
&lt;/h2&gt;

&lt;p&gt;Now you can govern things because you know where the APIs are.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;GitBook-GitHub Doc Sync&lt;/strong&gt; — bi-directional sync, detects drift&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;API Doc Freshness Monitor&lt;/strong&gt; — flags stale documentation before consumers notice&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;GitBook Change Request Reviewer&lt;/strong&gt; — PR-style review for documentation updates&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;GitBook Collection Organizer&lt;/strong&gt; — organizes spaces into domain-based collections&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;API Style Guide Enforcer&lt;/strong&gt; — validates docs against style guidelines, creates fix requests&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;GitBook Search Indexer&lt;/strong&gt; — cross-space search, duplicate detection&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Here's the style guide enforcer — it searches for banned terms and creates change requests for fixes:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;naftiko&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;0.5"&lt;/span&gt;
&lt;span class="na"&gt;info&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;label&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;API&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;Style&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;Guide&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;Enforcer"&lt;/span&gt;
  &lt;span class="na"&gt;description&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Validates&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;API&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;documentation&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;in&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;GitBook&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;against&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;organizational&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;style&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;guidelines."&lt;/span&gt;
&lt;span class="na"&gt;capability&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;exposes&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;mcp"&lt;/span&gt;
      &lt;span class="na"&gt;namespace&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;style-enforcer"&lt;/span&gt;
      &lt;span class="na"&gt;tools&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
        &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;search-for-banned-terms"&lt;/span&gt;
          &lt;span class="na"&gt;description&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Searches&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;for&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;terminology&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;that&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;violates&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;the&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;style&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;guide."&lt;/span&gt;
          &lt;span class="na"&gt;inputParameters&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
            &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;gitbook_orgId&lt;/span&gt;
              &lt;span class="na"&gt;in&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;query&lt;/span&gt;
              &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;string&lt;/span&gt;
            &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;banned_term&lt;/span&gt;
              &lt;span class="na"&gt;in&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;query&lt;/span&gt;
              &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;string&lt;/span&gt;
          &lt;span class="na"&gt;steps&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
            &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;search-content&lt;/span&gt;
              &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;call&lt;/span&gt;
              &lt;span class="na"&gt;call&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;gitbook.search-content"&lt;/span&gt;
              &lt;span class="na"&gt;with&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
                &lt;span class="na"&gt;orgId&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;{{gitbook_orgId}}"&lt;/span&gt;
                &lt;span class="na"&gt;query&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;{{banned_term}}"&lt;/span&gt;
        &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;create-style-fix-request"&lt;/span&gt;
          &lt;span class="na"&gt;description&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Creates&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;a&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;change&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;request&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;to&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;track&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;a&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;style&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;violation&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;fix."&lt;/span&gt;
          &lt;span class="na"&gt;inputParameters&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
            &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;spaceId&lt;/span&gt;
              &lt;span class="na"&gt;in&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;query&lt;/span&gt;
              &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;string&lt;/span&gt;
            &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;violation_summary&lt;/span&gt;
              &lt;span class="na"&gt;in&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;query&lt;/span&gt;
              &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;string&lt;/span&gt;
            &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;fix_description&lt;/span&gt;
              &lt;span class="na"&gt;in&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;query&lt;/span&gt;
              &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;string&lt;/span&gt;
          &lt;span class="na"&gt;steps&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
            &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;create-cr&lt;/span&gt;
              &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;call&lt;/span&gt;
              &lt;span class="na"&gt;call&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;gitbook.create-change-request"&lt;/span&gt;
              &lt;span class="na"&gt;with&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
                &lt;span class="na"&gt;spaceId&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;{{spaceId}}"&lt;/span&gt;
                &lt;span class="na"&gt;subject&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;{{violation_summary}}"&lt;/span&gt;
                &lt;span class="na"&gt;description&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;{{fix_description}}"&lt;/span&gt;
  &lt;span class="na"&gt;consumes&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;namespace&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;gitbook"&lt;/span&gt;
      &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;http"&lt;/span&gt;
      &lt;span class="na"&gt;baseUri&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;https://api.gitbook.com/v1"&lt;/span&gt;
      &lt;span class="na"&gt;authentication&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
        &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;bearer"&lt;/span&gt;
        &lt;span class="na"&gt;token&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;{{gitbook_token}}"&lt;/span&gt;
      &lt;span class="na"&gt;inputParameters&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
        &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;gitbook_token"&lt;/span&gt;
          &lt;span class="na"&gt;in&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;environment"&lt;/span&gt;
      &lt;span class="na"&gt;resources&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
        &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;search"&lt;/span&gt;
          &lt;span class="na"&gt;label&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Search"&lt;/span&gt;
          &lt;span class="na"&gt;path&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;/orgs/{{orgId}}/search"&lt;/span&gt;
          &lt;span class="na"&gt;inputParameters&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
            &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;orgId"&lt;/span&gt;
              &lt;span class="na"&gt;in&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;path"&lt;/span&gt;
          &lt;span class="na"&gt;operations&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
            &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;search-content"&lt;/span&gt;
              &lt;span class="na"&gt;method&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;GET"&lt;/span&gt;
              &lt;span class="na"&gt;label&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Search&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;Content"&lt;/span&gt;
        &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;change-requests"&lt;/span&gt;
          &lt;span class="na"&gt;label&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Change&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;Requests"&lt;/span&gt;
          &lt;span class="na"&gt;path&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;/spaces/{{spaceId}}/change-requests"&lt;/span&gt;
          &lt;span class="na"&gt;inputParameters&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
            &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;spaceId"&lt;/span&gt;
              &lt;span class="na"&gt;in&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;path"&lt;/span&gt;
          &lt;span class="na"&gt;operations&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
            &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;create-change-request"&lt;/span&gt;
              &lt;span class="na"&gt;method&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;POST"&lt;/span&gt;
              &lt;span class="na"&gt;label&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Create&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;Change&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;Request"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  How it works
&lt;/h2&gt;

&lt;p&gt;I am not sure how you organization operates, and I tried to cover the bases.&lt;/p&gt;

&lt;p&gt;Each capability is a Naftiko 0.5 YAML file that declares:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;What APIs it &lt;strong&gt;consumes&lt;/strong&gt; (GitHub, GitBook, or both)&lt;/li&gt;
&lt;li&gt;What MCP tools it &lt;em&gt;exposes&lt;/em&gt;*&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;All you do is point the Naftiko Framework at the YAML, and it serves live MCP tools, agent skills, and REST endpoints. The YAML is the runtime — no code generation required.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why capabilities for this
&lt;/h2&gt;

&lt;p&gt;The individual API calls are simple. The hard part is doing them consistently, across every repo and every space, over time. Manual processes don't scale. One-time audits go stale. Documentation sprints easily get deprioritized.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/naftiko/fleet?utm_source=devto&amp;amp;utm_medium=blog&amp;amp;utm_campaign=collection-api-discovery-and-documentation&amp;amp;utm_content=docs-drifting-devto" rel="noopener noreferrer"&gt;Capabilities make the workflow repeatable&lt;/a&gt;. Run them on a schedule, wire them into your CI, or invoke the MCP tools from an agent. The more alignment you can bring, the more likely you'll be governing the right things. You can't govern what you don't see.&lt;/p&gt;

</description>
      <category>github</category>
      <category>gitbook</category>
      <category>api</category>
      <category>documentation</category>
    </item>
  </channel>
</rss>
