Skip to main content
Glama
railyard-sh

Railyard MCP Server

by railyard-sh

Create project

create_project

Create a new empty project in an organization and return its ID and URL slug. Fails if the name is already taken.

Instructions

Create a new, empty project with the given name and save it to the organisation. Returns the new project's id and URL slug. Fails with a conflict if the name is already taken in the org. (Write: requires the token user to have an editor/owner role in the org.)

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
orgNoOrganisation to target: an org id (org_…), slug, or name. Defaults to RAILYARD_ORG, or to your first (personal) org if that is unset. Use list_orgs to see the options.
nameYesName for the new project.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.2.1

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate a non-read-only, non-destructive operation. The description adds valuable behavior beyond that: it requires an editor/owner role and fails with a conflict on duplicate names. These details help the agent anticipate side effects and error conditions, though it does not elaborate on the full side-effect scope (e.g., impact on existing data).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with no fluff. The core action is front-loaded, followed by return value, failure condition, and a parenthetical auth note. Every sentence earns its place, and the structure is easy to scan.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With a simple 2-parameter schema (1 required), full schema coverage, and annotations covering the safety profile, the description is mostly complete. It specifies the return value (id and URL slug), the conflict failure, and the auth requirement. It does not mention pagination or advanced options, but none are needed for a create operation. It could note that check_project_name exists for pre-validation, but that is optional.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and both parameters (org and name) are fully documented in the schema with defaults and meanings. The description mentions 'given name' but adds no extra semantics beyond what the schema already provides. Baseline 3 is appropriate since the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb and resource ('Create a new, empty project') and clearly differentiates from siblings like update_project, rename_project, and delete_project. It also states the scope ('save it to the organisation'), so an agent can immediately understand the tool's function.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context: it returns the new project's id and URL slug, fails with a conflict if the name is taken, and notes the required role. However, it does not explicitly name alternatives (e.g., check_project_name for pre-validation) or state when not to use it, so it falls short of an explicit when/when-not clause.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.