salesforce-agent 2.3.2__tar.gz → 2.3.3__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (70) hide show
  1. {salesforce_agent-2.3.2/salesforce_agent.egg-info → salesforce_agent-2.3.3}/PKG-INFO +5 -5
  2. {salesforce_agent-2.3.2 → salesforce_agent-2.3.3}/README.md +1 -1
  3. {salesforce_agent-2.3.2 → salesforce_agent-2.3.3}/pyproject.toml +4 -7
  4. salesforce_agent-2.3.3/requirements.txt +2 -0
  5. {salesforce_agent-2.3.2 → salesforce_agent-2.3.3}/salesforce_agent/__init__.py +1 -1
  6. salesforce_agent-2.3.3/salesforce_agent/connector_sources.py +159 -0
  7. {salesforce_agent-2.3.2 → salesforce_agent-2.3.3}/salesforce_agent/mcp_server.py +1 -1
  8. {salesforce_agent-2.3.2 → salesforce_agent-2.3.3}/salesforce_agent/ontology/certification.json +0 -3
  9. {salesforce_agent-2.3.2 → salesforce_agent-2.3.3}/salesforce_agent/ontology/salesforce.ttl +3 -5
  10. {salesforce_agent-2.3.2 → salesforce_agent-2.3.3}/salesforce_agent/prompts/crm_specialist.json +0 -2
  11. {salesforce_agent-2.3.2 → salesforce_agent-2.3.3/salesforce_agent.egg-info}/PKG-INFO +5 -5
  12. {salesforce_agent-2.3.2 → salesforce_agent-2.3.3}/salesforce_agent.egg-info/SOURCES.txt +1 -2
  13. {salesforce_agent-2.3.2 → salesforce_agent-2.3.3}/salesforce_agent.egg-info/entry_points.txt +0 -3
  14. {salesforce_agent-2.3.2 → salesforce_agent-2.3.3}/salesforce_agent.egg-info/requires.txt +3 -3
  15. {salesforce_agent-2.3.2 → salesforce_agent-2.3.3}/tests/test_fleet_name.py +2 -13
  16. {salesforce_agent-2.3.2 → salesforce_agent-2.3.3}/tests/test_kg_ingest.py +4 -4
  17. salesforce_agent-2.3.2/requirements.txt +0 -2
  18. salesforce_agent-2.3.2/salesforce_agent/connectors/mcp_source_presets.json +0 -29
  19. salesforce_agent-2.3.2/salesforce_agent/connectors/tool_schema_fingerprints.json +0 -8
  20. {salesforce_agent-2.3.2 → salesforce_agent-2.3.3}/LICENSE +0 -0
  21. {salesforce_agent-2.3.2 → salesforce_agent-2.3.3}/MANIFEST.in +0 -0
  22. {salesforce_agent-2.3.2 → salesforce_agent-2.3.3}/salesforce_agent/__main__.py +0 -0
  23. {salesforce_agent-2.3.2 → salesforce_agent-2.3.3}/salesforce_agent/api/__init__.py +0 -0
  24. {salesforce_agent-2.3.2 → salesforce_agent-2.3.3}/salesforce_agent/api/api_client_admin.py +0 -0
  25. {salesforce_agent-2.3.2 → salesforce_agent-2.3.3}/salesforce_agent/api/api_client_base.py +0 -0
  26. {salesforce_agent-2.3.2 → salesforce_agent-2.3.3}/salesforce_agent/api/api_client_bulk.py +0 -0
  27. {salesforce_agent-2.3.2 → salesforce_agent-2.3.3}/salesforce_agent/api/api_client_describe.py +0 -0
  28. {salesforce_agent-2.3.2 → salesforce_agent-2.3.3}/salesforce_agent/api/api_client_query.py +0 -0
  29. {salesforce_agent-2.3.2 → salesforce_agent-2.3.3}/salesforce_agent/api/api_client_records.py +0 -0
  30. {salesforce_agent-2.3.2 → salesforce_agent-2.3.3}/salesforce_agent/api_client.py +0 -0
  31. {salesforce_agent-2.3.2 → salesforce_agent-2.3.3}/salesforce_agent/auth.py +0 -0
  32. {salesforce_agent-2.3.2 → salesforce_agent-2.3.3}/salesforce_agent/connectors/__init__.py +0 -0
  33. {salesforce_agent-2.3.2 → salesforce_agent-2.3.3}/salesforce_agent/kg_ingest.py +0 -0
  34. {salesforce_agent-2.3.2 → salesforce_agent-2.3.3}/salesforce_agent/mcp/__init__.py +0 -0
  35. {salesforce_agent-2.3.2 → salesforce_agent-2.3.3}/salesforce_agent/mcp/mcp_salesforce.py +0 -0
  36. {salesforce_agent-2.3.2 → salesforce_agent-2.3.3}/salesforce_agent/mcp_config.json +0 -0
  37. {salesforce_agent-2.3.2 → salesforce_agent-2.3.3}/salesforce_agent/ontology/__init__.py +0 -0
  38. {salesforce_agent-2.3.2 → salesforce_agent-2.3.3}/salesforce_agent/ontology/fixtures/records.json +0 -0
  39. {salesforce_agent-2.3.2 → salesforce_agent-2.3.3}/salesforce_agent/ontology/mappings/source.yaml +0 -0
  40. {salesforce_agent-2.3.2 → salesforce_agent-2.3.3}/salesforce_agent/ontology/migrations/manifest.json +0 -0
  41. {salesforce_agent-2.3.2 → salesforce_agent-2.3.3}/salesforce_agent/ontology/shapes/connector.shacl.ttl +0 -0
  42. {salesforce_agent-2.3.2 → salesforce_agent-2.3.3}/salesforce_agent/prompts/__init__.py +0 -0
  43. {salesforce_agent-2.3.2 → salesforce_agent-2.3.3}/salesforce_agent/salesforce_input_models.py +0 -0
  44. {salesforce_agent-2.3.2 → salesforce_agent-2.3.3}/salesforce_agent/salesforce_response_models.py +0 -0
  45. {salesforce_agent-2.3.2 → salesforce_agent-2.3.3}/salesforce_agent/skills/__init__.py +0 -0
  46. {salesforce_agent-2.3.2 → salesforce_agent-2.3.3}/salesforce_agent/skills/salesforce-agent-operations/SKILL.md +0 -0
  47. {salesforce_agent-2.3.2 → salesforce_agent-2.3.3}/salesforce_agent/skills/salesforce-agent-operations/agents/openai.yaml +0 -0
  48. {salesforce_agent-2.3.2 → salesforce_agent-2.3.3}/salesforce_agent/skills/salesforce-agent-operations/references/catalog.md +0 -0
  49. {salesforce_agent-2.3.2 → salesforce_agent-2.3.3}/salesforce_agent/skills/salesforce-crm-knowledge-graph/SKILL.md +0 -0
  50. {salesforce_agent-2.3.2 → salesforce_agent-2.3.3}/salesforce_agent/skills/salesforce-crm-knowledge-graph/WORKFLOW.md +0 -0
  51. {salesforce_agent-2.3.2 → salesforce_agent-2.3.3}/salesforce_agent/skills/salesforce-record-management/SKILL.md +0 -0
  52. {salesforce_agent-2.3.2 → salesforce_agent-2.3.3}/salesforce_agent/skills/salesforce-record-management/WORKFLOW.md +0 -0
  53. {salesforce_agent-2.3.2 → salesforce_agent-2.3.3}/salesforce_agent/skills/salesforce-soql-query/SKILL.md +0 -0
  54. {salesforce_agent-2.3.2 → salesforce_agent-2.3.3}/salesforce_agent/skills/salesforce-soql-query/WORKFLOW.md +0 -0
  55. {salesforce_agent-2.3.2 → salesforce_agent-2.3.3}/salesforce_agent.egg-info/dependency_links.txt +0 -0
  56. {salesforce_agent-2.3.2 → salesforce_agent-2.3.3}/salesforce_agent.egg-info/top_level.txt +0 -0
  57. {salesforce_agent-2.3.2 → salesforce_agent-2.3.3}/setup.cfg +0 -0
  58. {salesforce_agent-2.3.2 → salesforce_agent-2.3.3}/tests/test_admin.py +0 -0
  59. {salesforce_agent-2.3.2 → salesforce_agent-2.3.3}/tests/test_api_wrapper.py +0 -0
  60. {salesforce_agent-2.3.2 → salesforce_agent-2.3.3}/tests/test_auth.py +0 -0
  61. {salesforce_agent-2.3.2 → salesforce_agent-2.3.3}/tests/test_bulk.py +0 -0
  62. {salesforce_agent-2.3.2 → salesforce_agent-2.3.3}/tests/test_default_content_surfaces.py +0 -0
  63. {salesforce_agent-2.3.2 → salesforce_agent-2.3.3}/tests/test_describe.py +0 -0
  64. {salesforce_agent-2.3.2 → salesforce_agent-2.3.3}/tests/test_errors.py +0 -0
  65. {salesforce_agent-2.3.2 → salesforce_agent-2.3.3}/tests/test_init_dynamics.py +0 -0
  66. {salesforce_agent-2.3.2 → salesforce_agent-2.3.3}/tests/test_query.py +0 -0
  67. {salesforce_agent-2.3.2 → salesforce_agent-2.3.3}/tests/test_records.py +0 -0
  68. {salesforce_agent-2.3.2 → salesforce_agent-2.3.3}/tests/test_salesforce_mcp_validation.py +0 -0
  69. {salesforce_agent-2.3.2 → salesforce_agent-2.3.3}/tests/test_salesforce_models.py +0 -0
  70. {salesforce_agent-2.3.2 → salesforce_agent-2.3.3}/tests/test_startup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: salesforce-agent
