{"server":"dev.typeship/typeship","count":6,"tools":[{"name":"packages_download","title":"Download a generated package","description":"Download a generated package. Download the complete ZIP referenced by `packages_generate`'s `download.url`. GET /generate/download No credential needed.","input_schema":{"type":"object","required":["token"],"properties":{"token":{"type":"string","example":"parcel_download_example_token_1234567890123","pattern":"^[A-Za-z0-9_-]{43}$","maxLength":43,"minLength":43,"description":"Private download token from download.url in the generation result."},"fields":{"type":"array","items":{"type":"string"},"description":"Result keys to keep, as dotted paths (e.g. [\"id\",\"name\"]). Omit for the whole result. Keeps responses small."}}},"output_schema":null,"annotations":{"title":"Download a generated package","readOnlyHint":true,"openWorldHint":false,"idempotentHint":true,"destructiveHint":false},"source":"probe","observed_at":"2026-10-20T03:03:22.024Z"},{"name":"packages_generate","title":"Generate a package","description":"Generate a package. Returns one generated package without creating a Project. POST /generate Credential optional.","input_schema":{"type":"object","required":["spec","target"],"properties":{"spec":{"anyOf":[{"type":"object","required":["url"],"properties":{"url":{"type":"string","format":"uri","pattern":"^https?://","description":"URL of an OpenAPI document, a GraphQL SDL file, or a GraphQL\nendpoint (introspected automatically). Fetched server-side."},"headers":{"type":"object","description":"Request headers for a protected URL. Sent on the document GET and GraphQL introspection POST, never returned or retained by one-shot generation.","additionalProperties":{"type":"string","maxLength":4096}}},"additionalProperties":false},{"type":"object","required":["inline"],"properties":{"inline":{"type":"string","description":"Raw Spec text (OpenAPI JSON/YAML or GraphQL SDL). Up to 4 MB, because the request body carries it; send Specs up to 10 MB with `url`."}},"additionalProperties":false}],"example":{"url":"https://typeship.dev/examples/petstore/openapi.yaml"},"description":"A Spec for one-shot generation, provided as exactly one URL or inline entrypoint."},"config":{"type":"object","properties":{"cli":{"type":"object","properties":{"mcp_url":{"type":["string","null"],"description":"Fallback MCP endpoint used by the generated CLI when the Project has no Typeship-hosted MCP endpoint. A hosted endpoint takes precedence over this URL."},"skills_repo":{"type":["string","null"],"description":"Repository in owner/name format that the generated CLI's init command offers for skill installation."},"support_url":{"type":["string","null"],"description":"Where the generated CLI's feedback command sends users. GitHub issues/new URLs get a prefilled title and environment details."},"command_name":{"type":["string","null"],"description":"Command users run, independent of how the CLI is distributed."},"changelog_url":{"type":["string","null"],"description":"Public HTTP(S) URL read by the optional changelog command in generated CLIs. Supports UTF-8 Markdown, plain text, and static HTML; embedded credentials are not allowed. Omit or clear to disable, then regenerate."}},"description":"How the generated CLI behaves. Part of Config.","additionalProperties":false},"mcp":{"type":"object","properties":{"access":{"type":"object","required":["issuer","resource"],"properties":{"issuer":{"type":"string","format":"uri","description":"Exact issuer allowed to sign MCP connection tokens."},"scopes":{"type":"array","items":{"type":"string"},"maxItems":20,"description":"Minimum scopes required to connect to the self-hosted MCP server."},"jwks_url":{"type":"string","format":"uri","description":"Public signing-key endpoint. Omit to discover it from the issuer."},"resource":{"type":"string","format":"uri","description":"Canonical public URL of the self-hosted MCP endpoint that connection tokens must target."}},"description":"Authorization for callers connecting to a generated MCP server deployed over HTTP. The hosting application resolves upstream API credentials separately at runtime. This setting does not apply to the Typeship-hosted endpoint.","additionalProperties":false},"tool_mode":{"enum":["auto","operations","meta"],"type":"string","description":"MCP tool shape. meta collapses per-operation tools into search_docs, read_docs, and execute so large APIs don't flood an agent's context window. Auto considers the serialized tool schemas, switching near 10k tokens or above 100 operations."},"instructions":{"type":["string","null"],"maxLength":2000,"description":"Guidance appended to the MCP server's instructions, which agents read once when they connect (server/discover): what to call first, conventions the spec does not state, what not to do. Carried by the package's server and the hosted endpoint alike."},"registry_name":{"type":["string","null"],"description":"Stable official MCP registry name, independent of the server runtime."},"tool_descriptions":{"type":"object","description":"Hand-written MCP tool descriptions keyed by operationId or \"METHOD /path\". Each replaces the text typeship derives for that operation (summary, first sentence, method and path, deprecation and auth notes). For flows the spec cannot describe, such as a multi-step upload. Keys that match no operation are reported as generation warnings.","additionalProperties":{"type":"string","maxLength":600}},"reference_resolvers":{"type":"object","description":"Exact name-or-ID resolver overrides keyed first by the target operationId or \"METHOD /path\", then by its wire argument name. A resolver names one read collection operation plus 1-4 item fields to match case-insensitively; false opts that argument out of strict inference.","additionalProperties":{"type":"object","additionalProperties":{"anyOf":[{"enum":[false],"type":"boolean"},{"type":"object"}]}}}},"description":"How generated MCP servers and the Typeship-hosted endpoint behave. Part of Config.","additionalProperties":false},"auth":{"type":"object","properties":{"approval_url":{"type":["string","null"],"format":"uri","description":"Base URL of a custom browser-approval backend implementing the start, status, and revoke contract. Used only when OAuth is not configured."},"environments":{"type":["object","null"],"description":"Authentication selections keyed by generated API environment name.","additionalProperties":{"type":"object","properties":{"scopes":{"type":["array","null"],"maxItems":20},"audience":{"type":["string","null"]},"resource":{"type":["string","null"],"format":"uri"},"oauth_application":{"type":["string","null"],"pattern":"^[a-z][a-z0-9_-]{0,63}$","maxLength":64}},"description":"OAuth application and request-value overrides for one named API environment.","additionalProperties":false}},"oauth_server":{"anyOf":[{"type":"object","properties":{"issuer":{"type":["string","null"],"format":"uri","description":"Exact authorization-server issuer, including any tenant path."},"scopes":{"type":["array","null"],"maxItems":20,"description":"Default scopes requested during login."},"audience":{"type":["string","null"],"description":"Default audience included in authorization and token requests."},"resource":{"type":["string","null"],"format":"uri","description":"Protected API resource included in authorization and token requests."},"token_url":{"type":["string","null"],"format":"uri","description":"Token endpoint override."},"discovery_url":{"type":["string","null"],"format":"uri","description":"Exact metadata URL when it cannot be derived from the issuer."},"authorization_url":{"type":["string","null"],"format":"uri","description":"Authorization endpoint override."},"device_authorization_url":{"type":["string","null"],"format":"uri","description":"Device-authorization endpoint override."}},"description":"Authorization-server metadata used by generated OAuth flows. Secrets and runtime credentials are never accepted here.","additionalProperties":false},{"type":"null"}]},"oauth_application":{"type":["string","null"],"pattern":"^[a-z][a-z0-9_-]{0,63}$","maxLength":64,"description":"Default OAuth application used by generated products."},"oauth_applications":{"type":["object","null"],"description":"OAuth applications keyed by a stable name.","additionalProperties":{"type":"object","required":["client_id"],"properties":{"client_id":{"type":"string","maxLength":200,"minLength":1,"description":"OAuth client identifier."},"login_method":{"enum":["browser","device",null],"type":["string","null"],"description":"Interactive login method. Browser login uses Authorization Code with PKCE."},"redirect_uri":{"type":["string","null"],"format":"uri","description":"Loopback callback URL for browser login."},"client_auth_method":{"enum":["post","basic",null],"type":["string","null"],"description":"How a runtime-supplied client secret is sent for machine grants."},"organization_parameter":{"enum":["organization","organization_id",null],"type":["string","null"],"description":"Provider parameter used to request an organization during browser login."}},"description":"OAuth application available to generated products. Public clients support interactive login; confidential clients support runtime-supplied machine credentials. Client secrets are never stored.","additionalProperties":false}},"credential_variables":{"type":["object","null"],"description":"Environment variables the generated CLI, MCP server, and SDK environment fallbacks read, keyed by security scheme name. A string names the token or key variable; a Basic scheme takes { username, password }. Wins over the scheme's x-typeship-env extension. Without either, names derive from the package and scheme.","additionalProperties":{"anyOf":[{"type":"string","pattern":"^[A-Z_][A-Z0-9_]{0,127}$"},{"type":"object"}]}},"credential_parameters":{"type":["object","null"],"description":"Whether a parameter carries the operation's credential, keyed by operationId, \"METHOD /path\", or \"*\" for every operation, then by the parameter's wire name. true leaves the parameter out of generated signatures, CLI flags, and MCP tool input, because the configured credential already reaches the API; false keeps it. Wins over the parameter's x-typeship-credential extension and the generator's inference.","additionalProperties":{"type":"object","additionalProperties":{"type":"boolean"}}},"identity_verification":{"anyOf":[{"type":"object","example":{"account_field":"/account_id","subject_field":"/id","organization_field":"/organization_id"},"properties":{"operation":{"type":["string","null"],"pattern":"^[\\w$]+\\.[\\w$]+$","maxLength":2000,"description":"resource.method of a safe identity read with no required arguments."},"account_field":{"type":["string","null"],"example":"/account_id","pattern":"^/(?:[^~\\x00-\\x1f\\x7f]|~[01])*$","maxLength":512,"description":"JSON Pointer to the customer account ID."},"subject_field":{"type":["string","null"],"example":"/id","pattern":"^/(?:[^~\\x00-\\x1f\\x7f]|~[01])*$","maxLength":512,"description":"JSON Pointer to the stable caller ID in the identity response."},"organization_field":{"type":["string","null"],"example":"/organization_id","pattern":"^/(?:[^~\\x00-\\x1f\\x7f]|~[01])*$","maxLength":512,"description":"JSON Pointer to the customer organization ID."}},"description":"Authenticated identity read used to verify a login before it is saved. Operation is auto-detected when omitted or null. At least one of subject_field, account_field, or organization_field must be a non-null JSON Pointer. Null clears an individual mapping while another remains. Set identity_verification itself to null to remove the whole policy.","additionalProperties":false},{"type":"null"}]}},"description":"Public authentication defaults for generated clients and tools. Stored Projects own the OAuth server, application catalog, and identity policy; one-shot generation accepts the same shape for one run. Runtime credentials and client secrets are never accepted.","additionalProperties":false},"readme":{"type":"object","properties":{"quickstart_operation":{"type":["string","null"],"maxLength":500,"description":"operationId or \"METHOD /path\" to feature as the README's first API call. It must be present in the generated package and callable with no required input beyond path placeholders. Missing or unsuitable choices produce a warning and use the automatic example."}},"description":"Generated README behavior. Part of Config.","additionalProperties":false},"exclude":{"type":"array","items":{"type":"string","maxLength":500,"minLength":1},"maxItems":100,"description":"Leave out matching operations (tag names or path globs, as for `include`). Wins over `include`."},"globals":{"type":"array","items":{"type":"string"},"maxItems":20,"description":"Wire names of query/header parameters that become settable once on the generated client and auto-apply to every operation that accepts them; per-call values win. Names that match nothing are reported as generation warnings."},"graphql":{"type":"object","properties":{"auth":{"enum":["bearer","basic","basic_api_key","api_key","api_key_or_bearer","none"],"type":"string","default":"bearer","description":"How requests authenticate. bearer sends Authorization: Bearer; basic is for key-pair APIs (public key as username, private key as password); basic_api_key sends one API key as the Basic-auth username with an empty password; api_key sends a header named by api_key_header; api_key_or_bearer sends a key in api_key_header (Authorization for a raw key) and also accepts an OAuth access token as Authorization: Bearer; none generates no auth option."},"title":{"type":"string","maxLength":80,"description":"The API's name; drives the package and client names (\"Acme\" gives acme and AcmeClient). Defaults to a name derived from the endpoint's host."},"scalars":{"type":"object","description":"JSON representation of each custom scalar, keyed by GraphQL scalar name. Unmapped scalars generate as the language's untyped JSON value and produce a warning. Unmatched keys warn.","additionalProperties":{"enum":["string","integer","number","boolean","json"],"type":"string"}},"endpoint":{"type":"string","format":"uri","description":"The URL every request is POSTed to; the generated client's default baseUrl. Defaults to the URL the schema was fetched from. Without either, baseUrl is a required client option."},"page_size":{"type":"integer","default":100,"maximum":1000,"minimum":1,"description":"Page size a paginated connection call sends as first when the caller passes neither first nor last. Relay servers such as GitHub reject a connection query without one. Ignored for a connection whose first argument has a schema default."},"error_types":{"type":"array","items":{"type":"string","pattern":"^[_A-Za-z][_0-9A-Za-z]*$"},"maxItems":100,"description":"Object types that report a failure when an operation's union or interface result resolves to them (errors returned as data). Replaces the default, which is every member whose name ends in Error when the result can also be something else. An empty array treats no result as a failure. Names that are not object types in the schema produce a generation warning.","uniqueItems":true},"environments":{"type":"array","items":{"type":"object","required":["name","url"],"properties":{"url":{"type":"string","format":"uri"},"name":{"type":"string"}},"additionalProperties":false},"maxItems":10,"description":"Named endpoints (sandbox, production). Each becomes a client environment; the first is the default unless endpoint is set."},"api_key_header":{"type":"string","description":"Header carrying the key when auth is api_key or api_key_or_bearer. Required for those modes; Typeship does not invent a vendor-specific header name."}},"description":"What a GraphQL schema cannot say about itself. Ignored for OpenAPI specs.","additionalProperties":false},"include":{"type":"array","items":{"type":"string","maxLength":500,"minLength":1},"maxItems":100,"description":"Generate only matching operations: tag names, or path globs such as `/zones/**` (`*` is one path segment, `**` any number), optionally after an HTTP method (`DELETE /zones/*`). Applied before the Spec size limit, with components nothing references any more removed, so a one-shot run can generate part of a Spec up to 64 MB. Selectors that match nothing are reported as generation warnings."},"package":{"type":"object","properties":{"title":{"type":["string","null"],"maxLength":100,"description":"The API's name as generated READMEs, AGENTS.md, package descriptions, and help text show it, such as \"Parcel\" for a Spec titled \"Parcel - Public API\". Display only: package, client, and command names still come from the Spec. Defaults to the Spec title with common noise removed (\"Parcel - API\" shows as Parcel)."},"license":{"type":["string","null"],"maxLength":200,"description":"SPDX identifier written into registry metadata. Defaults to info.license."},"homepage":{"type":["string","null"],"description":"Homepage written into registry metadata."},"copyright":{"type":["string","null"],"maxLength":200,"description":"Copyright line used in generated license files."},"license_text":{"type":["string","null"],"maxLength":100000,"description":"Exact LICENSE file contents. Supply this for licences the engine does not build in; MIT is built in when copyright is also set."},"go_package_name":{"type":["string","null"],"description":"Go identifier when the destination repository name is unsuitable."}},"description":"Published-package metadata the API spec does not own. Repository is derived from each destination.","additionalProperties":false},"retries":{"type":"object","properties":{"disabled":{"type":"boolean","description":"Shorthand for max_retries 0."},"statuses":{"type":"array","items":{"type":"integer"},"maxItems":20,"description":"Replaces the default retryable set (408, 429, 500, 502, 503, 504)."},"operations":{"type":"object","additionalProperties":{"description":"RetryTuning (recursive)"}},"max_retries":{"type":"integer","maximum":10,"minimum":0},"max_delay_ms":{"type":"integer","minimum":1},"initial_delay_ms":{"type":"integer","minimum":1},"retry_non_idempotent":{"type":"boolean","description":"Also retry non-idempotent methods (POST/PATCH)."}},"description":"Retry behavior. Top-level fields adjust every operation; operations maps operationId or \"METHOD /path\" keys to per-operation overrides.","additionalProperties":false},"docs_url":{"type":["string","null"],"format":"uri","description":"The API's documentation site. Read through its llms.txt by the generated CLI's docs command, the MCP server's docs tools, and the package's AGENTS.md. Defaults to the Spec's externalDocs URL."},"pagination":{"type":"object","description":"Per-operation pagination control, keyed by operationId or \"METHOD /path\". Unmatched keys are reported as generation warnings.","additionalProperties":{"anyOf":[{"type":"object","required":["items_field"],"properties":{"style":{"enum":["cursor","cursor_from_last_id","page","offset"],"type":"string","default":"cursor"},"id_field":{"type":"string"},"page_param":{"type":"string"},"items_field":{"type":"string","description":"Response field holding the item array."},"limit_param":{"type":"string"},"cursor_param":{"type":"string"},"offset_param":{"type":"string"},"has_more_field":{"type":"string"},"next_cursor_field":{"type":"string"}},"additionalProperties":false},{"type":"boolean","description":"false disables pagination detection for the operation."}]}},"docs_index_url":{"type":["string","null"],"format":"uri","description":"Exact llms.txt URL when the documentation site does not publish it at docs_url + /llms.txt."}},"description":"Everything Typeship needs beyond the Spec, in one object: generation customization (globals, retries, pagination, readme) and how the generated tooling behaves (cli, mcp, package, docs_url). Plain configuration. Typeship never requires vendor extensions inside the Spec itself. One-shot generation also accepts GraphQL settings here; stored projects keep those settings on their Spec.","additionalProperties":false},"fields":{"type":"array","items":{"type":"string"},"description":"Result keys to keep, as dotted paths (e.g. [\"id\",\"name\"]). Omit for the whole result. Keeps responses small."},"target":{"type":"object","example":{"type":"cli"},"required":["type"],"properties":{"type":{"enum":["cli","mcp","typescript_sdk","python_sdk","go_sdk"],"type":"string","description":"Package type selected by a Target. Several Targets may use the same type. The CLI is a self-contained command-line package and requires no SDK Target."}},"description":"One-shot generator descriptor; no persisted Target is created.","additionalProperties":false},"module_path":{"type":"string","description":"Go module path override for the generated artifact's own module. Valid only for the Go SDK and CLI Targets. Projects derive this from the Go destination repository by default."},"package_name":{"type":"string","description":"npm package or Python distribution override. Valid only for the TypeScript and Python SDK targets."},"Idempotency-Key":{"type":"string","pattern":"^[!-~]+$","maxLength":255,"minLength":1,"description":"Identifies one logical write for 24 hours. The key is scoped to the authenticated organization and operation; generation without an organization uses a hashed network identity. Retrying the same method, path, query, If-Match header, and JSON body replays the original response. Reusing the key with changed intent returns 409. After expiry the key starts a new write."}}},"output_schema":{"type":"object","properties":{"claim":{"anyOf":[{"type":"null"},{"type":"object","properties":{"url":{"type":"string"},"expires_at":{"type":"string","format":"date-time"}}}],"description":"Anonymous, URL-sourced generations only. A link a signed-in person can open to turn this run into a project in their organization (same Spec, Target, and config). Lasts seven days. Null for inline Specs; absent on keyed calls."},"files":{"type":"array","items":{"type":"object","properties":{"mode":{"enum":["100644","100755"],"type":"string","default":"100644","description":"Exact Git file mode. Omitted one-shot outputs are regular files."},"path":{"type":"string","description":"Repo-relative path inside the generated package."},"content":{"type":"string"}}}},"object":{"type":"string","const":"package","description":"One generated package. It has no ID: download it with download.url before download.expires_at."},"coverage":{"type":"object","properties":{"total":{"type":"integer","minimum":0},"reason":{"enum":["anonymous","free_plan"],"type":"string","description":"Present when a plan or anonymous limit omitted operations."},"omitted":{"type":"integer","minimum":0},"generated":{"type":"integer","minimum":0},"signup_url":{"type":"string","format":"uri","description":"Sign-up link for anonymous capped runs."},"upgrade_url":{"type":"string","format":"uri","description":"Upgrade link for capped signed-in runs."},"omitted_operations":{"type":"array","items":{"type":"string"},"description":"METHOD/path identities of operations omitted from the package."}}},"download":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"sha256":{"type":"string","pattern":"^[a-f0-9]{64}$","description":"SHA-256 of the downloaded ZIP bytes."},"expires_at":{"type":"string","format":"date-time"},"file_count":{"type":"integer","minimum":0},"size_bytes":{"type":"integer","minimum":0}},"description":"Complete package ZIP from this exact result. Present on requests with Idempotency-Key, including automatic CLI, MCP, and SDK keys. Download before expires_at, verify sha256, and extract into an empty directory. Anyone with this URL can download the package; keep it private. Reading does not generate again or extend the 24-hour replay window."},"warnings":{"type":"array","items":{"type":"object","properties":{"code":{"type":"string","description":"Stable machine-readable warning code."},"message":{"type":"string","description":"Human-readable explanation."},"operation":{"type":"string","description":"METHOD/path of the affected operation, when applicable."}}}},"request_id":{"type":"string","pattern":"^req_[a-z0-9]{16}$","examples":["req_3k8m1v6q9p2d7h4c"],"description":"Server-generated identifier used to correlate this response with Typeship logs."}}},"annotations":{"title":"Generate a package","readOnlyHint":false,"openWorldHint":false,"idempotentHint":false,"destructiveHint":false},"source":"probe","observed_at":"2026-10-20T03:03:22.024Z"},{"name":"query_docs","title":"Grep the Typeship docs","description":"Search every Typeship docs page and both references with a regular expression (case-insensitive) and get matching lines with their page and a little context. Use when search_docs is too coarse or you need every occurrence of a term, flag, or error message. GET llms-full.txt","input_schema":{"type":"object","required":["pattern"],"properties":{"limit":{"type":"integer","maximum":100,"minimum":1,"description":"Maximum matches to return (1 to 100). Default 30."},"context":{"type":"integer","maximum":5,"minimum":0,"description":"Lines of context around each match (0 to 5). Default 1."},"pattern":{"type":"string","description":"A JavaScript regular expression, matched case-insensitively line by line."}}},"output_schema":null,"annotations":{"readOnlyHint":true,"openWorldHint":false,"idempotentHint":true},"source":"probe","observed_at":"2026-10-20T03:03:22.024Z"},{"name":"read_docs","title":null,"description":"Read a documentation page: an operation reference (a tool name, or dotted \"resource.method\"), a named input type such as a filter, or a docs-site guide page by name or URL. Long pages come in parts; pass the offset a part ends with to continue.","input_schema":{"type":"object","required":["page"],"properties":{"page":{"type":"string"},"path":{"type":"string","description":"A dotted argument path within the operation or type, e.g. \"filter.team.key\": that field's type, with its named type's fields or values"},"offset":{"type":"integer","minimum":0,"description":"Character offset to continue a long page from, default 0"},"schema":{"type":"boolean","description":"Also return the operation's complete input and output JSON Schemas, default false"}}},"output_schema":null,"annotations":{"readOnlyHint":true,"openWorldHint":false,"idempotentHint":true,"destructiveHint":false},"source":"probe","observed_at":"2026-10-20T03:03:22.024Z"},{"name":"search_docs","title":null,"description":"Search this API's reference (operations, parameters) and, when a docs site is configured, its guides. Best matches first; page through with page.","input_schema":{"type":"object","required":["query"],"properties":{"page":{"type":"integer","minimum":1,"description":"Page of reference matches (10 per page), default 1"},"query":{"type":"string","description":"The task in a few words, e.g. \"assign issue\" or \"list calls\""}}},"output_schema":null,"annotations":{"readOnlyHint":true,"openWorldHint":false,"idempotentHint":true,"destructiveHint":false},"source":"probe","observed_at":"2026-10-20T03:03:22.024Z"},{"name":"submit_docs_feedback","title":"Report a docs problem","description":"Tell the Typeship team a docs page is wrong, missing, or unclear: the page (URL or title) and what you expected. Read by people; no reply comes back through this tool. POST docs feedback","input_schema":{"type":"object","required":["page","message"],"properties":{"page":{"type":"string","description":"The page URL or title."},"message":{"type":"string","description":"What is wrong or missing, in one to five sentences."}}},"output_schema":null,"annotations":{"readOnlyHint":false,"openWorldHint":false,"idempotentHint":false},"source":"probe","observed_at":"2026-10-20T03:03:22.024Z"}],"next_cursor":null,"next_actions":[{"action":"get_connection","description":"Connection block to call these tools","href":"/v1/servers/dev.typeship%2Ftypeship/connection?target=mcpServers","arguments":{"name":"dev.typeship/typeship","target":"mcpServers"}},{"action":"get_server","description":"Full descriptor with trust and connectability","href":"/v1/servers/dev.typeship%2Ftypeship","arguments":{"name":"dev.typeship/typeship"}}]}