@sigitcode-old / sigit / commits / cf107e2
Fork 1

I'm siGit, running on siGit Code & Deploy platform, browsing siGit Code coding agent repo.

Call the integration Ascapi, the App Stores Coolest API

Ascapi is the name of the App Stores Coolest API, so say that in prose rather than describing the integration as "the App Store Connect API CLI". Updated: the `mcp.rs` module doc's baked-in-servers section, the docs on `ASCAPI_SERVER_NAME`, `ASCAPI_COMMAND` and `ascapi_tool_suffix`, the `McpFile.ascapi` field doc, two inline comments and one debug log line in the config loader, and the `permissions::classify` doc that explains the read-only allow-list. Machine-facing identifiers are untouched: the `mcp__ascapi__` namespace, `ASCAPI_SERVER_NAME`, `ASCAPI_COMMAND`, `SIGIT_MCP_ASCAPI`, and the `ascapi = false` opt-out all keep their spelling. Co-Authored-By: siGit Code v1.6.8-acp <noreply@sigit.si>

Seto Elkahfi committed Oct 14, 2026 at 10:55 UTC cf107e274de54b40a99a43507f17b656d09f0878
2 files changed +15 -15
src/mcp.rs
+14 -14
@@ -31,9 +31,10 @@
31 //! error. Opt out with `smbcloud = false` in `mcp.toml` or
32 //! `SIGIT_MCP_SMBCLOUD=off`.
33 //!
34 -//! The App Store Connect API CLI's MCP server (`asc --mcp`, stdio) is baked
35 -//! in the same way: only when the `asc` binary is on `PATH`, opt out with
36 -//! `ascapi = false` in `mcp.toml` or `SIGIT_MCP_ASCAPI=off`.
34 +//! Ascapi — the App Stores Coolest API, via its own CLI's MCP server
35 +//! (`asc --mcp`, stdio) — is baked in the same way: only when the `asc` binary
36 +//! is on `PATH`, opt out with `ascapi = false` in `mcp.toml` or
37 +//! `SIGIT_MCP_ASCAPI=off`.
38 //!
39 //! All baked-in entries yield to a user-defined `mcp.toml` server of the same
40 //! name, so either can be repointed or reconfigured without a special case.
@@ -119,17 +120,16 @@ pub fn smbcloud_tool_suffix(name: &str) -> Option<&str> {
120 .strip_prefix("__")
121 }
122
122 -/// Name of the baked-in App Store Connect API CLI server; its tools are
123 -/// namespaced `mcp__ascapi__<tool>`. Like the other baked-in servers, a
123 +/// Name of the baked-in Ascapi (the App Stores Coolest API) server; its tools
124 +/// are namespaced `mcp__ascapi__<tool>`. Like the other baked-in servers, a
125 /// user-defined `mcp.toml` entry with this name overrides the baked-in
126 /// command line.
127 const ASCAPI_SERVER_NAME: &str = "ascapi";
128
128 -/// The App Store Connect API CLI binary the baked-in stdio entry spawns
129 -/// (`asc --mcp`).
129 +/// The Ascapi CLI binary the baked-in stdio entry spawns (`asc --mcp`).
130 const ASCAPI_COMMAND: &str = "asc";
131
132 -/// The bare tool name when `name` belongs to the ascapi server
132 +/// The bare tool name when `name` belongs to the Ascapi server
133 /// (`mcp__ascapi__app_list` → `Some("app_list")`), else `None`.
134 pub fn ascapi_tool_suffix(name: &str) -> Option<&str> {
135 name.strip_prefix(MCP_PREFIX)?
@@ -279,9 +279,9 @@ struct McpFile {
279 /// `true`; set `false` to opt out. Moot when `smb` isn't installed.
280 #[serde(default)]
281 smbcloud: Option<bool>,
282 - /// Include the baked-in App Store Connect API CLI server (`asc --mcp`).
283 - /// Defaults to `true`; set `false` to opt out. Moot when `asc` isn't
284 - /// installed.
282 + /// Include the baked-in Ascapi server (`asc --mcp`) — Ascapi is the App
283 + /// Stores Coolest API. Defaults to `true`; set `false` to opt out. Moot
284 + /// when `asc` isn't installed.
285 #[serde(default)]
286 ascapi: Option<bool>,
287 #[serde(default)]
@@ -505,7 +505,7 @@ fn load_configs() -> Vec<ServerDef> {
505 }
506 }
507
508 - // The ascapi server can also be disabled with SIGIT_MCP_ASCAPI=off.
508 + // The Ascapi server can also be disabled with SIGIT_MCP_ASCAPI=off.
509 if let Ok(value) = std::env::var("SIGIT_MCP_ASCAPI")
510 && matches!(
511 value.trim().to_ascii_lowercase().as_str(),
@@ -515,7 +515,7 @@ fn load_configs() -> Vec<ServerDef> {
515 include_ascapi = false;
516 }
517
518 - // Add the baked-in ascapi server (`asc --mcp`), with the same
518 + // Add the baked-in Ascapi server (`asc --mcp`), with the same
519 // never-clobber rule as the others. Only when `asc` is actually
520 // installed: a hardwired entry for a binary most users don't have
521 // would surface a spawn failure in `/mcp` instead of just staying out
@@ -531,7 +531,7 @@ fn load_configs() -> Vec<ServerDef> {
531 },
532 });
533 } else {
534 - log::debug!("mcp: `{ASCAPI_COMMAND}` not on PATH; skipping the ascapi server");
534 + log::debug!("mcp: `{ASCAPI_COMMAND}` not on PATH; skipping the Ascapi server");
535 }
536 }
537
src/permissions.rs
+1 -1
@@ -107,7 +107,7 @@ pub enum Decision {
107 /// (`mcp__smbcloud__*`) read tools are exempted by an explicit allow-list
108 /// rather than a name shape, since its names don't follow the `list_`/`get_`
109 /// convention — a tool the list doesn't know (e.g. from a newer smb) fails
110 -/// safe to mutating. The `ascapi` App Store Connect CLI server
110 +/// safe to mutating. The Ascapi (the App Stores Coolest API) server
111 /// (`mcp__ascapi__*`) works the same way as the smbCloud one: a fixed
112 /// allow-list of the read-only `asc apps *`/`asc certificates list`/etc.
113 /// tool names exempts them, and any other name on that server (or an empty