3
- Version: 2.3.2
3
+ Version: 2.3.3
4
4
  Summary: Salesforce REST/SOQL/Bulk API 2.0 connector + MCP Server + A2A Server for Agentic AI!
5
5
  Author-email: Project Maintainers <maintainers@users.noreply.github.com>
6
6
  License: MIT
@@ -12,14 +12,14 @@ Classifier: Programming Language :: Python :: 3
12
12
  Requires-Python: <3.15,>=3.12
13
13
  Description-Content-Type: text/markdown
14
14
  License-File: LICENSE
15
- Requires-Dist: agent-connector-sdk[mcp]<1.0.0,>=0.3.18
15
+ Requires-Dist: agent-connector-sdk[mcp]<1.0.0,>=0.4.1
16
16
  Requires-Dist: httpx>=0.28.1
17
17
  Provides-Extra: mcp
18
- Requires-Dist: agent-connector-sdk[mcp]<1.0.0,>=0.3.18; extra == "mcp"
18
+ Requires-Dist: agent-connector-sdk[mcp]<1.0.0,>=0.4.1; extra == "mcp"
19
19
  Provides-Extra: jwt
20
20
  Requires-Dist: cryptography>=50.0.2; extra == "jwt"
21
21
  Provides-Extra: all
22
- Requires-Dist: agent-connector-sdk[mcp]<1.0.0,>=0.3.18; extra == "all"
22
+ Requires-Dist: agent-connector-sdk[mcp]<1.0.0,>=0.4.1; extra == "all"
23
23
  Requires-Dist: cryptography>=50.0.2; extra == "all"
