Build with AI agents

Everything in these docs is available to AI assistants and coding agents: llms.txt, a Markdown copy of every page, a structured index, and WebMCP tools. An agent can also connect to your account through agent sign-in, with the access you choose.

On this page

Give your assistant the docs

Point your coding assistant at one of these, depending on how much context it can take:

ResourceWhat it is
/docs/llms.txtA summary of the API and its rules, with a link to every page. Start here
/docs/llms-full.txtEvery docs page in one Markdown file
/docs/<page>.mdAny page as Markdown: add .md to its path, as in /docs/quickstart.md. The overview is /docs/index.md
Any page, asking for MarkdownA request whose Accept header prefers text/markdown, as coding agents send, gets the page's Markdown copy instead of its HTML
/agents/docs.jsonA structured index: every page, section and endpoint, with links
/auth.mdAgent sign-in: how an agent asks for its own access to your account, which you approve. See Connect an agent

Each page also has Copy page for AI in its sidebar, which copies the page's Markdown for pasting into a chat.

You can give your assistant any Railbed address, not only these docs, and it will find its way:

  • An assistant that asks for Markdown gets the page's Markdown copy, and every copy names /docs/llms.txt near its top, so one page leads to the rest.
  • Every page's HTML also carries a short note for AI assistants, following the inline llms.txt proposal. Browsers don't show it; an assistant reading the raw page gets links to the page's Markdown copy and to llms.txt.
  • Dashboard and checkout links (app.railbed.io, pay.railbed.io) draw their pages in JavaScript, so their HTML carries a hidden note pointing to these docs, and both hosts serve an /llms.txt that does too.
A prompt that works well
Read https://railbed.com/docs/llms.txt and the pages it links to that you need.
Then add Railbed card checkout to this app: create a checkout session on the server
when the user clicks Buy, redirect to its url, and fulfil the order from a verified
payment.paid webhook. Use my test key from RAILBED_SECRET_KEY and my webhook secret
from RAILBED_WEBHOOK_SECRET. Deduplicate on the event id.

Rules worth giving an agent

These are the mistakes that matter most in a payments integration. They're in llms.txt too.

  • Call the API only from a server, with the key in an environment variable. There is no publishable key.
  • Fulfil only when a payment is paid, confirmed by a verified webhook or GET /v1/payments/:id. Never from the buyer's return to success_url.
  • Verify webhook signatures against the raw body, and deduplicate on the event id.
  • Send an Idempotency-Key with every create.
  • Treat held as not paid, and expired as possibly paid later.
  • Send the order as order, with items whose total less discount plus shipping and tax equals amount to the cent, and your order id in order.id. On 409 order_paid, don't ask the buyer to pay again.
  • Ship each order once, keyed on its order id, and report it with PATCH /v1/orders/:id.
  • Start in Test mode (rb_test_… keys) and simulate outcomes; no money moves.

Connect an agent to your account

An AI agent can use the Railbed API on your account without a secret key. You approve it once in the dashboard, it gets its own short-lived access, and you can disconnect it at any time. This is agent sign-in, and everything the agent needs to know is at railbed.com/auth.md.

How connecting works

  1. Ask your agent to connect to your Railbed account, and tell it the email address you sign in with. It reads railbed.com/auth.md and follows it.
  2. Your agent gives you a link to approve it. It opens Connect an AI agent on app.railbed.io. Sign in with the same email address you gave the agent. The link works for a few minutes; if it has expired, ask your agent for a new one.
  3. Check the business, give the agent a name you'll recognize, and choose the mode and the access level. Test and Full access are selected to start with.
  4. Choose Connect agent. The page shows Your agent's code. Give it to your agent, in the conversation where you asked it to connect. The code works once, for a few minutes.
  5. The agent finishes connecting and starts using the API. It's listed in Developers under AI agents, in the mode you chose.

Only owners and developers of a business can connect an agent to it, the same people who can create secret keys. If a link has expired or was already used, ask the agent to start again.

The access you choose

ChoiceWhat the agent can do
TestWork with Test data only. Payments are simulated and no money moves, so it's the place to try an agent out
LiveWork with your real payments, orders and customers
Full accessEverything the API allows: create and start checkout sessions, read payments, orders and customers, and update orders
Read onlyLook up payments, checkout sessions, orders and customers. It can't create or change anything

A connection works in one mode, like a secret key. An agent connected in Test can't see Live data. It uses access tokens that last about five minutes and gets new ones itself, so there's no key for you to create, paste or rotate.

Disconnect an agent

In Developers, AI agents lists the agents connected in the current mode, with who approved each one and when it was last used. Choose Disconnect next to an agent and confirm. Its next request is refused. To use it again, it has to ask to connect again, and someone has to approve it.

An agent also loses its access for good when the person who approved it leaves the business, moves to a role that can't manage keys, or has their access disabled. Putting them back doesn't restore it: an owner or developer connects the agent again.

For agent developers

