Skip to main content
Glama

Prefeitura SP São Paulo: NFS-e (Nota Fiscal Eletrônica de Serviços)

Server Details

Prefeitura SP São Paulo: NFS-e (Nota Fiscal Eletrônica de Serviços), official-source lookup. Platfor

If you are the author of this connector, you can claim ownership with GitHub, an HTTP challenge, or a DNS record. Claimed connector authors can inspect health checks, view analytics, and manage their listing.
Status
Healthy
Last Tested
Transport
Streamable HTTP
URL
Repository
mcp-dir/pref_sp_sao_paulo_nfs-mcp
GitHub Stars
0
Server Listing
Prefeitura SP São Paulo: NFS-e (Nota Fiscal Eletrônica de Serviços)

TDQS

B3.4/5.0

Scored across 7 tools

Disambiguation2/5

Only one tool is actually NFS-e-specific; the rest are platform-level utilities that overlap in purpose. For example, 'authenticate' and 'connect' both deal with login/connection status, while 'marketplace' and 'toolkit_info' both expose catalog/installation information, making tool boundaries unclear.

Naming Consistency2/5

Names are inconsistent: 'pref_sp_sao_paulo_nfs_consultar' is a long snake_case domain name, while 'marketplace' and 'toolkit_info' are noun-like, and 'authenticate', 'report_bug', and 'show_version' are verb-based. There is no coherent naming convention across the set.

Tool Count2/5

Seven tools is a reasonable count in isolation, but most are generic marketplace/auth/admin utilities unrelated to the NFS-e domain. The NFS-e purpose is served by only one tool, so the set feels bloated with platform infrastructure rather than well-scoped.

Completeness3/5

For a strictly consultative NFS-e data source, the core lookup operation exists, and authentication/connection support is present. However, the NFS-e domain surface is thin: there are no supplementary operations such as listing, issuing, or downloading invoices, and the remaining tools are meta-tools that do not extend domain coverage.

Available Tools

7 tools
authenticateA
Idempotent
Inspect

MCP.AI for IDE agents (Cursor, etc.): log in in the browser, copy the access token. Best: add it to this server's config as a header Authorization: Bearer <token> for a permanent, non-expiring connection. Or paste it here for a session-only login: call with { token: "" } after the user pastes, or with no args to get the link.

ParametersJSON Schema
NameRequiredDescriptionDefault
tokenNo

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already signal idempotent and non-destructive behavior, so the description adds value by explaining the permanent versus session-only login distinction and the non-expiring nature of the config-based approach. It also clarifies that a pasted token is only for the current session. It does not disclose return format, but the annotations lower the burden.

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 front-loaded with the tool's purpose and then gives actionable instructions. Every sentence contributes useful information, but the structure is somewhat run-on with multiple instructions packed together. Still, it is appropriately sized and not bloated.

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?

Given the simple schema (one optional string parameter), no output schema, and sparse annotations, the description covers the essential context: what the tool does, how to authenticate, and the two token-handling modes. It lacks details about the exact return value or error behavior, but for a low-complexity auth tool, the description is mostly complete.

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

Parameters5/5

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

With zero schema description coverage, the description fully compensates by explaining the sole 'token' parameter: it should be a JWT pasted by the user, and passing it enables session-only authentication. It also explains the no-argument behavior, which is valuable because the parameter is optional. This is strong parameter-level guidance.

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 clearly states the tool authenticates the user to MCP.AI for IDE agents via a browser login and access token. It names the specific action (log in/authenticate) and resource, and distinguishes session-only from permanent config usage. However, it does not explicitly differentiate itself from the sibling tool 'connect', 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 Guidelines4/5

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

The description gives clear context for two usage modes: adding the token to server config for permanent access, or passing it in the call for session-only login. It also explains that calling with no arguments returns the login link. It does not provide explicit when-not-to-use guidance or mention alternative sibling tools, so it is not a full 5.

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

connectA
Read-onlyIdempotent
Inspect

Returns connection status and URLs. When all providers are connected, returns authenticated:true and empty pending[]. When credentials are missing, returns connect_url for the toolkit and per-install URLs.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, providing a strong safety profile. The description adds meaningful behavioral context beyond annotations: it explains the exact return values in different states (authenticated: true and empty pending[] when all connected; connect_url and per-install URLs when credentials missing). This enriches what annotations alone provide.

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 description is two sentences long and front-loads the core purpose ('Returns connection status and URLs'). Every sentence adds value: the second sentence details the two possible outcomes. No fluff or repetition.

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?

For a parameterless tool with no output schema, the description fully covers what an agent needs to know: what it does, what it returns in each scenario, and the meaning of the key fields (authenticated, pending, connect_url). Complete for the tool's simplicity.

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 has zero parameters, and the schema is empty. The description doesn't need to explain parameters; it explains the response structure and states, which is the relevant semantics for a parameterless tool. Baseline for 0 params is 4, and the description delivers context about what to expect.

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 clearly states the tool's function: returns connection status and URLs. It goes beyond a simple 'connect' verb to explain what it reports (authenticated status, pending providers, connection URLs). It distinguishes from siblings like 'authenticate' by focusing on status inspection rather than performing authentication.

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

Usage Guidelines4/5

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

The description implies when to use this tool: when checking connection status or retrieving connection URLs. It explicitly describes the two states (all connected vs. missing credentials) and what the response contains in each case, providing clear guidance for an agent deciding whether to call this tool. It does not explicitly name alternatives, but the sibling 'authenticate' is clearly different.

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

marketplaceAInspect

The official mcp.ai marketplace — the in-platform catalog of every MCP/tool, AND the way to run them. Covers capability requests like "find an MCP that does X", "consulta um CPF", "is there a tool for Y". Core flow: action=search discovers MCPs by intent → describe returns one MCP's full profile (every tool with its id + params, pricing, auth) so you pick the right tool_id → invoke RUNS that tool. KEY: invoke works even when the MCP is NOT installed — it runs the tool pontualmente (one-off), without adding the MCP to the toolkit and without bloating the tool list. If the MCP needs a credential/login, invoke returns a connect link; if it is paid and the wallet is empty, invoke returns a checkout/top-up link (the user opens it, then you retry). Use install only to make an MCP PERMANENT in the active toolkit (its tools then show up natively in future sessions); prefer invoke for a single/occasional use. list_tools lists what is callable right now. subscribe/cancel handle per-MCP billing; report_bug sends feedback; request_mcp asks us to build a NEW MCP when nothing fits. Search/describe flag installed_in_toolkit vs installed_in_workspace. Writes (install/uninstall/subscribe/cancel and the one-off install behind invoke) require workspace owner/admin. It also carries the mcp.ai PROMPT LIBRARY, which is about ready-made prompt TEXT rather than MCPs: search_prompts finds one, get_prompt returns its full text with {{variables}} filled, and publish_prompt saves a prompt and returns a shareable mcp.ai/p/ link that opens without login.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
queryNo
actionNosearch
mcp_idNo
messageNo
tool_idNo
argumentsNo{}
immediateNo
tier_slugNo
prompt_bodyNo
prompt_slugNo
prompt_toolNo
prompt_varsNo{}
conversationNo[]
prompt_titleNo
request_nameNo
cancel_reasonNo
cancel_commentNo
prompt_targetsNo
report_contextNo
prompt_categoryNo
request_detailsNo
prompt_descriptionNo

TDQS

A4.2/5.0
Behavior5/5

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

Goes well beyond annotations: explains that invoke runs one-off even without installation, returns connect/checkout links, requires owner/admin for writes, and mentions the one-off install behind invoke. No contradiction with readOnlyHint=false; it adds critical side-effect and auth context.

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

Conciseness3/5

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