24
24
  Provides-Extra: test
25
25
  Requires-Dist: pytest-xdist>=3.8.0; extra == "test"
@@ -40,7 +40,7 @@ Dynamic: license-file
40
40
  ![GitHub last commit (by committer)](https://img.shields.io/github/last-commit/Knuckles-Team/salesforce-agent)
41
41
  ![PyPI - Wheel](https://img.shields.io/pypi/wheel/salesforce-agent)
42
42
 
43
- *Version: 2.3.2*
43
+ *Version: 2.3.3*
44
44
 
45
45
  > **Documentation** — Installation, deployment, usage across the API, CLI, and MCP
46
46
  > server live on the docs site:
@@ -9,7 +9,7 @@
9
9
  ![GitHub last commit (by committer)](https://img.shields.io/github/last-commit/Knuckles-Team/salesforce-agent)
10
10
  ![PyPI - Wheel](https://img.shields.io/pypi/wheel/salesforce-agent)
11
11
 
12
- *Version: 2.3.2*
12
+ *Version: 2.3.3*
13
13
 
14
14
  > **Documentation** — Installation, deployment, usage across the API, CLI, and MCP
15
15
  > server live on the docs site:
@@ -4,12 +4,12 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "salesforce-agent"
7
- version = "2.3.2"
7
+ version = "2.3.3"
8
8
  description = "Salesforce REST/SOQL/Bulk API 2.0 connector + MCP Server + A2A Server for Agentic AI!"
9
9
  readme = "README.md"
10
10
  classifiers = [ "Development Status :: 4 - Beta", "License :: OSI Approved :: MIT License", "Environment :: Console", "Operating System :: POSIX :: Linux", "Programming Language :: Python :: 3",]
11
11
  requires-python = ">=3.12, <3.15"
12
- dependencies = [ "agent-connector-sdk[mcp]>=0.3.18,<1.0.0", "httpx>=0.28.1",]
12
+ dependencies = [ "agent-connector-sdk[mcp]>=0.4.1,<1.0.0", "httpx>=0.28.1",]
13
13
  [[project.authors]]
14
14
  name = "Project Maintainers"
15
15
  email = "maintainers@users.noreply.github.com"
@@ -18,9 +18,9 @@ email = "maintainers@users.noreply.github.com"
18
18
  text = "MIT"
19
19
 
20
20
  [project.optional-dependencies]
21
- mcp = [ "agent-connector-sdk[mcp]>=0.3.18,<1.0.0",]
21
+ mcp = [ "agent-connector-sdk[mcp]>=0.4.1,<1.0.0",]
22
22
  jwt = [ "cryptography>=50.0.2",]
23
- all = [ "agent-connector-sdk[mcp]>=0.3.18,<1.0.0", "cryptography>=50.0.2",]
23
+ all = [ "agent-connector-sdk[mcp]>=0.4.1,<1.0.0", "cryptography>=50.0.2",]
24
24
  test = [ "pytest-xdist>=3.8.0", "pytest>=9.1.1", "pytest-asyncio>=1.4.0", "pytest-cov>=7.1.0", "cryptography>=50.0.2",]
25
25
 
26
26
  [project.scripts]
@@ -32,9 +32,6 @@ salesforce-agent = "salesforce_agent.skills"
32
32
  [project.entry-points."agent_connector_sdk.ontology_providers"]
33
33
  salesforce-agent = "salesforce_agent.ontology"
34
34
 
35
- [project.entry-points."agent_connector_sdk.source_connector_providers"]
36
- salesforce-agent = "salesforce_agent.connectors"
37
-
38
35
  [project.entry-points."agent_connector_sdk.prompt_providers"]
39
36
  salesforce-agent = "salesforce_agent.prompts"
40
37
 
@@ -0,0 +1,2 @@
1
+ agent-connector-sdk[mcp]>=0.4.1,<1.0.0
2
+ httpx>=0.27.0
@@ -4,7 +4,7 @@ import importlib
4
4
  import inspect
5
5
  from typing import Any
6
6
 
7
- __version__ = "2.3.2"
7
+ __version__ = "2.3.3"
8
8
  __all__: list[str] = []
9
9
 
10
10
  CORE_MODULES = [
@@ -0,0 +1,159 @@
1
+ """Data sources of this connector, declared by tool name (generated by connector-ontology-map migrate).
2
+
3
+ Served live as ``connector://resources``. Regenerate by editing the declarations, not the tools.
4
+ """
5
+
6
+ # ruff: noqa: E501
7
+ from __future__ import annotations
8
+
9
+ from agent_connector_sdk.ingest.live_declaration import source_meta
10
+ from agent_connector_sdk.ingest.sources import IngestSourceDeclaration, IngestSourceSpec
11
+
12
+ CONNECTOR = "salesforce-mcp"
13
+
14
+ SOURCES = (
15
+ source_meta(
16
+ tool="salesforce_soql_query",
17
+ source_id="salesforce-opportunities",
18
+ record_type="salesforce_opportunity",
19
+ id_field="Id",
20
+ preset={
21
+ "doc_type": "salesforce_opportunity",
22
+ "params": {
23
+ "soql": "SELECT Id, Name, StageName, Amount, CloseDate, Description FROM Opportunity",
24
+ },
25
+ "params_style": "args",
26
+ },
27
+ records_path="records",
28
+ server="salesforce-mcp",
29
+ text_field="Description",
30
+ title_field="Name",
31
+ ),
32
+ )
33
+
34
+ SCHEMA_MAPPINGS = {
35
+ "Account": {
36
+ "fields": {
37
+ "amount": "xsd:decimal",
38
+ "closeDate": "xsd:date",
39
+ "email": "xsd:string",
40
+ "industry": "xsd:string",
41
+ "leadStatus": "xsd:string",
42
+ "salesforceId": "xsd:string",
43
+ "stageName": "xsd:string",
44
+ },
45
+ "ontology_class": None,
46
+ },
47
+ "Campaign": {
48
+ "fields": {
49
+ "amount": "xsd:decimal",
50
+ "closeDate": "xsd:date",
51
+ "email": "xsd:string",
52
+ "industry": "xsd:string",
53
+ "leadStatus": "xsd:string",
54
+ "salesforceId": "xsd:string",
55
+ "stageName": "xsd:string",
56
+ },
57
+ "ontology_class": None,
58
+ },
59
+ "Case": {
60
+ "fields": {
61
+ "amount": "xsd:decimal",
62
+ "closeDate": "xsd:date",
63
+ "email": "xsd:string",
64
+ "industry": "xsd:string",
65
+ "leadStatus": "xsd:string",
66
+ "salesforceId": "xsd:string",
67
+ "stageName": "xsd:string",
68
+ },
69
+ "ontology_class": None,
70
+ },
71
+ "Contact": {
72
+ "fields": {
73
+ "amount": "xsd:decimal",
74
+ "closeDate": "xsd:date",
75
+ "email": "xsd:string",
76
+ "industry": "xsd:string",
77
+ "leadStatus": "xsd:string",
78
+ "salesforceId": "xsd:string",
79
+ "stageName": "xsd:string",
80
+ },
81
+ "ontology_class": "Person",
82
+ },
83
+ "Lead": {
84
+ "fields": {
85
+ "amount": "xsd:decimal",
86
+ "closeDate": "xsd:date",
87
+ "email": "xsd:string",
88
+ "industry": "xsd:string",
89
+ "leadStatus": "xsd:string",
90
+ "salesforceId": "xsd:string",
91
+ "stageName": "xsd:string",
92
+ },
93
+ "ontology_class": None,
94
+ },
95
+ "Opportunity": {
96
+ "fields": {
97
+ "amount": "xsd:decimal",
98
+ "closeDate": "xsd:date",
99
+ "email": "xsd:string",
100
+ "industry": "xsd:string",
101
+ "leadStatus": "xsd:string",
102
+ "salesforceId": "xsd:string",
103
+ "stageName": "xsd:string",
104
+ },
105
+ "ontology_class": None,
106
+ },
107
+ }
108
+
109
+ RESOURCES = (
110
+ {
111
+ "id_prefix": "account",
112
+ "label": "Account",
113
+ "name": "Account",
114
+ },
115
+ {
116
+ "id_prefix": "campaign",
117
+ "label": "Campaign",
118
+ "name": "Campaign",
119
+ },
120
+ {
121
+ "id_prefix": "case",
122
+ "label": "Case",
123
+ "name": "Case",
124
+ },
125
+ {
126
+ "id_prefix": "contact",
127
+ "label": "Contact",
128
+ "name": "Contact",
129
+ },
130
+ {
131
+ "id_prefix": "lead",
132
+ "label": "Lead",
133
+ "name": "Lead",
134
+ },
135
+ {
136
+ "id_prefix": "opportunity",
137
+ "label": "Opportunity",
138
+ "name": "Opportunity",
139
+ },
140
+ )
141
+
142
+
143
+ def declaration() -> IngestSourceDeclaration:
144
+ """The declaration the server assembles from this module."""
145
+ specs = []
146
+ for item in SOURCES:
147
+ for entry in item["connector_sources"]:
148
+ body = {k: v for k, v in entry.items() if k not in ("tool", "mapping")}
149
+ specs.append(
150
+ IngestSourceSpec.model_validate({**body, "tools": (entry["tool"],)})
151
+ )
152
+ return IngestSourceDeclaration.model_validate(
153
+ {
154
+ "connector": CONNECTOR,
155
+ "sources": specs,
156
+ "schema_mappings": SCHEMA_MAPPINGS,
157
+ "resources": RESOURCES,
158
+ }
159
+ )
@@ -27,7 +27,7 @@ from salesforce_agent.mcp.mcp_salesforce import (
27
27
  register_soql_tools,
28
28
  )
29
29
 
30
- __version__ = "2.3.2"
30
+ __version__ = "2.3.3"
31
31
  logger = get_logger(name="salesforce_agent")
32
32
 
33
33
 
@@ -1,9 +1,6 @@
1
1
  {
2
2
  "api_version": "arbora.io/v1",
3
3
  "artifacts": {
4
- "connector_manifest.yml": "8f242e7c62b075786c8c47967e40d62aa44a967593782ae679771dc27e4693e8",
5
- "salesforce_agent/connectors/mcp_source_presets.json": "644ed7237882e5b5ac96b1c16696e1348a15f025c0d10c23745dfcd8ea6d0c87",
6
- "salesforce_agent/connectors/tool_schema_fingerprints.json": "f2db55d366dd1f4b9da00ac78433cbc0a627109d15a23d3a5bdda3d493e1c8f3",
7
4
  "salesforce_agent/ontology/fixtures/records.json": "b344913dc0bbc8999151a56c1802f1c15cf818888a0ab8aaa5063326b21e9043",
8
5
  "salesforce_agent/ontology/mappings/source.yaml": "a138feb24291bd26939a85e7e786dc158d145a7be056ae6cc3b69e8342fdaa3c",
9
6
  "salesforce_agent/ontology/migrations/manifest.json": "76e71d3e6fbb573e65cb9ce25868523b5aa8ba1f4cca15b266d343ee9d2b42fc",
@@ -13,9 +13,8 @@
13
13
  # (salesforce_soql / salesforce_records / salesforce_describe / salesforce_ingest_crm).
14
14
  # :Person (shared) is REUSED for the owning Salesforce User — never redefined here.
15
15
 
16
- :Account a owl:Class ;
17
- rdfs:label "Account" ;
18
- rdfs:comment "A company or organization tracked in Salesforce CRM (sObject Account)." .
16
+ :Account a owl:Class .
17
+
19
18
 
20
19
  :Contact a owl:Class ;
21
20
  rdfs:label "Contact" ;
@@ -131,5 +130,4 @@
131
130
  rdfs:comment """Salesforce CRM model — accounts, contacts, opportunities, leads,
132
131
  cases and campaigns with their sales and service relationships — federated into
133
132
  the agent-connector-sdk knowledge-graph hub. Reuses the shared :Person for the owning
134
- Salesforce User.""" ;
135
- owl:imports <http://knuckles.team/kg/enterprise> .
133
+ Salesforce User.""" .
@@ -4,8 +4,6 @@
4
4
  "schema_version": "1.0",
5
5
  "prompt_version": "0.1.0",
6
6
  "source": "salesforce-agent",
7
- "extends": "agent-connector-sdk:base",
8
- "compose": "append",
9
7
  "description": "Salesforce CRM specialist: SOQL/SOSL analysis, safe record management, and knowledge-graph ingestion over the salesforce-agent MCP server.",
10
8
  "metadata": {
11
9
  "topic": "Salesforce CRM",
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: salesforce-agent
3
- Version: 2.3.2
3
+ Version: 2.3.3
4
4
  Summary: Salesforce REST/SOQL/Bulk API 2.0 connector + MCP Server + A2A Server for Agentic AI!
5
5
  Author-email: Project Maintainers <maintainers@users.noreply.github.com>
6
6
  License: MIT
@@ -12,14 +12,14 @@ Classifier: Programming Language :: Python :: 3
12
12
  Requires-Python: <3.15,>=3.12
13
13
  Description-Content-Type: text/markdown
14
14
  License-File: LICENSE
15
- Requires-Dist: agent-connector-sdk[mcp]<1.0.0,>=0.3.18
15
+ Requires-Dist: agent-connector-sdk[mcp]<1.0.0,>=0.4.1
16
16
  Requires-Dist: httpx>=0.28.1
17
17
  Provides-Extra: mcp
18
- Requires-Dist: agent-connector-sdk[mcp]<1.0.0,>=0.3.18; extra == "mcp"
18
+ Requires-Dist: agent-connector-sdk[mcp]<1.0.0,>=0.4.1; extra == "mcp"
19
19
  Provides-Extra: jwt
20
20
  Requires-Dist: cryptography>=50.0.2; extra == "jwt"
21
21
  Provides-Extra: all
22
- Requires-Dist: agent-connector-sdk[mcp]<1.0.0,>=0.3.18; extra == "all"
22
+ Requires-Dist: agent-connector-sdk[mcp]<1.0.0,>=0.4.1; extra == "all"
23
23
  Requires-Dist: cryptography>=50.0.2; extra == "all"
24
24
  Provides-Extra: test
25
25
  Requires-Dist: pytest-xdist>=3.8.0; extra == "test"
@@ -40,7 +40,7 @@ Dynamic: license-file
40
40
  ![GitHub last commit (by committer)](https://img.shields.io/github/last-commit/Knuckles-Team/salesforce-agent)
41
41
  ![PyPI - Wheel](https://img.shields.io/pypi/wheel/salesforce-agent)
42
42
 
43
- *Version: 2.3.2*
43
+ *Version: 2.3.3*
44
44
 
45
45
  > **Documentation** — Installation, deployment, usage across the API, CLI, and MCP
46
46
  > server live on the docs site:
@@ -7,6 +7,7 @@ salesforce_agent/__init__.py
7
7
  salesforce_agent/__main__.py
8
8
  salesforce_agent/api_client.py
9
9
  salesforce_agent/auth.py
10
+ salesforce_agent/connector_sources.py
10
11
  salesforce_agent/kg_ingest.py
11
12
  salesforce_agent/mcp_config.json
12
13
  salesforce_agent/mcp_server.py
@@ -26,8 +27,6 @@ salesforce_agent/api/api_client_describe.py
26
27
  salesforce_agent/api/api_client_query.py
27
28
  salesforce_agent/api/api_client_records.py
28
29
  salesforce_agent/connectors/__init__.py
29
- salesforce_agent/connectors/mcp_source_presets.json
30
- salesforce_agent/connectors/tool_schema_fingerprints.json
31
30
  salesforce_agent/mcp/__init__.py
32
31
  salesforce_agent/mcp/mcp_salesforce.py
33
32
  salesforce_agent/ontology/__init__.py
@@ -10,8 +10,5 @@ salesforce-agent = salesforce_agent.prompts
10
10
  [agent_connector_sdk.skill_providers]
11
11
  salesforce-agent = salesforce_agent.skills
12
12
 
13
- [agent_connector_sdk.source_connector_providers]
14
- salesforce-agent = salesforce_agent.connectors
15
-
16
13
  [console_scripts]
17
14
  salesforce-mcp = salesforce_agent.mcp_server:mcp_server
@@ -1,15 +1,15 @@
1
- agent-connector-sdk[mcp]<1.0.0,>=0.3.18
1
+ agent-connector-sdk[mcp]<1.0.0,>=0.4.1
2
2
  httpx>=0.28.1
3
3
 
4
4
  [all]
5
- agent-connector-sdk[mcp]<1.0.0,>=0.3.18
5
+ agent-connector-sdk[mcp]<1.0.0,>=0.4.1
6
6
  cryptography>=50.0.2
7
7
 
8
8
  [jwt]
9
9
  cryptography>=50.0.2
10
10
 
11
11
  [mcp]
12
- agent-connector-sdk[mcp]<1.0.0,>=0.3.18
12
+ agent-connector-sdk[mcp]<1.0.0,>=0.4.1
13
13
 
14
14
  [test]
15
15
  pytest-xdist>=3.8.0
@@ -2,9 +2,8 @@
2
2
 
3
3
  from __future__ import annotations
4
4
 
5
+ from agent_connector_sdk.connector_identity import connector_name
5
6
  import ast
6
- import json
7
- import re
8
7
  import tomllib
9
8
  from pathlib import Path
10
9
 
@@ -38,16 +37,6 @@ def test_connector_name_is_the_fleet_name() -> None:
38
37
  assert pyproject["project"]["entry-points"]["agent_connector_sdk.connector"] == {
39
38
  FLEET: "salesforce_agent"
40
39
  }
41
- manifest_path = PACKAGE / "connector_manifest.yml"
42
- if not manifest_path.is_file():
43
- manifest_path = ROOT / "connector_manifest.yml"
44
- manifest = manifest_path.read_text(encoding="utf-8")
45
- match = re.search(r'^\s*"?connector"?\s*:\s*"?([^"\s,]+)', manifest, re.MULTILINE)
46
- assert match is not None and match.group(1) == FLEET
47
- fingerprints = PACKAGE / "connectors" / "tool_schema_fingerprints.json"
48
- if fingerprints.is_file():
49
- assert (
50
- json.loads(fingerprints.read_text(encoding="utf-8"))["connector"] == FLEET
51
- )
40
+ assert connector_name("salesforce_agent") == FLEET
52
41
  for module in sorted(PACKAGE.glob("*.py")):
53
42
  assert all(name == FLEET for name in _call_connectors(module)), module.name
@@ -70,7 +70,7 @@ async def test_ingest_entities_writes_nodes_and_edges(ingest):
70
70
  a_record = next(r for r in request.records if r.record_id == "a")
71
71
  assert a_record.payload["name"] == "Acme"
72
72
  assert request.relationships[0].relation_reference.endswith(
73
- "resources/Contact/relations/worksAtAccount"
73
+ "relations/Contact/worksAtAccount"
74
74
  )
75
75
 
76
76
 
@@ -94,7 +94,7 @@ async def test_ingest_records_accounts_with_owner(ingest):
94
94
  r.record_id == "salesforce:User:005U" for r in request.records
95
95
  )
96
96
  assert request.relationships[0].relation_reference.endswith(
97
- "resources/Account/relations/ownedBy"
97
+ "relations/Account/ownedBy"
98
98
  )
99
99
 
100
100
 
@@ -114,7 +114,7 @@ async def test_ingest_records_contact_links_account(ingest):
114
114
  # the SDK's persistence privacy guard redacts email-shaped values.
115
115
  assert contact.payload["email"] == "[REDACTED_EMAIL]"
116
116
  assert request.relationships[0].relation_reference.endswith(
117
- "resources/Contact/relations/worksAtAccount"
117
+ "relations/Contact/worksAtAccount"
118
118
  )
119
119
 
120
120
 
@@ -133,7 +133,7 @@ async def test_ingest_records_opportunity_links_account(ingest):
133
133
  )
134
134
  assert opp.payload["stageName"] == "Won"
135
135
  assert request.relationships[0].relation_reference.endswith(
136
- "resources/Opportunity/relations/opportunityForAccount"
136
+ "relations/Opportunity/opportunityForAccount"
137
137
  )
138
138
 
139
139
 
@@ -1,2 +0,0 @@
1
- agent-connector-sdk[mcp]>=0.3.0,<1.0.0
2
- httpx>=0.27.0
@@ -1,29 +0,0 @@
1
- {
2
- "_comment": "Tier-1 mcp_tool source presets for salesforce-agent (AU-KG.ingest.mcp-tool-connector). Syncs Salesforce CRM objects into the KG as documents via the salesforce-agent MCP server's salesforce_soql tool. Contributed presets win over the central MCP_TOOL_PRESETS. The native typed-node path is salesforce_ingest_crm / salesforce_agent.kg_ingest.",
3
- "salesforce-accounts": {
4
- "server": "salesforce-mcp",
5
- "tool": "salesforce_soql_query",
6
- "params": {
7
- "soql": "SELECT Id, Name, Industry, Type, Website, Description FROM Account"
8
- },
9
- "records_path": "records",
10
- "id_field": "Id",
11
- "title_field": "Name",
12
- "text_field": "Description",
13
- "doc_type": "salesforce_account",
14
- "params_style": "args"
15
- },
16
- "salesforce-opportunities": {
17
- "server": "salesforce-mcp",
18
- "tool": "salesforce_soql_query",
19
- "params": {
20
- "soql": "SELECT Id, Name, StageName, Amount, CloseDate, Description FROM Opportunity"
21
- },
22
- "records_path": "records",
23
- "id_field": "Id",
24
- "title_field": "Name",
25
- "text_field": "Description",
26
- "doc_type": "salesforce_opportunity",
27
- "params_style": "args"
28
- }
29
- }
@@ -1,8 +0,0 @@
1
- {
2
- "algorithm": "agent-connector-sdk:mcp-tool-contract-compat:v2",
3
- "connector": "salesforce-mcp",
4
- "schema_version": "1",
5
- "tools": {
6
- "salesforce_soql_query": "1933ac409fc622368416ff0e4ca41e84d809f7a139709bccb60f5097c5b6b6e9"
7
- }
8
- }