Skip to main content
Glama

SFC WebService MCP

MCP server for the SFC customer logistics WebService (rates, create/delete orders, labels, tracking).

Chinese install guide: README.zh-CN.md

Credentials stay on the customer machine (MCP env or ~/.sfc/credentials.json). Tools inject HeaderRequest automatically — never put secrets in chat or source control.

Requirements

  • Node.js 20+

  • SFC-issued appKey, token, userId (ask your SFC account manager)

Related MCP server: Easyship MCP

Cursor install

cd sfc-webservice-mcp
npm install

Add to Cursor MCP settings (use your absolute path):

{
  "mcpServers": {
    "sfc-webservice": {
      "command": "node",
      "args": ["/absolute/path/sfc-webservice-mcp/src/index.js"],
      "env": {
        "SFC_APP_KEY": "your-app-key",
        "SFC_TOKEN": "your-token",
        "SFC_USER_ID": "your-user-id",
        "SFC_DIVISION_ID": "1"
      }
    }
  }
}

Optional: omit env and call tool sfc_setup once to write ~/.sfc/credentials.json (mode 600).

Tools

Tool

Purpose

Mutates

sfc_setup

Save local credentials

local file only

sfc_credential_status

Check config (no secrets)

no

sfc_verify_credentials

Probe ship types / division

no

sfc_list_ship_types

List methods

no

sfc_get_rates

Quote

no

sfc_preview_order

Build order payload

no

sfc_create_order

Submit order (confirm=true)

yes

sfc_search_order

Order lookup

no

sfc_get_fee

Fee by order

no

sfc_get_label_url

Label PDF URL

no

sfc_get_track

Tracking

no

sfc_delete_order

Delete (confirm=true)

yes

Disable delete with SFC_ALLOW_DELETE=false.

Suggested flow

  1. sfc_verify_credentials

  2. sfc_list_ship_types → sfc_get_rates

  3. sfc_preview_order → customer OK → sfc_create_order with confirm=true

  4. sfc_get_label_url / sfc_get_track

  5. Cancel: sfc_search_order then sfc_delete_order with confirm=true

On timeout / unknown create result: do not retry — search by customer order number first.

Official docs

Field schemas on those pages are authoritative.

Develop

npm install
npm run check
npm test
npm start   # stdio MCP (used by the host)

See .env.example for optional host overrides.

Available Tools

12 tools
sfc_create_orderA

Create an SFC order (addOrder). Requires confirm=true. Prefer sfc_preview_order first. Do not retry on timeout — search the customer order number instead.

NameRequiredDescriptionDefault
confirmYesMust be true to submit. False or omitted = dry-run only.
divisionIdNoopDivision; defaults to configured division
goodsWidthNo
goodsHeightNo
goodsLengthNo
goodsWeightNo
orderStatusNoconfirmed or preprocessconfirmed
pieceNumberNo
withBatteryNo
goodsDetailsYes
recipientCityNo
recipientNameYes
worthCurrencyNoUSD
recipientEmailNo
recipientPhoneNo
recipientStateNo
shippingMethodYesSFC shipping method code from list/rates
customerOrderNoNoCustomer reference / unique order code
goodsDescriptionYesOrder / parcel description
recipientAddressYes
recipientCountryYes
recipientZipCodeNo
goodsDeclareWorthYesTotal declared value
recipientOrganizationNo

TDQS

A4.9/5.0
Behavior5/5

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

Since no annotations are provided, the description carries the full burden of behavioral transparency. It reveals critical behavioral constraints, specifically the requirement of confirm=true and the non-retry policy upon timeout.

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?

The three sentences are highly efficient. The critical information (naming, requirement, workflow advice) is front-loaded and delivers maximum actionable intelligence with minimal word count.

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

Completeness5/5

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

Despite the high parameter count (24), the description provides the necessary contextual glue for an agent: the 'why' and 'how' of the workflow (preview -> confirm -> handle failure), which compensates fully for the lack of detailed parameter documentation.

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

Parameters4/5

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

While the schema provides the definitions, the description adds semantic meaning by identifying the 'confirm' flag as a crucial submission trigger. Given the very low schema description coverage (29%), these high-level operational constraints are highly valuable.

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 clearly identifies the tool's function ('Create an SFC order'), includes the technical endpoint name ('addOrder'), and establishes a clear preference relative to the sibling tool sfc_preview_order.

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