The description is lengthy (over 300 words) and dense, but it's organized into a logical flow (catalog → actions → usage → prompt library). It could be more concise with bullet points or tighter phrasing, but the complexity of 14 actions justifies some length.

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?

Given the tool's high complexity (23 params, no output schema), the description covers core flows, auth requirements, billing, and the prompt library thoroughly. It lacks explicit response formats or pagination details, but it's mostly complete for a dispatcher of this scope.

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%, and the description explains the action enum with its flow and highlights key parameters like action, mcp_id, tool_id, arguments implicitly. However, many parameters (limit, immediate, tier_slug, prompt_* fields, conversation, etc.) remain unexplained, so it only partially compensates for the gap.

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 as the official mcp.ai marketplace and explains its core dispatch flow (search → describe → invoke), distinguishing it from sibling tools by its unique role as a catalog and runner. It mentions specific actions like report_bug (which also appears as a sibling, but the broader purpose is unambiguous).

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?

Provides explicit guidance on when to use invoke vs install, notes permanent vs one-off use, and explains when to prefer search_prompts/get_prompt for the prompt library. However, it doesn't explicitly contrast with sibling tools like authenticate or connect, though it does clarify prerequisites (e.g., auth needs).

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

pref_sp_sao_paulo_nfs_consultarA
Read-onlyIdempotent
Inspect

Prefeitura SP São Paulo: NFS-e (Nota Fiscal Eletrônica de Serviços), consulta em fonte oficial. Hospedado pela plataforma, sem credenciais da plataforma, pague por consulta com crédito pré-pago. Consulta informação de fontes e órgãos oficiais brasileiros (a mesma disponível ao cidadão), não é dado sigiloso. O cliente é o controlador dos dados e responde pela finalidade legítima (LGPD).

ParametersJSON Schema
NameRequiredDescriptionDefault
cpfNo
cnpjNo
numero_notaYes
codigo_verificacaoYes

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false. The description adds valuable behavioral context beyond annotations: no platform credentials needed, payment via prepaid credit per query, and data controller/LGPD responsibilities. This shows the operation is a safe, paid read with legal framing, which is helpful and does not contradict annotations.

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 a single dense sentence that effectively front-loads the purpose and then provides concise contextual details about hosting, credentials, payment, and LGPD compliance. It is not overly long, and each clause contributes meaningful information, though it could be split into clearer sentences for readability.

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?

There is no output schema, so the description should explain what the tool returns or the format of the consultation result, but it does not. It also lacks parameter explanations and error/edge-case behavior. The provided context covers purpose, payment, and legal aspects, but for a tool with four parameters and no output schema, the description is not complete.

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 0%, so the description must compensate by explaining parameter roles, but it does not mention any of the four parameters. The parameter names (numero_nota, codigo_verificacao, cpf, cnpj) are somewhat self-explanatory in Portuguese, but the description adds no additional semantics, usage examples, or relationships between parameters.

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 states the tool consults NFS-e (Nota Fiscal Eletrônica de Serviços) from the official São Paulo city hall source, using the verb 'consulta' and specifying the resource. It is immediately distinct from the sibling platform tools (authenticate, marketplace, etc.), which share no functional overlap.

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

Usage Guidelines4/5

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

The description provides clear contextual guidance: it queries official Brazilian sources, the same data available to citizens, is not confidential, and requires prepaid credit without platform credentials. It does not explicitly name alternatives or exclusions, but the sibling tools are unrelated and no direct alternative exists, making this contextual guidance sufficient.

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

report_bugA
Idempotent
Inspect

Report a bug, missing feature, or send feedback. Include the conversation array with recent messages for reproduction.

ParametersJSON Schema
NameRequiredDescriptionDefault
contextNo
messageYes
conversationNo[]

TDQS

A3.5/5.0
Behavior3/5

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

Annotations are present: idempotentHint=true, readOnlyHint=false, destructiveHint=false. The description does not contradict them. It adds minor behavioral context ('include conversation array for reproduction') but does not explain side effects, e.g., whether the report is stored, sent, or if any response is expected. The toolbar is simple, so a 3 is reasonable.

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 description is very concise: one sentence with two clauses. It includes the core purpose and a key usage hint. No fluff.

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?

