{"name":"dev.typeship/typeship","slug":"typeship","title":"Typeship","description":"Generate a typed SDK, CLI, and MCP server from any OpenAPI or GraphQL spec, and keep them current.","url":"https://mcp.market/server/typeship","rating":null,"grade":"A","score":98,"certified":false,"status":"active","category":"other","tags":[],"presence":{"score":32,"stars":0,"forks":0,"downloads_week":69,"last_push_at":"2026-10-13T23:12:20.000Z","license":"MIT"},"uptime":{"percent":100,"checks":28,"ok":28,"last_checked_at":"2026-11-05T16:25:47.581Z","last_ok_at":"2026-11-05T16:25:47.581Z","latency_ms":170},"claimed":false,"transport":"mixed","callable_via_gateway":true,"default_price_micros":0,"repository":"https://github.com/typeship-ax/mcp","website":"https://typeship.dev","version":"0.23.0","remotes":[{"type":"streamable-http","url":"https://typeship.dev/mcp"},{"type":"streamable-http","url":"https://typeship.dev/mcp/public"},{"type":"streamable-http","url":"https://typeship.dev/mcp/readonly"}],"packages":[{"registryType":"npm","registryBaseUrl":"https://registry.npmjs.org","identifier":"@typeship-ax/mcp","version":"0.23.0","runtimeHint":"npx","transport":{"type":"stdio"},"environmentVariables":[{"description":"API key from the Typeship console (ak_...).","isSecret":true,"name":"TYPESHIP_TOKEN"}]}],"tools":[{"name":"packages_download","description":"Download a generated package. Download the complete ZIP referenced by `packages_generate`'s `download.url`. GET /generate/download No credential needed.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"token":{"minLength":43,"maxLength":43,"pattern":"^[A-Za-z0-9_-]{43}$","type":"string","example":"parcel_download_example_token_1234567890123","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."}},"required":["token"]}},{"name":"packages_generate","description":"Generate a package. Returns one generated package without creating a Project. POST /generate Credential optional.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"Idempotency-Key":{"minLength":1,"maxLength":255,"pattern":"^[!-~]+$","type":"string","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."},"spec":{"description":"A Spec for one-shot generation, provided as exactly one URL or inline entrypoint.","anyOf":[{"properties":{"url":{"format":"uri","description":"URL of an OpenAPI document, a GraphQL SDL file, or a GraphQL\nendpoint (introspected automatically). Fetched server-side.","pattern":"^https?://","type":"string"},"headers":{"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":{"maxLength":4096,"type":"string"},"type":"object"}},"required":["url"],"additionalProperties":false,"type":"object"},{"properties":{"inline":{"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`.","type":"string"}},"required":["inline"],"additionalProperties":false,"type":"object"}],"example":{"url":"https://typeship.dev/examples/petstore/openapi.yaml"}},"target":{"description":"One-shot generator descriptor; no persisted Target is created.","properties":{"type":{"enum":["cli","mcp","typescript_sdk","python_sdk","go_sdk"],"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.","type":"string"}},"required":["type"],"additionalProperties":false,"type":"object","example":{"type":"cli"}},"package_name":{"description":"npm package or Python distribution override. Valid only for the TypeScript and Python SDK targets.","type":"string"},"module_path":{"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.","type":"string"},"config":{"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.","properties":{"globals":{"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.","maxItems":20,"items":{"type":"string"},"type":"array"},"include":{"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.","maxItems":100,"items":{"minLength":1,"maxLength":500,"type":"string"},"type":"array"},"exclude":{"description":"Leave out matching operations (tag names or path globs, as for `include`). Wins over `include`.","maxItems":100,"items":{"minLength":1,"maxLength":500,"type":"string"},"type":"array"},"retries":{"description":"Retry behavior. Top-level fields adjust every operation; operations maps operationId or \"METHOD /path\" keys to per-operation overrides.","properties":{"max_retries":{"minimum":0,"maximum":10,"type":"integer"},"statuses":{"description":"Replaces the default retryable set (408, 429, 500, 502, 503, 504).","maxItems":20,"items":{"type":"integer"},"type":"array"},"initial_delay_ms":{"minimum":1,"type":"integer"},"max_delay_ms":{"minimum":1,"type":"integer"},"retry_non_idempotent":{"description":"Also retry non-idempotent methods (POST/PATCH).","type":"boolean"},"disabled":{"description":"Shorthand for max_retries 0.","type":"boolean"},"operations":{"additionalProperties":{"description":"RetryTuning (recursive)"},"type":"object"}},"additionalProperties":false,"type":"object"},"pagination":{"description":"Per-operation pagination control, keyed by operationId or \"METHOD /path\". Unmatched keys are reported as generation warnings.","additionalProperties":{"anyOf":[{"properties":{"style":{"enum":["cursor","cursor_from_last_id","page","offset"],"default":"cursor","type":"string"},"items_field":{"description":"Response field holding the item array.","type":"string"},"cursor_param":{"type":"string"},"next_cursor_field":{"type":"string"},"has_more_field":{"type":"string"},"id_field":{"type":"string"},"page_param":{"type":"string"},"offset_param":{"type":"string"},"limit_param":{"type":"string"}},"required":["items_field"],"additionalProperties":false,"type":"object"},{"description":"false disables pagination detection for the operation.","type":"boolean"}]},"type":"object"},"graphql":{"description":"What a GraphQL schema cannot say about itself. Ignored for OpenAPI specs.","properties":{"endpoint":{"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.","type":"string"},"environments":{"description":"Named endpoints (sandbox, production). Each becomes a client environment; the first is the default unless endpoint is set.","maxItems":10,"items":{"properties":{"name":{"type":"string"},"url":{"format":"uri","type":"string"}},"required":["name","url"],"additionalProperties":false,"type":"object"},"type":"array"},"auth":{"enum":["bearer","basic","basic_api_key","api_key","api_key_or_bearer","none"],"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.","default":"bearer","type":"string"},"api_key_header":{"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.","type":"string"},"title":{"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.","maxLength":80,"type":"string"},"scalars":{"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"},"type":"object"},"error_types":{"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.","maxItems":100,"uniqueItems":true,"items":{"pattern":"^[_A-Za-z][_0-9A-Za-z]*$","type":"string"},"type":"array"},"page_size":{"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.","default":100,"minimum":1,"maximum":1000,"type":"integer"}},"additionalProperties":false,"type":"object"},"auth":{"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.","properties":{"oauth_server":{"anyOf":[{"description":"Authorization-server metadata used by generated OAuth flows. Secrets and runtime credentials are never accepted here.","properties":{"issuer":{"format":"uri","description":"Exact authorization-server issuer, including any tenant path.","type":["string","null"]},"discovery_url":{"format":"uri","description":"Exact metadata URL when it cannot be derived from the issuer.","type":["string","null"]},"authorization_url":{"format":"uri","description":"Authorization endpoint override.","type":["string","null"]},"token_url":{"format":"uri","description":"Token endpoint override.","type":["string","null"]},"device_authorization_url":{"format":"uri","description":"Device-authorization endpoint override.","type":["string","null"]},"scopes":{"description":"Default scopes requested during login.","maxItems":20,"type":["array","null"]},"audience":{"description":"Default audience included in authorization and token requests.","type":["string","null"]},"resource":{"format":"uri","description":"Protected API resource included in authorization and token requests.","type":["string","null"]}},"additionalProperties":false,"type":"object"},{"type":"null"}]},"oauth_applications":{"description":"OAuth applications keyed by a stable name.","additionalProperties":{"description":"OAuth application available to generated products. Public clients support interactive login; confidential clients support runtime-supplied machine credentials. Client secrets are never stored.","properties":{"client_id":{"description":"OAuth client identifier.","minLength":1,"maxLength":200,"type":"string"},"login_method":{"enum":["browser","device",null],"description":"Interactive login method. Browser login uses Authorization Code with PKCE.","type":["string","null"]},"client_auth_method":{"enum":["post","basic",null],"description":"How a runtime-supplied client secret is sent for machine grants.","type":["string","null"]},"redirect_uri":{"format":"uri","description":"Loopback callback URL for browser login.","type":["string","null"]},"organization_parameter":{"enum":["organization","organization_id",null],"description":"Provider parameter used to request an organization during browser login.","type":["string","null"]}},"required":["client_id"],"additionalProperties":false,"type":"object"},"type":["object","null"]},"oauth_application":{"description":"Default OAuth application used by generated products.","maxLength":64,"pattern":"^[a-z][a-z0-9_-]{0,63}$","type":["string","null"]},"identity_verification":{"anyOf":[{"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.","example":{"subject_field":"/id","account_field":"/account_id","organization_field":"/organization_id"},"properties":{"operation":{"description":"resource.method of a safe identity read with no required arguments.","maxLength":2000,"pattern":"^[\\w$]+\\.[\\w$]+$","type":["string","null"]},"subject_field":{"description":"JSON Pointer to the stable caller ID in the identity response.","example":"/id","maxLength":512,"pattern":"^/(?:[^~\\x00-\\x1f\\x7f]|~[01])*$","type":["string","null"]},"account_field":{"description":"JSON Pointer to the customer account ID.","example":"/account_id","maxLength":512,"pattern":"^/(?:[^~\\x00-\\x1f\\x7f]|~[01])*$","type":["string","null"]},"organization_field":{"description":"JSON Pointer to the customer organization ID.","example":"/organization_id","maxLength":512,"pattern":"^/(?:[^~\\x00-\\x1f\\x7f]|~[01])*$","type":["string","null"]}},"additionalProperties":false,"type":"object"},{"type":"null"}]},"approval_url":{"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.","type":["string","null"]},"environments":{"description":"Authentication selections keyed by generated API environment name.","additionalProperties":{"description":"OAuth application and request-value overrides for one named API environment.","properties":{"oauth_application":{"maxLength":64,"pattern":"^[a-z][a-z0-9_-]{0,63}$","type":["string","null"]},"scopes":{"maxItems":20,"type":["array","null"]},"audience":{"type":["string","null"]},"resource":{"format":"uri","type":["string","null"]}},"additionalProperties":false,"type":"object"},"type":["object","null"]},"credential_variables":{"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":[{"pattern":"^[A-Z_][A-Z0-9_]{0,127}$","type":"string"},{"type":"object"}]},"type":["object","null"]},"credential_parameters":{"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":{"additionalProperties":{"type":"boolean"},"type":"object"},"type":["object","null"]}},"additionalProperties":false,"type":"object"},"cli":{"description":"How the generated CLI behaves. Part of Config.","properties":{"command_name":{"description":"Command users run, independent of how the CLI is distributed.","type":["string","null"]},"changelog_url":{"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.","type":["string","null"]},"support_url":{"description":"Where the generated CLI's feedback command sends users. GitHub issues/new URLs get a prefilled title and environment details.","type":["string","null"]},"mcp_url":{"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.","type":["string","null"]},"skills_repo":{"description":"Repository in owner/name format that the generated CLI's init command offers for skill installation.","type":["string","null"]}},"additionalProperties":false,"type":"object"},"mcp":{"description":"How generated MCP servers and the Typeship-hosted endpoint behave. Part of Config.","properties":{"registry_name":{"description":"Stable official MCP registry name, independent of the server runtime.","type":["string","null"]},"access":{"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.","properties":{"issuer":{"format":"uri","description":"Exact issuer allowed to sign MCP connection tokens.","type":"string"},"resource":{"format":"uri","description":"Canonical public URL of the self-hosted MCP endpoint that connection tokens must target.","type":"string"},"jwks_url":{"format":"uri","description":"Public signing-key endpoint. Omit to discover it from the issuer.","type":"string"},"scopes":{"description":"Minimum scopes required to connect to the self-hosted MCP server.","maxItems":20,"items":{"type":"string"},"type":"array"}},"required":["issuer","resource"],"additionalProperties":false,"type":"object"},"tool_mode":{"enum":["auto","operations","meta"],"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.","type":"string"},"instructions":{"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.","maxLength":2000,"type":["string","null"]},"tool_descriptions":{"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":{"maxLength":600,"type":"string"},"type":"object"},"reference_resolvers":{"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":{"additionalProperties":{"anyOf":[{"enum":[false],"type":"boolean"},{"type":"object"}]},"type":"object"},"type":"object"}},"additionalProperties":false,"type":"object"},"readme":{"description":"Generated README behavior. Part of Config.","properties":{"quickstart_operation":{"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.","maxLength":500,"type":["string","null"]}},"additionalProperties":false,"type":"object"},"package":{"description":"Published-package metadata the API spec does not own. Repository is derived from each destination.","properties":{"title":{"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).","maxLength":100,"type":["string","null"]},"homepage":{"description":"Homepage written into registry metadata.","type":["string","null"]},"license":{"description":"SPDX identifier written into registry metadata. Defaults to info.license.","maxLength":200,"type":["string","null"]},"license_text":{"description":"Exact LICENSE file contents. Supply this for licences the engine does not build in; MIT is built in when copyright is also set.","maxLength":100000,"type":["string","null"]},"copyright":{"description":"Copyright line used in generated license files.","maxLength":200,"type":["string","null"]},"go_package_name":{"description":"Go identifier when the destination repository name is unsuitable.","type":["string","null"]}},"additionalProperties":false,"type":"object"},"docs_url":{"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.","type":["string","null"]},"docs_index_url":{"format":"uri","description":"Exact llms.txt URL when the documentation site does not publish it at docs_url + /llms.txt.","type":["string","null"]}},"additionalProperties":false,"type":"object"},"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."}},"required":["spec","target"]}},{"name":"query_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","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"pattern":{"type":"string","description":"A JavaScript regular expression, matched case-insensitively line by line."},"context":{"type":"integer","description":"Lines of context around each match (0 to 5). Default 1.","minimum":0,"maximum":5},"limit":{"type":"integer","description":"Maximum matches to return (1 to 100). Default 30.","minimum":1,"maximum":100}},"required":["pattern"]}},{"name":"read_docs","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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","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"},"schema":{"type":"boolean","description":"Also return the operation's complete input and output JSON Schemas, default false"},"offset":{"type":"integer","minimum":0,"description":"Character offset to continue a long page from, default 0"}},"required":["page"]}},{"name":"search_docs","description":"Search this API's reference (operations, parameters) and, when a docs site is configured, its guides. Best matches first; page through with page.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"query":{"type":"string","description":"The task in a few words, e.g. \"assign issue\" or \"list calls\""},"page":{"type":"integer","minimum":1,"description":"Page of reference matches (10 per page), default 1"}},"required":["query"]}},{"name":"submit_docs_feedback","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","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"page":{"type":"string","description":"The page URL or title."},"message":{"type":"string","description":"What is wrong or missing, in one to five sentences."}},"required":["page","message"]}}],"scan":{"score":98,"grade":"A","scanned_at":"2026-10-14T17:41:58.946Z","report":{"scannerVersion":"0.1.10","scannedAt":"2026-10-14T17:41:58.811Z","components":{"code":{"score":25,"max":25,"notes":["108 source files scanned"]},"reliability":{"score":20,"max":20,"notes":["remote reachable in 277ms (auth required)"]},"poisoning":{"score":15,"max":15,"notes":["6 tool descriptions checked"]},"auth":{"score":15,"max":15,"notes":["OAuth resource metadata advertised on 401"]},"maintenance":{"score":15,"max":15,"notes":["last push 1 days ago"]},"identity":{"score":8,"max":10,"notes":["endpoint served from the registry-verified namespace domain"]}},"findings":[],"inputs":{"probes":[{"url":"https://typeship.dev/mcp","reachable":true,"authRequired":true,"latencyMs":277,"authScheme":"oauth"},{"url":"https://typeship.dev/mcp/public","reachable":true,"authRequired":false,"latencyMs":484,"serverInfo":{"name":"typeship","version":"0.1.0"}}],"packages":[{"registryType":"npm","identifier":"@typeship-ax/mcp","version":"0.23.0","found":true,"license":"MIT","hasInstallScripts":false,"dependencyCount":0,"publishedAt":"2026-09-30T16:22:59.391Z","repositoryUrl":"git+https://github.com/typeship-ax/mcp.git","weeklyDownloads":69}],"repo":{"found":true,"owner":"typeship-ax","repo":"mcp","archived":false,"pushedAt":"2026-10-13T23:12:20Z","stars":0,"forks":0,"openIssues":3,"ownerType":"Organization","ownerAvatarUrl":"https://avatars.githubusercontent.com/u/319215213?v=4","ownerCreatedAt":"2026-08-20T21:34:55Z","license":"MIT"},"icon":{"url":"https://typeship.dev/icon.svg?icon.0y596ehq0ortr.svg","source":"registry"},"presence":{"stars":0,"forks":0,"downloadsWeek":69,"license":"MIT","lastPushAt":"2026-10-13T23:12:20.000Z","score":32}}}},"grade_history":[],"reviews":[]}