Usage Guidelines5/5

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

The description provides explicit operational boundaries: it requires confirm=true for successful submission, advises using sfc_preview_order first, and gives a specific failure strategy (do not retry on timeout; search instead).

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

sfc_credential_statusB

Check whether SFC credentials are configured (does not print secrets).

NameRequiredDescriptionDefault

No parameters

TDQS

B3.4/5.0
Behavior3/5

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

No annotations, so the description carries the full burden. It does disclose a genuine behavioral trait — the response will not expose secret material — which is useful for an agent deciding whether to call it. It does not state that it is read-only (implied), nor what the response actually contains.

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?

One short sentence, front-loaded with the operation and followed by the one caveat that matters. Nothing wasted.

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

Completeness3/5

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

For a trivial zero-parameter status check, this is close to adequate, and the no-output-schema rule means return values needn't be detailed. Still, the agent cannot tell what a positive/negative result looks like or whether this confirms reachability versus mere configuration.

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

Parameters4/5

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

The tool takes zero parameters, so there is nothing for the description to disambiguate; baseline 4 applies.

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

Purpose4/5

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

States a specific verb (check) and resource (whether SFC credentials are configured), which is clear on its own. However, it does not differentiate itself from the near-identical sibling sfc_verify_credentials, leaving the agent to guess at the boundary between 'status' and 'verify'.

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

Usage Guidelines2/5

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

No when-to-use guidance is given beyond the implied 'check before operating'. With siblings sfc_verify_credentials and sfc_setup present, the description should say which to call when, and it says nothing.

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

sfc_delete_orderA

Delete an SFC order by orderCode. Requires confirm=true. Prefer searching the order first.

NameRequiredDescriptionDefault
confirmYesMust be true to delete
orderCodeYes

TDQS

A3.7/5.0
Behavior3/5

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

With no annotations, the description carries the burden. It discloses the confirm guard and a safety recommendation to search first, which is useful, but does not state that deletion is irreversible, what errors occur on invalid orderCode, or what is returned.

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?

Three short, front-loaded clauses with zero waste; the destructive action and its guard come first, and the recommendation follows.

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

Completeness3/5

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

For a two-parameter destructive tool with no output schema and no annotations, the description covers the essential guard and a pre-step but omits irreversibility and failure behavior, leaving meaningful gaps for a delete operation.

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 coverage is 50%: confirm is already documented in the schema as 'Must be true to delete', and the description merely repeats it. orderCode, the undocumented parameter, is only identified as the key ('by orderCode') with no further format or lookup semantics.

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

Purpose4/5

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

States a specific verb+resource: 'Delete an SFC order by orderCode'. It is clearly the only destructive/delete sibling among the listed tools, so it is distinguishable, though it does not explicitly contrast with siblings.

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?

Gives a prerequisite ('Requires confirm=true') and steers the agent toward an alternative action ('Prefer searching the order first'), effectively pointing at sfc_search_order. No explicit when-not guidance, but the pre-step recommendation is concrete.

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

sfc_get_feeC

Get fee by SFC order code (getFeeByOrderCode).

NameRequiredDescriptionDefault
orderCodeYes

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. 'Get' implies a read, but nothing is said about what the fee represents (per-order fee, shipping charge, surcharge), whether it requires an existing order, or what happens for an invalid/unknown order code.

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

Conciseness4/5

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

A single front-loaded sentence with no padding. It is terse rather than padded, though the parenthetical method name is the only element beyond the bare minimum.

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

Completeness2/5

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

With no output schema and no annotations, the description should explain what the returned fee looks like (amount, currency, breakdown) and error behavior. None of that is present, leaving the agent guessing about the response shape for a lookup tool.

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 0%, so the description must compensate. It does add one meaningful bit: the orderCode is the 'SFC order code', distinguishing it from internal identifiers. But no format, example, or validation hints are given for the single required parameter.

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

Purpose4/5

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

States a specific verb and resource ('Get fee') plus the key it is looked up by ('SFC order code'), and even names the underlying method (getFeeByOrderCode). It does not distinguish itself from the nearby sibling sfc_get_rates, so an agent may hesitate between the two.

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