The tool is simple: 3 params, no output schema, no nested objects. The description covers the primary purpose and a key detail (conversation). However, it lacks info on what happens after reporting (e.g., confirmation, response format) and the format of the conversation string. Given the simplicity, a 3 is acceptable.

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 0% (description covers no parameter definitions), but the description mentions 'conversation array' which maps to the 'conversation' parameter. However, it does not elaborate on the 'message' (required) or 'context' parameters. Since the schema has defaults and a required field, the description adds some value but not full compensation.

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 specifies multiple related actions (report a bug, missing feature, feedback) with a clear resource (the tool itself), and instructs to include conversation for reproduction. It is reasonably clear but doesn't explicitly differentiate from siblings like 'show_version' or 'toolkit_info', but those are distinct enough.

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?

The description states when to use it (report a problem or feedback) and provides guidance on what to include (conversation array). It does not explicitly mention when not to use it or alternatives, but given the sibling list (e.g., marketplace, authenticate), the use case is fairly distinct.

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

show_versionA
Read-onlyIdempotent
Inspect

Show the current MCP platform and adapter versions.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.3/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering the safety profile. The description adds that it shows versions but doesn't describe return format or any potential caveats (e.g., whether both versions are always present). It adds some context but relies on annotations for safety, so a mid-score is appropriate.

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?

A single, concise sentence that immediately conveys the tool's purpose. No redundant words or filler. Perfectly front-loaded and efficient.

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?

Given the simplicity of the tool (zero parameters, no output schema, strong annotations), the description is complete. It specifies exactly what information is shown (platform and adapter versions). No ambiguity exists that would require more detail.

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?

There are 0 parameters, so the description doesn't need to explain any. Baseline for 0 params is 4. The description doesn't need to compensate for schema coverage since it's 100% (all parameters absent are well covered). No gap.

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 is highly specific: 'Show the current MCP platform and adapter versions.' It clearly identifies the action (show), the object (current MCP platform and adapter versions), and the scope. This is unambiguous and distinct from sibling tools like toolkit_info.

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

Usage Guidelines4/5

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

The description implicitly tells when to use this tool: whenever version information is needed. It doesn't mention alternatives or prerequisites, but for a zero-parameter info tool, the purpose is self-evident. Slight gap in not stating that it returns both platform and adapter versions distinctly, but that's minor.

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

toolkit_infoA
Read-onlyIdempotent
Inspect

Returns the current toolkit state: installed MCPs, their connection status, the accounts connected to each one, and how many catalog tools each exposes.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false. The description adds useful behavioral context by specifying exactly what state is returned, which goes beyond the annotations. No contradictions or hidden side effects are present.

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 description is a single, front-loaded sentence that communicates the tool's purpose and output components with no filler. Every clause adds relevant information.

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?

For a parameterless informational tool with no output schema, the description is complete: it enumerates the four categories of information returned. No additional behavior or prerequisite details are necessary for an agent to select and invoke this tool.

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 has zero parameters, so the baseline is 4. The description appropriately focuses on the return value rather than input semantics, and there are no parameter gaps to compensate for.

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 names a specific action ('Returns') and a specific resource ('current toolkit state'), then enumerates the exact content: installed MCPs, connection status, connected accounts, and catalog tool counts. This clearly distinguishes it from sibling tools like authenticate or connect, which have different purposes.

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?

The description makes it obvious that this is a read-only status/inspection tool, but it does not explicitly state when to use it instead of siblings such as show_version or authenticate. Usage is implied rather than directed, with no exclusions or alternative recommendations.

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. Dates show when Glama detected each change.

No tool schema history has been recorded yet.

Frequently Asked Questions

Discussions

No comments yet. Be the first to start the discussion!

Related MCP Connectors

Related MCP Servers

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.