auth.md describes the whole flow, with request templates. WorkOS, which runs Railbed's sign-in, hosts the registration, claim and token endpoints it lists. The API itself is https://pay.railbed.io/v1.

  • Register with the person's email address (service_auth). Anonymous registration isn't offered.
  • Give the person the claim link, wait for the code they read back to you, and complete the claim.
  • Exchange your identity assertion for an access token. Access tokens last about five minutes. Get the next one yourself, as auth.md describes.
  • Call the API with Authorization: Bearer <access token>, the way a server sends a secret key. The token carries the business, the mode and the access level the person chose. Authentication lists each endpoint's scope.
  • On 401 invalid_token, get a new access token. On 401 agent_disconnected, ask the person to connect you again. On 403 insufficient_scope, the person chose Read only: tell them what you need and why.

WebMCP tools

WebMCP lets a web page offer tools to an AI agent working in the visitor's browser, so the agent can act through the page's own logic instead of reading the screen. Railbed's pages offer tools in browsers that support it; elsewhere nothing changes.

On railbed.com and these docs

Every page on railbed.com, including these docs, offers tools for learning about Railbed and building with it. All are read-only except the two that open signup or login.

ToolWhat it does
railbed_statusCurrent service availability, observation times and check coverage; optionally filter by service. It fetches fresh results, not saved browser history. This does not verify a payment or settlement
railbed_docs_searchSearch the developer docs; returns the best matching sections with links
railbed_docs_readA docs page, or one section of it, as Markdown
railbed_api_referenceEvery API endpoint with its method, path and reference link, plus the base URL and the rules for authentication, idempotency, money and errors
railbed_webhook_referenceThe webhook event types, when each is sent, the signature scheme and the retry schedule
railbed_code_samplesThe docs' code examples, filtered by topic and language
railbed_overview, railbed_faq, railbed_search, railbed_read_page, railbed_contactWhat Railbed is, the FAQ, and the company and legal pages
railbed_start_signup, railbed_open_loginTake the visitor to signup (email optionally filled in) or login. Nothing is submitted for them

In the dashboard

When a merchant is signed in, onboarding and the Wallet, Developers, Integrations, Shopify and WooCommerce pages offer tools that work on their account, in the mode the dashboard is in (Test or Live). They run with the merchant's own session, in their browser, so an agent can do only what the merchant could.

ToolPageWhat it does
railbed_onboarding_statusOnboardingWhere setup stands: whether the business name and payout wallet are saved, the main way to sell, and the ways the account can choose, with what each involves
railbed_prepare_sales_channelOnboardingOpen How will you take payments? with one way selected, for the merchant to confirm with Continue. Tools never fill in the payout wallet
railbed_setup_checklistWalletThe Your first payment steps for the merchant's way to sell: each step, whether it's done, where it's done or who can do it, and the optional extras
railbed_developer_statusDevelopersThe mode, the setup steps done so far, and a summary of keys, endpoints and connected AI agents
railbed_list_api_keysDevelopersThe keys, masked (rb_test_••••••••3f9a), with their access level and when each was created and last used
railbed_list_agent_connectionsDevelopersThe AI agents connected in this mode: name, access level, who approved it, and when it connected and was last used
railbed_list_webhook_endpointsDevelopersEndpoints with their addresses, labels, events and latest delivery. Signing secrets are never included
railbed_list_webhook_deliveriesDevelopersAn endpoint's recent deliveries: status, attempts, your server's answer and, if asked, the body sent
railbed_send_test_webhookDevelopersSend a signed test event to an endpoint and report how it answered. Test endpoints take any event type; Live endpoints take ping only
railbed_prepare_api_keyDevelopersOpen Create key with a name filled in. The merchant creates it; the secret is shown only to them
railbed_prepare_webhook_endpointDevelopersOpen Add endpoint with the address, description and events filled in, for the merchant to review and save
railbed_open_webhook_deliveriesDevelopersOpen an endpoint's delivery log, optionally filtered to failed or retrying deliveries, so the merchant can resend
railbed_list_integrationsIntegrationsThe ways to take payments (links, checkouts, the API, store plugins), their status and where to set each up
railbed_list_card_providersIntegrationsThe card providers Railbed routes to, with their status and minimum amounts (in Test mode, the fixed test list)
railbed_shopify_statusShopifyEach connected store's setup steps and the checks behind them, its own Test or Live mode, ad-tracking ids set, failed syncs, and the exact values to paste into Shopify. Never the client secret or tracking tokens
railbed_list_shopify_checkoutsShopifyA store's recent checkouts, newest first: the buyer's email, items, total, payment status, and how far the Shopify draft or order got, with the error when a sync failed. Optionally only failed syncs
railbed_send_shopify_test_eventShopifySend one test event to an ad platform or affiliate postback set up in the Ad tracking card, and report whether it was accepted. It never counts as a sale
railbed_prepare_shopify_storeShopifyOpen Connect a store with the address filled in, for the merchant to confirm
railbed_prepare_shopify_retryShopifyOpen the confirmation to send a checkout whose sync failed to Shopify again
railbed_prepare_shopify_modeShopifyOpen the confirmation to take a store Live or back to Test. Refused, with what's missing, when the store isn't ready
railbed_woocommerce_setupWooCommerceWhere setup stands: the plugin download, the four steps, the store's webhook address and last delivery, and recent WooCommerce orders. Never keys or secrets

Some things are deliberately left to the merchant. Tools never return a secret key or a signing secret, and they never create or revoke keys, roll secrets, remove endpoints or resend real events: those open the dashboard's own dialog for the merchant to confirm, or aren't offered at all.

Updated · This page as Markdown