Usage Guidelines2/5

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

There is no guidance on when to use this versus sfc_get_rates or sfc_preview_order, both of which plausibly return cost information. No prerequisites, no exclusions, no context about which order states this is valid for.

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

sfc_get_label_urlB

Build a label PDF URL for a confirmed SFC orderCode. Does not call print if you only need the link.

NameRequiredDescriptionDefault
orderCodeYes
printSizeNo1 = common 10x15cm; confirm with SFC if unsure1
printTypeNo1
isPrintDeclareNo

TDQS

B3.4/5.0
Behavior3/5

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

No annotations are provided, so the description carries the burden. It does clarify that this is a non-side-effecting URL builder rather than a print trigger, which is genuinely useful, but it says nothing about auth requirements, whether the URL expires, or what the return value looks like.

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 short sentences, front-loaded with the action and followed by the key usage distinction. Every sentence earns its place with no filler.

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

Completeness2/5

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

With four parameters at 25% coverage, no annotations, and no output schema, the description should explain the return shape (a URL string) and the meaning of isPrintDeclare/printType. It leaves those gaps open, so an agent cannot call this confidently beyond the required field.

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

Parameters2/5

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

Schema coverage is only 25%: printType and isPrintDeclare have no schema descriptions, and the description adds nothing about them. Only orderCode ('confirmed') and printSize (via the schema) are covered, so the description fails to compensate for the low coverage.

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

Purpose4/5

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

States a specific verb-plus-resource: build a label PDF URL for a confirmed orderCode. It distinguishes itself from a print action, but it doesn't differentiate against siblings like sfc_get_track or sfc_preview_order by name.

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?

Explicitly frames the when-to-use case (you only need the link) and implicitly the when-not case (don't call print). The 'confirmed' qualifier also hints at a prerequisite state, though no alternative tool is named and no prerequisite steps are spelled out.

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

sfc_get_ratesC

Quote rates. If shipTypeCodes is set, uses HTTPS getRatesByShip; otherwise SOAP/HTTPS getRates for all methods.

NameRequiredDescriptionDefault
cityNo
stateNoState / province; defaults to country
worthNoDeclared value for getRatesByShip
countryYes
widthCmYes
zipCodeNo
heightCmYes
lengthCmYes
weightKgYes
priceTypeNo1=customer discount price, 2=list price
divisionIdNo
shipTypeCodesNoOptional list of SFC shipping method codes

TDQS

C2.7/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It does mention that setting shipTypeCodes switches to HTTPS getRatesByShip and otherwise uses SOAP/HTTPS getRates for all methods, but it omits whether the operation is read-only, what permissions are needed, and what side effects or response characteristics to expect.

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

Conciseness4/5

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

The description is two sentences and front-loads the core purpose before the conditional routing detail. It avoids repetition, though the second sentence uses internal API jargon that could be clearer for an agent.

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

Completeness2/5

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

The tool has 12 parameters, 5 required fields, no annotations, and no output schema. Given that complexity, the description is incomplete: it does not explain return values, units, defaults, required-field significance, or how quoted rates relate to sibling order tools.

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

Parameters2/5

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

Schema description coverage is only 33% across 12 parameters, so the description must compensate. It only explains the shipTypeCodes branching behavior and does not clarify the semantics of required inputs like country, weightKg, lengthCm, widthCm, or heightCm, nor optional inputs like city, zipCode, or divisionId.

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

Purpose4/5

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

The description states a specific verb and resource: 'Quote rates.' That is clear enough for an agent to know it retrieves shipping rate quotes. However, it does not distinguish this tool from siblings such as sfc_get_fee or sfc_preview_order, so it falls short of a 5.

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

Usage Guidelines2/5

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

The description gives no explicit guidance on when to use this tool versus alternatives like sfc_get_fee or sfc_preview_order. The only conditional mentioned is an internal routing detail based on shipTypeCodes, not a usage recommendation or exclusion.

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

sfc_get_trackB

Track shipments by tracking number(s). Uses tracking.sfcservice.com (up to 40 numbers).

NameRequiredDescriptionDefault
clientNoOptional client/platform tag
numbersYes

TDQS

B3.1/5.0
Behavior2/5

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

With no annotations, the description carries the full behavioral burden and only partially delivers: it discloses the upstream host (tracking.sfcservice.com) and the 40-number batch limit, implying a read-only lookup. It says nothing about return content, partial-failure behavior when one of several numbers is invalid, or error handling.

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 short sentences with zero padding, and the core action plus the batch limit are front-loaded. Nothing could be removed without losing information.

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

Completeness3/5

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

For a simple two-parameter read tool this is close to adequate, but there is no output schema, so the description should at least sketch what a track response contains (status events, carrier, timestamps) or the order of results matching the input numbers. That gap keeps it at minimum viable.

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 coverage is 50% — `client` is documented in the schema, `numbers` is not — and the description only restates the numbers parameter ("by tracking number(s)", "up to 40"). It adds nothing about what the `client` tag affects, so the undocumented half of the schema remains unexplained.

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

Purpose4/5

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

The description pairs a specific verb ("Track") with a specific resource ("shipments") and the key input (tracking numbers), so an agent knows exactly what the tool does. It does not distinguish itself from siblings like sfc_search_order or sfc_get_label_url, so it stops short of a 5.

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

Usage Guidelines2/5

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

It never says when to use this versus sfc_search_order or sfc_get_label_url, nor does it state prerequisites such as valid credentials or that numbers must be SFC-issued tracking IDs. The only guidance present is the batch cap, which is a constraint rather than usage direction.

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

sfc_list_ship_typesB

List shipping methods available for a destination country and parcel size (HTTPS getShiptypesByCountry).

NameRequiredDescriptionDefault
countryYesDestination country code, e.g. US, GB, DE
widthCmNo
heightCmNo
lengthCmNo
weightKgNo
divisionIdNo

TDQS

B3.4/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It implies a read-only list operation and cites the underlying endpoint (getShiptypesByCountry), which adds provenance, but it says nothing about rate limits, error behavior for unsupported countries, or what happens when dimensions are omitted.

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

Conciseness4/5

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

A single front-loaded sentence with the resource and its scoping conditions first; the parenthetical endpoint reference is slightly extra but useful for tracing. Nothing is padded.

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

Completeness3/5

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

For a tool with no annotations, no output schema, and 5 of 6 parameters undocumented, the description leaves real gaps: the shape of the returned ship-type list (and the identifiers needed to feed sfc_get_rates) and the divisionId semantics are unaddressed.

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 coverage is only 17%, with just country documented, so the description must compensate. It does partially by framing the widthCm/heightCm/lengthCm/weightKg group as 'parcel size' (and the param names carry units), but divisionId is entirely unexplained and it never says whether the dimension params are required together.

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

Purpose4/5

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

States a specific verb (List) and resource (shipping methods) with its scoping conditions: destination country and parcel size. It is clearly differentiable from sfc_get_rates or sfc_create_order, though it does not name any sibling explicitly.

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

Usage Guidelines3/5

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

Usage is only implied: the mention of country and parcel-size inputs hints this is a pre-quote lookup that precedes sfc_get_rates, but the description never states when to choose it over that sibling or what prerequisites (credentials, valid country) apply.

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

sfc_preview_orderA

Build and validate an addOrder payload locally. Does NOT submit. Call sfc_create_order with confirm=true after customer approval.

NameRequiredDescriptionDefault
divisionIdNoopDivision; defaults to configured division
goodsWidthNo
goodsHeightNo
goodsLengthNo
goodsWeightNo
orderStatusNoconfirmed or preprocessconfirmed
pieceNumberNo
withBatteryNo
goodsDetailsYes
recipientCityNo
recipientNameYes
worthCurrencyNoUSD
recipientEmailNo
recipientPhoneNo
recipientStateNo
shippingMethodYesSFC shipping method code from list/rates
customerOrderNoNoCustomer reference / unique order code
goodsDescriptionYesOrder / parcel description
recipientAddressYes
recipientCountryYes
recipientZipCodeNo
goodsDeclareWorthYesTotal declared value
recipientOrganizationNo

TDQS

A3.8/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full behavioral burden. It does disclose the most important trait — the operation is local and non-submitting, which is a genuine safety clarification for a 23-parameter order-builder. However, it says nothing about whether credentials are required, what a validation failure looks like, or what the caller receives back, leaving real gaps for a no-annotation tool.

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?

Three short sentences, zero waste, with the non-submission constraint front-loaded where it matters most for a tool named 'preview'. Nothing is padded or repeated.

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

Completeness3/5

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

There is no output schema and no annotations, so the description should explain what a 'preview' returns — a validated payload, a list of validation errors, or both — and it does not. Given the tool's 23-parameter complexity, this is the main missing piece; the call/no-call decision is well covered, the result interpretation is not.

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

Parameters2/5

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

Schema description coverage is only 26% across 23 parameters (7 required), so the description is expected to compensate, and it does not mention a single field. Only 'addOrder payload' hints at the schema as a whole. The agent must infer required fields, formats, and enums (e.g. orderStatus) entirely from a sparsely annotated schema.

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?

States a specific verb and resource: 'Build and validate an addOrder payload locally', and immediately disambiguates from the sibling that actually submits ('Does NOT submit'). An agent can distinguish this from sfc_create_order without opening either schema.

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?

Gives a clear sequencing rule: preview here, then 'Call sfc_create_order with confirm=true after customer approval', which names the alternative and the gate condition. It stops short of stating prerequisites (e.g. credentials) or when previewing can be skipped, so it falls just under fully explicit.

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

sfc_search_orderB

Look up an order by SFC orderCode (searchOrder).

NameRequiredDescriptionDefault
orderCodeYesSFC order code

TDQS

B3.2/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden. 'Look up' implies a read, but the description does not say what happens when the orderCode is not found, whether errors are returned, whether rate limits apply, or what the response contains — significant gaps for a tool with zero annotation coverage and no output schema.

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

Conciseness4/5

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

One short sentence with no wasted words, and the key discriminator (orderCode) is front-loaded. It is arguably too terse rather than verbose, but nothing in it is filler.

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

Completeness3/5

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

For a one-parameter read tool this is minimally viable: the input is fully documented by the schema. However, with no annotations and no output schema, the description should disclose at least the return shape or not-found behavior, and it does neither.

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?

There is a single parameter with 100% schema description coverage ('SFC order code', minLength 1), so the schema already does the work. The description's 'by SFC orderCode (searchOrder)' restates the field without adding format, sourcing, or validation details beyond the schema.

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

Purpose4/5

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

The description states a specific verb (look up) and resource (an order) and identifies the key lookup field (SFC orderCode). It does not explicitly distinguish this from siblings such as sfc_preview_order or sfc_get_track, so an agent must infer that this is the canonical single-order retrieval.

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

Usage Guidelines3/5

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

Usage is implied by the phrase 'Look up an order by SFC orderCode' — call it when you have an orderCode. There is no explicit statement of when to prefer it over sfc_preview_order or sfc_get_track, and no mention of prerequisites such as needing credentials validated first.

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

sfc_setupA

Save SFC API credentials to a private local file (~/.sfc/credentials.json). Prefer MCP env vars when possible. Never put credentials in chat after setup.

NameRequiredDescriptionDefault
tokenYesSFC-issued token
appKeyYesSFC-issued appKey
userIdYesSFC customer user code (userId)
divisionIdNoDefault division / warehouse id, e.g. 1 or 17

TDQS

A4/5.0
Behavior4/5

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

With no annotations, the description carries the burden and does reasonably well: it discloses that this writes a file, that the file is private and local with a specific path, and adds a security constraint about not repeating credentials in chat. It omits write-side behavior an agent would want, such as whether an existing credentials file is overwritten and whether a confirmation is returned.

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?

Three short sentences, zero filler, with the core action and destination front-loaded before the security guidance. Every sentence earns its place.

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?

For a four-parameter credential-write tool with no output schema and no annotations, the description covers purpose, storage location, and a key safety rule. Remaining gap is minor: overwrite semantics and any success/failure signaling are unstated.

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%, so all four parameters (appKey, token, userId, divisionId) are already documented in the schema. The description adds no further meaning about parameter formats or the optional divisionId default. Baseline 3 applies when the schema does the heavy lifting.

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

Purpose4/5

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

States a specific verb and resource ('Save SFC API credentials') plus the exact destination path (~/.sfc/credentials.json), which is unambiguous. It does not explicitly differentiate from siblings like sfc_verify_credentials or sfc_credential_status, though the 'prefer env vars' line implies this is the one-time setup path.

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?

Gives a clear alternative ('Prefer MCP env vars when possible') that tells the agent when this tool is not the right choice, plus a security rule about not echoing credentials in chat. It stops short of naming the sibling tools (e.g. use sfc_verify_credentials to check saved creds) or stating prerequisites such as where to obtain the appKey/token.

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

sfc_verify_credentialsC

Read-only check: probe ship types for US with a small parcel. Tries division 1 then 17 unless divisionId is set.

NameRequiredDescriptionDefault
countryNoISO country code for probeUS
divisionIdNoForce a division id; otherwise auto-discover

TDQS

C2.9/5.0
Behavior3/5

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

With no annotations, the description does useful work: it declares read-only semantics and discloses the auto-discovery order (division 1 then 17). It omits what a failure looks like, whether the parcel probe has any side effects, and any auth/latency considerations.

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

Conciseness4/5

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

Two tight clauses with the read-only qualifier and fallback order front-loaded, no filler. It is efficiently sized for what it chooses to say.

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

Completeness3/5

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

For a zero-required-parameter tool with no output schema, the description should indicate what a result means (pass/fail, error vs boolean) and whether the probe is side-effect free. Those gaps matter for a diagnostic tool an agent will call before other operations.

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 coverage is 100%, so both parameters are documented in the schema itself. The description only adds the concrete discovery sequence behind 'auto-discover', which is genuinely extra meaning but thin overall — consistent with the baseline 3 for high-coverage schemas.

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

Purpose3/5

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

The description gives a concrete mechanism (probe ship types for US with a small parcel) and flags it as read-only, but never explicitly states the actual goal — verifying credentials/connectivity. Because it talks about ship types, an agent could easily mistake it for sfc_list_ship_types or sfc_credential_status.

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

Usage Guidelines2/5

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

There is no statement of when to use this versus sfc_credential_status or sfc_list_ship_types. The only conditional ('unless divisionId is set') describes internal fallback behavior, not invocation guidance.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 12 tool updatesv0.1.0
    • First observedsfc_create_order
    • First observedsfc_credential_status
    • First observedsfc_delete_order
    • First observedsfc_get_fee
    • First observedsfc_get_label_url
    • First observedsfc_get_rates
    • First observedsfc_get_track
    • First observedsfc_list_ship_types
    • First observedsfc_preview_order
    • First observedsfc_search_order
    • First observedsfc_setup
    • First observedsfc_verify_credentials

TDQS

A3.5/5.0

Scored across 12 tools

Disambiguation4/5

Core order lifecycle tools (preview_order, create_order, search_order, delete_order, get_fee, get_label_url, get_track) have clearly distinct purposes, and the descriptions explicitly disambiguate preview vs. submit. The only real overlap is the credentials trio (sfc_verify_credentials, sfc_credential_status, sfc_setup), where an agent could plausibly pick the wrong one for 'check my credentials'.

Naming Consistency4/5

Nearly all tools follow a uniform sfc_verb_noun snake_case pattern with a consistent prefix. Minor deviations: sfc_credential_status is noun-first rather than verb-first, and sfc_setup is a bare verb with no object.

Tool Count5/5

12 tools is right in the sweet spot for a shipping-carrier integration. Each tool maps to a concrete API operation (rates, ship types, order CRUD, fee, label, tracking), with no filler tools.

Completeness4/5

The surface covers the full order lifecycle from quoting through preview, creation, fee lookup, labeling, tracking, and deletion, plus credential setup. Gaps are minor: no order update/modify, no order listing by date range, and no cancellation/void of an already-printed label.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    F
    maintenance
    Enables AI agents to manage global shipping operations, including rate comparison, shipment creation, label purchasing, tracking, pickup scheduling, address validation, billing, and analytics, via natural language.
    135 npm
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables AI agents to track packages, rate and create shipments, manage pickups and customs documentation, and perform international shipping logistics checks through natural language.
    MIT