Skip to content

Conversation

@nbarbettini
Copy link
Contributor

@nbarbettini nbarbettini commented Mar 15, 2025

Fixing some nits and problems in draft-1.0.

"format": "uri"
},
"tools": {
"items": {
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Renamed for expected consistency with a future pagination interface.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

An example of where this is useful? Does it help somehow with parameterizing types on the client side for static type purposes?

"input_schema": {
"type": "object",
"properties": {
"parameters": {
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Removed parameters to flatten and make this consistent with output_schema.

Comment on lines -305 to -306
"input_schema",
"output_schema"
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Removed input_ and output_ from required to reflect the fact that these MAY be null.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

IMO these should be required.

  • The input should be explicitly an empty object to denote a parameterless function. You could argue in this case a bit if you really believe that positional arguments should be supported.
  • The output should be very explicit: Either it is known and can be specifically denoted as null or some other value, or it is not known and should be marked as any.

"type": "string",
"description": "An internal message that will be logged but will not be shown to the user or the AI model"
},
"missing_requirements": {
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Added this to provide a structured way for the OXP server to let the client know that some requirements are missing.

"format": "uri"
},
"tools": {
"items": {

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

An example of where this is useful? Does it help somehow with parameterizing types on the client side for static type purposes?

"$ref": "#/components/schemas/ToolVersion"
},
"input_schema": {
"type": "object",

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is more general than current function calling that LLMs do.

I think that restricting the input schema to be an object is reasonable?

The alternative is also allow positional arguments by that would still require restricting to either object or array or combination of array + object.

{
  "type": "object",
  "properties": {
    "input_schema": {
      "type": "object",
      "properties": {
        "type": {"const": "object"}
      },
      "required": ["type"]
    }
  },
  "required": ["input_schema"]
}

The object description is popular because it allows documenting the individual arguments and naming them.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

OK i suspect that this is actually a realization of an openapi.json instance rather than JSONSchema describing how to validate that a particular openapi.json instance implements the appropriate spec?

Comment on lines -305 to -306
"input_schema",
"output_schema"

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

IMO these should be required.

  • The input should be explicitly an empty object to denote a parameterless function. You could argue in this case a bit if you really believe that positional arguments should be supported.
  • The output should be very explicit: Either it is known and can be specifically denoted as null or some other value, or it is not known and should be marked as any.

@nbarbettini nbarbettini marked this pull request as ready for review March 16, 2025 18:21
@Spartee Spartee self-requested a review March 16, 2025 18:21
Copy link
Contributor

@Spartee Spartee left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Moving future work to 0.1.0 release to avoid PR sprawl

@nbarbettini nbarbettini merged commit 4ebed7f into main Mar 16, 2025
1 check passed
@nbarbettini nbarbettini deleted the spec-updates branch March 16, 2025 18:25
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants